您好,登錄后才能下訂單哦!
規則的功能:
四個表
filter
nat
mangle
raw
五個內置鏈:
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
規則的屬性:
1、網絡層協議屬性:
ip
2、傳輸層協議屬性:
tcp
udp
icmp
iptables
大寫字母選項:子命令
小寫字母選項:用來匹配標準及其它;
-t {filter|nat|mangle|raw}
-L: list
-n: 數字格式顯示IP和PORT;
-v: 詳細信息, -vv, -vvv其中后面的選項比前面的顯示的更詳細
--line-numbers: 顯示鏈中規則的行號;
-x: 顯示精確值,不要做單位換算;
規則和默認策略都有兩個計數器:
packets:
bytes:
表和鏈的對應關系:
filter | INPUT, FORWARD, OUTPUT |
nat | PREROUTING, POSTROUTING, OUTPUT |
mangle | PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING |
raw | PREROUTING, OUTPUT |
每個鏈都有其默認策略:policy ACCEPT
通常只需要修改filter表的默認策略
其它子命令:
管理鏈:
-F: 清空鏈
iptables -F 表示清空所有鏈
-P: 設定默認策略
iptables -t filter -P INPUT {DROP|ACCEPT}
-N: 新建一條自定義鏈;
iptables -N FILTER_WEB
-X: 刪除自定義的空鏈;
-Z: 計算器清零;
iptables -Z
-E: 重命名自定義鏈
管理規則:
-A: append :在鏈的最后追加一條規則
-I [n]: 插入為第n條規則
-D [n]: 刪除第n條規則
-R [n]: 替換第n條規則
編寫規則語法:
iptables [-t 表] 大寫選項子命令 [規則號] 鏈名 匹配標準 -j 目標
目標:
DROP: 丟棄
REJECT:拒絕
ACCEPT:允許
RETURN:返回跳轉
REDIRECT: 端口重定向
DNAT:目標地址轉換
SNAT:源地址轉換
LOG:記錄日志
MARK:打標記
自定義鏈
匹配標準:
通用匹配
-s|--src|--source [!] IP/NETWORK
-d|--dst|--destination [!] IP/NETWORK
#iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -j ACCEPT
-i incoming_interface: 指定數據報文流入接口; INPUT, PREROUTING, FORWARD
-o outing_interface: 指定數據報文流出接口;OUTPUT, POSTROUTING, FORWARD
-p {tcp|udp|icmp}
擴展匹配: 要使用“-m 擴展名稱”來引用,而每個擴展模塊一般都會有自己特有的專用選項; 這些選項中,有些是必備的;
隱含擴展
-p tcp
--sport 指定源端口
--dport 指定目標端口
--tcp-flags 要檢查的標志 必須為1標記
--tcp-flags SYN,ACK,RST,FIN SYN 表示:tcp三次握手的第一次
ALL:所有標志位
NONE:沒有標志位
--tcp-flags ALL SYN,FIN非法報文
--syn
練習:放行對web服務的訪問:
#iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -j ACCEPT
#iptables -A OUTPUT -s 172.16.100.1 -p tcp --sport 80 -j ACCEPT
因為報文在接收和發送時都要經過防火墻,所以我們需要設定INPUT和OUTPUT兩個方面的訪問控制
--sport
--dport
例如:本機DNS服務器,要為本地客戶端做遞歸查詢;iptables的INPUT, OUTPUT默認為DROP;本機地址:172.16.100.1
# iptables -A INPUT -d 172.16.100.1 -p udp --dport 53 -j ACCEPT
# iptables -A OUTPUT -s 172.16.100.1 -p udp --sport 53 -j ACCEPT
# iptables -A OUTPUT -s 172.16.100.1 -p udp --dport 53 -j ACCEPT
# iptables -A INPUT -d 172.16.100.1 -p udp --sport 53 -j ACCEPT
-p icmp
--icmp-type
請求:8
響應:0
例子:本機172.16.100.1,能ping 172.16.0.0/16中的所有主機;
顯式擴展:
-m state --state
NEW, ESTABLISHED, RELATED, INVALID
ftp服務需要裝載:nf_conntrack_ftp模塊, 可以使用modprobe命令,也可編輯/etc/sysconfig/iptables-config文件實現。
-m mulitport: 可以指定15個以內的離散端口;比如,21-23,80
--source-ports 源端口
--destination-ports 目標端口
--ports
-m iprange: 指定匹配的IP地址范圍,如172.16.100.1-172.16.109.254
-m iprange
--src-range源ip地址
--dst-range 目標ip地址
-m limit
--limit 20/min 限制每分鐘最多允許請求的次數
--limit-burst 2 搜集多少個令牌桶
-m string
--string "" 引號里面填寫需要匹配的字符串
--algo {bm|kmp}
-m time
--datestart
--datestop
--timestart
--timestop
--weekdays
--monthdays
保存規則:
#service iptables save
保存至/etc/sysconfig/iptables
#iptables-save > /path/to/iptables.rules
生效規則文件中的規則:
#iptables-restore < /path/to/ipables.rules
子命令:
鏈:-N, -X, -Z, -F, -P, -E
規則:-A, -I, -D, -R
練習:INPUT和OUTPUT默認策略為DROP;
1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機;
# iptables -I INPUT 1 -m state --state ESTABLISHED -j ACCEPT
# iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m time --weekdays Tue,Wed,Thu,Fri,Sat,Sun
-m limit --limit 100/sec -m string --algo kmp ! --string "admim" -m state --state NEW -j ACCEPT
其中對于周一不允許訪問還可以表達為 -m time !--weekdays Mon
# iptables -I OUTPUT 1 -m state --state ESTABLISHED -j ACCEPT
2、在工作時間,即周一到周五的8:30-18:00,開放本機的ftp服務給172.16.0.0網絡中的主機訪問;數據下載請求的次數每分鐘不得超過5個;
# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 21 -m time --weekdays Mon,Tue,Wed,Thu,Fri --timestart 08:30:00 --timestop 18:00:00 -j ACCEPT
# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp -m state --state RELATED -m limit --limit 5/min -j ACCEPT
3、開放本機的ssh服務給172.16.x.1-172.16.x.100中的主機,x為你的座位號,新請求建立的速率一分鐘不得超過2個;僅允許響應報文通過其服務端口離開本機;
# iptables -A INPUT -m iprange --src-range 172.16.100.1-172.16.100.100 -m limit --limit 2/min -p tcp --dport 22 -d 172.16.100.1 -i eth0 -m state --state NEW -j ACCEPT
4、拒絕TCP標志位全部為1及全部為0的報文訪問本機;
# iptables -N clean_in
# iptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROP
# iptables -A clean_in -p tcp --tcp-flags ALL NONE -j DROP
# iptables -A clean_in -d 172.16.100.1 -j RETURN
# iptables -I INPUT 1 -d 172.16.100.1 -j clean_in
5、允許本機ping別的主機;但不開放別的主機ping本機;
# iptables -A OUTPUT -s 172.16.100.1 -p icmp --icmp-type 8 -j ACCEPT
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。