iptables:強大的防火墻工具

iptables是內置于多數(shù)發(fā)行版中的網(wǎng)絡防火墻包過濾器祟印。我也不知道該怎么解釋,,別看很輕量化逛球,但是功能很強大~
iptables的引入是用來替換掉老的ipchains,ipclains在Linux內核2.2系列中使用苫昌,用來作為封包過濾和防火墻的功能颤绕。但是ipchains的功能和定制化很局限。在Linux內核2.3系列開始引入了netfilter項目祟身,其中iptables防火墻就是這個項目的一部分奥务,在2.4內核中iptables取代了先前的ipchains作為內置的包過濾器。
對于iptables的歷史我沒有深究袜硫,這篇博客重點在于iptables的用法和規(guī)則設定氯葬。在網(wǎng)上簡單了解一下發(fā)現(xiàn),Linux包過濾功能的歷史并不長婉陷,本篇參考了以下幾個地方的內容:

iptables工作機制

iptables分為五個規(guī)則鏈:

  • PREROUTING 數(shù)據(jù)包進入路由表之前
  • INPUT 數(shù)據(jù)包入口
  • FORWARD 轉發(fā)關卡
  • OUTPUT 數(shù)據(jù)包出口
  • POSTROUTING 數(shù)據(jù)包離開路由后
    這五個規(guī)則鏈是五個鉤子函數(shù)(hook),只要是經(jīng)過本機的數(shù)據(jù)包帚称,一定會經(jīng)過這五個鏈中的一個官研。那么就可以通過配置過濾規(guī)則來實現(xiàn)特定的場景。

和四個表:

  • filter 一般的過濾功能
  • nat 用于nat功能(端口轉發(fā)闯睹、地址映射等)
  • mangle 對數(shù)據(jù)包進行修改(TOS戏羽、TTL)
  • raw 優(yōu)先級最高,為了不讓iptables做數(shù)據(jù)包的連接跟蹤處理楼吃,以提高性能始花。
主機數(shù)據(jù)流

其中每個表對應多個鏈,都有不同所刀,這是每個表的默認規(guī)則鏈:

  • filter:INPUT衙荐;FORWARD;OUTPUT浮创;
  • nat:PREROUTING忧吟;POSTROUTING;OUTPUT斩披;
  • mangle:PREROUTING溜族;POSTROUTING;INPUT垦沉;OUTPUT煌抒;FORWARD;
  • raw:OUTPUT厕倍;PREROUTING寡壮;

iptables的策略

規(guī)則鏈確定了作用的位置;而表則劃分出了不同的功能讹弯。filter表主要是過濾的功能况既,針對特定的IP、端口组民、網(wǎng)段進行限制棒仍;nat表主要定義地址轉換的功能等。
iptables的策略主要分為兩種:“通”策略和“堵”策略:

  1. 通策略臭胜,默認門是關著的莫其,即默認規(guī)則為DROP,根據(jù)需要進行放行耸三。
  2. 堵策略乱陡,默認門是開著的,即默認規(guī)則為ACCEPT仪壮,根據(jù)需要攔截數(shù)據(jù)包憨颠。

注意iptables的規(guī)則是嚴格按照先后順序執(zhí)行的,所以要將比較嚴格的規(guī)則前置睛驳,檢查規(guī)則的時候是由上向下的順序烙心。
此外,iptables還支持自定義鏈乏沸,必須跟某種特定的鏈關聯(lián)起來淫茵,在此先不做討論。

iptables規(guī)則語法

iptables的命令格式:

iptables -t [tables] COMMAND chain rules -j ACTION
  • -t tables:四個表蹬跃,缺省是filter表匙瘪,可忽略此選項
  • COMMAND:命令,定義對規(guī)則采取的操作
  • chain:指定是在哪一條鏈上的操作
  • rules:指定匹配規(guī)則
  • -j ACTION:指定做出如何的處理

E.g.
禁止123.123.123.123地址對本機80端口的訪問:

iptables -t filter -A INPUT -s 123.123.123.123 -p tcp --dport 80 -j DROP
iptables -t filter -A INPUT -s 123.123.123.123 -p tcp --dport 80 -j REJECT

默認OUTPUT鏈為“關”:

iptables -P OUTPUT DROP

查看詳細規(guī)則:

iptables -L -n -v

COMMAND部分詳解

鏈管理命令(立即生效)

-P:設置默認策略:開&&關

iptables -P OUTPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P OUTPUT REJECT

