如何记录SSH端口转发?


8

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


为了获得合理的安全级别,您需要确保系统上所有其他程序(可用于转发流量)(包括用户自己编写/编译的程序)都具有相同级别的日志记录。
亚历克斯·霍尔斯特

2
如果您不信任某人,最好绝对不要让他们访问您的网络。
Zoredache

@Zoredache所以答案是不让任何人访问您的网络吗?
rox0r

Answers:



2

我在这里问一个问题,SSH主机进程如何才能检测到客户端(-R而不是-L)转发了哪些端口,以找到一种更优雅的方式来执行此操作。

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

sudo lsof -aPni@127.0.0.1 -Fn -p99999 | grep "^n" | grep -v '\->' | awk -F: '{print $NF}' | sort | uniq

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

有几种方法可以利用此片段。可能需要一个长时间运行的过程来监视的新实例,sshd然后使用上述命令进行内部检查,或者为所有.ssh/authorized_keys条目添加一个自定义命令(执行此操作),将其记录在某个地方,然后exec输入原始预期命令(SSH_ORIGINAL_COMMAND或在大多数情况下使用登录shell)情况)。


0

您可以尝试Wireshark。老实说,我不确定它是否会专门执行您想要的操作,但是它肯定可以确定用户在网络上正在做什么。Spiceworks是另一个免费选项


0

netstatps以及一些巧妙的裁剪和处理方法。Netstat可以为您提供程序ID,而ps可以为您提供用户。

user@myhome:~$ ssh user@some.server -R 12345:other.server:22

同时在控制台的另一侧

root@some.server# 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

等等!您知道用户“用户”正在使用sshd重定向端口12345

使用此脚本和cron

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.