首頁 > 軟體

Iptables防火牆基本匹配條件應用詳解

2022-08-10 18:03:17

引言

@[TOC] 應用匹配條件時,經常會用到以下幾個引數。

  • -p:指定要操作的協定型別,不指定-p引數宣告是那種協定,預設是all,也就是所有協定。
  • -s:指定源地址。
  • -d:指定目標地址。
  • --sport:指定源埠.
  • --dport:指定目標埠。
  • -i:指定從哪個網路卡進入的報文。
  • -o:指定從哪個網路卡出去的報文。
  • -m
  • -j:指定策略的動作。

基本匹配條件案例一

**需求:**

僅允許 192.168.20.21 存取 192.168.20.20 的80埠,其餘的來源使用者端都拒絕存取。

明確需求後,下面來分析應該如何實現。

這條需求分包含兩種不同的條件,首先是允許192.168.20.21存取目標埠,然後是拒絕其他所有的使用者端存取。

  • 首先來思考允許的條件如何實現:

1、允許某個來源存取本機的特定服務,這種存取屬於資料的流入,那麼就會經過PREROUTING和INPUT兩個鏈,允許或者拒絕這些操作都是在filter表實現的,PREROUTING鏈沒有filter,因此首先就可以得出結論,這條規則會在INPUT鏈的filter表中進行新增。

2、允許192.168.20.21這個地址,那麼就需要指定來源的IP,然後根據來源IP的請求,還需要指定目標端的地址。

3、限制來源地址僅存取本機的某個服務,那麼就需要指定服務具體的協定以及埠號。

4、最後指定匹配完這些條件後,執行的動作,也就是ACCEPT。

  • 然後來思考拒絕的條件如何實現:

1、首先明確拒絕其餘來源存取本機的某個服務,那麼一定是在INPUT鏈的filter表中新增具體的規則。

2、最後宣告拒絕其他的來源地址。

注意:由於不是全部拒絕,還有一個來源地址192.168.20.21是允許存取TCP的80埠的,因此在寫入拒絕規則時,不能在使用-I引數新增到表的最頂端,應該通過-A引數新增到表的最後一行,追加進去。

1)實現該需求的防火牆規則如下

1.允許192.168.20.21存取192.168.20.20的80埠
[root@jxl-1 ~]# iptables -t filter -I INPUT -s 192.168.20.21 -d 192.168.20.20 -p tcp --dport 80 -j ACCEPT
2.拒絕其餘來源IP存取本機的80埠
[root@jxl-1 ~]# iptables -t filter -A INPUT -p tcp --dport 80 -j DROP

注意第二條拒絕所有的時候一定要使用-A引數追加到最後一行,否則所有的來源都將不可存取。

2)檢視設定的防火牆規則

INPUT鏈中一共有2條規則,第一條規則的動作是允許,允許192.168.20.21存取192.168.20.20的tcp 80埠,第二條規則的動作是拒絕,拒絕全部IP存取本機的80埠。

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 9483 packets, 17M bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     tcp  --  *      *       192.168.20.21        192.168.20.20        tcp dpt:80
2        0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 9619 packets, 15M bytes)
num   pkts bytes target     prot opt in     out     source               destination         

3)測試結果

只有來源地址為192.168.20.21的IP,才能存取到192.168.20.20的TCP 80埠的服務。

基本匹配條件案例二

**需求:**由本機發出的TCP協定的報文都允許,發出的其他協定報文都拒絕。

明確需求後,下面來分析應該如何實現,和案例一類似,分為兩種規則,一是允許某一個協定,二是拒絕其餘所有的協定。

首先要明確在哪一個鏈的哪一個表中新增Iptables防火牆規則,看需求中的關鍵字“由本機發出”,由本機發出都需要經過POSTROUTING和OUTPUT鏈,這種過濾規則一定會在OUPUT鏈進行新增,引起POSTROUTING鏈沒有filter表。

明確完再哪一張表和哪一個鏈新增規則後,就非常容易了。

1)先來新增允許TCP協定報文流出的Iptables防火牆規則。

2)然後來新增拒絕剩餘的其他報文,一定要將拒絕的規則新增在允許規則的下面,否則允許的規則將永不生效。

可以先將之前新增的規則清空,以免受到干擾。

[root@jxl-1 ~]# iptables -t filter -F

1)實現該需求的防火牆規則如下

1.允許本機的TCP協定報文流出
[root@jxl-1 ~]# iptables -t filter -I OUTPUT -p tcp -j ACCEPT
2.拒絕本機所有協定報文流出
[root@jxl-1 ~]# iptables -t filter -A OUTPUT -p all -j DROP

2)檢視設定的防火牆規則

在OUTPUT鏈可以看到兩條規則,第一條規則允許TCP協定報文流出,第二條規則拒絕所有協定的報文流出。

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 5138 packets, 8863K bytes)
num   pkts bytes target     prot opt in     out     source               destination         
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     6703   10M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           
2        1    76 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0  

3)測試結果

由於拒絕了除TCP協定以外的所有協定,因此再使用ICMP協定時就產生了拒絕的現象,但是使用TCP協定就沒有任何影響。

基本匹配條件案例三

需求: 禁止其他主機從ens192傳送來的ping請求。

首先來進行分析,案例三就非常簡單了,只有一種條件,那就是禁止其他的主機從本機的ens192網路卡傳送來的資料包文,從字面意思可以清楚的知道這是一條資料流入的規則。

那麼一定是在INPUT鏈的filter表新增相應的規則策略。

1)實現該需求的防火牆規則如下

[root@jxl-1 ~]# iptables -t filter -I INPUT -i ens192 -p icmp -j DROP

2)檢視設定的防火牆規則

在INPUT鏈中已經新增上了這條規則,凡是來自ens192網路卡並且協定是icmp的報文都會被拒絕。

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 2680 packets, 4308K bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 DROP       icmp --  ens192 *       0.0.0.0/0            0.0.0.0/0           
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 2752 packets, 4004K bytes)
num   pkts bytes target     prot opt in     out     source               destination  

3)測試結果

在其他主機ping防火牆主機的ens192網路卡,發現不通,但是ens224網路卡就通。

拒絕所有協定進入本機的規則設定

iptables -t filter INPUT -j DROP

--dport引數宣告多個連續的埠號

--dport 20:22
表示20-22三個埠都可以進行匹配。

以上就是Iptables防火牆基本匹配條件應用詳解的詳細內容,更多關於Iptables防火牆匹配條件的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com