1. 程式人生 > >iptables匹配條件總結1

iptables匹配條件總結1

源地址

-s選項除了指定單個IP,還可以一次指定多個,用”逗號”隔開即可

[[email protected]1 ~]# iptables -I INPUT -s 172.16.0.116,172.16.0.115 -d 172.16.0.113 -p tcp -j REJECT

[[email protected]1 ~]# iptables -L -n -v --line
Chain INPUT (policy ACCEPT 13 packets, 1428 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1
0 0 REJECT tcp -- * * 172.16.0.115 172.16.0.113 reject-with icmp-port-unreachable 2 0 0 REJECT tcp -- * * 172.16.0.116 172.16.0.113 reject-with icmp-port-unreachable

“逗號”兩側均不能包含空格,多個IP之間必須與逗號相連。
還能指定某個網段

iptables -I INPUT -s
10.6.0.0/16 -j REJECT

還可以對匹配條件取反

iptables -I INPUT ! -s 172.16.0.116 -j ACCEPT

只要發往本機的報文的源地址不是172.16.0.116,就接受報文。
此刻,你猜猜,按照上例中的配置,如果此時從116主機上向防火牆所在的主機發送ping請求,116主機能得到迴應嗎?(此處不考慮其他鏈,只考慮filter表的INPUT鏈)
答案是:能,也就是說,按照上例的配置,116主機仍然能夠ping通當前主機,為什麼呢?我們來分析一下。
上例中,filter表的INPUT鏈中只有一條規則,這條規則要表達的意思就是:
只要報文的源IP不是172.16.0.116,那麼就接受此報文,但是,某些小夥伴可能會誤會,把上例中的規則理解成如下含義,
只要報文的源IP是172.16.0.116,那麼就不接受此報文,這種理解與上述理解看似差別不大,其實完全不一樣,這樣理解是錯誤的,上述理解才是正確的。
換句話說就是,報文的源IP不是172.16.0.116時,會被接收,並不能代表,報文的源IP是172.16.0.116時,會被拒絕。
上例中,因為並沒有任何一條規則指明源IP是172.16.0.116時,該執行怎樣的動作,所以,當來自172.16.0.116的報文經過INPUT鏈時,並不能匹配上例中的規則,於是,此報文就繼續匹配後面的規則,可是,上例中只有一條規則,這條規則後面沒有其他可以匹配的規則,於是,此報文就會去匹配當前鏈的預設動作(預設策略),而上例中,INPUT鏈的預設動作為ACCEPT,所以,來自116的ping報文就被接收了,如果,把上例中INPUT鏈的預設策略改為DROP,那麼,116的報文將會被丟棄,116上的ping命令將得不到任何迴應,但是如果將INPUT鏈的預設策略設定為DROP,當INPUT鏈中沒有任何規則時,所有外來報文將會被丟棄,包括我們ssh遠端連線。
好了,我們通過上例,不僅瞭解到了怎樣對匹配條件取反,還加深了我們對預設策略的瞭解,一舉兩得,我們繼續聊。

-d與-s選項同理

但是請注意,不管是-s選項還是-d選項,取反操作與同時指定多個IP的操作不能同時使用。

需要明確的一點就是:當一條規則中有多個匹配條件時,這多個匹配條件之間,預設存在”與”的關係。

匹配條件:協議型別

使用-p選項,指定報文的協議型別。

[root@web-1 ~]# iptables -I INPUT -s 172.16.0.116 -d 172.16.0.113 -p tcp -j REJECT

#測試一下(ssh屬於tcp協議 )
[root@slave ~]# ssh 172.16.0.113
ssh: connect to host 172.16.0.113 port 22: Connection refused

#使用ping命令試試 (ping命令使用icmp協議)
[root@slave ~]# ping 172.16.0.113
PING 172.16.0.113 (172.16.0.113) 56(84) bytes of data.
64 bytes from 172.16.0.113: icmp_seq=1 ttl=64 time=0.686 ms

可以看到,PING命令可以ping通156,證明icmp協議並沒有被規則匹配到,只有tcp型別的報文被匹配到了。

centos6中,-p支援如下協議
tcp, udp, udplite, icmp, esp, ah, sctp
centos7中,-p支援如下協議
tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh
當不使用-p指定協議型別時,預設表示所有型別的協議都會被匹配到,與使用-p all的效果相同。

匹配條件:網絡卡介面

當本機有多個網絡卡時,使用 -i 選項去匹配報文是通過哪塊網絡卡流入本機的。
當前主機的網絡卡名稱為eth4,假設想要拒絕由網絡卡eth4流入的ping請求報文,則可以進行如下設定。

iptables -t filter -I INPUT -i eth4 -p icmp -j DROP

-i選項是用於判斷報文是從哪個網絡卡流入的,-i選項只能用於PREROUTING鏈、INPUT鏈、FORWARD鏈,
使用-o選項,匹配報文將由哪塊網絡卡流出,-o選項只能用於FORWARD鏈、OUTPUT鏈、POSTROUTING鏈。

擴充套件匹配條件

“源埠”與”目標埠”。

當我們使用ssh工具遠端連線主機時,預設會連線服務端的22號埠.
設定一條規則,拒絕來自172.16.0.116的ssh請求

iptables -t filter -I INPUT -s 172.16.0.116 -p tcp -m tcp --dport 22 -j REJECT

使用–dport選項時,必須事先指定了使用哪種協議,即必須先使用-p選項
-m選項,指定了對應的擴充套件模組為tcp,也就是說,如果想要使用–dport這個擴充套件匹配條件,則必須依靠某個擴充套件模組完成,上例中,這個擴充套件模組就是tcp擴充套件模組,最終,我們使用的是tcp擴充套件模組中的dport擴充套件匹配條件。
在使用擴充套件匹配條件之前,需要指定相應的擴充套件模組才行。
現在你明白了嗎? -m tcp表示使用tcp擴充套件模組,–dport表示tcp擴充套件模組中的一個擴充套件匹配條件,可用於匹配報文的目標埠。
注意,-p tcp與 -m tcp並不衝突,-p用於匹配報文的協議,-m 用於指定擴充套件模組的名稱,正好,這個擴充套件模組也叫tcp。

其實,上例中,我們可以省略-m選項,示例如下。

iptables -t filter -I INPUT -s 172.16.0.116 -p tcp  --dport 22 -j REJECT

當使用-p選項指定了報文的協議時,如果在沒有使用-m指定對應的擴充套件模組名稱的情況下,使用了擴充套件匹配條件, iptables預設會呼叫與-p選項對應的協議名稱相同的模組。
上例中,我們使用-p選項指定了協議名稱,使用擴充套件匹配條件–dport指定了目標埠,在使用擴充套件匹配條件的時候,如果沒有使用-m指定使用哪個擴充套件模組,iptables會預設使用”-m 協議名”,而協議名就是-p選項對應的協議名,上例中,-p 對應的值為tcp,所以預設呼叫的擴充套件模組就為-m tcp,

“源埠”的擴充套件匹配條件為–sport
使用–sport可以判斷報文是否從指定的埠發出,即匹配報文的源埠是否與指定的埠一致,–sport意為source-port

擴充套件匹配條件是可以取反的,同樣是使用”!”進行取反,比如 “! –dport 22”,表示目標埠不是22的報文將會被匹配到。

不管是–sport還是–dsport,都能夠指定一個埠範圍,比如

iptables -t filter -I INPUT -s 172.16.0.116 -p tcp  --dport 22:25 -j REJECT

也可以寫成

iptables -t filter -I INPUT -s 172.16.0.116 -p tcp  --dport :22 -j REJECT
iptables -t filter -I INPUT -s 172.16.0.116 -p tcp  --dport 80: -j REJECT

第一條規則表示匹配0號到22號之間的所有埠,下圖中的第二條規則表示匹配80號埠以及其以後的所有埠(直到65535)。
剛才聊到的兩個擴充套件匹配條件都是tcp擴充套件模組的,其實,tcp擴充套件模組還有一個比較有用的擴充套件匹配條件叫做”–tcp-flags”,但是由於篇幅原因,以後再對這個擴充套件匹配條件進行總結。

藉助tcp擴充套件模組的–sport或者–dport都可以指定一個連續的埠範圍,但是無法同時指定多個離散的、不連續的埠,如果想要同時指定多個離散的埠,需要藉助另一個擴充套件模組,”multiport”模組。
我們可以使用multiport模組的–sports擴充套件條件同時指定多個離散的源埠。
我們可以使用multiport模組的–dports擴充套件條件同時指定多個離散的目標埠。
示例如下

iptables -t filter -I INPUT -s 172.16.0.116 -p tcp-m multiport --dports 22,36,80 -j REJECT

上圖中的-m multiport是不能省略的,如果你省略了-m multiport,就相當於在沒有指定擴充套件模組的情況下,使用了擴充套件條件(”–dports”),那麼上例中,iptables會預設呼叫”-m tcp”

其實multiport模組也可以指定連續的埠範圍,並且能夠在指定連續的埠範圍的同時,指定離散的埠號

iptables -t filter -I INPUT -s 172.16.0.116 -p tcp -m multiport --dports 22,80:88 -j REJECT

不過需要注意,multiport擴充套件只能用於tcp協議與udp協議,即配合-p tcp或者-p udp使用。

相關推薦

iptables匹配條件總結1

源地址 -s選項除了指定單個IP,還可以一次指定多個,用”逗號”隔開即可 [[email protected]1 ~]# iptables -I INPUT -s 172.16.0.116,172.16.0.115 -d 172.16.0.11

iptables 匹配條件(基礎)

連接數 icmp ports port days reject str 大數 最大數 基本匹配條件 -s 用於匹配報文的源地址,可以同時指定多個源地址,每個IP地址用逗號分開,也可以指定網段 iptables -t filter -I INPUT -s 192.168.1.

iptables擴充套件模組tcp的擴充套件匹配條件 --tcp-flags

轉載自http://www.zsythink.net/archives/1578 防止SYN攻擊,可以在iptables中做如下配置 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,

正則總結1匹配內容及數量

       正則是測試工程師的一個常用知識重點,特別是在自動化測試(斷言)、介面測試(斷言)、以及字串查詢、修改、替換等相關操作時: \d                  &

Linux防火牆之iptables常用擴充套件匹配條件(一)

  上一篇博文講了iptables的基本匹配條件和隱式匹配條件,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/12269717.html;今天在來說說iptabels的一些常用的顯示擴充套件匹配條件,所謂顯示擴充套件匹配條件?顯示擴充套件匹配條件就是我們需要用到一些擴充

Linux防火牆之iptables常用擴充套件匹配條件(二)

  上一篇博文我們講到了iptables的一些常用的擴充套件匹配模組以及擴充套件模組的一些選項的說明,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/12273755.html;今天再來說說剩下的幾個比較長用的擴充套件模組。   1、limit,此模組主要是基於收發報文段

項目期復習總結1:背景圖合並,hack,瀏覽器內核前綴,偽類after before

標準 after 不同 fixed cli 條件 人員 tle ble 文件夾: 1、背景圖合並和CSS Spirit 2、PS基本快捷鍵 3、hack技術基本書寫,為什麽不用? 4、內核前綴 5、偽類afterbefore 1、背景

【圖片匹配】--- SIFT_Opencv3.1.0_C++_ubuntu

文件 read 等待 s2d imread mage clas create detect   最近在搗鼓圖片相似性匹配算法。這裏先說一點必要的題外話: 如果是在同一個object不同角度拍攝的多張圖片中,使用SIFT可以有不錯的效果; 如果是尋找類別相同的圖片(可能不是同

Oracle學習總結1

prior 截斷 解析 sim 格式轉化 reside 真的 length 表示 一、 cmd下登錄oracle服務器 sqlplus scott/tiger@//192.168.241.128:1521/orc 二、基本操作   1、解決sqlplus不支

Ubuntu kylin常用總結1

mail ubuntu art 查看 ger 終端命令 logs 錯誤 linu 1、常用的linux終端命令快捷鍵 Ctrl+U :剪切光標前的內容Ctrl+K :剪切光標至行末內容Ctrl+Y :粘貼Ctrl+E :移動光標至行末Ctrl+A :移

HBase學習總結(1):HBase的下載與安裝

oot 停止 微信公眾號 profile jdk1 variable jdk oop lib (HBase是一種數據庫:Hadoop數據庫,它是一種NoSQL存儲系統,專門設計用來高速隨機讀寫大規模數據。本文介紹HBase的下載與安裝的整個過程。) 一

【二分圖匹配入門專題1】E - Air Raid hdu1151【最小路徑覆蓋】

eno rate ask return red size all file 痛苦 Consider a town where all the streets are one-way and each street leads from one intersection to

【二分圖匹配入門專題1】F - COURSES poj1469【最大匹配--匈牙利算法模板題】

nbsp possible count dfs positive owin not hat first Consider a group of N students and P courses. Each student visits zero, one or more t

【二分圖匹配入門專題1】D - Matrix hdu2119【最小頂點覆蓋】

sample ins ever != sca either dfs ret int Give you a matrix(only contains 0 or 1),every time you can select a row or a column and delete

【二分匹配入門專題1】G - Asteroids poj3041【最小頂點覆蓋】

navigate nav mini resp not define 一個 present exp Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape o

【二分圖匹配入門專題1】M - Cyclic Tour hdu1853【km算法--判斷自重邊】

初始化 case test case 思路 contain first rst ant eve There are N cities in our country, and M one-way roads connecting them. Now Little Tom wa

PHP的知識點總結1

指令 cal 環境 w3c nan 命令 mysq web 速度 PHP 基礎知識總結 2015-06-03 分類: 編程技術 PHP 代表 PHP: Hypertext Preprocessor PHP 文件可包含文本、HTML、JavaScript代碼和 PHP

項目總結1(微信+vue2.0)

列表 bin -h ons 獲取 value 沒有 object 方法 項目總結(vue2.0) 一、基礎知識 1.生命周期(項目到用到的) Created:組件實例化創建完成,屬性綁定DOM未完成。($el 屬性還不存在)。 Mounted:組件掛在完成,虛擬DOM渲染到

項目總結(3.DIBR技術項目總結(1.TOF相機及標定相關))

wan html dib ges img 項目總結 csdn sdn bsp 1.定義: http://blog.csdn.net/lavendarwang/article/details/20729595 項目總結(3.DIBR技術項目總結(1.TOF相機及標定相關)

【bzoj2384】[Ceoi2011]Match 特殊匹配條件的KMP+樹狀數組

esp 數組 scanf 題目 bound lower 表示 highlight tle 題目描述 給出兩個長度分別為n、m的序列A、B,求出B的所有長度為n的連續子序列(子串),滿足:序列中第i小的數在序列的Ai位置。 輸入 第一行包含兩個整數n, m (2≤