假设我有一个启用了端口转发的 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
sshd
99999 是处理您感兴趣的连接的 PID 。
有几种方法可以利用此代码片段。要么有一个长时间运行的进程,该进程监视新的实例sshd
,然后使用上述命令对其进行自省,要么在所有.ssh/authorized_keys
条目前加上一个自定义命令,该命令执行此操作,将其记录在某处,然后执行exec
原始预期命令(SSH_ORIGINAL_COMMAND
或大多数情况下的登录 shell)。
答案3
答案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使用这个