Linux之iptables
阿新 • • 發佈:2018-05-28
LINUX iptables 防火墻的主要類別有:
1、netfilter
2、tcp wrappers
3、proxy
1、netfilter
2、tcp wrappers
3、proxy
Linux的數據包過濾軟件:iptables
//規則的順序非常重要
三張表:filter、nat、mangle
五條鏈:input、output、forward、prerouting、postrouting
規則的查看與清除
iptables [-t tables] [-L] [-nv] -t:nat/filter -L:列出當前的規則 -n:不進行IP的反查,顯示速度快 -v:列出更多的信息 iptables-save [-t tables] #列出完整的防火墻規則 iptables [-t tables] [-FXZ] -F:清除所有已制定的規則 -X:除掉所有用戶自定義的chain(tables) -Z:清零所有chain的計數和流量統計
定義默認策略
iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
語法:
[root@www ~]# iptables [-AI [INPUT|OUTPUT|FOREARD...]] [-io [eth0|eth1...]] > [-p [tcp|udp|icmp...]] [-s [sip|net]] [-d [dip|net]] -j [ACCEPT|DROP|REJECT|LOG] --sport、--dport [-m state] [--state 狀態] [-m mac] [--mac-source xxx]
iptables設置腳本:
1、清除已有規則
2、制定默認策略
3、設置各項規則
4、保存
#!/bin/bash # 請先輸入相關參數,不要輸入錯誤 EXTIF="eth0" # 這個是可以來你上public ip 的網絡接口 INIF="eth1" #內部LAN 的網絡連接,若無則寫成 INIF="" INNET="192.168.100.0/24" # 若無內網絡接口,請填寫 INNET="" export EXTIF INIF INNEF # 第一部分,針對本機的防火墻設置 # 1 . 先設置好內核的網絡功能 echo "1" > /proc/sys/net/ipv4/tcp_syncookies echo "1" > /proc/sys/net/ipv4icmp_echo_ignore_broadcasts for i in /proc/sys/net/ipv4/conf/*/{rp_filter,log_martians}; do echo "1" > $i done for i in /proc/sys/net/ipv4/conf/*/{accept_source_route,accept_redirects,send_redirects}; do echo "0" > $i done # 2 . 清除規則、設置默認策略及開放 lo 與相關的設置值 PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH iptables -F iptables -X iptables -Z iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FPRWARD ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -nm state -state RELATED,ESTABLISHED -j ACCEPT # 3 . 啟動額外的防火墻script模塊 if [ -f /usr/local/virus/iptables/iptables.deny ]; then sh /usr/local/virus/iptables/iptables.deny fi if [ -f /usr/local/virus/iptables/iptables.allow ]; then sh /usr/local/virus/iptables/iptables.allow fi if [ -f /usr/local/virus/iptables/iptables.http ]; then sh /usr/local/virus/iptables/iptables.http fi # 4 . 允許某些類型的 ICMP 數據包進入 AICMP ="0 3 3/4 11 12 14 16 18" for tyicmp in $AICMP do iptables -A INPUT -i #EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT done # 5 . 允許某些服務的進入,,請依照自己的環境開啟 # iptables -A INPUT -p TCP -i $EXTIF --dport 21 --sport 1024:65535 -j ACCEPT # FTP # iptables -A INPUT -p TCP -i $EXTIF --dport 22 --sport 1024:65535 -j ACCEPT # SSH # iptables -A INPUT -p TCP -i $EXTIF --dport 25 --sport 1024:65535 -j ACCEPT # SMTP # iptables -A INPUT -p TCP -i $EXTIF --dport 53 --sport 1024:65535 -j ACCEPT # DNS # iptables -A INPUT -p TCP -i $EXTIF --dport 53 --sport 1024:65535 -j ACCEPT # DNS # iptables -A INPUT -p TCP -i $EXTIF --dport 80 --sport 1024:65535 -j ACCEPT # WWW # iptables -A INPUT -p TCP -i $EXTIF --dport 110 --sport 1024:65535 -j ACCEPT # POP3 # iptables -A INPUT -p TCP -i $EXTIF --dport 443 --sport 1024:65535 -j ACCEPT # HTTPS # 第二部分,針對後端主機的防火墻設置 # 1 . 先加載一些有用的模塊 modules="ip_tables iptables_nat ip_nat_ftp ip_nat-irc ip_conntrack ip_conntrack_ftp ip_conntrack_irc" for mod in $modules do testmod=`lsmod | grep "^${mod} " | awk ‘{print $1}‘` if [ "$testmod" == "" ]; then modprobe $mod fi # 2 . 清除 NAT table 的規則 iptables -F -t nat iptables -X -t nat iptables -Z -t nat iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT # 3 . 若有內部接口的存在(雙網卡)開放成為路由器,且為IP分享器 if [ "$INIF" != "" ]; then iptables -A INPUT -i $INIF -j ACCEPT echo "1" > /proc/sys/net/ipv4/ip_forward if [ "$INIET" != "" ]; then for innet in $INNET do iptables -r nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE done fi fi # 如果你的 MSN 一直無法連接,或者是某些網站 OK 某些網站不 OK ,可能是 MTU 的問題,那可以將下面這行取消批註,來啟動 MTU 的範圍 iptables -A FORWARD -p tcp -m tcp --tcp-flags STN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu # 4 . NAT 服務器後端的 LAN 內對外值服務器設置 iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 -j DNAT --tp-description 192.168.1.210:80 #WWW # 5 . 特殊的功能,包括 windows 遠程桌面產生的規則,假設桌面主機為 1.2.3.4 # iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4 --dport 6000 -j DNAT --to-description 192.168.100.10 # iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4 --sport 3389 -j DNAT --to-description 192.168.100.20 # 6 . 最後將這些功能存儲下來 /etc/init.d/iptables save
Linux之iptables