防火牆是一種組建 工作在網絡邊緣,對進出本網的資料基于一定的規則進行檢查并在比對某規則時由規則定義的處理機制進行處理的功能組建
防火牆對内網不進行過濾。防火牆分為硬體和軟體兩類,硬體是廠家設計好的主機硬體,硬體防火牆内的os主要以提供資料包過濾機制為主,軟體防火牆本事就是保護系統網絡安全的一套軟體例如:iptables 與tcp wrappers都可以成為軟體防火牆
可以按防火牆對資料包的擷取方式來進行分類。分别是七層的應用層防火牆即代理網關(負載大,安全工作效率低) 和三層的網絡層防火牆(檢查源ip 是包過濾性防火牆)
Linux的防火牆本身是由linux核心提供的,直接由核心進行處理,性能很好
一個網絡資料包進入到主機之前,會先經過netfilter進行檢查,那就是iptables的規則。
處理的機制分為4種第一種:過濾 第二種:NAT第三種:MANGLE 第四種:RAW(遠端機制都要用規則)
在iptables中每一個位置放置很多規則稱為鍊,每一個位置對于不同機制的多個規則即不同的鍊形成表。
在iptables中一共有五個位置可以放置規則
第一個 PREROUTING(路由前) 第二種 POSTROUTING()路由後
第三種 INPUT第四種 OUTPUT 第五種 FORWARD
過濾機制放的位置:第三 四 五
NAT:PREROUTING(目标位址轉換) POSTROUTING(源位址轉換)OUTPUT
MANGLE:在五個地方都可以放置
RAW:PREROUTING 和OUTPUT
在鍊上的規則由順序比對,如果沒有比對到規則則就用預設規則
指令:
-t 指定機制(過濾,NAT, MANGLE, RAW)
對規則的指令:
-A (追加) –I(插入 後加數字時表示插入為第幾條 如果不加預設為第一條)-R (替換 替換第幾條 –R chain num 替換哪個鍊的第幾條) –D (–D CHAIN NUM)删除第幾個鍊的第幾條
計數器:1 被規則比對到資料包的個數 2 被規則比對到的所有資料包的大小之和
對鍊的操作指令:
-N (建立一條規則鍊) –X(删除使用者自定義的鍊 x 隻能删除空鍊) -F (清空鍊如果後不加鍊名 則清空表中所有鍊)
-Z (清空計數器,重新開始計數)-P(預設處理政策)-E(重命名鍊)
List 檢視鍊中的規則
-L 所有規則 –n 以數字的形式顯示 –v 顯示詳細資訊 –x 顯示值的原有資訊 不做機關換算
比對條件:
第一種:基本比對 第二種:擴充比對 (隐含擴充 (對某個協定的擴充) 顯示擴充
基本比對:資料包的位址:-s ,--src , --source (比對源位址)
-d , --dst , --destination(比對目标位址)
-i (指定資料包的流入接口)
- o (指定資料包的流出接口)
-p 做協定比對 (tcp udp icmp)
隐含擴充:
-p tcp
–sport ,--dport , --tcp –flays
-p udp
–sport ,--dport
-p icmp
--icmp-type echo-request(數字代碼為8),echo-reply(數字代碼為0,)
-j TARGET
ACCEPT DROP REJECT SNAT DNAT REDIRECT LOG
顯示擴充:
-m (指定此為顯示擴充)
-m multport –sport ,--dport ,--ports
-m connlimit(并發連接配接速率)
--connlimit-above(并發連接配接數超過了幾個)
-m string –algo kmp –string ‘’ (字元)
-m time –time start (小時:分鐘)
--time stop
例如:-m time –timestart 07:10 –timestop 23:59
修改預設規則:
Iptables –t filter –P INPUT DROP
Iptables –D INPUT 2 (删除INPUT 鍊中的第二條)
檢視政策:
Iptables –L –n
過濾的例子:
隻允許192.168.0.0//24 ssh主機
Iptables –t filter –A INPUT –s 192.168.0.0/24 –d 192.168.0.36 –p tcp –dport 22 –j ACCEPT (進來的資料)
Iptables –t filter –A OUTPUT –s 192.168.0.36 –d 192.168.0.0/24 –p tcp –sport 22 –j ACCEPT(出去的資料)
隻能自己ping别人 别人ping不了自己
Iptables –A OUTPUT –s 192.168.0.36 –p icmp –icmp-type 8 –j ACCEPT
Iptables –A INPUT –d 192.168.0.36 –p icmp –icmp-type 0 –j ACCEPT(自己去ping别人)
Iptables –A INPUT –s 0.0.0.0/0.0.0.0 –d 192.168.0.36 –p icmp –icmp-type 8 –j ACCEPT
Iptables –A OUTPUT –s 192.168.0.36 –d 0.0.0.0/0.0.0.0 –p icmp –icmp-type 0 –j ACCEPT(别人能ping自己)
Iptables –F INPUT (清空filter的input 鍊)
調用自定義鍊:
定義自定義規則 拒絕來自192.168.0.0/24的使用者通路web伺服器
Iptables –A attach-input –s 192.168.0.0/24 –d 192.168.0.36 –p tcp –dport 80 –j DROP
把自定義規則附加到鍊上:
Iptables –A INPUT –s 192.168.0.0/24 –j attach-input
使用者自定義的鍊隻在使用者用時才生效
NAT轉換:
SNAT(不需要路由内部主機)
檢視路由功能是否打開
Iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –d 192.168.0.0/24 –j SNAT –to –source 192.168.0.36
用iptables –t nat –L –n 看出nat 規則
目标位址轉換:(需要做路由)
Iptables –t nat –A PREROUTING –s 192.168.1.0/24 –d 192.168.1.1 –p tcp –dport 80 –j DNAT –to-destition 192.168.0.254
股則的儲存:
Iptables-save 用于儲存規則,可用輸出重定向(不影響正在使用的規則)
Iptables-save > /etc/sysconfig/iptables/名字