前兩篇: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回...