在Linux中,可以使用iptables
或firewalld
來(lái)管理防火墻規(guī)則,并開(kāi)放或關(guān)閉端口。
一、使用iptables
查看當(dāng)前的防火墻規(guī)則
iptables -L -n -v
開(kāi)放端口
# 開(kāi)放端口給所有IP
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
# 開(kāi)放端口給指定IP, 如192.168.1.2
iptables -I INPUT -p tcp -s 192.168.1.2 --dport 8080 -j ACCEPT
# 取消開(kāi)放端口
iptables -D INPUT -p tcp --dport 8080 -j ACCEPT
-I
代表插入(Insert),用于添加規(guī)則。
-D
代表刪除(Delete),用于刪除規(guī)則。
INPUT
是處理進(jìn)入系統(tǒng)的數(shù)據(jù)包。
-p
后跟協(xié)議(如tcp, udp)。
--dport
后跟目標(biāo)端口號(hào)。
-j
后跟處理規(guī)則(ACCEPT, DROP等)。
-s
表示訪問(wèn)當(dāng)前機(jī)器的ip
- 限制端口被訪問(wèn)
# 限制所有ip訪問(wèn)22端口
sudo iptables -A INPUT -p tcp --dport 22 -j REJECT
# 限制指定ip訪問(wèn)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
如果需要開(kāi)放UDP端口,可以將tcp
替換為udp
。
-
保存規(guī)則
iptables-save > /etc/iptables/rules.v4
或者在Debian/Ubuntu系統(tǒng)上:
netfilter-persistent savenetfilter-persistent reload
加載規(guī)則
iptables-restore < /etc/iptables/rules.v4
重啟iptables服務(wù)(如果需要)
systemctl restart iptables
二、使用firewalld(如果系統(tǒng)使用的是firewalld)
-
查看當(dāng)前的防火墻區(qū)域和端口開(kāi)放設(shè)置:
firewall-cmd --list-all
-
開(kāi)放和刪除端口(例如: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區(qū)域,你可以根據(jù)需要選擇其他區(qū)域,例如--zone=dmz。
--permanent 表示永久添加或刪除端口,如果不使用--permanent,更改只在當(dāng)前會(huì)話內(nèi)有效。
- 重新加載防火墻以應(yīng)用更改:
firewall-cmd --reload
如果不確定系統(tǒng)使用的防火墻,可以使用systemctl status firewalld
來(lái)檢查firewalld服務(wù)的狀態(tài)。