iptables的過濾規則
iptables的過濾規則:
# 過濾表規則
- *filter
# 默認徹略
- :FORWARD DROP [ ]
- :INPUT DROP [ ]
- :OUTPUT ACCEPT [ ]
# 定義新鏈
- -N ICMP_FORWARD
- -N TCP_FORWARD
- -N UDP_FORWARD
- -N ICMP_INPUT
- -N TCP_INPUT
- -N UDP_INPUT
- # Fix a bug
- -A OUTPUT -p icmp -m state --state INVALID -j DROP
# 以下是FORWARD鏈的規則
# 若是ICMP協議則跳到 ICMP_FORWARD
- -A FORWARD -p icmp -j ICMP_FORWARD
# 若是TCP協議則跳到 TCP_FORWARD
- -A FORWARD -p tcp -j TCP_FORWARD
# 若是UDP協議則跳到 UDP_FORWARD
- -A FORWARD -p udp -j UDP_FORWARD
# 允許碎片通過的速率200個/s,從200開始計數
- -A FORWARD -f -m limit --limit 200/s --limit-burst 200 -j ACCEPT
# 不匹配FORWARD鏈的所有規則,丟棄數據包,結束FORWARD鏈
- -A FORWARD -j DROP
# 以下是FORWARD鏈中針對ICMP協議的規則
# 從內網到外網的放行
- -A ICMP_FORWARD -p icmp -s 192.168.0.0/24 -i eth0 -o ppp+ -j ACCEPT
# 從外網進來的回應包放行
- -A ICMP_FORWARD -p icmp -m state --state ESTABLISHED,RELATED -i ppp+ -j ACCEPT
# 丟棄所有不匹配的ICMP數據包,結束FORWARD鏈
- -A ICMP_FORWARD -p icmp -j DROP
# 以下是FORWARD鏈中針對TCP協議的規則
# 允許內網1024以上的端口連接外網
- -A TCP_FORWARD -p tcp -s 192.168.0.0/24 -m tcp --sport 1024: -i eth0 -o ppp+ -j ACCEPT
# 允許內網進行主動式的FTP
- -A TCP_FORWARD -p tcp -m tcp --sport 21 --dport 1024: -m state --state ESTABLISHED -i ppp+ -j ACCEPT
- -A TCP_FORWARD -p tcp -m tcp --sport 20 --dport 1024: -m state --state ESTABLISHED,RELATED -i ppp+ -j ACCEPT
# 允許外網進來的回應包通過
- -A TCP_FORWARD -p tcp -m state --state ESTABLISHED -m tcp --dport 1024: -i ppp+ -j ACCEPT
# 丟棄所有不匹配的TCP數據包,結束FORWARD鏈
- -A TCP_FORWARD -p tcp -j DROP
# 以下是FORWARD鏈中針對UDP協議的規則
# 允許內網1024以上的端口連接外網
- -A UDP_FORWARD -p udp -s 192.168.0.0/24 -m udp --sport 1024: -i eth0 -o ppp+ -j ACCEPT
# 允許外網中指明的DNS服務器進行域名解析
- -A UDP_FORWARD -p udp -s 202.96.96.68 -m udp --sport 53 --dport 1024: -i ppp+ -j ACCEPT
- -A UDP_FORWARD -p udp -s 202.96.*.* -m udp --sport 53 --dport 1024: -i ppp+ -j ACCEPT
# 開放IRC OICQ 端口
- -A UDP_FORWARD -p udp -m multiport --source-port 4000,8000 -m udp --dport 1024: -i ppp+ -j ACCEPT
# 允許從外網進來的UDP回應包通行
- -A UDP_FORWARD -p udp -m state --state ESTABLISHED,RELATED -m udp --dport 1024: -i ppp+ -j ACCEPT
# 丟棄所有不匹配的UDP數據包,結束FORWARD鏈
- -A UDP_FORWARD -p udp -j DROP
# 以下開始是對網關服務器的匹配規則
# 允許數據包進入本地回環接口
- -A INPUT -p all -i lo -j ACCEPT
# 若是ICMP協議則跳到ICMP_INPUT進行規則匹配
- -A INPUT -p icmp -j ICMP_INPUT
# 若是TCP協議則跳到TCP_INPUT進行規則匹配
- -A INPUT -p tcp -j TCP_INPUT
# 若是UDP協議則跳到UDP_INPUT進行規則匹配
-A INPUT -p udp -j UDP_INPUT
# 允許碎片通過的速率200個/s,從200開始計數
- -A INPUT -f -m limit --limit 200/s --limit-burst 200 -j ACCEPT
# 不匹配INPUT鏈的所有規則,丟棄數據包,結束INPUT鏈
- -A INPUT -j DROP
# 以下是INPUT鏈中針對ICMP協議的規則
# 允許從內網來的ICMP數據包
- -A ICMP_INPUT -p icmp -i eth0 -j ACCEPT
# 允許從外網來的ICMP回應包通行
- -A ICMP_INPUT -p icmp -m state --state ESTABLISHED,RELATED -i ppp+ -j ACCEPT
# 丟棄所有不匹配的ICMP數據包,結束INPUT鏈
- -A ICMP_INPUT -p icmp -j DROP
# 以下是INPUT鏈中針對TCP協議的規則
# 對內網機器提供 http https 網上鄰居 透明代理服務
- -A TCP_INPUT -p tcp -s 192.168.0.0/24 -m multiport --destination-port 80,443,137,138,139,8080 -i eth0 -j ACCEPT
# 允許服務器以主動方式連接外網的FTP服務器
- -A TCP_INPUT -p tcp -m tcp --sport 21 --dport 1024: -m state --state ESTABLISHED -i ppp+ -j ACCEPT
- -A TCP_INPUT -p tcp -m tcp --sport 20 --dport 1024: -m state --state ESTABLISHED,RELATED -i ppp+ -j ACCEPT
# 提供 ssh smtp pop3 http https 服務
- -A TCP_INPUT -p tcp -m multiport --destination-port 22,25,110,80,443 -j ACCEPT
# 拒絕外網主動連接本服務器
- -A TCP_INPUT -p tcp -m tcp --syn -i ppp+ -j DROP
# 允許進來的回應包通過
- -A TCP_INPUT -p tcp -m state --state ESTABLISHED -m tcp --dport 1024: -j ACCEPT
# 丟棄所有不匹配的TCP數據包,結束INPUT鏈
- -A TCP_INPUT -p tcp -j DROP
# 以下是INPUT鏈中針對UDP協議的規則
# 允許外網中指明的DNS服務器進行域名解析
- -A UDP_INPUT -p udp -s 202.96.96.68 -m udp --sport 53 --dport 1024: -i ppp+ -j ACCEPT
- -A UDP_INPUT -p udp -s 202.96.*.* -m udp --sport 53 --dport 1024: -i ppp+ -j ACCEPT
# 為內網的機器提供DNS和SAMBA服務
- -A UDP_INPUT -p udp -s 192.168.0.0/24 -m multiport --destination-port 53,137,138,139 -i eth0 -j ACCEPT
# 允許服務器作為samba client
- -A UDP_INPUT -p udp -s 192.168.0.0/24 -m udp --sport 137:139 --dport 1024: -i eth0 -j ACCEPT
# 允許進來的回應包通過
- -A UDP_INPUT -p udp -m state --state ESTABLISHED,RELATED -m udp --dport 1024: -j ACCEPT
# 為內網的機器提供DHCP服務
- -A UDP_INPUT -p udp -m udp --sport 68 --dport 67 -i eth0 -j ACCEPT
# 丟棄所有不匹配的UDP數據包,結束INPUT鏈
- -A UDP_INPUT -p udp -j DROP
- COMMIT
# 路由表規則
*nat
# 默認徹略
- :PREROUTING ACCEPT [ ]
- :POSTROUTING ACCEPT [ ]
- :OUTPUT ACCEPT [ ]
# 為內網機器使用squid透明代理進行端口重定向
- -A PREROUTING -i eth0 -p tcp -d ! 192.168.0.1 -m tcp --dport 80 -j REDIRECT --to-ports 8080
# 對內網機器應用IP偽裝
- -A POSTROUTING -o ppp+ -j MASQUERADE
- COMMIT
【編輯推薦】