歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 一個典型的iptables防火牆配置

一個典型的iptables防火牆配置

日期:2017/3/1 16:36:35   编辑:關於Linux
一個典型的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