決定OUTPUT鏈默認接收或丟棄蝶缀。不同的是REJECT是直接丟棄丹喻,而DROP是悄悄丟棄數(shù)據(jù)包。這在掃描端口的時候會有差別翁都。

-F:清空規(guī)則鏈

iptables -t nat -F
iptables -F INPUT

分別是清空nat表的規(guī)則和清空filter表的INPUT鏈規(guī)則碍论。
注意:由于是立即生效的命令,因此在清空filter表時先確定沒有默認DROP的鏈柄慰,否則敲完回車后就會將你拒之門外了鳍悠。有控制臺還好,沒有的話就麻煩的很了

-N:新建一個自定義鏈

iptables -N inboard_tcp_web

-X:用于刪除用戶自定義的空鏈
刪除空鏈坐搔,因此刪除之前最好先執(zhí)行iptables -F藏研。

-E:用來給自定義鏈重命名

iptables -E oldname newname

-Z:清空鏈。清空鏈以及鏈默認規(guī)則的計數(shù)器:1.匹配數(shù)據(jù)吧個數(shù)概行;2.多少字節(jié)蠢挡。

iptables -Z

規(guī)則管理命令

-A:追加規(guī)則。當前鏈的規(guī)則后新加一條規(guī)則凳忙。(iptables執(zhí)行有前后順序)
-I [num]:插入規(guī)則业踏。插入為第幾條規(guī)則

iptabels -t filter -I 1 -s 192.168.1.106 -p tcp --dport 80 -j DROP

-R [num]:替換。替換(修改)為第幾條規(guī)則消略。相當于bash中的mv命令堡称。
-D [num]:刪除。刪除第幾條規(guī)則艺演。

查看規(guī)則命令

iptables -L

子命令:

  • -v/vv/vvv 詳細信息
  • -x 計數(shù)器顯示精確值却紧,不做單位換算
  • –line-numbers 顯示規(guī)則行號
  • -t nat 顯示指定位置的信息

關于規(guī)則匹配

地址匹配

  • -s:匹配源地址 IP | IP/Mask | 0.0.0.0/0.0.0.0
  • 感嘆號!表示取反
  • -d:匹配目的地址
  • -p:匹配通信協(xié)議(TCP/UDP/ICMP)
  • -i eth0:指定數(shù)據(jù)包流入的網(wǎng)卡
  • -o eth1:指定數(shù)據(jù)包流出的網(wǎng)卡

協(xié)議匹配

-p tcp:匹配TCP通信協(xié)議:

  • --dport XX/XX-XX 指定目的端口,只能表示連續(xù)端口胎撤,不可指定非連續(xù)端口號
  • --sport XX/XX-XX 指定源端口晓殊,同上

-p tcp --tcp-flags 指定TCP的標志位(SYN,ACK,FIN,PSH,RST,URG)。一般格式如下:

iptables -A INPUT -p tcp --tcpflags syn,ack,fin,rst  syn  ...
iptables -A INPUT -p tcp --syn  ...

一般分為前后兩部分:syn,ack,fin,rst表示受檢查的標志位伤提;syn表示匹配必須為1的標志位巫俺,而且其他的必須為零。常用來匹配三次握手的第一個數(shù)據(jù)包肿男。另一種寫法是直接寫成--syn介汹。

-p udp:匹配UDP通信協(xié)議(同tcp):

  • --dport XX/XX-XX 指定目的端口却嗡,只能表示連續(xù)端口,不可指定非連續(xù)端口號
  • --sport XX/XX-XX 指定源端口嘹承,同上

-p icmp:匹配icmp數(shù)據(jù)包窗价,通常是ping包:

  • -p icmp --icmp-type 8 回顯icmp請求
  • -p icmp --icmp-type 0 回顯icmp應答

E.g.
以下操作中INPUT,OUTPUT默認丟棄
開放本機icmp請求權限:

iptables -A OUTPUT -s 192.168.1.100 -p icmp --icmp-type 8 -j ACCEPT

但是此時仍無反應,接下來開放本機的icmp應答權限:

iptables -A INPUT -d 192.168.1.100 -p icmp --icmp-type 0 -j ACCEPT

這時候就會成功ping通外部機器叹卷。但是此時外部主機是ping不通本機的撼港,這就需要分別在INPUT和OUTPUT上做相反的規(guī)則,在此不做贅述骤竹。

-m 啟用擴展模塊:

  • -m multiport -p tcp --dport 21,22,23,80 啟用多端口擴展模塊
  • -m state --state NEW,ESTABLISH 增加狀態(tài)檢測模塊

