说我有一个SSH服务器,启用端口转发。 用户build立SSH连接并转发BitTorrentstream量或其他非法或滥用stream量非常简单。 如何设置日志logging来logging用户创build的端口?
我已经在这个网页上使用了补丁(稍作修改) http://blog.rootshell.be/2009/03/01/keep-an-eye-on-ssh-forwarding/loggingssh端口转发。
我在这里问一个问题SSH主机进程如何检测哪些端口已被客户端转发(-R不是-L),以find一个更优雅的方式来做同样的事情。
但是,由于看起来不是更好的办法,我用lsof来做:
sudo lsof [email protected] -Fn -p99999 | grep "^n" | grep -v '\->' | awk -F: '{print $NF}' | sort | uniq
99999是处理您感兴趣的连接的sshd的PID。
有几种方法可以使用这个片段。 要么有一个长时间运行的进程来sshd新实例,然后使用上面的命令对它们进行反省,或者用一个自定义的命令前缀所有的.ssh/authorized_keys项,然后在某个地方logging它,然后exec原始的预期命令(在大多数情况下, SSH_ORIGINAL_COMMAND或loginshell)。
你可以试试wireshark 。 我真的不确定它是否会专门做你想做的事情,但是它肯定可以确定用户在networking上做什么。 Spiceworks是另一个免费的select
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
等瞧! 你知道用户“用户”使用sshdredirect端口12345
脚本&cron使用这个东西