一、iptables包過濾防火墻基本概念
為右江等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及右江網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、右江網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
防火墻是工作在主機(jī)或者網(wǎng)絡(luò)邊緣的,可以對(duì)其所匹配到的報(bào)文根據(jù)我們事先定義好的規(guī)則做匹配檢查對(duì)于能夠被匹配到的報(bào)文出相應(yīng)的處理動(dòng)作
iptables/netfilter:
實(shí)際上iptables防火墻是包括netfilter和iptables兩個(gè)部分,netfilter是內(nèi)核中的防火墻框架,iptables是用戶空間中的命令程序,所有這兩者加起來(lái)才是一個(gè)完整的iptables。
四表:
raw:關(guān)閉NAT的連接追蹤機(jī)制,防止在高并發(fā)的訪問下服務(wù)器的內(nèi)存溢出,它由PREROUTTING OUTPUT實(shí)現(xiàn)
mangle:可以對(duì)匹配到的報(bào)文的數(shù)據(jù)進(jìn)行拆解,重新封裝,它由五個(gè)鏈來(lái)實(shí)現(xiàn)
nat:網(wǎng)絡(luò)地址轉(zhuǎn)換,nat表可以由PREROUTING FORWARD POSTROUTING實(shí)現(xiàn)
filter:實(shí)現(xiàn)包過濾,可以由INPUT FORWARD OUTPUT實(shí)現(xiàn)
五鏈:
PREROUTING:在對(duì)數(shù)據(jù)包作路由選擇前,應(yīng)用此鏈中的規(guī)則
INPUT:當(dāng)收到訪問防火墻本機(jī)地址的數(shù)據(jù)包(入站)時(shí),應(yīng)用此鏈中的規(guī)則
FORWARD:當(dāng)收到需要通過防火墻轉(zhuǎn)發(fā)給其他地址的數(shù)據(jù)包(轉(zhuǎn)發(fā))是應(yīng)用此鏈中的規(guī)則
OUTPUT:當(dāng)防火墻本周向外發(fā)送數(shù)據(jù)包(出站)時(shí),應(yīng)用此鏈中的規(guī)則
POSTROUTING:當(dāng)對(duì)數(shù)據(jù)包做出路由現(xiàn)在后,應(yīng)用此鏈中的規(guī)則
規(guī)則:根據(jù)規(guī)則的匹配條件嘗試匹配報(bào)文,對(duì)匹配成功的報(bào)文根據(jù)規(guī)則定義的處理動(dòng)作做出處理
匹配條件:
基本匹配條件:netfilter自帶的匹配機(jī)制
擴(kuò)展匹配條件:由擴(kuò)展模塊引入的匹配機(jī)制
二、iptables基本使用命令介紹
命令格式:iptables [-t table] SUBCOMMAND chain [matches...] [target]
1、管理類的命令操作:
鏈管理:
-N:新增加一個(gè)自定義的鏈(自定義被內(nèi)建鏈上的規(guī)則調(diào)用才生效,-j 自定義鏈名稱)
-X:刪除自定義的空鏈(引用計(jì)數(shù)為0的空鏈)
-P:設(shè)置鏈的默認(rèn)策略
-E:重命名自定義的未被引用(引用計(jì)數(shù)為0)的鏈;
-F:清除
規(guī)則管理
-A:追加,默認(rèn)為最后一個(gè)
-I:插入,默認(rèn)為第一個(gè)
-D:刪除指定的規(guī)則
-R:替換修改,將指定的鏈規(guī)則替換為新的規(guī)則
-Z:將packets和bytes計(jì)算器給重置為0
查看:
-L:列出規(guī)則列表
-n:以數(shù)字形式顯示地址和端口
-v:顯示詳細(xì)的信息
-x:顯示計(jì)數(shù)器的精確值而非單位換算后的結(jié)果
--line-numbers:顯示鏈上的規(guī)則編號(hào)
實(shí)例:
iptables -I 2 INPUT -s 192.168.1.1 -d 192.168.1.2 -j DROP ###將此規(guī)則插入在input鏈的第2條
iptables -vnL ##顯示詳細(xì)信息 iptables -vnL --line-number##顯示鏈上的規(guī)則編號(hào)
iptables -F ##清空所有鏈上的規(guī)則 iptables -F INPUT ##清空指定INPUT鏈上的所有規(guī)則 iptables -D INPUT 1 ###刪除INPUT鏈上的第一條規(guī)則
iptables -R INPUT 2 -s 192.168.22.2 -d 192.168.1.1 -j ACCEPT ###將INPUT鏈的第2條規(guī)則替換
iptables -P INPUT DROP ##設(shè)置INPUT鏈的默認(rèn)規(guī)則為拒絕 iptables -P OUTPUT DROP ##設(shè)置OUTPUT鏈的默認(rèn)規(guī)則為拒絕 iptables -P FORWARD DROP ###設(shè)置FORWARD鏈的默認(rèn)規(guī)則為拒絕
2、匹配條件規(guī)則命令:
基本匹配:netfilter自帶的匹配機(jī)制
[!] -s, --source address[/mask][,...]:原地址匹配
[!] -d, --destination address[/mask][,...]:目標(biāo)地址匹配
[!] -i, --in-interface name:限制報(bào)文流入的接口,只能用于PREROUTING,INPUT及FORWARD;
[!] -o, --out-interface name:限制報(bào)文流出的接口,只能用于OUTPUT,F(xiàn)ORWARD及POSTROUTING;
[!] -p {tcp|udp|icmp}:限制協(xié)議;
實(shí)例:拒絕192.168.1.0網(wǎng)段訪問本機(jī)192.168.1.1
iptables -A INPUT -s 192.168.0.0/24 -d 192.168.1.1 -j REJECT iptables -A OUTPUT -s 192.168.1.1 -d 192.168.0.0/24 -j REJECT iptables -A INPUT -s 172.16.100.67 -d 172.16.0.0/16 -i eth0 -j DORP
擴(kuò)展匹配:需要加載擴(kuò)展模塊
隱式擴(kuò)展:可以不用使用-m選項(xiàng)專門加載相應(yīng)模塊;前提是要使用-p選項(xiàng)可匹配何種協(xié)議
顯示擴(kuò)展:必須由-m選項(xiàng)專門加載相應(yīng)模塊
【隱式擴(kuò)展】
[!] -p 協(xié)議:tcp, udp, icmp, icmpv6, esp, ah, sctp, mh or "all"
-p tcp:
[!] --source-port,--sport port[:port]:匹配報(bào)文中的tcp首部的源端口;可以是端口范圍
[!] --destination-port,--dport port[:port]:匹配報(bào)文中的tcp首部的目標(biāo)端口;可以是端口范圍
[!] --tcp-flags mask comp: (其中flags包括:syn,fin,ack,rst syn )
mask:需要檢查的標(biāo)志位列表,以逗號(hào)分隔
comp:必須為1的標(biāo)志位,余下的出現(xiàn)在mask列表中的
-p udp:
[!] --source-port,--sport port[:port]:匹配報(bào)文中的udp首部的源端口;可以是端口范圍
[!] --destination-port,--dport port[:port]:匹配報(bào)文中的udp首部的目標(biāo)端口;可以是端口范圍
-p icmp:
[!] --icmp-type {type[/code]|typename}
0/0:echo reply 回應(yīng)
8/0:echo request 請(qǐng)求
實(shí)例:
允許192.168.1.0網(wǎng)段的訪問本機(jī)192.168.1.1的ssh服務(wù),其余全部拒絕
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.1 -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -d 192.168.1.0/24 -s 192.168.1.1 -p tcp --sport 22 -j ACCEPT iptables -P INPUT DORP iptables -P OUTPUT DORP iptables -P FORWARD DORP
###僅允許172.16.100.67主機(jī)ping任何人 iptables -A INPUT -s 0/0 -d 172.16.100.67 -p icmp --icmp-type 0 -j ACCEPT iptables -A OUPUT -d 0/0 -s 172.16.100.67 -p icmp --icmp-type 8 -j ACCEPT
#####允許本機(jī)172.16.100.1 ping所有人,同時(shí)允許所有人ping本機(jī) iptables -A INPUT -s 0/0 -d 172.16.100.1 -p icmp --icmp-type 0 -j ACCEPT iptables -A OUTPUT -d 0/0 -s 172.16.100.1 -p icmp --icmp-type 8 -j ACCEPT iptables -A INPUT -s 0/0 -d 172.16.100.1 -p icmp --icmp-type 8 -j ACCEPT iptables -A OUTPUT -d 0/0 -s 172.16.100.1 -p imcp --icmp-type 0 -j ACCEPT
【顯式擴(kuò)展】:需要使用-m選項(xiàng)
multiport:多端口匹配
[!] --source-ports,--sports port[,port|,port:port]...指定多個(gè)原端口
[!] --destination-ports,--dports port[,port|,port:port]...指定多個(gè)目標(biāo)端口
[!] --ports port[,port|,port:port]...指定多個(gè)端口,不限定源端口及目標(biāo)端口
實(shí)例:開發(fā)本機(jī)的ssh Telnet和web服務(wù)
iptables -I INPUT -s 0/0 -d 172.18.100.6 -p tcp -m multiport --dports 22,23,80 -j ACCEPT(離散類型指定) iptables -I OUTPUT -d 0/0 -s 172.18.100.6 -p tcp -m multiport --sports 22:23,80 -j ACCEPT(連續(xù)及離散指定)
iprange:指明一段連續(xù)的ip地址范圍做為源地址或目標(biāo)地址匹配
[!] --src-range from[-to]:源地址范圍
[!] --dst-range from[-to]:目標(biāo)地址范圍
實(shí)例:允許172.16.100.1到172.16.100.20范圍內(nèi)的主機(jī)訪問MySQL服務(wù)
iptables -A INPUT -s 0/0 -d 172.16.1.1 -p tcp --dport 3306 -m iprange --src-range 172.16.100.1-172.16.100.20 -j ACCEPT iptables -A OUTPUT -d 0/0 -s 172.16.1.1 -P tcp --sport 3306 -m iprange --dst-range 172.16.100.1-172.16.100.20 -j ACCEPT
string:對(duì)報(bào)文中的應(yīng)用層數(shù)據(jù)做字符串匹配檢測(cè)
--algo {bm|kmp}
[!] --string pattern:給定要檢查的字符串模式
[!] --hex-string pattern:給定要檢查的字符串模式;16進(jìn)制編碼
實(shí)例:任何人訪問172.18.100.6web服務(wù)時(shí)候內(nèi)容字符包含admin的拒絕
iptables -I OUTPUT -s 172.18.100.6 -d 0/0 -p tcp --sport 80 -m string --algo bm --string "admin" -j REJECT
time:根據(jù)收到報(bào)文的時(shí)間/日期與指定的時(shí)間/日期范圍進(jìn)行匹配
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:起始日期時(shí)間;
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:結(jié)束日期時(shí)間
--timestart hh:mm[:ss]:起始時(shí)間;
--timestop hh:mm[:ss]:結(jié)束時(shí)間
[!] --monthdays day[,day...]:匹配一個(gè)月中的哪些天;
[!] --weekdays day[,day...]:匹配一個(gè)周中的哪些天
實(shí)例:允許周一到周五早上9點(diǎn)到下午16點(diǎn)時(shí)間內(nèi)172.16.100.1-172.16.100.100內(nèi)的主機(jī)可以Telnet172.16.100.6
iptables -R INPUT 4 -d 172.16.100.6 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -m time --timestart 09:00:00 --timestop 16:00:00 --weekdays 1,2,3,4,5 -j ACCEPT
connlimit:根據(jù)每客戶端主機(jī)做并發(fā)連接數(shù)限制,即每客戶端最多可同時(shí)發(fā)起的連接數(shù)量
--connlimit-upto n:連接數(shù)量小于等于n則匹配;
--connlimit-above n:連接數(shù)量大于n則匹配
iptables -A INPUT -s 0/0 -d 172.18.100.6 -p tcp --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT ##最多可以連接2個(gè)
limit:基于令牌桶算法對(duì)收發(fā)報(bào)文的速率做匹配
--limit rate[/second|/minute|/hour|/day]
--limit-burst number 最大速率
iptables -R INPUT 3 -d 172.18.100.6 -p icmp --icmp-type 8 -m limit --limit 20/minute --limit-burst 3 -j ACCEPT
state:是連接追蹤機(jī)制的子集,用于對(duì)報(bào)文的狀態(tài)做連接追蹤,使用前需要裝載此模塊:modprobe nf_conntrack
[!] --state state
INVALID:無(wú)法識(shí)別的連接
ESTABLISHED:連接追蹤模板當(dāng)中存在記錄的連接
NEW:連接追蹤模板當(dāng)中不存的連接請(qǐng)求
RELATED:相關(guān)聯(lián)的連接
UNTRACKED:未追蹤的連接
已經(jīng)追蹤到的并記錄下來(lái)的連接:/proc/net/nf_conntrack
連接追蹤功能所能夠記錄的最大連接數(shù)量(可調(diào)整):/proc/sys/net/nf_conntrack_max
實(shí)例:
iptables -A INPUT -d 172.16.100.67 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -s 172.16.100.67 -m state --state ESTABLISHED -j ACCEP
REDORECT:端口重定向即端口映射
--to-ports port[-port]
實(shí)例:將172.16.100.67的80端口映射為8080
iptables -t nat -A PREROUTING -d 172.16.100.67 -p tcp --dport 80 -j REDIRECT --to-ports 8080
SNAT:使用在nat表中,僅可用使用POSTROUTING INPUT鏈
--to-source [ipaddr[-ipaddr]]
實(shí)例: 將內(nèi)網(wǎng)的地址192.168.1.0/24使用轉(zhuǎn)換為統(tǒng)一的地址與外部地址通信
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 172.16.100.6
DNAT:使用在nat表中,僅可用使用PREROUTING OUTPUT鏈
--to-destination [ipaddr[-ipaddr]][:port[-port]]
實(shí)例:將本地網(wǎng)絡(luò)總的地址使用統(tǒng)一的地址向外發(fā)布服務(wù)
iptables -t nat -A PREROUTING -s 192.168.1.1/24 -j DNAT --to-destination 172.16.100.1
保存規(guī)則:
iptables-save >/PATH/TO/SOME_RULE_FILE
iptables -S >/PATH/TO/SOME_RULE_FILE
重載預(yù)存的規(guī)則:
iptables-restore < /PATH/FROM/SOME_RULE_FILE
本文名稱:iptables使用介紹
本文網(wǎng)址:http://aaarwkj.com/article30/peieso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站維護(hù)、網(wǎng)站制作、企業(yè)網(wǎng)站制作、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)