歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

一個典型的iptables防火牆配置

一個典型的iptables防火牆配置   機房安全是必須考慮的事情。一些服務器設備必須暴露公網IP,很容易遭到攻擊。配置硬件或軟件防火牆,只開放可以訪問的端口,拒絕其他不合法的IP的請求,包括端口掃描。甚至拒絕ping。將大大提升服務器的安全。   www.2cto.com   本腳本配置iptables,只允許北京和香港遠程訪問香港的服務器。但會開放web端口給任何IP訪問。可以做出更嚴格的限制,只允許某幾個IP訪問。這樣,規避大部分的隨意的攻擊。  本腳本缺省拒絕所有連接,這是必須小心的。如果用iptables -F來清空所有iptables的規則,可能導致遠程無法訪問服務器,必須先修改缺省規則為ACCEPT所有。所以有一種替代方法,在規則末尾增加一條drop任何包的規則。這樣清除規則後,不會導致無法訪問。 centos 5.2調試通過。  Linux代碼    www.2cto.com   #!/bin/bash   # 2010.10.14 modified by zhouhh   ### 1.允許內網192.168.0.0,通過內網卡的所有協議   ### 2.允許北京電信、網通、電信通和香港26段共4個子網通過外網訪問ssh端口,允許所有ping本機   ### 3.允許任何地址,通過任何網口訪問本機web端口   ### 4.開放所有UDP端口   if [ $UID != 0 ]; then       echo "must be root to run this script!"       exit   fi       ### 定義子網變量    BJ_DXT=218.249.75.128/26    BJ_DX=219.141.178.96/28    BJ_CNC=123.127.24.128/25    HK_26=210.211.26.0/24    NET_LAN=192.168.1.0/24   ### 定義本地IP    IP_LAN=192.168.1.    IP_WAN=210.211.26.       ### 定義服務端口     ssh_port=60000    web_port=80    sip_port=5060       ### 定義網絡接口    ETH_LAN=eth0    ETH_WAN=eth1       ### 定義程序及路徑變量    ipt=/sbin/iptables       ### 具體規則    echo "[+]Flushing all rules..."                                                                                                                                iptables --flush    service iptables stop                                                 echo "[+]Set default policy..."       #缺省拒絕所有接入                                                                    $ipt -P INPUT DROP                                                      $ipt -I INPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT          $ipt -N TCP_ERR                                                                                   $ipt -I INPUT 2 -j TCP_ERR                                                                            echo "[+]Creating rules for web port..."                                                                                                   $ipt -A INPUT -p tcp --dport $web_port -m state --state NEW -j ACCEPT              echo "[+] accept all UDP ports..."    $ipt -A INPUT -p udp -j ACCEPT             ### 允許北京和香港ping本機,其他拒絕   # ping 不限制,zhouhh comment    # echo "[+]Creating icmp rules..."                                                                                            # $ipt -A INPUT -i $ETH_WAN -s $BJ-DXT -p icmp --cmp-type 8 -j ACCEPT                             # $ipt -A INPUT -i $ETH_WAN -s $BJ-DX  -p icmp --cmp-type 8 -j ACCEPT                             # $ipt -A INPUT -i $ETH_WAN -s $BJ-CNC -p icmp --cmp-type 8 -j ACCEPT                             # $ipt -A INPUT -i $ETH_WAN -s $HK-26  -p icmp --cmp-type 8 -j ACCEPT                             # $ipt -A INPUT -i $ETH_WAN -p icmp -j DROP                                                           $ipt -A INPUT  -p icmp -j ACCEPT                                                          ###  允許內網所有IP通信                                                                                                   echo "[+]Permit lan all..."    $ipt -A INPUT -i $NET_LAN -s $NET_LAN -j ACCEPT                                                  $ipt -A INPUT -i lo -j ACCEPT       ### 其他規則start       ### 其他規則end            ### 拒絕錯誤的TCP包                                                                                              echo "[+]Creating TCP rules for new chain TCP_ERR..."                                                                                                   $ipt -I TCP_ERR 1  -p tcp --tcp-flags ALL ALL -j DROP                                           $ipt -I TCP_ERR 2  -p tcp --tcp-flags ALL NONE -j DROP                                          $ipt -I TCP_ERR 3  -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP                                   $ipt -I TCP_ERR 4  -p tcp --tcp-flags SYN,RST SYN,RST -j DROP                                   $ipt -I TCP_ERR 5  -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG -m limit --limit 1/s --log-prefix  "bad package"    $ipt -I TCP_ERR 6  -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP                                     $ipt -I TCP_ERR 7  -p tcp ! --syn -m state --state NEW -j DROP              ### 允許北京和香港訪問ssh端口                                                                     echo "[+]Creating ssh rules..."                                 $ipt -A INPUT -i $ETH_WAN -s $BJ_DXT -p tcp --dport $ssh_port -m state --state NEW -j ACCEPT      $ipt -A INPUT -i $ETH_WAN -s $BJ_DX  -p tcp --dport $ssh_port -m state --state NEW -j ACCEPT      $ipt -A INPUT -i $ETH_WAN -s $BJ_CNC -p tcp --dport $ssh_port -m state --state NEW -j ACCEPT      $ipt -A INPUT -i $ETH_WAN -s $HK_25  -p tcp --dport $ssh_port -m state --state NEW -j ACCEPT             ### 保存配置讓規則隨系統啟動     service iptables save  
Copyright © Linux教程網 All Rights Reserved