天天看點

linux下删除防火牆規則,linux下的軟體防火牆iptables——規則的定義與删除

關于ipitables防火牆的介紹,以及如何檢視規則及清理規則等,在之前的一篇文章中已經講述了,今天這裡是示範如何制定防火牆的規則。因為工作中,主要會對filter鍊制定規則,是以這裡我們主要也以fitler鍊做示範。

準備工作

制定規則前,我們首先關閉firewalld服務、開啟iptables服務,然後清除已有的規則。

# systemctl stop firewalld

# systemctl start iptables

# iptables -F

# iptables -X

# iptables -Z

新增規則鍊

關于iptables的添加規則鍊,選項非常繁多,下面我們看基本用法:

iptables [-t tables] -A|I 鍊名 [-i|o 網絡接口] [-m state] [--state 資料包狀态] \

> [-p 網絡協定] [-s 源位址 --sport 端口範圍] [-d 目标位址 --dport 端口範圍] \

> -j [ACCEPT|DROP|REJECT]

選項與參數:

-A|I 鍊名 A表示在已有規則後添加規則,而I則是在最前面插入規則

-i|o 網絡接口 i表示資料包進入的那個網絡接口,需要和INPUT或PREROUTING鍊配合使用;o表示資料包出去的那個接口,需和OUTPUT鍊配合使用

-p 網絡協定 常見的有tcp、upd、icmp以及all

-m state 資料包的狀态

--state 資料包狀态 常見的狀态有INVALID(無效的資料包)、ESTABLISHED(已經成功連接配接的狀态)、NEW(建立立的資料包)、RELATED(新連接配接與現有連接配接相關聯)

-s 源位址 位址可以是ip位址,如192.168.1.110 或網絡位址192.168.1.0/24

-d 目的位址

-j 後面接操作,常見的有ACCEPT(接受)、DROP(丢棄)、REJECT(拒絕)

針對ip、網絡、網卡接口的規則制定

下面,給出幾個規則鍊案例。我們允許從192.168.1.110發來的資料、拒絕192.168.1.111發來的資料。

# iptables -A INPUT -s 192.168.1.110 -j ACCEPT

# iptables -I INPUT -s 192.168.1.111 -j DROP

# iptables -vnL

Chain INPUT (policy ACCEPT 33 packets, 3048 bytes)

pkts bytes target prot opt in out source destination

0 0 DROP all -- * * 192.168.1.111 0.0.0.0/0

0 0 ACCEPT all -- * * 192.168.1.110 0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 18 packets, 1844 bytes)

pkts bytes target prot opt in out source destination

允許192.168.1.0/24網絡位址通路

# iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

# iptables -vnL

Chain INPUT (policy ACCEPT 29 packets, 2328 bytes)

pkts bytes target prot opt in out source destination

0 0 DROP all -- * * 192.168.1.111 0.0.0.0/0

0 0 ACCEPT all -- * * 192.168.1.110 0.0.0.0/0

0 0 ACCEPT all -- * * 192.168.1.0/24 0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 15 packets, 1460 bytes)

pkts bytes target prot opt in out source destination

思考一個問題,192.168.1.111的資料包是會被接受還是會拒絕。從INPUT第一條規則看是會被拒絕,但從最後一條看,會接受。答案是會被拒絕,當滿足其中一條規則時,就不會再走下面的規則了,是以說規則鍊的順序也是非常重要的。

繼續看案例:隻要是本地回環位址lo都允許

# iptables -A INPUT -i lo -j ACCEPT

針對端口的規則制定

将進入本地的21端口資料包都阻擋掉

# iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP

将1024至65534之間的端口都開放,可以用 端口号:端口号 來表示一段連續的端口号

# iptables -A INPUT -i eth0 -p tcp --dport 1024:65534 -j ACCEPT

下面來看兩個個綜合性的規則

本機的3306端口,不對192.168.1.0/24這個網絡開放。

本機的ssh服務,不接受192.168.1.0/24這個網絡的1024:65535端口的資料包

# iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --dport 3306 -j DROP

# iptables -A INPUT -i etc0 -p tcp -s 192.168.1.0/24 \

> --sport 1024:65535 --dport 22 -j DROP

針對資料包的連接配接狀态的規則制定

資料包常見的狀态有INVALID(無效的資料包)、ESTABLISHED(已經成功連接配接的狀态)、NEW(建立立的資料包)、RELATED(新連接配接與現有連接配接相關聯)。

針對ESTABLISHED以及RELATED狀态的資料包全都接受,針對INVALID狀态的資料包全部丢棄

# iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# iptables -A INPUT -m state --state INVALID -j DROP

删除規則鍊

删除規則鍊基本和添加規則鍊一緻,隻不過-A換成-D即可,下面我們一起來删除幾條規則。

# iptables-save

# Generated by iptables-save v1.4.21 on Sun Nov 15 22:36:41 2020

*filter

:INPUT ACCEPT [4:1920]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [16:1380]

-A INPUT -s 192.168.1.111/32 -j DROP

-A INPUT -s 192.168.1.110/32 -j ACCEPT

-A INPUT -s 192.168.1.0/24 -j ACCEPT

……

# iptables -t filter -D INPUT -s 192.168.1.111/32 -j DROP

# iptables -D INPUT -s 192.168.1.110/32 -j ACCEPT

注:以上關于iptables的設定隻會儲存到記憶體中去,重新開機服務後系統後,這些設定将消失。是以,隻要不把自己阻擋在外情況下,請盡管練習吧

若想儲存規則的話,請輸入/usr/libexec/iptables/iptables.init save來儲存。