如何刪除 Iptables 的 input 規則

一開始我先加入三個 input 規則來做 demo,本例為開啟防火牆的 80、443 與 22 port

sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
  • -A:對某條 iptable 的 chain 進行規則加入或插入
  • -i:封包進入的網路介面,本例為 eth0,也是主機上的連線網卡名稱
  • -p:規則適用的網路協定,例如 tcp、udp,本例的 service 都是用 tcp 協定
  • –dport:目標 ip
  • -j:本條規則的作動行為,例如 ACCEPT、DROP、REJECT


查看 iptables 的 INPUT chain 規則

sudo iptables -L INPUT -n --line-number
  • -L:列出
  • -n:不進行 ip 與 hostname 的反查
  • –line-number:顯示規則的行號
# 執行結果:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22


有了每條規則的 line number,要刪除就很容易了,下面試範刪除第二條 443 port 的規則

sudo iptables -D INPUT 2
  • -D:刪除
  • INPUT 2: input chain 裡的第二條規則,數字代表該規則的行號


再次查看,443 port 的規則確實刪掉了,其它行也可以如法炮製,注意,每做一次刪除,行號就會有所變動!

sudo iptables -L INPUT -n --line-number
# 執行結果:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

參考資料:

iptables 刪除某行規則

鳥哥的 Linux 私房菜 - Linux 防火牆與 NAT 伺服器

wade Written by:

本站站長