防火牆的相關知識web
防火牆:位於網絡之間的,根據所定義的規則對進出網絡數據包經行匹配,並匹配到包用指定的處理機制進行處理的硬件、軟件或者兩者的結合安全
包過濾防火牆:工做於網絡層網絡
有狀態檢測併發
簡單包過濾app
網關代理型防火牆:工做於應用層,效率低,安全性高ssh
Hook function:5個鉤子tcp
INPUTide
OUTPUTpost
RORWARKspa
PREROUTING
POSTRONTING
filter:過濾 在INPUT,OUTPUT,RORWARK
nat:PREROUTING(dnat)POSTRONTING(snat) OUTPUT
mangle:對數據包的封裝格式從新進行修改,在5個鉤子裏均可以
raw:PREROUTING,OUTPUT
當每一個鉤子擁有不一樣的表時,其檢測順序是先mangle,在nat,最後filter
防火牆規則的查看:
# iptables -t table -L -n -v
-t 默認是filter
-L 列出目前的table的規則
-n 不進行IP與hostname反查,使顯示信息更快
-v 顯示詳細信息
--line-numbers 顯示的時候帶行號
防火牆規則的清除
# iptables -t table [-FXZ]
-F (flush):清空全部的已定規則
-X ():刪除用戶自定義的空鏈
-Z ():清空計數器(每一條規則都有兩個計數器,一個用於記錄被本條規則所匹配到的包的個數,另外一個用戶記錄全部匹配到包的體積之和)
定義防火牆的默認策略
# iptables -P chain (ACCEPT|DROP) REJECT
# iptables -P INPUT DROP
配置防火牆
#iptables [-t table] sub_command CHAIN [num] [cretiria] [ -j ACCTION]
sub_command:
Rule:
-A (append):追加
-I (insert):插入,
-D (delete):刪除 -D OUTPUT
-R (replace):替換, -R FORWARD 6
chain:鏈
-N (new):新建
-E 重命名一條鏈
通用匹配:
-s ! IP/NETWORK 源地址
-d ! IP/NETWORK 目標地址
-p (tcp|udp|icmp)指定協議
-i interface 通常不用於output,postrouting
-o interface 通常不用在input,prerouting
擴展匹配:
隱式擴展:通常指對-p選項中指定的協議進行的擴展
-p tcp
--sport
--dport
--tcpflags 要檢查的標記,必須爲1的標記(剩餘位必須爲0)
--syn
-p udp
--sport
--dport 53 DNS 端口
-p icmp
--icmp-type
echo-request;8
echo-reply;0
顯示擴展:通常指必須使用-m選項明確指定要加載擴展
-m state:鏈接狀態
--state state
NEW:想要新創建的數據包
# iptables -A OUTPUT -o eth1 -m state --state NEW -j DROP
ESTABLISHED:已創建狀態的請求數據包
# iptables -P OUTPUT DROP
# iptables -A OUTPUT -s 172.16.100.1 -m state --state ESTABLISHED -j ACCEPT
RELATED:相關聯的數據包
INVALID:無效的數據包
-m (mport|multiport)第一個可能不能用,全部儘可能用第二個
--source-ports 80,23
--destination-ports
--ports
# iptables -A INPUT -d 172.16.19.1 -p tcp -m multiport --source-ports 80,23 -j ACCEPT
-m iprange
--src-range ip-ip
--dst-range ip-ip
# iptables -A INPUT -m iprange --src-range 172.16.19.10-172.16.19.100 -p tcp --dport 80 -j ACCEPT
-m connlimit
--connlimit-above n 限制某個鏈接請求上併發請求的個數
-m limit
--limit rate 平均單位時間是幾個
--limit-burst number 突發限制的數量
# iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m limit --limit 1/second --limit-burst 30 -j ACCEPT
-m time
--timestart value
--timestop
--days listofdays
--datestart date
--datestop date
# iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m time --datestart 2012:02:18 --datestop 2012:02:26 --timestart 08:30:00 --timestop 14:30:00 -j ACCEPT
-m string
--algo bm|kmp
--string pattern
# iptables -A OUTPUT -s 172.16.100.1 -p tcp --dport 80 -m string --algo bm --string 「wed」 -j DROP
21 FTP 22 ssh 23 telent
練習:192.168.1.0/24是「狼窩」,在要求爲172.16.x.1寫規則,知足如下要求:
1、filter表全部連接的默認規則爲DROP;
2、lo接口上進出的全部數據包均放行;
3、Web和ssh開放給非「狼窩」的主機;
1)ssh僅容許在工做時間(每週一至週五的9:00-18:00)被訪問,但172.16.0.0/16網絡中的主機可在任意時段訪問;
2)web服務全時段可被訪問,但每秒種接收的新請求的個數不能超過100個;
4、發往本機的ping請求,每秒只各應兩個數據包,且最高每秒只響應3個;拒絕來自「狼窩」的ping請求;本機可向任意主機發送Ping請求;
5、本機出口僅將已經創建的鏈接放行
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARK DROP
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT
# iptables -A INPUT -s 192.168.1.0/24 -p tcp -m --multiport --source-ports 80,22 -j DROP
# iptables -A INPUT -s 172.16.0.0/16 -p tcp --dport 22 -j ACCEPT
# iptables -A INPUT -m --timestart 09:00:00 --timestop 18:00:00 --weekdays Mon,Tue,Web,Thu,Fri -p tcp --dport 22 -j ACCEPT
# iptables -A INPUT -p tcp --syn -m limit --limit-burst 100 -j ACCEPT
# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type 8 -j DROP
# iptables -A INPUT -d 172.16.19.1 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 3 -j ACCEPT
# iptables -A OUTPUT -s 172.16.19.1 -p icmp --icmp-type 8 -j ACCEPT
# iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT