在Linux中,可以使用iptables
或firewalld
来管理防火墙规则,并开放或关闭端口。
一、使用iptables
查看当前的防火墙规则
iptables -L -n -v
开放端口
# 开放端口给所有IP
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
# 开放端口给指定IP, 如192.168.1.2
iptables -I INPUT -p tcp -s 192.168.1.2 --dport 8080 -j ACCEPT
# 取消开放端口
iptables -D INPUT -p tcp --dport 8080 -j ACCEPT
-I
代表插入(Insert),用于添加规则。
-D
代表删除(Delete),用于删除规则。
INPUT
是处理进入系统的数据包。
-p
后跟协议(如tcp, udp)。
--dport
后跟目标端口号。
-j
后跟处理规则(ACCEPT, DROP等)。
-s
表示访问当前机器的ip
- 限制端口被访问
# 限制所有ip访问22端口
sudo iptables -A INPUT -p tcp --dport 22 -j REJECT
# 限制指定ip访问22端口, 如192.168.1.2
sudo iptables -A INPUT -p tcp -s 192.168.1.2 --dport 22 -j REJECT
#取消限制
sudo iptables -D INPUT -p tcp --dport 22 -j REJECT
如果需要开放UDP端口,可以将tcp
替换为udp
。
-
保存规则
iptables-save > /etc/iptables/rules.v4
或者在Debian/Ubuntu系统上:
netfilter-persistent savenetfilter-persistent reload
加载规则
iptables-restore < /etc/iptables/rules.v4
重启iptables服务(如果需要)
systemctl restart iptables
二、使用firewalld(如果系统使用的是firewalld)
-
查看当前的防火墙区域和端口开放设置:
firewall-cmd --list-all
-
开放和删除端口(例如:8080):
# 添加TCP端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent # 添加UDP端口 firewall-cmd --zone=public --add-port=53/udp --permanent # 删除TCP端口 firewall-cmd --zone=public --remove-port=8080/tcp --permanent # 删除UDP端口 firewall-cmd --zone=public --remove-port=53/udp --permanent
--zone=public 表示操作的是public区域,你可以根据需要选择其他区域,例如--zone=dmz。
--permanent 表示永久添加或删除端口,如果不使用--permanent,更改只在当前会话内有效。
- 重新加载防火墙以应用更改:
firewall-cmd --reload
如果不确定系统使用的防火墙,可以使用systemctl status firewalld
来检查firewalld服务的状态。