防偽碼:沒有比腳更長的路,沒有比人更高的山
第十章 iptables防火墻(一)
前言:我們?cè)谝郧皩W(xué)習(xí)過asa防火墻,對(duì)防火墻有一定的了解,那么iptables和asa防火墻類似,作用一樣,都是為了保證網(wǎng)絡(luò)安全,系統(tǒng)安全,服務(wù)器的安全,和asa一樣也需要建立策略,個(gè)人覺得比asa的策略要繁瑣一點(diǎn),但“只要功夫深鐵杵磨成針”。
一、基礎(chǔ)概念
1、iptables表、鏈結(jié)構(gòu)
a、規(guī)則表
表的作用:容納各種規(guī)則鏈
表的劃分依據(jù):防火墻規(guī)則的作用相似
默認(rèn)包括4個(gè)規(guī)則表
raw表:確定是否對(duì)該數(shù)據(jù)包進(jìn)行狀態(tài)跟蹤
mangle表:為數(shù)據(jù)包設(shè)置標(biāo)記
nat表:修改數(shù)據(jù)包中的源、目標(biāo)IP地址或端口
filter表:確定是否放行該數(shù)據(jù)包(過濾)
b、規(guī)則鏈
規(guī)則的作用:對(duì)數(shù)據(jù)包進(jìn)行過濾或處理
鏈的作用:容納各種防火墻規(guī)則
鏈的分類依據(jù):處理數(shù)據(jù)包的不同時(shí)機(jī)
默認(rèn)包括5種規(guī)則鏈
INPUT:處理入站數(shù)據(jù)包
OUTPUT:處理出站數(shù)據(jù)包
FORWARD:處理轉(zhuǎn)發(fā)數(shù)據(jù)包
POSTROUTING鏈:在進(jìn)行路由選擇后處理數(shù)據(jù)包
PREROUTING鏈:在進(jìn)行路由選擇前處理數(shù)據(jù)包
如圖所示:
2、數(shù)據(jù)包過濾的匹配流程
a、規(guī)則表
raw——mangle——nat——filter
b、規(guī)則鏈
入站數(shù)據(jù)流向:來自外界的數(shù)據(jù)包到達(dá)防火墻后,首先被PRETOUTING鏈處理,然后進(jìn)行路由選擇,如果數(shù)據(jù)包的目標(biāo)地址是防火墻本機(jī),那么內(nèi)核將其傳遞給INPUT鏈進(jìn)行處理,通過以后再講給系統(tǒng)的上層應(yīng)用程序進(jìn)行響應(yīng)。
轉(zhuǎn)發(fā)數(shù)據(jù)流向:來自外界的數(shù)據(jù)包到達(dá)防火墻后,首先被PREROUTING鏈處理,然后再進(jìn)行路由選擇,如果數(shù)據(jù)包的目的地址是其他外部的地址,則內(nèi)核將其傳遞給FORWARD鏈進(jìn)行處理,最后交給POSTROUTING鏈進(jìn)行處理。
出站數(shù)據(jù)流向:防火墻本機(jī)向外部地址發(fā)送的數(shù)據(jù)包,首先被OUTPUT處理,然后進(jìn)行路由選擇,再交給POSTROUTING鏈進(jìn)行處理。
c、規(guī)則鏈內(nèi)部各條防火墻規(guī)則之間的順序
匹配即停(LOG日志操作的規(guī)則除外)
找不到相匹配的規(guī)則,則按該鏈的默認(rèn)策略處理
二、編寫防火墻規(guī)則
實(shí)驗(yàn)環(huán)境:
網(wǎng)站服務(wù)器ip地址是192.168.1.7,網(wǎng)關(guān)服務(wù)器的內(nèi)網(wǎng)地址是192.168.1.254,外網(wǎng)地址是172.16.16.254,internter測試機(jī)是172.16.16.16。
vim /etc/sysctl.conf
使用internet測試機(jī)172.16.16.16可以ping通192.168.1.7
1、 例如:在網(wǎng)站服務(wù)器的filter表的INPUT鏈中插入一條規(guī)則,拒絕發(fā)送給本機(jī)使用的ICMP協(xié)議的數(shù)據(jù)包。
執(zhí)行:Iptables -t filter -I INPUT -p icmp -j REJECT
查看規(guī)則:iptables -L INPUT --line-numbers
然后再次使用172.16.16.172ping192.168.1.5,出現(xiàn)目標(biāo)端口不可到達(dá),無法ping通
2、 添加新的規(guī)則
例如:1)在filter表INPUT鏈的末尾添加一條規(guī)則,接受tcp協(xié)議(實(shí)驗(yàn)之前在網(wǎng)站服務(wù)器上搭建ftp服務(wù),使用internet測試機(jī)可以訪問ftp服務(wù)器)
service vsftpd start
在internet測試機(jī)上訪問
默認(rèn)網(wǎng)站服務(wù)器的防火墻開啟,所以不能訪問,然后執(zhí)行:
iptables -t filter -A INPUT -p tcp -j ACCEPT
發(fā)現(xiàn)依然不能訪問,因?yàn)?A是在末尾添加一條新的規(guī)則
所以執(zhí)行:Iptables -I INPUT -p udp -j ACCEPT(-I默認(rèn)是添加在第一條)
在網(wǎng)站服務(wù)器上查看規(guī)則:
例:2)添加規(guī)則允許udp數(shù)據(jù)包通過,默認(rèn)位于filter的第一條
Iptables -I INPUT -p udp -j ACCEPT
例:3)指定順序號(hào),添加規(guī)則允許icmp數(shù)據(jù)包通過,位于第2條
Iptables -I INPUT 2 -p icmp -j ACCEPT
查看規(guī)則列表:
3、 以數(shù)字形式顯示規(guī)則列表,加快執(zhí)行速度
4、 刪除,清空規(guī)則
1) 若要?jiǎng)h除filter表INPUT鏈中的第三條規(guī)則,執(zhí)行:
Iptables -D INPUT 3
2) 清空指定鏈或表中的所有防火墻規(guī)則,使用-F
Iptables -F INPUT
3) 清空filter表,nat表,mangle表
Iptables -F
Iptables -t nat -F
Iptables -t mangle -F
5、 設(shè)置默認(rèn)策略:當(dāng)找不到任何一條能夠匹配數(shù)據(jù)包規(guī)則時(shí),則執(zhí)行默認(rèn)策略
例如1)將filter表中FORWARD鏈的默認(rèn)策略設(shè)置為丟棄,OUTPUT鏈的默認(rèn)策略設(shè)置為允許(默認(rèn)策略不參與規(guī)則的順序編排,因此在前后并無區(qū)別。)
三、 規(guī)則的匹配條件
對(duì)于同一條防火墻規(guī)則,可以指定多個(gè)匹配條件,這些條件必須都滿足規(guī)則才能生效。
1、 通用匹配:分為三種類型,協(xié)議匹配,地址匹配,網(wǎng)絡(luò)接口匹配。
1) 協(xié)議匹配
如果在網(wǎng)關(guān)服務(wù)器上開啟防火墻,那么internet測試機(jī)是不能訪問網(wǎng)站服務(wù)器的。
查看網(wǎng)關(guān)服務(wù)器的FORWARD鏈,發(fā)現(xiàn)只有一條拒絕all,如果想允許路由轉(zhuǎn)發(fā),執(zhí)行下面的命令:iptables -I FORWARD -j ACCEPT,然后在internet測試機(jī)上可以訪問網(wǎng)站服務(wù)器。
然后如果想丟棄通過icmp協(xié)議訪問防火墻本機(jī)的數(shù)據(jù)包,允許轉(zhuǎn)發(fā)經(jīng)過防火墻的除icmp協(xié)議之外的數(shù)據(jù)包,可以執(zhí)行:
Iptables -I INPUT -p icmp -j DROP
Iptables -A FORWARD ! -p icmp ACCEPT
執(zhí)行之前先在internet測試機(jī)上ping網(wǎng)關(guān)服務(wù)器的172.16.16.254和192.168.1.7都是可以ping通的。執(zhí)行完之后就不能ping通了,但是依然能夠訪問網(wǎng)站服務(wù)器的ftp。
先在internet測試機(jī)上ping,可以ping通
然后在網(wǎng)關(guān)服務(wù)器上執(zhí)行以下命令
在internet測試機(jī)上ping192.168.1.7和172.16.16.254都不通了,但是ftp依然可以訪問。
2) 地址匹配
例1)例如:拒絕轉(zhuǎn)發(fā)源地址為172.16.16.172的數(shù)據(jù),允許轉(zhuǎn)發(fā)源地址192.168.1.0的數(shù)據(jù)包
因?yàn)?72.16.16.172就是internet測試機(jī),所以internet測試機(jī)無法ping通192.168.1.5,也不能訪問ftp
例2)如果檢測到來自某網(wǎng)段的頻繁掃描,登錄等不良的企圖,可以立即添加防火墻規(guī)則進(jìn)行封鎖。
Iptables -I INPUT -s 10.20.30.0/24 -j DROP
Iptables -I FORWARD -s 10.20.30.0/24-j DROP
3) 網(wǎng)絡(luò)接口匹配
例如:若要丟棄從外網(wǎng)接口訪問防火墻本機(jī)且源地址為私有地址的數(shù)據(jù)包,執(zhí)行以下操作:
首先:在172.16.16.16上ping172.16.16.254,使之可以ping通
然后執(zhí)行以下命令:
再次在172.16.16.172上ping172.16.16.254,無法ping通,因?yàn)橥饩W(wǎng)接口是eth1
2、 隱含匹配:以指定的協(xié)議匹配作為前提條件,相當(dāng)于子條件。
1) 端口匹配
例如:允許網(wǎng)段192.168.1.0/24轉(zhuǎn)發(fā)dns查詢數(shù)據(jù)包。
首先在網(wǎng)站服務(wù)器上開啟dns服務(wù)
為了實(shí)驗(yàn)效果,先在網(wǎng)關(guān)服務(wù)器上執(zhí)行以下命令,阻止轉(zhuǎn)發(fā)
然后在internet測試機(jī)上執(zhí)行nslookup,不能解析
接下來在網(wǎng)關(guān)服務(wù)器上執(zhí)行隱含匹配,允許為172.16.16.0網(wǎng)段轉(zhuǎn)發(fā)dns查詢包
再次在internet測試機(jī)上測試解析
2) ICMP類型匹配
若要禁止從其他主機(jī)ping本機(jī),但是允許本機(jī)ping其他主機(jī),可以執(zhí)行以下操作
首先為了實(shí)驗(yàn)測試方便,在網(wǎng)關(guān)服務(wù)器上執(zhí)行:(執(zhí)行之前把其它的規(guī)則都刪掉)
執(zhí)行之后internet測試機(jī)和網(wǎng)站服務(wù)器之間可以互相ping通
然后執(zhí)行:
實(shí)驗(yàn)效果:
3、 顯示匹配
必須調(diào)用相應(yīng)的模塊,然后方可設(shè)置匹配條件
1) 多端口匹配
例如:允許網(wǎng)站服務(wù)器本機(jī)開放25、80、110、143端口。
2) ip范圍匹配
例如:禁止轉(zhuǎn)發(fā)源地址位于192.168.4.21與192.168.4.28之間的tcp數(shù)據(jù)包。
3) mac地址匹配
例如:禁止以下mac地址的主機(jī)訪問網(wǎng)站服務(wù)器的任何應(yīng)用。
4) 狀態(tài)匹配
例如:禁止轉(zhuǎn)發(fā)與正常tcp連接無關(guān)的非syn請(qǐng)求數(shù)據(jù)包(如偽造的網(wǎng)絡(luò)攻擊數(shù)據(jù)包)。
再例如:開放本機(jī)的web服務(wù)80端口,但對(duì)發(fā)給本機(jī)的tcp應(yīng)答數(shù)據(jù)包予以放行,其他入站數(shù)據(jù)包均丟棄,對(duì)應(yīng)的入站規(guī)則如下:
實(shí)戰(zhàn)演練:
一、實(shí)驗(yàn)環(huán)境:
二、需求描述
1、為網(wǎng)站服務(wù)器編寫入站規(guī)則
(1)本例中所有規(guī)則均在filter表的INPUT鏈內(nèi)添加,默認(rèn)策略設(shè)置為DROP。
(2)使用“-p icmp ! --icmp-type 8 ”的條件匹配非ICMP請(qǐng)求的數(shù)據(jù)包。
(3)使用“-p tcp --dport 80”的條件匹配對(duì)TCP 80端口的訪問。
(4)使用“-p tcp -m state --state ESTABLISHED,RELATED”匹配TCP響應(yīng)數(shù)據(jù)包。
(5)測試入站控制效果:從其他主機(jī)可以訪問本機(jī)中的Web服務(wù),但不能訪問其他任何服務(wù)(如FTP、DNS);從本機(jī)可以ping通其他主機(jī),但其他主機(jī)無法ping通本機(jī)。
2、為網(wǎng)關(guān)服務(wù)器編寫轉(zhuǎn)發(fā)規(guī)則
(1)本例中所有規(guī)則均在filter表的FORWARD鏈內(nèi)添加,默認(rèn)策略設(shè)置為DROP。
(2)針對(duì)TCP協(xié)議的80、20、21、25、110、143端口,以及UDP協(xié)議的53端口,分別為從局域網(wǎng)訪問Internet、從Internet響應(yīng)局域網(wǎng)請(qǐng)求的過程編寫轉(zhuǎn)發(fā)規(guī)則。
(3)執(zhí)行DNS查詢,獲知站點(diǎn)web.qq.com、w.qq.com、im.qq.com當(dāng)前所用的IP地址包括:112.90.141.88、112.90.141.163、112.90.141.164、58.251.149.159、58.251.60.202、123.138.238.100、123.138.238.101。然后依次針對(duì)這些IP地址編寫轉(zhuǎn)發(fā)規(guī)則,禁止到TCP協(xié)議的80、443端口的訪問。
注:下面的變量的意思是讀取IP地址以插入規(guī)則
(4)測試轉(zhuǎn)發(fā)控制效果:從局域網(wǎng)中的主機(jī)無法訪問Internet中的web.qq.com等被封站點(diǎn),但能夠訪問其他Web站點(diǎn),也能夠訪問DNS、FTP等網(wǎng)絡(luò)服務(wù)。
謝謝觀看,希望能真心的幫到您!
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
更多建議: