Iptables 是Linux 內核集成的 IP 信息包過濾系統。若是Linux 系統鏈接到因特網或 LAN、服務器或鏈接 LAN 和因特網的代理服務器, 則該系統有利於在 Linux 系統上更好地控制 IP 信息包過濾和防火牆配置。html
防火牆在作信息包過濾決定時,有一套遵循和組成的規則,這些規則存儲在專用的信息包過濾表中,而這些表集成在 Linux 內核中。在信息包過濾表中,規則被分組放在咱們所謂的鏈(chain)中。而netfilter/iptables IP 信息包過濾系統是一款功能強大的工具,可用於添加、編輯和移除規則。 雖然 netfilter/iptables IP 信息包過濾系統被稱爲單個實體,但它實際上由兩個組件netfilter 和 iptables 組成。服務器
Iptables的規則鏈分爲三種:輸入、轉發和輸出。併發
清空全部規則:tcp
iptables -F
添加22端口能夠正常鏈接:工具
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
設置默認規則: 通常設置默認規則有兩種思想:一種是都接受,而後重點拒絕;另外一種是都拒絕,而後重點放行。spa
iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
開放具體的端口:代理
iptables -A INPUT -p tcp -m tcp --dport 3304 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 3304 -j ACCEPT(若是OUTPUT默認是DROP) iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT (若是OUTPUT默認是DROP,下面的同樣)
支持ping:rest
iptables -A INPUT -p icmp -j ACCEPT iptables -A OUTPUT -p icmp -j ACCEPT
禁止pingcode
iptables -A INPUT -p icmp -j REJECT iptables -A OUTPUT -p icmp -j REJECT
具體到IP地址: 只接受192.168.1.55的包:htm
iptables -A INPUT -s 192.168.1.55 -p icmp -j ACCEPT (默認是DROP) iptables -A OUTPUT -s 192.168.1.23 -p icmp -j ACCEPT
IPTABLES規則的相關操做:
iptables -F :清空規則 iptables -X :刪除用戶自定義的規則 iptables -L :查看規則 iptables -L -n :以數字的形式顯示規則 iptables -L --line-numbers :查看規則的編號(適用於刪除規則) iptables -D chain num :刪除編號是NUM的規則
擴展規則:
多端口:
iptables -I INPUT -s 192.168.1.0/24 -d 192.168.1.23 -p tcp -m multiport --dport 22,80,3306 -j ACCEPT iptables -I OUTPUT -d 192.168.1.0/24 -s 192.168.1.23 -p tcp -m multiport --sport 22,80,3306 -j ACCEPT
iprange擴展:
iptables -I OUTPUT -s 192.168.1.23 -p tcp -m multiport --sport 21,22,80 -m iprange --dst-range 192.168.1.10-192.168.1.20 -j ACCEPT iptables -I INPUT -d 192.168.1.23 -p tcp -m multiport --dport 21,22,80 -m iprange --src-range 192.168.1.10-192.168.1.20 -j ACCEPT
string擴展:檢查報文中出現的字符串。
--algo {bm|kmp} --string patterm iptables -I OUTPUT -m string --algo bm --string 'movie' -j REJECT
time擴展:根據報文對時間範圍進行匹配。
--datestart --datestop --timestart --timestop --monthdays --weekdays iptables -I INPUT -d 192.168.1.23 -p tcp --dport 80 -m time --timestart 23:00 --timestop 6:00 -j REJECT
connlimit擴展:根據客戶端IP作併發鏈接數量匹配
--connlimit-upto n :鏈接數量小於n --connlimit-above n :鏈接數量大於n --connlimit-saddr :源地址轉換 --connlimit-daddr :目標地址轉換 iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j REJECT
limit擴展:基於收發報文速率作檢查
--limit rate/[second|minute|hour|day] --limit-burst number iptables -A INPUT -d 192.168.1.23 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 10/minute -j ACCEPT 防止DOS攻擊: iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limite-burst 100 -j ACCEPT
state擴展:根據鏈接跟蹤機制檢查鏈接的狀態。
查看鏈接追蹤功能所能容納的最大鏈接個數:/proc/sys/net/nf_conntrack_max 查看追蹤到的鏈接:/proc/net/nf_conntrack 不一樣協議或者鏈接類型的時長:/proc/sys/net/netfilter/.. NEW:新發出的請求,鏈接追蹤模板中不存在相關的信息條目,所以識別爲第一次發出來的請求 ESTABLISHED:NEW狀態以後,鏈接追蹤模板中爲其創建的條目失效以前期間內所進行的通訊的狀態 RELATED: 相關的鏈接,如:FTP協議命令鏈接與數理鏈接之間的關係 INVALIED:沒法識別的鏈接 iptables -I INPUT -d 192.168.1.23 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -I OUTPUT -d 192.168.1.23 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT iptables -I INPUT 2 -d 192.168.1.23 -p tcp -m multiport --dport 22,80 -m state --state NEW -j ACCEPT 問題:如何開放被動模式的FTP服務? 1) 裝載FTP追蹤時專用的模塊 modprobe nf_conntrack_ftp 2) 放行請求報文 命令鏈接:NEW , ESTABLISHED 數據鏈接:RELATED , ESTABLISHED iptables -A INPUT -d local_IP -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -d loacl_IP -p tcp -m state --state RELATED,ESTABISHED -j ACCEPT 3) 放行響應報文:ESTABLISHED iptables -A OUTPUT -s local_IP -p tcp -m state --state ESTABLISHED -j ACCEPT 4)保存及重載規則: iptables-save > file 保存規則至指定規則 iptables-restore < file 指定文件中重載規則
轉發規則:
開啓iptables forward轉發功能 echo 1 >/proc/sys/net/ipv4/ip_forward nat: SNAT:只修改請求報文的源地址 DNAT:只修改請求報文的目標地址 內--》外 外--》內 nat表:PREROUTING(DNAT)-->OUTPUT-->POSTROUTING(SNAT) 將本機的8080端口轉發至其餘主機,主機IP:192.168.1.12,目標主機IP和端口:192.168.1.13:8088,規則以下: iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.13:8088 iptables -t nat -A POSTROUTNG -p tcp --dport 8088 -j SNAT --to-source 192.168.1.12
原文出處:https://www.cnblogs.com/dianel/p/10315197.html