ACTION部分

DROP:悄悄丟棄帝牡。一般使用DROP,效果與REJECT相同蒙揣,可以隱藏身份和防火墻結構靶溜。
REJECT:明示拒絕,端口掃描顯示被拒絕鸣奔。
ACCEPT:接收數(shù)據(jù)包墨技。

這三個是常用動作,續(xù)更…

狀態(tài)檢測

通常挎狸,對于整個TCP協(xié)議來講扣汪,是一個保持連接的通信協(xié)議。在三次握手四次揮手過程中锨匆,第一次握手稱之為NEW連接崭别;從第二次握手以后,標志位ack都等于1恐锣,稱之為已建立的連接:ESTABLISH茅主;類似FTP連接,監(jiān)聽端口獨立于數(shù)據(jù)傳輸端口而存在土榴,包括20,21兩個端口诀姚,我們稱之為RELATED;對于我們無法識別的狀態(tài)玷禽,稱之為INVALID赫段。

  • NEW 新建立的連接
  • ESTABLISH 已存在的連接
  • INVALID 無法識別的連接
  • RELATED 有聯(lián)系的連接(沒用過,不深究)

這樣做矢赁,可以指定源地址可以連接糯笙,禁用其他連接:

iptables -A INPUT -s 192.168.1.106/24 -d 192.168.1.100 -p tcp --dport 22 -m state --state NEW,ESTABLISH -j ACCEPT
iptables -A OUTPUT -d 192.168.1.106 -m state --state ESTABLISH -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

在OUTPUT鏈僅開放192.168.1.106的規(guī)則太嚴格了,如果需要其他連接撩银,可以改成這樣:

iptables -R OUTPUT 1 -m state --state ESTABLISH -j ACCEPT
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末给涕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌够庙,老刑警劉巖恭应,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耘眨,居然都是意外死亡暮屡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門毅桃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人准夷,你說我怎么就攤上這事钥飞。” “怎么了衫嵌?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵读宙,是天一觀的道長。 經(jīng)常有香客問我楔绞,道長结闸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任酒朵,我火速辦了婚禮桦锄,結果婚禮上,老公的妹妹穿的比我還像新娘蔫耽。我一直安慰自己结耀,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布匙铡。 她就那樣靜靜地躺著图甜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鳖眼。 梳的紋絲不亂的頭發(fā)上黑毅,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音钦讳,去河邊找鬼矿瘦。 笑死,一個胖子當著我的面吹牛蜂厅,可吹牛的內容都是我干的匪凡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼掘猿,長吁一口氣:“原來是場噩夢啊……” “哼病游!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤衬衬,失蹤者是張志新(化名)和其女友劉穎买猖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滋尉,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡玉控,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了狮惜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片高诺。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖碾篡,靈堂內的尸體忽然破棺而出虱而,到底是詐尸還是另有隱情,我是刑警寧澤开泽,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布牡拇,位于F島的核電站,受9級特大地震影響穆律,放射性物質發(fā)生泄漏惠呼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一峦耘、第九天 我趴在偏房一處隱蔽的房頂上張望剔蹋。 院中可真熱鬧,春花似錦辅髓、人聲如沸滩租。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽律想。三九已至,卻和暖如春绍弟,著一層夾襖步出監(jiān)牢的瞬間技即,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工樟遣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留而叼,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓豹悬,卻偏偏與公主長得像葵陵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瞻佛,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容

  • 1.安全技術 (1)入侵檢測與管理系統(tǒng)(Intrusion Detection Systems): 特點是不阻斷任...
    尛尛大尹閱讀 2,460評論 0 2
  • 防火墻的概念iptables的簡介iptables命令網(wǎng)絡防火墻NATfirewalld服務 一脱篙、防火墻的概念 (...
    哈嘍別樣閱讀 1,813評論 0 1
  • 1 概述 iptables命令中娇钱,需要根據(jù)匹配的條件作出相應的動作,本文將結合例子绊困,講解匹配條件 匹配條件分為基本...
    ghbsunny閱讀 4,239評論 0 0
  • 一.防火墻概念 (一)安全技術介紹 (1) 入侵檢測與管理系統(tǒng)(Intrusion Detection Syste...
    楠人幫閱讀 1,477評論 0 3
  • 情緒是情感的產(chǎn)物文搂,有感情的人都會通過情緒來表達內心的真實感受。人類秤朗,動物的行為本質上都受情緒的控制煤蹭,但二者最大的...
    黑白嘿嘿嘿閱讀 246評論 0 0