我有一台运行 centOS 5 的服务器;GLAMP。这是仅限本地的设置——没有外部访问。
netstat 显示 LAN 上的一台机器建立了 SSH 连接。这台机器运行的是 XP,上面没有任何使用 SSH 的东西:
# netstat | grep tcp
tcp 0 0 dev.test.local:ssh ::ffff:192.168.1.11:51486 ESTABLISHED
我尝试过的事情:
- 在 iptables 中添加了一条规则,拒绝来自这台机器的所有内容
- 最终重启了网络、apache、sshd 和整个机器
- 暂时更改有问题机器的 IP(不能永久更改;人们需要它)
- 平
有趣的是:当我调查 hping 并尝试切断连接时,我注意到机器不会响应 hping - 100% 数据包丢失。但是,正常 ping 可以正常工作。因此,hping -F host 不起作用,因为出于某种原因,hping 无法到达主机。
这一切都是为了尝试解释为什么 Apache 突然变得如此缓慢。最近发生了网络变化,但不应该影响 LAN 的这一部分。我不知道这是否是问题的一部分,但这是我需要消除的一个变量。
关于如何终止此连接,我有什么想法吗?
更新;
好吧,事实证明我无法杀死它,因为它是我的shell!但是,出于某种原因,它没有反映出我的正确 IP 地址。当我第一次连接时,它显示我上次登录的 IP 地址是正确的,但 netstat 显示的地址不正确:
Last login: Thu Oct 27 10:42:25 2011 from 192.168.1.17
# netstat | grep tcp
tcp 0 0 dev.test.local:ssh ::ffff:192.168.1.11:53461 ESTABLISHED
这是 /var/log/secure 的结尾
Oct 27 10:42:25 dev sshd[6169]: Accepted password for root from 192.168.1.17 port 53428 ssh2
Oct 27 10:42:25 dev sshd[6169]: pam_unix(sshd:session): session opened for user root by (uid=0)
Oct 27 10:45:08 dev sshd[6169]: Received disconnect from 192.168.1.17: 11: disconnected by user
Oct 27 10:45:08 dev sshd[6169]: pam_unix(sshd:session): session closed for user root
Oct 27 10:45:24 dev sshd[6208]: Accepted password for root from 192.168.1.17 port 53461 ssh2
Oct 27 10:45:24 dev sshd[6208]: pam_unix(sshd:session): session opened for user root by (uid=0)
答案1
如何修改 /etc/ssh/sshd_config。例如,您可以使用 ListenAddress 选择允许登录的 IP,或者您可以通过 AllowGroups 和 AllowUsers 限制登录。您可以使用 wtmp 或查看 /var/log/secure 查看过去的登录。
答案2
首先确认这确实是一个ssh
连接:
netstat -antp | grep ESTABLISHED | grep :22
您应该在netstat
输出中看到一个附加列,其中显示连接到该 TCP 会话的应用程序名称。如果不是,/usr/sbin/sshd
那么这可能ssh
根本不是一个会话。您应该调查哪个应用程序保持 TCP 会话处于打开状态。
如果是ssh
会话,暂时停止ssh
守护进程:
/sbin/service sshd stop
(我不是 CentOS 用户,如果出现错误表明服务sshd
不存在,请尝试/sbin/service --list
识别要使用的正确名称)。
再次检查netstat
输出,查看连接是否仍然打开。如果是,请确保sshd
守护进程已停止:
ps -A | grep -i ssh
确保没有sshd
进程正在运行,然后重新检查netstat
输出。如果仍有sshd
进程,请尝试:
killall -KILL sshd
再次检查你的netstat
输出。
这应该允许您在服务器端暂时关闭一切。
sshd
您可以通过停止和禁用服务(如果不需要)或更改配置sshd
以仅允许来自特定 IP 地址或 IP 地址范围的连接来更永久地阻止服务器端的连接。
但是,您还应该首先尝试识别与您的服务器建立连接的机器,并确保它没有安装任何可能用于启动连接的ssh
相关软件。PuTTY
答案3
更新
sshd 显示上次登录的 IP 地址,但netstat
打印当前的。
以 root 身份运行以下命令:
echo "sshd: 192.168.1.11" >> /etc/hosts.deny