如何记录 SSH 端口转发?

如何记录 SSH 端口转发?

假设我有一个启用了端口转发的 SSH 服务器。用户建立 SSH 连接并通过它转发 BitTorrent 流量或其他非法或滥用流量相当简单。我如何设置日志记录来记录用户进行的端口转发?

答案1

我已经使用了此网页上的补丁(略有改动)http://blog.rootshell.be/2009/03/01/keep-an-eye-on-ssh-forwarding/记录 ssh 端口转发。

答案2

我在这里问一个问题SSH 主机进程如何检测哪些端口已被客户端转发(-R 而不是 -L)找到一种更优雅的方式来做同样的事情。

但是,由于看起来没有更好的方法,因此我使用以下方法lsof

sudo lsof [email protected] -Fn -p99999 | grep "^n" | grep -v '\->' | awk -F: '{print $NF}' | sort | uniq

sshd99999 是处理您感兴趣的连接的 PID 。

有几种方法可以利用此代码片段。要么有一个长时间运行的进程,该进程监视新的实例sshd,然后使用上述命令对其进行自省,要么在所有.ssh/authorized_keys条目前加上一个自定义命令,该命令执行此操作,将其记录在某处,然后执行exec原始预期命令(SSH_ORIGINAL_COMMAND或大多数情况下的登录 shell)。

答案3

你可以尝试wireshark。老实说,我不确定它是否能具体实现你想要的功能,但它肯定能确定用户在网络上所做的事情。香料厂是另一个免费选项

答案4

netstat以及ps一些巧妙的剪切和 greping。Netstat 可以为您提供程序 ID,而 ps 可以为您提供用户。

user@myhome:~$ ssh [email protected] -R 12345:other.server:22

与此同时,在控制台的另一边

[email protected]# netstat -plnt | grep 12345
tcp        0      0 127.0.0.1:12345         0.0.0.0:*               LISTEN     12998/15            
tcp6       0      0 ::1:12345               :::*                    LISTEN     12998/15 
                                                                                 ^ PID!

当然你不会知道 grep 中指定的端口,grep 是来约束我的输出的

ps -aux | grep 12998 # the PID
user   12998  0.0  0.1   6624  1920 ?        S    07:57   0:00 sshd: user@pts/15

瞧!你知道用户“user”正在使用 sshd 重定向端口 12345

脚本和cron使用这个

相关内容