有时我没有静态 IP,需要远程管理我的 Web 服务器。我正在寻找可以添加的任何额外保护层,以使打开端口 22 更安全。
目前我已禁用通过 SSH 的 root 密码登录。它需要 RSA 密钥才能登录(私钥存储在 USB 智能卡上)。
如果端口 22 向公众开放,我的配置是否存在任何已知风险?除了22端口外,iptables仅对外开放80端口和443端口。
我正在使用 Windows 计算机通过 Putty 连接到 Centos 6 Linux。
是否有任何其他语句可以添加到防火墙或 SSH 配置中,以进一步限制对端口 22 的访问仅限于我的特定计算机,以便该端口不会对扫描端口的人开放?我目前正在使用 iptables 作为防火墙。
答案1
您现有的配置看起来非常安全。但是,您还可以使用其他方法来限制访问。
端口敲门可用于保持端口在大部分时间关闭。这是使用 实现的iptables
。有可以使用的守护进程,或者可以按照iptables
中所述完全实现规则岸墙文档。
如果启用了 tcp 包装器。 /etc/hosts.allow 中的一些规则(如下所示)将在远程连接到deamon
.第一条规则让本地连接静默工作,适当调整 IP 地址范围。第二条规则阻止来自反转为多个国家/地区 TLD 的地址的访问,并为每个成功的连接通过电子邮件发送一条消息。如果您不使用端口敲门,则可能会很吵。
sshd : 10.0.0.0/8 192.168.0.0/24
sshd : ALL \
EXCEPT .ar .au .br .by .cl .co .cz .do .eg .gt \
.id .il .in .jp .ma .mx .nl .pe .pk .pl .pt \
.ro .rs .ru .sa .sg .tr .tw .ua .vn .za \
.ae .at .bg .gh .hr .hu .ke .kz .lt .md \
.my .no .sk .uy .ve : \
spawn (/bin/echo "SSH connection to %N from %n[%a] allowed" | \
/usr/bin/mailx -s "SSH Allowed" [email protected])
fail2ban
规则可用于暂时将试图暴力破解您的服务器的主机列入黑名单。当我将 ssh 暴露到互联网上时,我偶尔会看到一些尝试。
答案2
正如其他人所说,SSH 已经能够胜任足够安全的任务。我认为将 sshd 守护进程移动到不同的位置是没有意义的。我将其比作设置无线接入点并隐藏 SSID。通过隐蔽措施绕过这些类型的安全措施是微不足道的。
不仅限制 root 用户的访问权限,而且仅限制关键用户的访问权限始终是一个好主意,无论是通过 SSH 访问还是其他任何方式。
我发现有用的一件事是利用类似的东西fail2ban
。您可以使用它来检测并采取对策来减缓和阻止潜在的攻击者。
答案3
您的 SSH 安装在安全性方面已经是最先进的。
您可以做一些事情,但请注意,这对您来说可能更多的是一种痛苦,而不是真正的保护。您可以将端口从 22 更改为较不知名的端口,以减少收到的攻击和身份验证探测。
答案4
服务器端的唯一风险是预身份验证漏洞。 SSH 的历史上并没有很多(公开的)。