关闭 Centos 上的默认 SSH 端口

关闭 Centos 上的默认 SSH 端口

过去几周,我每小时收到 1000 次登录失败,我确信其中 99% 是来自机器人。我安装了 fail2ban 并阻止了一些子网,但我还决定更改用于 SSH 的端口。只有我一个人在使用服务器,所以这是一个简单的更改,可以摆脱大量机器人请求。

我已经进行了更改,一切运行正常。我现在想阻止端口 22。我检查了防火墙,发现它从来没有针对端口 22 的规则,这让我很想知道它是如何工作的。一定有某种措施来确保端口 22 请求不会被阻止。我该如何禁用此功能并完全锁定端口 22?

答案1

从你之前的问题中,我了解到你使用的是 CentOS 6。该/etc/sysconfig/iptables文件将包含首次加载时 IPv4 防火墙的状态。这可能与防火墙的运行状态不同,特别是如果你一直在添加任意规则。你可以使用以下命令保存防火墙的当前状态

service iptables save

它将会覆盖/etc/sysconfig/iptables(最好先进行备份)。

在正常情况下你会发现这样的一行

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 

允许连接到端口 22。只需删除该行,然后保存文件。当您返回命令行时,运行命令

service iptables reload 

这将确保保存的防火墙状态和正在运行的防火墙状态相同。这是因为 CentOS 6 上的默认防火墙在 INPUT 链的末尾有一个全面的 REJECT 规则。

如果你不想依赖一揽子 REJECT,那么将行更改为

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j DROP

按照上述方法保存并重新启动。

但请注意,@ipor 所说的是正确的。如果您将 sshd 移至其他端口,则它实际上已关闭,因为没有任何东西在监听。

答案2

以 root 身份登录后,使用以下 IPtable 规则在防火墙级别阻止端口 22。

阻止从外部通过 eth0(网卡)访问 ssh 到系统。

iptables -F

服务 iptables 保存

iptables -A INPUT -i eth0 -p tcp --dport 22 -j DROP

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j DROP

服务 iptables 保存

因此它将永远保持 iptable 状态。(请记住,有很多方法可以阻止不需要的请求,您可以根据需要选择在您的环境中使用哪一个,因为任何人都可以进行“谷歌搜索”。)

相关内容