日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iptables规则基本用法

發(fā)布時(shí)間:2024/9/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iptables规则基本用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

iptables規(guī)則基本語法

iptables [-t table] option argu

  • table: 可選4表其中之一,raw,mangle,nat,filter,不指定默認(rèn)為filter表

  • option:根據(jù)對(duì)規(guī)則的不同操作,可分為-N,-X,-E,-P,-F,-L,-Z,-A等

  • argu:根據(jù)選擇的option的不同,所對(duì)應(yīng)的參數(shù)也不同,下面會(huì)具體講解


iptables規(guī)則詳細(xì)解析

創(chuàng)建一條自定義的空規(guī)則鏈

iptables [-t table] -N chain_name

刪除一條自定義的空規(guī)則鏈

iptables [-t table] -X [chain_name]

注:5大內(nèi)置的主鏈不可刪除;不指定鏈名,則會(huì)刪除指定表中非內(nèi)置的所有空鏈

修改自定義鏈名

iptables [-t table] -E old-chain-name new-chain-name

為鏈指定默認(rèn)策略

iptables [-t table] -P chain_name target

注:target是ACCEPT或DROP


對(duì)鏈中的規(guī)則進(jìn)行清空操作

iptables [-t table] -F [chain_name]

注:清空指定鏈中的所有規(guī)則;無chain_name參數(shù)時(shí),則清空指定表中所有鏈的規(guī)則

對(duì)鏈中的規(guī)則進(jìn)行顯示操作

iptables [-t table] -L [chain_name [rulenum]] [options...]

注:顯示指定鏈中的規(guī)則;一般都不指定chain_name參數(shù),則會(huì)顯示指定表中所有鏈的規(guī)則

配合options使用,可以獲得更加詳細(xì)的信息,如

  • -n:數(shù)字格式顯示IP和PORT

  • -v:以詳細(xì)格式顯示

  • -vv,-vvv:以更加詳細(xì)的格式顯示

  • -x:顯示精確值(如bytes的值),不執(zhí)行單位換算

  • --line-numbers:顯示各規(guī)則的編號(hào),鏈中的規(guī)則依據(jù)編號(hào)順序執(zhí)行,編號(hào)為正整數(shù)并從1開始計(jì)數(shù)

詳細(xì)顯示格式圖解

注:一般顯示格式可簡(jiǎn)寫為iptables -L -nv或iptables -nvL

對(duì)鏈中的規(guī)則進(jìn)行計(jì)數(shù)器(如上圖中的pkts或bytes參數(shù))清零操作

iptables [-t table] -Z [chain_name [rulenum]]

注:可指定對(duì)鏈中的某一條規(guī)則計(jì)數(shù)器清零;也可不指定鏈名,則直接清零表中所有鏈的規(guī)則計(jì)數(shù)器

刪除指定規(guī)則

iptables [-t table] -D chain_name rulenum

iptables [-t table] -D chain_name rule-specification

注:指定規(guī)則編號(hào)或規(guī)則的詳細(xì)信息,一般都使用第一種,指定規(guī)則編號(hào)rulenum即可


顯示指定鏈上的規(guī)則添加命令

iptables [-t table] -S [chain_name [rulenum]]

注:顯示的是當(dāng)初添加規(guī)則時(shí)使用的iptables命令,而非-L的顯示格式;不指定鏈名,則顯示指定表下所有鏈下規(guī)則的添加命令

插入規(guī)則

iptables [-t table] -I chain_name [rulenum] rule-specification

注:可指定規(guī)則編號(hào),已將新的規(guī)則插入指定位置;若不指定規(guī)則編號(hào),則新規(guī)則的編號(hào)將默認(rèn)為1

修改規(guī)則

iptables [-t table] -R chain_name rulenum rule-specification

注:指定需修改規(guī)則的編號(hào)即可,rule-specification指定修改后的規(guī)則內(nèi)容

附加規(guī)則

iptables [-t table] -A chain_name rule-specification

注:本命令是在指定鏈下規(guī)則隊(duì)列的最后附加規(guī)則;若要指定規(guī)則添加的位置,則需使用插入命令-I

而規(guī)則的具體信息在于rule-specification的格式,詳解如下


rule-specification規(guī)則說明

rule-specification=匹配條件 -j 處理機(jī)制

匹配條件:

通用匹配

  • -s:匹配源地址(單IP地址或者網(wǎng)絡(luò)地址),等同于--src,--source

  • -d:匹配目標(biāo)地址(單IP地址或者網(wǎng)絡(luò)地址),等同于--dst,--destination

  • -p:匹配協(xié)議,通常使用{tcp | udp | icmp}其中之一

  • -i:匹配數(shù)據(jù)報(bào)文流入接口,如eth0

  • -o:匹配數(shù)據(jù)報(bào)文流出接口,如eth1

擴(kuò)展匹配

隱含擴(kuò)展匹配:使用-p {tcp | udp | icmp}后,自動(dòng)能夠?qū)f(xié)議進(jìn)行的擴(kuò)展

-p tcp

  • --dport m[-n]:匹配目標(biāo)端口,m表示單個(gè)端口,如80,m-n表示連續(xù)多個(gè)端口,如20-25

  • --sport m[-n]:匹配源端口

  • --tcp-flags rst,syn,ack,fin syn:匹配TCP Header中6個(gè)符號(hào)位(URG,ACK,PSH,RST,SYN,FIN)的值,第一組顯示需匹配的符號(hào)位(此例中為rst,syn,ack,fin),第二組顯示值為1的符號(hào)位(此例中為syn),其它都為0

