input output forward prerouting postrouting
五鏈相當於在五個位置設置安全策略做檢查
流量進入網卡(路由表)後查看是否是發給自己的,
1 總的檢查口 prerouting
2 是發給自己的就轉發給自己進程的端口,input
不是就轉發走,只是穿過 output
4 自己訪問外部網絡時,流量往外出的時候也要經過自己的路由表 forward
穿過我的做設置,例如教室內訪問視頻網站
5 最外面的出口做檢查 postouting
1 隱式擴展
不用寫調用哪個模塊,當指定協議的時候系統會自動調用協議所需要的模塊,協議名就是模塊名,系統自己去找,tcp,udp協議
指定端口號
只讓tcp的22端口通過
iptables -I INPUT 3 -s 192.168.1.11 -p tcp --dport22 -j ACCEPT
dport目標端口
sport源端口
指定端口範圍,必須是連續的 m:n 例如1:10 1到10
自定義鏈
除了系統自帶的五個鏈,自己可以自定義鏈
1先自定義一個鏈
Iptables –N invalid_packets
重命名
Iptables –E invalid_packets INVALID_PACKETS
爲自定義的鏈添加規則
Iptables –A invalid_packets –p tcp –tcp-flags ALL ALL –j REJECT
定義完不和原有規則關聯就沒意義,就像函數,只定義沒調用就無意義
Iptables –A OUTPUT –j INVALID_PACKAGES
從我這裏出的,只要是不符合規則的統統拒絕
刪除時,先刪除關聯的鏈,再清空自定義鏈添加的內容,最後刪除自定義鏈
Iptables –D OUTPUT 1
Iptables –F invalid_packets
Iptables –X invalid_packets
顯示擴展
1 multiport 可以指定不連續端口
iptables -I INPUT -p tcp -m multiport --dports 139,445 -j ACCEPT
2 iprange
iptables -I INPUT -m iprange --src-range 192.168.1.11-192.168.1.12 -j ACCEPT
3 mac --mac-source
Ip 限制了可以從mac突破限制
Iptables -I INPUT 3 -m mac --mac-source 00:0C:29:D9:83:55 -j ACCEPT
加兩個
Iptables -I INPUT 3 -m mac --mac-source 00:0C:29:D9:83:55 -s 192.168.1.11 -j ACCEPT
4 string
對應用層數據的字符串進行限制
例如用戶訪問百度搜索google等字符串,可以屏蔽掉
Iptables -I OUTPUT -m string --algo bm --string”google” -f REJECT
Tcpdump -I etho port 80
5 time
iptables -I INPUT 3 -m time --timestart 01:00:00 --timestop 02:00:00 --weekdays 1,2,3,4,5 -j ACCEPT
週一到週五的上班時間才能訪問
6 connlimit 限制單個機器的連接數
限制客戶端的IP連接數,併發連接數
--connlimit-upto n 小於某個值,在某個範圍內時是匹配的
--connlimit-above n 連接數大於n的時候匹配
超過兩個就拒絕
iptables -A INPUT -m connlimit --connlimit-above 2 -j REJECT
添加策略是防止和iptables -vnL 裏面其他策略衝突
7 limit 擴展 限制總的連接數,多個機器加起來
先放行5個,以後每一分鐘放行一個
iptables -A INPUT -m limit --limit 1/minute --limit-burst 5 -j ACCEPT
8 state
New:第一次訪問就叫做new
ESTABLISHED:第二次訪問的叫做established
RELATED:新發起的與已有連接相關聯的連接,例如ftp協議中數據連接與命令連接的關係
防火牆策略中,established放在最前面,之前檢查過了,再次見面直接放在最前面直接通過
例如 舊的已經連接過的用戶accept,新的用戶只有httpd80端口可以連,其他的都不讓連
Iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Iptables -I INPUT 4 tcp --dport 80 -m state --state NEW -j ACCEPT
針對ftp的端口容易變化的特性,加載專門模塊
modprobe nf_conntrack_ftp
可以加入開機啓動 /etc/rc.d/rc.local
Lsmod |grep ftp 查看是否加載成功
加載後, 新添加的21端口和相關聯的內容都放行
新發起的請求連接的21端口是允許的
iptables -I INPUT 3 -p tcp --dport 21 -m state --state NEW -j ACCEPT
相關的已經建立連接的直接放行
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT