如何用CentOS iptables限制访问

在CentOS系统中,使用iptables可以限制对网络服务的访问。以下是一些基本步骤和示例,用于设置iptables规则以限制访问:

1. 查看当前的iptables规则

首先,查看当前的iptables规则,以便了解现有的配置:

sudo iptables -L -n -v

2. 允许特定IP访问

假设你想允许IP地址192.168.1.100访问你的服务器上的SSH服务(端口22),可以使用以下命令:

sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT

3. 拒绝所有其他IP访问SSH

接下来,拒绝所有其他IP地址访问SSH服务:

sudo iptables -A INPUT -p tcp --dport 22 -j DROP

4. 允许特定IP访问HTTP和HTTPS服务

假设你想允许IP地址192.168.1.100访问你的服务器上的HTTP(端口80)和HTTPS(端口443)服务,可以使用以下命令:

sudo iptables -A INPUT -p tcp --dport 80 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -s 192.168.1.100 -j ACCEPT

5. 拒绝所有其他IP访问HTTP和HTTPS服务

然后,拒绝所有其他IP地址访问HTTP和HTTPS服务:

sudo iptables -A INPUT -p tcp --dport 80 -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -j DROP

6. 保存iptables规则

CentOS 7及以上版本使用firewalld作为默认防火墙管理工具,但你可以手动保存iptables规则:

sudo service iptables save

7. 恢复默认规则

如果你需要恢复默认的iptables规则,可以使用以下命令:

sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

8. 使用firewalld进行更高级的管理

如果你更喜欢使用firewalld,可以使用以下命令来管理防火墙规则:

# 允许特定IP访问SSH
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'

# 拒绝所有其他IP访问SSH
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="22" reject'

# 重新加载firewalld配置
sudo firewall-cmd --reload

通过这些步骤,你可以使用iptables和firewalld在CentOS系统上限制对网络服务的访问。记得在修改防火墙规则时要小心,以免意外阻止必要的流量。