我正在将服务器从现有的多用户环境中的端口 22 转换出来。我已将 sshd 配置为侦听两个端口:22 和新端口。
现在我想检测用户何时连接或连接到端口 22。这显然比我预期的要难。
我尝试在 sshd_config 中启动日志记录,但即使 DEBUG 也没有记录端口号。
我目前正在扫描 netstat 的输出以查找与端口 22 的 TCP 连接,但这列出了来自随机机器人扫描程序的大量误报。【港口搬迁的原因】
我正在将服务器从现有的多用户环境中的端口 22 转换出来。我已将 sshd 配置为侦听两个端口:22 和新端口。
现在我想检测用户何时连接或连接到端口 22。这显然比我预期的要难。
我尝试在 sshd_config 中启动日志记录,但即使 DEBUG 也没有记录端口号。
我目前正在扫描 netstat 的输出以查找与端口 22 的 TCP 连接,但这列出了来自随机机器人扫描程序的大量误报。【港口搬迁的原因】
使用
lsof -n -i TCP:22 -a -c sshd -a -u ^root,^sshd
您可以sshd
在端口 22 上获取进程和用户名及其套接字的列表。它正在跳过那些由root
或sshd
因为它们与登录用户不对应的进程和用户名。一种完全不同的方法是向 中添加一些命令
/etc/ssh/sshrc
,这将解析$SSH_CONNECTION
并记录它:logger -p auth.notice -t "sshd[$$]" "$SSH_CONNECTION"
第三种方法是
sshd
为端口 22 创建第二个实例并将其配置为登录到不同的设施。尝试这样的事情:
澄清一下,此命令的目的是将
lsof
命中(显示使用的端口)与来自who
with的会话pts
(从输出中提取 PID)相匹配,以过滤掉误报。换句话说,它显示了来自进程的连接,其中 PID 持有一个 pts ssh 会话。