IPtables之三 顯式擴充套件規則

2021-12-30 08:30:20 字數 3554 閱讀 2432

前兩篇:iptables之二:基礎規則編寫 iptables之一:基本概念介紹

對於顯式擴充套件與隱式擴充套件的區別,先分析以下2條規則

規則1:iptables -t filter -a input -s 192.168.1.0/24 -d 172.16.100.1 -p udp –dport 53 -j drop

規則2:iptables -t filter -a input -s 192.168.1.0/24 -d 172.16.100.1 -p udp -m udp –dport 53 -j drop

相對於規則1,在規則2上使用了-m選項,明確指定了對udp進行擴充套件,擴充套件埠為53

而對於隱式擴充套件,不需要使用-m選項進行明確指定,對於tcp而言,可以擴充套件tcp的標誌位、源和目標埠,對於udp,可以擴充套件源和目標埠,對於icmp,可以擴充套件request,replay等不同資料報

下面講講幾個常用的顯式擴充套件:

顯式擴充套件之一state:連線狀態

-m state –-state

在第一篇博文中提到過:包過濾防火牆可以分為「狀態檢測型」和「簡單包過濾型」

接下來介紹下用iptables實現狀態檢測包過濾

介紹tcp以下4種狀態的連線

1.new

即3次握手的第一次,一次新的請求

iptable -a output -o eth0 -m state --state new -j drop

分析這條規則,其中-m表示擴充套件載入state狀態檢測模組,--state new表示檢測tcp的第一次握手,整條規則的作用就是拒絕從eth0網絡卡發出的新的tcp連線。

2.established

二次握手以後,連線斷開之前的連線

3.related

相關連的狀態,可解決控制ftp連線這種超麻煩的協議

4.invalid

無法識別的狀態

應用案例:

結合new和established這2種狀態,實現以下規則

iptables -a input -d 192.168.1.1 -p tcp –dport 22 -m state –-state new,established -j accept

允許外面向主機發起的新的ssh請求

iptables -a input -d 192.168.1.1 -p tcp -dport 80 -m state –-state new,established -j accept

允許外面向主機發起的新的web連線

iptables -a output -s 192.168.1.1 -p tcp sport 22 -m state -–state established -j accept

處於連線狀態時,允許主機發往外部的ssh資料報

iptables -a output -s 192.168.1.1 -p tcp sport 80 -m state –-state established -j accept

處於連線狀態時,允許主機發往外部的web資料報

iptables -p intup drop

拒絕其它所有進來的資料報

iptables -p output drop

拒絕其它所有出去的資料報

這幾條規則可以用在web伺服器上,只允許客戶向伺服器發出ssh和web請求的訪問,伺服器不能主動向外發出任何連線,避免伺服器成為黑客的跳板

www.2cto.com

顯式擴充套件之二mport:多埠匹配

-m     --source-ports

--destination-ports

--ports

此擴充套件可以指定不連續的埠,在這裡優化以上的案例來說明其作用

iptables -a input -d 192.168.1.1 -m mport –-destination-ports 22,80,443 -m state –-state new,established -j accept

iptables -a output -s 192.168.1.1 -m mport –-source-ports 22,80,443 -m state –- state established -j accept

iptables -p intup drop

iptables -p output drop

一次可以新增多個埠,埠之間用逗號隔開

顯式擴充套件之三iprange:多ip匹配

-m iprange

–-src-range

–-dst-range

這裡用乙個簡單的例子來說明

iptables -a input -d 192.168.1.1 -m iprange –src-range 192.168.0.1-192.168.0.100 -p tcp –-dport 80 -j drop

拒絕192.168.0.1-192.168.0.100這段位址訪問192.168.1.1的web服務

顯式擴充套件之四connlimit:併發連線請求個數限制

-m connlimit

–-connlimit-above

顯式擴充套件之五limit:速率限制

-m limit

–-limit 平均速率

–-limit-burst 突發速率

iptables -a input -d 192.168.1.1 -p tcp –dport 80 -m limit –-limit 10/second –-limit-burst 30  -j accept

此條規則限制了每秒10個資料報,突發最大速率是每秒30個資料報

顯式擴充套件之六limit:時間限制

-m time

–-timestart

–-timestop

--days

--datestart

--datestop

區分以下兩種寫法來理解這幾個選項的意義

iptables -a input  -d 192.168.1.1 -p tcp –-dport 80 -m time –-datestart 2012:07:20:08:30:00 –-datestop  2012:07:20:14:30:00 -j accept

從7月20號8:30到7月30號14:30允許訪問本機web服務

iptables -a input -d 192.168.1.1 -p tcp –-dport 80 -m time –- timestart 08:30:00 –-timestop 14:30:00 –-datestart 2012:07:20 –-datestop 2012:07:30 -j accept

從7月20號到7月30號 每天的8:30—14:30時分允許訪問本機web服務

顯式擴充套件之七string:字元限制(對中文字元匹配有限)

-m string

–-algo bm|kmp 指定字元匹配演算法

--string 指定字元

包含baidu.com的資料報都拒絕

作者 lustlost-迷失在慾望之中部落格

STL中序列式容器之三deque

1.deque概述 vector是單向開口的連續線性空間,而deque則是一種雙向開口的連續線性空間。所謂雙向開口,意思是可以在頭尾兩端都可以做元素的插入與刪除操作。vector當然也可以在頭尾兩端進行操作 從技術觀點 但是其頭部操作其差,無法被接受。deque和vector的最大差異,一在於deq...

傻瓜式Linux之三 安裝軟體

進入linux的世界,不使用點命令是不現實的,看著高手們在終端裡劈劈啪啪地敲著命令,那感覺是很爽而又崇拜滴。其實,如果不是高階使用者,那麼以下的一些命令足夠你應付普通的需求了。首先,你要會cd change directory 即切換目錄。如cd mnt 是進入到 mnt目錄下,不同版本的linux...

傻瓜式Linux之三 安裝軟體

進入linux的世界,不使用點命令是不現實的,看著高手們在終端裡劈劈 地敲著命令,那感覺是很爽而又崇拜滴。其實,如果不是高階使用者,那麼以下的一些命令足夠你應付普通的需求了。首先,你要會cd change directory 即切換目錄。如cd mnt 是進入到 mnt目錄下,不同版本的linux回...