![PAM 模块导致 SSH 会话频繁发生](https://linux22.com/image/592607/PAM%20%E6%A8%A1%E5%9D%97%E5%AF%BC%E8%87%B4%20SSH%20%E4%BC%9A%E8%AF%9D%E9%A2%91%E7%B9%81%E5%8F%91%E7%94%9F.png)
在跟踪时,/var/log/auth.log
我注意到用户“foo”每分钟(立即)输入多个条目。我个人在跟踪时仅以用户“root_bar”身份打开了一个连接auth.log
(下面的日志示例)。如您所见,这些传入 SSH 连接没有 IP 信息。跟踪传入 SSH 连接的 IP 地址的最佳方法是什么?
Aug 10 14:30:04 ps2000 suexec: (pam_unix) session opened for user root_bar by (uid=999)
Aug 10 14:30:04 ps2000 suexec: (pam_unix) session closed for user root_bar
Aug 10 14:30:06 ps2000 suexec: (pam_unix) session opened for user root_bar by (uid=999)
Aug 10 14:30:06 ps2000 suexec: (pam_unix) session closed for user root_bar
Aug 10 14:30:08 ps2000 CRON[16879]: (pam_unix) session closed for user root_bar
Aug 10 14:30:14 ps2000 suexec: (pam_unix) session opened for user root_bar by (uid=999)
Aug 10 14:30:14 ps2000 suexec: (pam_unix) session closed for user root_bar
Aug 10 14:30:16 ps2000 suexec: (pam_unix) session opened for user root_bar by (uid=999)
Aug 10 14:30:16 ps2000 suexec: (pam_unix) session closed for user root_bar
Aug 10 14:30:27 ps2000 suexec: (pam_unix) session opened for user root_bar by (uid=999)
Aug 10 14:30:27 ps2000 suexec: (pam_unix) session closed for user root_bar
Aug 10 14:30:39 ps2000 suexec: (pam_unix) session opened for user root_bar by (uid=999)
Aug 10 14:30:39 ps2000 suexec: (pam_unix) session closed for user root_bar
免责声明:服务器名称和所有用户信息已因安全原因而更改。
更正: 问题“跟踪传入的 SSH 连接” 已得到以下发帖者的正确回答。消息suexec(pam_unix)会话不一定表示任何sshd
活动,正如 @aseq 所澄清的那样,由于我的无知,我将其作为 sshd 问题发布。由于原始问题及其答案很有帮助,我接受了最有帮助的答案。我认为跟踪suexec: (pam_unix) session
是单独问题的候选。
最后更新:我发现上面的消息确实与 sshd 有关。在 /etc/pam.d/common-auth 中做了一些调整后,我开始看到如下行
Aug 10 16:45:23 candy_bass sshd[427]: (pam_unix) session opened for user summer_flag by (uid=0)
Aug 10 16:45:23 candy_bass sshd[427]: PAM pam_parse: expecting return value; [...sucess=1 default=ignore]
Aug 10 16:45:23 candy_bass sshd[427]: PAM pam_parse: expecting return value; [...sucess=1 default=ignore]
Aug 10 16:45:23 candy_bass sshd[427]: Accepted publickey for summer_flag from xxx.zzz.yyy.abc port 35964 ssh2
Aug 10 16:45:23 candy_bass sshd[427]: (pam_unix) session opened for user summer_flag by (uid=0)
Aug 10 16:45:23 candy_bass pam_limits[427]: setrlimit limit #11 to soft=-1, hard=-1 failed: Operation not permitted; uid=0 euid=0
Aug 10 16:45:23 candy_bass pam_limits[427]: setrlimit limit #12 to soft=-1, hard=-1 failed: Operation not permitted; uid=0 euid=0
Aug 10 16:45:23 candy_bass sshd[427]: (pam_unix) session closed for user summer_flag
所以这是与 sshd 相关,但是,由于这是针对令牌身份验证供应商 (出于隐私考虑我不会透露其名称) 的特定问题,所以我认为该供应商最好能解决这个问题。
答案1
这些日志条目是什么样的?
ssh 服务器应该默认在 /var/log/auth.log 和其他日志文件中记录 IP 地址,例如:
Aug 1 12:21:30 example.host sshd[1174]: Failed password for invalid user example from 192.0.2.1 port 9460 ssh2
Aug 1 12:21:32 example.host sshd[1176]: Invalid user root from 192.0.2.10
如果您询问的日志条目中没有字符串“sshd”,我怀疑它们实际上来自 ssh 服务器,您需要查找其他地方。查看主机名后面的字符串,它会告诉您哪个程序正在写入日志。
您也可以检查 /etc/ssh/sshd_config 并查看日志级别是否正确,squeeze 上的默认值是:
# Logging
SyslogFacility AUTH
LogLevel INFO
也许增加详细程度可能会揭示更多信息。您添加到问题的日志条目应该位于上面粘贴的日志条目之前。
答案2
无论是否有人成功登录,只要建立连接,您就会看到 SSH 连接打开和关闭。
要查看通过 ssh 成功和失败的登录尝试的更多信息,请查看/var/log/secure
和/或/var/log/messages
。
***请注意,位置可能因您的 Linux 发行版和/或托管服务提供商而异。*
答案3
如果您有权访问服务器上的 root 用户,您可以利用 iptables 为 tcp 端口 22 上的所有新连接实现“LOG”语句。这会将信息添加到 /var/log/messages 文件,指示哪些连接正在进入您的服务器。
如果您正在运行 IPv6,我相信那里的防火墙会有 iptables6。
答案4
auth.log
我通过注释掉ChallengeResponseAuthentication
和UsePAM
设置/etc/ssh/sshd_config
来解决打开和关闭会话的问题
ChallengeResponseAuthentication yes
UsePAM yes
到
#ChallengeResponseAuthentication yes
#UsePAM yes
换句话说,我暂时禁用了 PAM 模块,同时与它的供应商一起找出正确的设置。