十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
防火墻及netfilter基礎(chǔ)
firewall
工作于主機或網(wǎng)絡(luò)的邊緣,對于進(jìn)出的報文根據(jù)事先定義的規(guī)則作檢查,對能夠被規(guī)則匹配的報文作出相應(yīng)處理的組件。
可分為主機防火墻和網(wǎng)絡(luò)防火墻
可以是軟件,也可以是硬件,專業(yè)的硬件防火墻:checkpoint, netscreen
iptables:規(guī)則管理工具,是工作于用戶空間的程序,可自動檢查語法錯誤;
netfilter: 網(wǎng)絡(luò)過濾器, 是工作于內(nèi)核空間TCP/IP網(wǎng)絡(luò)協(xié)議棧上的框架;
IDS:Intrusion Detecting System,即***檢測系統(tǒng)
NIDS:網(wǎng)絡(luò)***檢測系統(tǒng)
HIDS:主機***檢測系統(tǒng)
IPS: Intrusion Protec System,即***防御系統(tǒng)
HoneyPot: 蜜罐
Iptables
發(fā)展歷程
ipfw --> ipchains--> iptables/netfilter
Linux本無防火墻系統(tǒng),參考OpenBSD移植而來,取名ipfw;后發(fā)現(xiàn)firewall的防護功能依賴于眾多串在一起的規(guī)則鏈來實現(xiàn),故改名ipchains;再后來規(guī)則被規(guī)劃的越來越詳細(xì),防護功能依賴于多條鏈結(jié)合來實現(xiàn),最終定名iptables/netfilter
路由發(fā)生的時刻:
報文進(jìn)入本機后:
判斷目標(biāo)地址
報文離開本機之前:
判斷經(jīng)由哪個接口發(fā)出;
報文流向經(jīng)由的位置:
到本內(nèi)部:prerouting, input
由本機發(fā)出:output, postrouting
由本機轉(zhuǎn)發(fā):prerouting, forward, postrouing
規(guī)則的組成部分:
報文的匹配條件, 匹配之后如何處理
匹配條件:基本匹配條件、擴展匹配條件
如何處理:內(nèi)建處理機制、自定義處理機制(自定義的鏈)
注意:報文不可能經(jīng)由自定義鏈,自定義鏈只有在內(nèi)置鏈上被引用才能生效(即做為自定義目標(biāo))
netfilter規(guī)則的功能:
filter:過濾
NAT Server(Network Address Translation):地址轉(zhuǎn)換
mangle:修改報文首部中的某些信息
raw:關(guān)閉nat表上啟用的連接追蹤功能
以上即iptables的四表
hooks function(鉤子函數(shù))
prerouting:
進(jìn)入本機后路由功能發(fā)生前
①:raw,mangle,nat
input:
到達(dá)本機內(nèi)部
②:mangle,filter
output:
由本機發(fā)出
③:raw,mangle,nat,filter
forward:
由本機轉(zhuǎn)發(fā)
④:mangle,filter
postrouting:
路由功能發(fā)生后,即將離開本機前
⑤:mangle,nat
以上即iptables的五鏈(CHAIN),組合起來即構(gòu)成內(nèi)核中專門用于實現(xiàn)報文檢查功能的框架--netfilter
各鉤子存有眾多規(guī)則,按功能存放,具有相同功能的規(guī)則集中存放,而不同功能的規(guī)則單獨存放,報文到達(dá)后會按照功能的優(yōu)先級按次序依次檢查,由此組成iptables的表。
各功能實現(xiàn)位置:
filter:input, forward, output
nat:prerouting(修改目標(biāo)主機地址), output, postrouting(修改源主機地址)
mangle:prerouting, input, forward, output, postrouting
raw:prerouting, output,nat的補充功能,只能發(fā)生在nat的前半段
功能的優(yōu)先級:
由高而低:raw --> mangle --> nat --> filter
數(shù)據(jù)包過濾匹配流程示意圖
添加規(guī)則時的考量點:
(1) 要實現(xiàn)的功能:判斷添加在哪個表上;
(2) 報文流向及經(jīng)由路徑:判斷添加在哪個鏈上;
鏈上的規(guī)則次序即為檢查次序,因此有一定的法則
(1) 同類規(guī)則,匹配范圍小的放上面;
(2) 不同類規(guī)則,匹配報文幾率較大的放上面;
(3) 應(yīng)該設(shè)置默認(rèn)策略;
iptables基本用法
iptables命令
生成規(guī)則,送往netfilter;
規(guī)則通過內(nèi)核接口直接送至內(nèi)核;立即生效,但不會永久有效;
要想永久有效需保存至配置文件,且此配置文件需開機自動加載或由用戶手動加載
語法格式
iptables[-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET
常用選項
-t TABLE:指明要操作的表,省略時默認(rèn)為filter, 共有filter, nat, mangle, raw四個表可用;
SUBCOMMAND:子命令
CHAIN:指明要操作的鏈
CRETERIA:指明匹配條件
-j TARGET:指明處理動作
SUBCOMMAND(子命令)
對鏈的操作
-F:flush,清空指定表的指定鏈上所有規(guī)則,省略鏈名時,清空默認(rèn)表中所有鏈的所有規(guī)則;
-N:new, 新建一個用戶自定義的鏈,自定義鏈只能作為默認(rèn)鏈上的跳轉(zhuǎn)對象,即在默認(rèn)鏈上通過引用來生效自定義鏈;
-X:drop,刪除用戶自定義的空鏈,內(nèi)置鏈無法刪除;
-Z:zero,將規(guī)則的計數(shù)器置0;每個鏈上的每條規(guī)則都有兩個計數(shù)器,一個記錄被當(dāng)前規(guī)則所匹配到的報文個數(shù),另一個記錄被當(dāng)前規(guī)則所匹配到的報文大小之和;
-P:policy,設(shè)置鏈的默認(rèn)處理機制,當(dāng)所有鏈都無法匹配,或能匹配到但無法做出有效處理機制時,默認(rèn)處理機制即生效;
filter表的可用策略:ACCEPT、DROP、REJECT
-E:rename,重命名自定義鏈;
注意:被引用中的鏈,無法刪除和改名
對鏈上規(guī)則的操作
-A:append,在鏈尾追加一條規(guī)則;
-I:insert,在指定位置插入一條規(guī)則;
-D:delete,刪除指定的規(guī)則;
-R:replace,替換指定的規(guī)則;
查看操作
-L:list,列出指定鏈上的所有規(guī)則;
-n:numeric,以數(shù)字格式顯示地址和端口號,即不反解;
-v:verbose,詳細(xì)格式,顯示規(guī)則的詳細(xì)信息,包括規(guī)則計數(shù)器等;
--line-numbers:顯示規(guī)則編號;
-x:exactly,顯示計數(shù)器的精確值,即不做單位換算;
pktsbytes target prot opt in out source destination
pkts:被本規(guī)則所匹配到的報文個數(shù);
bytes:被本規(guī)則所匹配到的所有報文的大小之和;
target: 處理目標(biāo) (目標(biāo)可以為用戶自定義的鏈);
prot: 協(xié)議 {tcp, udp, icmp};
opt:可選項;
in:數(shù)據(jù)包流入接口;
out:數(shù)據(jù)包流出接口;
source:源地址;
destination:目標(biāo)地址;
CRETERIA(匹配條件)
檢查IP首部,檢查TCP、UDP或ICMP首部;
基于擴展機制,也可以進(jìn)行額外的檢查,如做連接追蹤等;
可同時指定多個匹配條件,此時指定的所有條件要都滿足才能被匹配到;
通用匹配
-s, --src, --source IP|Network:檢查報文源IP地址;
-d, --dst,--destination:檢查報文目標(biāo)IP地址;
-p,--protocol:檢查報文中的協(xié)議,即ip首部中的protocols所標(biāo)識的協(xié)議(tcp、udp、icmp三者之一);
-i,--in-interface:檢查報文的流入接口;通常只用于PREROUTING, INPUT,FORWARD鏈上的規(guī)則;
-o,--out-interface:檢查報文的流出接口;通常只用于FORWARD, OUTPUT, POSTROUTING鏈上的規(guī)則;
注意:可以取反,在選項前加“!”
擴展匹配
使用iptables的模塊實現(xiàn)擴展性檢查機制
隱式擴展
如果在通用匹配上使用-p選項指明了協(xié)議的話,[-m 模塊名稱]可省略
tcp
--dport:目標(biāo)端口
--sport:源端口
--tcp-flags LIST1 LIST2
LIST1:要檢查的標(biāo)識位
LIST2:在LIST1中出現(xiàn)過的,且必須為1標(biāo)記位,而余下的則必須為0
示例:“--tcp-flags syn,ack,fin,rst syn”:表示只檢查4個標(biāo)識位syn,ack,fin,rst,且syn必須=0,而ack,fin,rst必須=1
--syn:用于匹配tcp會話三次握手的第一次
udp
--dport
--sport
icmp
--icmp-type
8:echo request(ping請求)
0:echo reply(ping響應(yīng))
示例:配置本機的dns服務(wù),并放行之;默認(rèn)策略為drop
注意:規(guī)則1和2只能放行外機指向本機做解析,若無規(guī)則3和4,本機自己請求的解析將無法被放行
顯式擴展
必須指明使用的擴展機制
格式:-m模塊名稱,每個模塊會引入新的匹配機制
查詢可用的模塊命令
rpm -ql iptables
小寫字母,以“.so”結(jié)尾
multiport擴展:
以離散定義多端口匹配;最多指定15個端口;
專用選項:
--source-ports,--sports PORT[,PORT,...]
--destination-ports,--dports PORT[,PORT,...]
--portsPORT[,PORT,...]
示例:
# iptables -I INPUT 1 -d 172.16.100.11 -ptcp -m multiport --dports 22,80,443 -j ACCEPT
# iptables -I OUTPUT 1 -s 172.16.100.11 -ptcp -m multiport --sports 22,80,443 -j ACCEPT
iprange擴展:
指定連續(xù)的ip地址范圍;在匹配非整個網(wǎng)絡(luò)地址時使用;
專用選項:
[!]--src-range IP[-IP]
[!]--dst-range IP[-IP]
示例:
# iptables -A INPUT -d 172.16.100.11 -p tcp--dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT
# iptables -A OUTPUT -s 172.16.100.11 -p tcp--sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT
string擴展:
檢查報文中出現(xiàn)的字符串,與給定的字符串作匹配;
字符串匹配檢查算法:
kmp,bm
專用選項:
--algo{kmp|bm}
--string"STRING"
--hex-string "HEX_STRING":HEX_STRING為編碼成16進(jìn)制格式的字串;
示例:
# iptables -I OUTPUT 1 -s 172.16.100.11 -ptcp --sport 80 -m string --string "sex" --algo kmp -j REJECT
time擴展:
基于時間區(qū)間做訪問控制
專用選項:
--datestartYYYY[-MM][-DD][hh[:mm[:ss]]]
--dattestop
--timestart
--timestop
--weekdaysDAY1[,DAY2,...]
示例:
#iptables -R INPUT 1 -d 172.16.100.11 -p tcp --dport 80 -m time --timestart08:30 --timestop 18:30 --weekdays Mon,Tue,Thu,Fri -j REJECT
connlimit擴展:
基于連接數(shù)作限制;對每個IP能夠發(fā)起的并發(fā)連接數(shù)作限制;
專用選項:
--connlimit-above[n]
示例:
#iptables -I INPUT 2 -d 172.16.100.11 -p tcp --dport 22 -m connlimit--connlimit-above 5 -j REJECT
limit擴展:
基于發(fā)包速率作限制;
專用選項:令牌桶算法
--limit n[/second|/minute|/hour|/day]
--limit-burstn
示例:
# iptables -R INPUT 3 -d 172.16.100.11 -picmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT
state擴展:
-j TARGET
-j(jump),跳轉(zhuǎn)目標(biāo)
內(nèi)置目標(biāo)
ACCEPT:接受
DROP:丟棄
REJECT:拒絕
自定義連接
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。