在现代网络环境中,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规则保存到配置文件中:

如何在Linux系统防火墙中放行SSH服务与指定IP地址的详细教程图1

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地址。