在现代网络环境中,SSH(Secure Shell)协议被广泛用于安全地访问远程服务器。为了确保服务器的安全性,我们通常需要通过防火墙来管理访问权限。在本文中,我们将介绍如何在Linux系统的防火墙中放行SSH服务,并指定特定的IP地址。
一、了解Linux防火墙
Linux系统中常用的防火墙有iptables和firewalld。iptables是一个功能强大的命令行工具,适用于大多数Linux发行版,而firewalld则提供了一个更为简单的管理界面,特别适合CentOS 7及以上版本。
二、检查当前SSH服务状态
首先,我们需要确认SSH服务是否已经安装并运行。可以使用以下命令检查SSH服务的状态:
sudo systemctl status sshd
如果未安装SSH服务,可以使用以下命令进行安装:
sudo apt install openssh-server # 对于Debian/Ubuntu
sudo yum install openssh-server # 对于CentOS/RHEL
安装完成后,启动SSH服务并设置为开机自启动:
sudo systemctl start sshd
sudo systemctl enable sshd
三、放行SSH服务
接下来,我们将放行SSH服务的端口(默认端口为22)。根据你使用的防火墙,选择以下相应的步骤。
1. 使用iptables放行SSH
如果你使用的是iptables防火墙,可以使用以下命令放行SSH端口:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
为确保更改在重启后依然有效,可以将iptables规则保存到配置文件中:

sudo iptables-save | sudo tee /etc/iptables/rules.v4
2. 使用firewalld放行SSH
如果你使用的是firewalld防火墙,请使用以下步骤:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
四、放行指定IP地址的SSH访问
在某些情况下,我们希望仅允许特定的IP地址访问SSH服务。这可以通过防火墙进行配置。
1. 使用iptables限制IP访问
假设我们希望仅允许IP地址为192.168.1.100的主机访问SSH,可以使用以下命令:
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
同时,我们需要阻止其他所有IP访问SSH服务:
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
确保保存更改:
sudo iptables-save | sudo tee /etc/iptables/rules.v4
2. 使用firewalld限制IP访问
如果使用firewalld,可以按以下步骤操作:
sudo firewall-cmd --permanent --add-rich-rule=rule family=ipv4 source address=192.168.1.100 service name=ssh accept
sudo firewall-cmd --permanent --add-rich-rule=rule family=ipv4 service name=ssh drop
sudo firewall-cmd --reload
五、验证设置
设置完成后,可以通过SSH客户端尝试连接到服务器来验证你的设置。如果连接成功,说明设置有效。若未成功连接,请检查防火墙规则并确保SSH服务在运行状态。
六、总结
在Linux系统中,通过iptables或firewalld有效管理SSH服务的访问权限是确保服务器安全的重要措施。通过限制SSH服务的访问IP,我们能够在一定程度上防范恶意攻击,保护系统的安全。希望通过本文的介绍,你能顺利地配置Linux系统的防火墙,放行SSH服务及指定IP地址。