1. 程式人生 > >ubuntu 14.04/14.10 iptables 防火牆設定

ubuntu 14.04/14.10 iptables 防火牆設定

1. 一鍵批處理設定

呆狐狸.凨
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin:~/bin
export PATH
# Check if user is root
if [ $UID != 0 ]; then echo "Error: You must be root to run the install script, please use root to install lanmps";exit;fi

iptables-save >> _.iptables.up.rules #儲存防火牆設定,以便沒儲存時使用
iptables -L -n 2>&1 | tee -a "_.iptables.log"
iptables -F        #清除預設表filter中的所有規則鏈的規則
iptables -X        #清除預設表filter中使用者自定鏈中的規則
iptables -Z        #計數器清零

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#雙向
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允許本機
iptables -A INPUT -i lo -j ACCEPT
#FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#www 80
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

#13306 對映轉發到  mysql資料庫 3306
iptables -A PREROUTING -p tcp --dport 13306 -j REDIRECT --to-ports 3306 -t nat
#3306 mysql資料庫
#iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
#memache
#iptables -A INPUT -p tcp --dport 11211 -j ACCEPT

#對於OUTPUT規則,因為預設的是ACCEPT,所以要新增DROP規則,減少不安全的埠連結。
iptables -A OUTPUT -p tcp --sport 31337 -j DROP
iptables -A OUTPUT -p tcp --dport 31337 -j DROP

#丟棄壞的TCP包
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
#處理IP碎片數量,防止攻擊,允許每秒100個
#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

#設定ICMP包過濾,允許每秒1個包,限制觸發條件是10個包
#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

#防止外部的ping和SYN洪水攻擊
iptables -A INPUT -p tcp --syn -m limit --limit 100/s --limit-burst 100 -j  ACCEPT
#ping洪水攻擊,限制每秒的ping包不超過10個
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s –limit-burst 10 -j ACCEPT
#防止各種埠掃描,將SYN及ACK SYN限制為每秒鐘不超過200個
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT

#最後規則拒絕所有不符合以上所有的
iptables -A INPUT -j DROP

if [ -z "`grep "iptables-save" /etc/network/interfaces`" ]
then
	echo "#以下有防火牆需要的可以使用  
pre-up iptables-restore < /etc/iptables.up.rules #啟動時應用防火牆  
post-down iptables-save > /etc/iptables.up.rules #關閉時儲存防火牆設定,以便下次啟動時使用  " >> /etc/network/interfaces
    
else
     echo "iptables-save find "
fi

clear
echo "iptables ok ";
echo ""

iptables -L -n
cat /etc/network/interfaces


把上面的儲存為 (如果還有其他埠規則請一起在上面配置,執行時清空規則):
lanmps_iptables.sh

上傳到伺服器然後設定許可權,並執行

chmod 777 lanmps_iptables.sh 
./lanmps_iptables.sh
那麼  防火牆就設定完成了

2. ubuntu iptables 防火牆 啟動

modprobe ip_tables

3. ubuntu iptables 防火牆 關閉

ubuntu 並沒有關閉命令,所以要通過變通方法解決防火牆

iptables -F
iptables -X  
iptables -Z  
iptables -P INPUT ACCEPT  
iptables -P OUTPUT ACCEPT  
iptables -P FORWARD ACCEPT  
modprobe -r ip_tables  
依次執行以上命令即可關閉iptables,否則在執行modproble -r ip_tables時將會提示  FATAL: Module ip_tables is in use.

4. Iptables的儲存和呼叫

防止每次開機或重啟後都需要去呼叫一次,把它設定自動執行

第一步 更改網絡卡配置檔案

sudo vi /etc/network/interfaces 
第二部 在最後增加配置
#以下有防火牆需要的可以使用  
pre-up iptables-restore < /etc/iptables.up.rules #啟動時應用防火牆  
post-down iptables-save > /etc/iptables.up.rules #關閉時儲存防火牆設定,以便下次啟動時使用  
如果不明白的看 http://blog.csdn.net/fenglailea/article/details/12191607#t1


感謝:http://hongwei.im/iptables-setting-for-ubuntu-1304