1. 介绍
SSH(Secure Shell)是一种用于通过网络进行加密通信的协议。它提供了安全的远程登录和其他安全网络服务的功能。使用SSH可以远程连接到Linux服务器,并在安全的通道上执行命令。然而,由于SSH服务暴露在公共网络上,它也容易受到恶意攻击。为了增加SSH服务的安全性,我们可以使用Linux SSH白名单。
2. SSH白名单的作用
SSH白名单是一种访问控制机制,它只允许事先指定的IP地址连接到SSH服务。只有在白名单上的IP地址才能成功建立SSH连接,其他IP地址将被拒绝访问。这有效地防止了大部分未经授权的访问和恶意攻击。
3. 实施步骤
3.1 创建白名单文件
首先,我们需要创建一个文本文件来存储白名单中的IP地址。可以使用任何文本编辑器打开一个空文件,并将其命名为whitelist.txt
。
$ touch whitelist.txt
接下来,我们可以使用文本编辑器将需要添加到白名单的IP地址逐行添加到whitelist.txt
文件中。
$ nano whitelist.txt
在whitelist.txt
文件中,每行一个IP地址,如下所示:
192.168.0.1
10.0.0.2
3.2 创建防火墙规则
要使用白名单保护SSH服务,我们需要使用防火墙设置来仅允许白名单中的IP地址访问SSH端口(默认情况下是22)。我们可以使用iptables命令来创建防火墙规则。
首先,我们将创建一个名为ssh_allow
的新链,该链将用于存储SSH白名单规则。
$ iptables -N ssh_allow
然后,我们将添加一条规则,允许从白名单中的IP地址连接到SSH端口。
$ iptables -A ssh_allow -p tcp --dport 22 -m conntrack --ctstate NEW -m set --match-set whitelist src -j ACCEPT
重要提示:请确保将whitelist
替换为您的白名单文件的绝对路径。
最后,我们将防火墙规则中所有的默认策略设置为拒绝,并将白名单链添加到输入链中。
$ iptables -P INPUT DROP
$ iptables -A INPUT -j ssh_allow
3.3 保存和应用规则
一旦创建了防火墙规则,我们需要将其保存并应用到系统中。我们可以使用iptables-save命令将规则保存到/etc/sysconfig/iptables
文件中。
$ iptables-save > /etc/sysconfig/iptables
接下来,我们需要重启iptables服务以加载新的规则。
$ systemctl restart iptables
4. 测试
完成上述步骤后,我们可以使用非白名单IP地址尝试连接SSH服务。如果一切正常,我们应该看到连接被阻止。
$ ssh user@server
ssh: connect to host server port 22: Connection timed out
然后,我们可以使用白名单中的IP地址重新尝试连接SSH服务。如果一切正常,我们应该能够成功连接到服务器。
$ ssh user@server
user@server's password:
5. 总结
使用Linux SSH白名单可以大大提高SSH服务的安全性。通过限制只有在白名单上的IP地址才能访问SSH端口,我们可以防止未经授权的访问和恶意攻击。实施白名单的步骤主要包括创建白名单文件,创建防火墙规则以及保存和应用规则。在测试阶段,我们可以通过尝试使用非白名单IP地址进行SSH连接来验证白名单是否起作用。