iptables相關腳本
用了iptables一段時間,把自己的。一個iptables腳本獻給大家,供大家參考!
#!/bin/bash
#
# ========================================================
# 腳本說明:
# 歡迎使用iptables.rule這個script來建立您的防火墻?
# 這個script還需要您自己根據您的環境設定后,方可工作
# 基本規則定義為::[拒絕所有,開放特定]
#
# 強烈建議?
# 不了解Linux防火墻機制iptables的朋友使用這個script
# 可能會不太了解每個命令的意義,如果這樣
# 歡迎您參考以下幾個網頁:
# http://www.study-area.org/linux/servers/linux_nat.htm
# http://linux.vbird.org/linux_server/0240network-secure-1.php
# http://linux.vbird.org/linux_server/0250simple_firewall.php
# 使用說明??
# 請先將這個腳本權限更改為可執行:?
# chmod 755 iptables.rule
# 將此腳本放置在 /usr/local/firewall 下??
# mkdir -p /usr/local/firewall
# mv /您的完整的路徑/iptables.rule /usr/local/firewall
# 執行測試:?
# /usr/local/firewall.rule
# iptables -L -n (這個動作檢查防火墻規則)
# 將下面一行加入 /etc/rc.d/rc.local 中
# /usr/local/firewall.rule
# 取消防火墻?
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# ========================================================
# 版權提示:??
# 此腳本為 GPL 授權,任何人都可以使用?
# 使用此 scripts 發生任何問題時?
# 本人不負任何責任
# VBird
# ========================================================
# 歷史紀錄:?
# 2002/08/20 VBird ?***?
# 2003/04/26 VBird ?加入砍站軟體的相關執行文件????
# 2003/08/25 VBird ?修改 INPUT 的 Policy 為 DROP
# ========================================================
# 0.0 Please key in your parameters
# 這個EXTIF后面接的為[對外的網卡"WAN"]???
# 一般來說,如果是ADSL/FTTH等,就是"ppp0"
# 如果是固定IP,那么就是"eth0"
# The interface that connect Internet
EXTIF="ppp0"
# 下面的INIF為對內網卡(Lan)?
# 如果您的Linux沒有對內網卡,請留空
# INIF=""
# ?
# the inside interface. if you don't have this one
# and you must let this be black ex> INIF=""
INIF="eth1"
INNET="192.168.1.0/24" # This is for NAT's network
# 1.0 測試您的Linux內核版本及防火墻模組
#kver=`uname -r | cut -c 1-3`
#if [ "$kver" != "2.4" ] && [ "$kver" != "2.5" ]; then
#echo "Your Linux Kernel Version may not be suported by this script!"
#echo "This scripts will not be runing"
#exit
# fi
# ipchains=`lsmod | grep ipchains`
# if [ "$ipchains" != "" ]; then
#echo "unload ipchains in your system"
#rmmod ipchains 2> /dev/null
# fi
# 2.0 載入模組
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- export PATH EXTIF INIF INNET
- modprobe ip_tables > /dev/null 2>&1
- modprobe iptable_nat > /dev/null 2>&1
- modprobe ip_nat_ftp > /dev/null 2>&1
- modprobe ip_nat_irc > /dev/null 2>&1
- modprobe ip_conntrack > /dev/null 2>&1
- modprobe ip_conntrack_ftp > /dev/null 2>&1
- modprobe ip_conntrack_irc > /dev/null 2>&1
# 3.0 清除所有的防火墻規則
- /sbin/iptables -F
- /sbin/iptables -X
- /sbin/iptables -Z
- /sbin/iptables -F -t nat
- /sbin/iptables -X -t nat
- /sbin/iptables -Z -t nat
- /sbin/iptables -P INPUT DROP
- /sbin/iptables -P OUTPUT ACCEPT
- /sbin/iptables -P FORWARD ACCEPT
- /sbin/iptables -t nat -P PREROUTING ACCEPT
- /sbin/iptables -t nat -P POSTROUTING ACCEPT
- /sbin/iptables -t nat -P OUTPUT ACCEPT
# 4.0 ?先允許任何網絡,包括lo這個界面
# 以及剛才指定的內部界面(LAN)
# 當然,重點是啟動您的Linux為NAT服務器功能?
/sbin/iptables -A INPUT -i lo -j ACCEPT
if [ "$INIF" != "" ]; then
/sbin/iptables -A INPUT -i $INIF -j ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE
fi
# 5.0 開始載入任何可以拒絕的網絡設定的文件??
# 下面2個文件可以自行建立
if [ -f /usr/local/firewall.deny ]; then
sh /usr/local/firewall.deny
fi
if [ -f /usr/local/firewall.allow ]; then
sh /usr/local/firewall.allow
fi
# 6.0 下面這個文件如果存在,則執行!!
# 請注意::這個文件與防止砍站的軟件有關?
if [ -f /usr/local/firewall/httpd-err/iptables.http ]; then
sh /usr/local/firewall/httpd-err/iptables.http
fi
# 7.0 允許ICMP封包,允許已建立的連接通過?
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
AICMP="0 3 3/4 4 11 12 14 16 18"
for tyicmp in $AICMP
do
/sbin/iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
done
# 8.0 Allow services,請關閉您的服務器沒有開放的服務..在行前加"#"..
- # /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 22 -j ACCEPT # SSH
- #/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 25 -j ACCEPT # SMTP
- /sbin/iptables -A INPUT -p UDP -i $EXTIF --dport 53 -j ACCEPT # DNS
- /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 53 -j ACCEPT # DNS
- /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 80 -j ACCEPT # WWW
- /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 21 -j ACCEPT # FTP
- # /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT # PASV_PORTS FTP USE
- # /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 110 -j ACCEPT # POP3
- # /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 113 -j ACCEPT # auth
- # /sbin/iptables -A INPUT -p tcp -i eth1 -s 192.168.1.0/24 --dport 137:139
通過一個iptables相關腳本,想必大家都認識了iptables,希望對大家有所幫助!
【編輯推薦】