-p udp

  • --dport m[-n]:匹配目標(biāo)端口

  • --sport m[-n]:匹配源端口

  • 注:UDP是無狀態(tài)的協(xié)議,故無符號(hào)位flags的匹配

-p icmp

  • --icmp-type:匹配icmp報(bào)文的類型,一般使用8代表PING請(qǐng)求,使用0代表PING應(yīng)答


顯示擴(kuò)展匹配:必須要明確指定擴(kuò)展的模塊,格式為:-m 擴(kuò)展模塊名稱 --選項(xiàng)1 --選項(xiàng)2 ...

multiport模塊:多端口匹配,一次指定多個(gè)離散端口

  • --dports:目的端口匹配,等同于--destination-ports,如 --dports 53,80

  • --sports:源端口匹配,等同于--source-ports

  • 注:離散端口和端口范圍可混用,如 --sports 23,80-100 ,但端口個(gè)數(shù)最好不要超過15個(gè),端口范圍計(jì)數(shù)為2個(gè)端口

iprange模塊:IP地址范圍匹配

  • --dst-range from[-to]:目標(biāo)地址匹配,如 --dst-range 192.168.100.10-192.168.100.20

  • --src-range from[-to]:源地址匹配

time模塊:時(shí)間范圍匹配

  • --datestart,--datestop:日期時(shí)間匹配,日期時(shí)間格式為YYYY[-MM[-D[Thh[:mm[:ss]]]]],如--datestart 2014-03-29T12:05:00 --datestop 2014-03-30T08:00:00

  • --timestart,--timestop:僅時(shí)間匹配,時(shí)間格式為hh:mm[:ss],如 --timestart 14:05:00 --timestop 18:00:00

  • --weekdays day[,day...]:星期匹配,可使用Mon,Tue,Web,Thu,Fri,Sat,Sun表示星期,或用1-7表示,如--weekdays 1,2,3,4,5

string模塊:字符串匹配(需linux kernel >= 2.6.14)

  • --algo {bm|kmp} --string pattern:先制定匹配算法bm或kmp,然后制定匹配模式,如 --algo bm --string hello,表示匹配帶有hello字符串的報(bào)文

  • --algo {bm|kmp} --hex-string pattern:先將匹配模式編碼成十六進(jìn)制格式,再跟報(bào)文中的數(shù)據(jù)進(jìn)行匹配,可提高匹配速度

connlimit模塊:連接數(shù)限制匹配

  • --connlimit-above:單IP對(duì)指定服務(wù)的最大并發(fā)連接數(shù),如 --connlimit-above 5

limit模塊:報(bào)文傳輸速率限制(利用令牌桶token bucket原理)

  • --limit #[/second | /minute | /hour | /day]:如 --limit 5/s,默認(rèn)是3/hour

  • --limit-burst:初始峰值

state模塊:連接狀態(tài)匹配

連接狀態(tài)追蹤原理

  • 在內(nèi)存中維護(hù)一張會(huì)話表,記錄進(jìn)入的連接,并賦予每個(gè)連接條目一個(gè)計(jì)數(shù)器(即超時(shí)時(shí)間),當(dāng)計(jì)數(shù)器為0時(shí),清除出此會(huì)話表;

  • 當(dāng)有新連接到來,對(duì)比此會(huì)話表,會(huì)話中無記錄時(shí),則此連接狀態(tài)為NEW,否則為ESTABLISHED狀態(tài);

  • 若進(jìn)來的新連接與已建立的連接有關(guān)聯(lián),如FTP中的數(shù)據(jù)連接對(duì)于命令連接來說,則此連接狀態(tài)為RELATED

連接追蹤功能涉及的內(nèi)核模塊:ip_conntrack和nf_conntrack

連接狀態(tài)主要類型:NEW,ESTABLISHED,RELATED,INVALID

state模塊用法--state {NEW|ESTABLISHED|RELATED|INVALID}

連接狀態(tài)過濾法則

  • 對(duì)于進(jìn)入的狀態(tài)為ESTABLISHED和RELATED的連接都應(yīng)該放行

  • 對(duì)于出去的狀態(tài)為ESTABLISHED的連接都應(yīng)該放行

  • 嚴(yán)格檢查進(jìn)入的狀態(tài)為NEW的連接

  • 所有狀態(tài)為INVALID的連接都應(yīng)該拒絕

注:因iptables的state模塊對(duì)于進(jìn)出的報(bào)文都進(jìn)行嚴(yán)格的狀態(tài)匹配,非常消耗系統(tǒng)資源,故在繁忙的前端服務(wù)器(如反向代理服務(wù)器)上,勿開啟此功能!


取反匹配

以上介紹的匹配條件,大部分都可以在匹配條件前加 ! 號(hào),以表示匹配條件取反,格式是:! 匹配條件,注意感嘆號(hào)后的空格


處理機(jī)制:

ACCEPT:報(bào)文接受

DROP:報(bào)文丟棄

自定義鏈名:調(diào)用自定義鏈,如 -j clean_in

RETURN:返回調(diào)用鏈,一般用于自定義鏈的末尾規(guī)則










本文轉(zhuǎn)自 xxrenzhe11 51CTO博客,原文鏈接:http://blog.51cto.com/xxrenzhe/1386614,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的iptables规则基本用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。