linux 核心 iptables 的範例
iptables 是 linux 核心 2.4 以上所提供的工具,它能提供絕大部份的防火牆所擁有的功能,大致上可分為五類:
1. 過濾
2. 偽裝
3. 重新導向
4. 封包重組
5. 記綠
以上相同的功能,市面上所謂的防火牆 ( 包括軟硬體 ) 的售價可是很貴的!
iptables 檔案路徑
/etc/sysconfig/iptables
寫成 shell script 檔
將定義好的規則寫成 shell script 檔,並將它命名為 ipt.sh,方便以後的管理。存檔後記得要賦予可以執行的權限:
[root@linus ~]# chmod 700 ipt.sh
開機時自動套用規則
如果要自動套用所寫好的 shell script 檔,可執行以下指令:
[root@linus ~]# ./ipt.sh <== 將規則寫入 iptables 表內。這是只套用在這一次的啟動中的意思
[root@linus ~]# service iptables save <== 這是將所定義好的規則記錄到 /etc/sysconfig/iptables 裏,以後只要 iptables 啟動時,就會執行所定義的規則
iptables 規則範例
注意!以下紅字前方是兩個 『-』 的符號而且沒有空格哦。不曉得是什麼原因,在 wordpress.com 提供的空間上只顯現出一個 『-』 的符號,好怪?
# 清除所有防火牆規則,並建立全部阻擋封包進入
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
# 所有的來自 lo 這個介面的封包,都予以接受
iptables -A INPUT -i lo -j ACCEPT
# 對於自己所產生的連線,並且後續的要求封包都接受
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
# 對於 ping 要求的封包全部拒絕,不過對於自己發出去的 ping 封包要接受
iptables -A INPUT -p icmp –icmp-type 8 -j DROP
iptables -A INPUT -p icmp –icmp-type 0 -j ACCEPT
# 開放 ftp (20,21) ,ssh (22),http (80) ssl (443) 的 tcp port
iptables -A INPUT -s 0/0 -p tcp –dport 20 -j ACCEPT
iptables -A INPUT -s 0/0 -p tcp –dport 21 -j ACCEPT
iptables -A INPUT -s 0/0 -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -s 0/0 -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -s 0/0 -p tcp –dport 443 -j ACCEPT
# 開放 bind DNS (53) 的 udp port
iptables -A INPUT -s 0/0 -p udp –dport 53 -j ACCEPT
# 不正確的封包擋掉
# 擋掉 scan port 的程式
iptables -A INPUT -i eth0 -m state –state RELATED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -m state –state NEW,INVALID -j DROP
iptables -A INPUT -i eth0 -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A INPUT -i eth0 -p tcp –tcp-flags ALL ALL -j DROP
iptables -A INPUT -i eth0 -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A INPUT -i eth0 -p tcp –tcp-flags ALL NONE -j DROP
iptables -A INPUT -i eth0 -p tcp –tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -i eth0 -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP
# 擋掉某些 IP 的所有連線
iptables -A INPUT -s 61.62.63.64 -j REJECT –reject-with icmp-host-prohibited
iptables -A INPUT -s 65.66.67.68 -j REJECT –reject-with icmp-host-prohibited
# 拒絕本機連線到特定的機器或是特定的服務
iptables -A INPUT -d 140.111.1.1 -p tcp -j DROP
# 開啟並限制 NAT 的功能
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.100.0/24 -j MASQUERADE