防火牆 : Fire wall 由軟件或者硬件組成的組件. 指工作在網絡邊緣(主機邊緣),對進出等網絡的數據包基於一定的規則進行檢查,並在匹配到某規則時,由規則定義的處理機制進行處理的這樣一種功能的組件
防火牆的五個系統自帶的規則鏈:INPUT OUTPUT FORWARD POSTROUTING PREROUTING
四個表:filter過濾在三個點上做:input,output,forward nat地址轉換在三個點做:prerouting在此上做目標地址轉換, postrouting在此上做源地址轉換, output mangle在五個點都可以做,拆包,做重新封裝的 raw只在兩個地方做:prerouting,output
寫規則:iptables [-t table] command 加到哪個鏈上 跟上這個鏈的第幾個位置 匹配條件 -j
-t table 有四種可選 :filter nat mangle raw
command :對規則(rule)操作的命令:-A表示追加,在鏈的最後追加 -I表示插入,用法:-I CHAIN UNM -R 替換,用法:-R CHAIN NUM -D用於刪除一條規則用法:-D CHAIN NUM
對鏈(CHAIN)進行操作: -N用於新建一個用戶自定義鏈 -X表示刪除一條用戶自定義鏈,只能刪除一條空鏈 -F用於清空一個鏈 -Z表示清空計數器,默認兩個計數器 -P表示定義一個鏈的默認處理策略 -E用於重命名一條鏈
list: -L 列出鏈中所有規則
-L的輔助命令:-n表示以數字的方式來顯示,不反解ip地址 -v顯示詳細信息 -x顯示精確數字,不做換算 --line-numbers顯示規則行號
Match Creteria :
基本匹配
-s匹配數據包的源地址(--src或者--source)
-d(--dst或者--destination)指定匹配數據包目標地址
-i指定數據包的流入接口(指邏輯接口)
-o指定數據包的流出接口
-p用於做協議匹配(四層協議匹配:tcp,udp,icmp)
擴展匹配:隱含擴展:對某一協議的擴展 顯式擴展
隱含擴展
-p tcp
--sport匹配源端口 --dport 匹配目標端口
--tcp-flags(留個標誌位,SYN,ACK,FIN,PSH,URG,RST.ALL,ALONE)
--syn表示上面的數據包 重置時syn重置,rst不可重置
-p udp
--sport
--dport
-p icmp
--icmp-type echo-request代碼是8發出請求 echo-reply代碼是0應答
顯示擴展
-m 明確指定是一個擴展
state:
四個狀態:NEW ESTABLISHED RELATED INVALID
--state後跟狀態 表示檢查哪幾個狀態
/etc/sysconfig/iptables-sysconfig 文件下寫進ftp服務項
-m multiport多端口匹配
--sports 用於指定多個源端口 中間用逗號隔開
--dports用於指定多個目標端口
--ports指定非連續的端口
-m connlimit
--connlimit-above NUM 超出幾個就被拒絕,上限是多高
-m time 用於指定之間
--timestart 起始時間 --timestop結束時間 起始時間不能小於結束時間,凌晨後寫成兩段
-m string 做字符串匹配
--algo
--string pattern
-j TARGET
ACCEPT允許
DROP拒絕
REJECT
SNAT
DNAT
REDIRECT
LOG
例如:本機上有ssh的服務工作在tcp上22端口,來自於192.168.0.0//24,目標地址此地址,允許通過
進來的iptables -t filter -A INPUT -s 192.168.0.0/24 -d 192.168.0.97 -p tcp --dport 22 -j ACCEPT
出去的iptables -t filter -A OUTPUT -s 192.168.0.97 -d 192.168.0.0/24 -p tcp --sport 22 -j ACCEPT
iptables -L -n查看策略 默認是filter表
寫默認策略 iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT DROP
-s ‘ ! ‘ 192.168.0.0/24表示取反 前面加感嘆號 用強引用
service iptables save 保存iptables的設置
關於target :ACCEPT , DROP , REJECT ,SNAT ,DNAT
源地址轉換SNAT ,MASQUERADE地址僞裝 在POSTROUTING上做
DNAT目標地址轉換 在PREROUTING上做
在轉換的基礎上加過濾功能 iptables -A FORWARD -i eth1 -s 172.16.0.1 -j DROP 但別人改地址 就沒轍了 所以說包過濾的安全性還是很有限的 (-i 表示流入接口的設置)
layer7-filter 7層過濾 補充到內核上,重編內核(netfilter) 再重裝iptables (電子檔rh253)
大致三個步驟 解壓完之後 ./configure --prefix=指定安裝路徑 make(頭文件,庫文件) make install
二進制文件安裝位置:/usr/local/bin,/usr/local/sbin,/usr/local/libexec
庫文件安裝位置:/usr/local/lib
配置文件安裝位置:/usr/local/etc
幫助文件安裝位置:/usr/local/share
系統默認尋找庫文件的路徑:/lib,/usr/lib,/usr/local/lib /etc/ld.so.conf 定義新庫文件路徑(若路徑發生改變) 或者 /etc/ld.so.conf.d/ *.conf 建立這個文件,把新路徑寫進來 ldconfig -v重新加載庫文件路徑
幫助文件:man有個配置文件/etc/man.config 定義在執行man命令時到什麼路徑下去找man文件 在MANPATH行下加一個新路徑
頭文件在/usr/include,/usr/local/include下 若路徑發生變化,則制定鏈接:ln -sv /usr/local/tutils/include /usr/include/tutils(起個名字)
保存iptables的設置 service iptables save 保存在/etc/sysconfig/iptables
iptables-save 保存規則 要手動設置輸出重定向 > /etc/sysconfig/iptables/iptables.2011012401
iptables-restore < /etc/sysconfig/iptables/iptables.20110124* 表示啓動哪個iptables設置
防火牆腳本 把所有執行的命令放進去 開機自動運行