Linux 防火牆入門----設定檔
发表于:2007-05-26来源:作者:点击数:
标签:
原文: http://linux.tnc.edu.tw/techdoc/firewall/samples.html 設定檔 開機自動叫用 rc.firewall 在 /etc/rc.d/rc.local 檔末,加入以下指令: if [ -f /etc/rc.d/rc.firewall ]; then . /etc/rc.d/rc.firewall fi 該檔屬性: chmod ug+rwx rc.firewall (即
原文: http://linux.tnc.edu.tw/techdoc/firewall/samples.html
開機自動叫用 rc.firewall
在 /etc/rc.d/rc.local 檔末,加入以下指令:
if [ -f /etc/rc.d/rc.firewall ]; then . /etc/rc.d/rc.firewall fi
|
該檔屬性: chmod ug+rwx rc.firewall
(即 chmod 774 rc.firewall)
該檔 Owner 應為: root.root
練習時,可下 sh rc.firewall 或 ./rc.firewall
以下指令檔,僅供參考,它們並不完整,未必能符合您的需要,您必須要再修改才能使用。
一般而言,每個指令中的 IP,會使用變數代換的方式來處理。比如:
FW_IP="163.26.197.8" (用 FW_IP 來代表 163.26.197.8)
使用時,再用 $FW_IP 來代換成 163.26.197.8,這樣,維護上會比較方便。
其它大部份常用的指令值,也都會用上述方式來定義及取代。
開機自動叫用 rc.firewall
在 /etc/rc.d/rc.local 檔末,加入以下指令:
if [ -f /etc/rc.d/rc.firewall ]; then . /etc/rc.d/rc.firewall fi
|
該檔屬性: chmod ug+rwx rc.firewall
(即 chmod 774 rc.firewall)
該檔 Owner 應為: root.root
練習時,可下 sh rc.firewall 或 ./rc.firewall
以下指令檔,僅供參考,它們並不完整,未必能符合您的需要,您必須要再修改才能使用。
一般而言,每個指令中的 IP,會使用變數代換的方式來處理。比如:
FW_IP="163.26.197.8" (用 FW_IP 來代表 163.26.197.8)
使用時,再用 $FW_IP 來代換成 163.26.197.8,這樣,維護上會比較方便。
其它大部份常用的指令值,也都會用上述方式來定義及取代。
以下設定,便可分割出一個乾淨的網段,對外以 $FW_IP 為代表號。
修改一下 IP,直接套用,很快便可架設一個簡易的防火牆。
#! /bin/sh
FW_IP="163.26.197.8" ipchains -F ipchains -P input ACCEPT ipchains -P output ACCEPT ipchains -P forward ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward ipchains -A forward -s 192.168.1.0/24 -j MASQ
ipchains -A input -p tcp -d $FW_IP 80 -j REDIRECT 8080 redir --lport=8080 --caddr=192.168.1.2 --cport=80 &
|
FW_IP 是指對外網卡的真實 IP,您要套用時,記得要修改成您的防火牆的第一片網卡的IP
修改一下 IP,直接套用,很快便可架設一個簡易的防火牆。
#! /bin/sh
###-----------------------------------------------------### # 設定內部網段 IP 及介面 ###-----------------------------------------------------### echo "Set internal ......" echo
LAN_IP="172.16.255.254" LAN_IP_RANGE="172.16.0.0/16" LAN_BCAST_ADRESS="172.16.255.255" LAN_IFACE="eth1"
# loopback interface LO_IFACE="lo" LO_IP="127.0.0.1"
###-----------------------------------------------------### # 外部網段 IP 及介面 ###-----------------------------------------------------### echo "Set external ......" echo
FW_IP="163.26.197.8" FW_IP_RANGE="163.26.197.0/24" FW_IFACE="eth0"
###-----------------------------------------------------### # 設定 iptables 的路徑 ###-----------------------------------------------------### echo "Set path of iptables" echo
IPTABLES="/sbin/iptables"
###-----------------------------------------------------### # 打開 forward 功能 ###-----------------------------------------------------### echo "Enable ip_forward ......" echo
echo "1" > /proc/sys/net/ipv4/ip_forward
###-----------------------------------------------------### # 清除先前的設定 ###-----------------------------------------------------### echo "Flush fiter table ......" echo
# Flush filter $IPTABLES -F $IPTABLES -X
echo "Flush mangle table ......" echo # Flush mangle $IPTABLES -F -t mangle $IPTABLES -t mangle -X
echo "Flush nat table ......" echo # Flush nat $IPTABLES -F -t nat $IPTABLES -t nat -X
###-----------------------------------------------------### # 設定 filter table 的預設政策 ###-----------------------------------------------------### echo "Set default policies for filter table" echo $IPTABLES -P INPUT ACCEPT $IPTABLES -P OUTPUT ACCEPT $IPTABLES -P FORWARD ACCEPT
###-----------------------------------------------------### # 啟動內部對外轉址 ###-----------------------------------------------------### echo "Enable simple IP Forwarding and Network Address Translation" echo
$IPTABLES -t nat -A POSTROUTING -o $FW_IFACE -j SNAT --to-source $FW_IP
###-----------------------------------------------------### # 啟動外部對內部轉址 ###-----------------------------------------------------### # 凡對 $FW_IP:8080 連線者, 則轉址至 172.16.255.2:80 $IPTABLES -t nat -A PREROUTING -p tcp -d $FW_IP --dport 8080 -j DNAT --to 172.16.255.2:80
|
$FW_IP 是防火牆主機上的第一片網卡的 IP,各位應把它換成您的防火牆的第一片網卡的IP
#! /bin/sh
FW_IP="163.26.197.8"
ipchains -F
#ipchains -P input ACCEPT #ipchains -P output ACCEPT #ipchains -P forward ACCEPT
ipchains -P input DENY ipchains -P output DENY ipchains -P forward DENY
# open telnet ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 23 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s any/0 23 -d $FW_IP 1024:65535 -j ACCEPT
# open web ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 80 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s any/0 80 -d $FW_IP 1024:65535 -j ACCEPT
# open mail ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 25 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s any/0 25 -d $FW_IP 1024:65535 -j ACCEPT
# open pop3 ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 110 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s any/0 110 -d $FW_IP 1024:65535 -j ACCEPT
# open dns : 1st => udp 查詢 ipchains -A output -i eth0 -p udp -s $FW_IP 1024:65535 -d any/0 53 -j ACCEPT ipchains -A input -i eth0 -p udp -s any/0 53 -d $FW_IP 1024:65535 -j ACCEPT
# open dns : 2st => tcp 查詢 ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 53 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s any/0 53 -d $FW_IP 1024:65535 -j ACCEPT
# open dns peer-to-peer : 1st => udp ipchains -A output -i eth0 -p udp -s $FW_IP 53 -d any/0 53 -j ACCEPT ipchains -A input -i eth0 -p udp -s any/0 53 -d $FW_IP 53 -j ACCEPT
# open dns peer-to-peer: 2st => tcp 查詢 ipchains -A output -i eth0 -p tcp -s $FW_IP 53 -d any/0 53 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s any/0 53 -d $FW_IP 53 -j ACCEPT
# open ftp channel 21 : commands channel ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 21 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s any/0 21 -d $FW_IP 1024:65535 -j ACCEPT
# open ftp channel 20 : data channel ipchains -A input -i eth0 -p tcp -s any/0 20 -d $FW_IP 1024:65535 -j ACCEPT ipchains -A output -i eth0 -p tcp ! -y -s $FW_IP 1024:65535 -d any/0 20 -j ACCEPT
# open Passive FTP Mode : data channel ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 1024:65535 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s any/0 1024:65535 -d $FW_IP 1024:65535 -j ACCEPT
# open ssh ipchains -A output -i eth0 -p tcp -s $FW_IP 1024:65535 -d any/0 22 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s any/0 22 -d $FW_IP 1024:65535 -j ACCEPT
ipchains -A output -i eth0 -p tcp -s $FW_IP 1020:1023 -d any/0 22 -j ACCEPT ipchains -A input -i eth0 -p tcp ! -y -s any/0 22 -d $FW_IP 1020:1023 -j ACCEPT
# 開放防火牆的 port 22 給家中或學校的某一個固定 IP 連線 # 以下 211.22.33.44 即代表你家中的固定 IP, $FW_IP 是防火牆的eth0的 IP ipchains -A input -i eth0 -p tcp -s 211.22.33.44 1024:65535 -d $FW_IP 22 -j ACCEPT ipchains -A output -i eth0 -p tcp ! -y -s $FW_IP 22 -d 211.22.33.44 1024:65535 -j ACCEPT
# 假設這台主機上有 mail server,以下可以開放別人送信包給你這台主機的 SMTP ipchains -A input -i eth0 -p tcp -s any/0 1024:65535 -d $FW_IP 25 -j ACCEPT ipchains -A output -i eth0 -p tcp ! -y -s $FW_IP 25 -d any/0 1024:65535 -j ACCEPT
# 假設有一個垃圾郵件主機經常送 SPAM 信過來, 比如: 211.33.44.55,以下可以予以拒絕 ipchains -A input -i eth0 -p tcp -s 211.33.44.55 -d $FW_IP 25 -j DENY
# 允許教網中心 163.26.200.4 可以 ping 我 ipchains -A input -i eth0 -p icmp -s 163.26.200.4 8 -d $FW_IP -j ACCEPT ipchains -A output -i eth0 -p icmp -s $FW_IP 0 -d 163.26.200.4 -j ACCEPT
# 我可以 ping 任何主機 ipchains -A output -i eth0 -p icmp -s $FW_IP 8 -d any/0 -j ACCEPT ipchains -A input -i eth0 -p icmp -s any/0 0 -d $FW_IP -j ACCEPT
# 如果預設的 policy 是 ACCEPT,以下可以拒絕所有站台 ping 你的主機 # 如果預設的 policy 是 DENY,則不必設,就可全部拒絕別人 ping 你的主機 ipchains -A input -i eth0 -p icmp -s any/0 8 -d $FW_IP -j DENY
# 如果預設的 policy 是 ACCEPT, 以下可以拒絕任何主機 traceroute 你的主機 ipchains -A output -i eth0 -p icmp -s $FW_IP 3 -d any/0 -j DENY ipchains -A output -i eth0 -p icmp -s $FW_IP 11 -d any/0 -j DENY
# 但我想 traceroute 別人 ipchains -A output -i eth0 -p udp -s $FW_IP 1024:65535 -d any/0 33434:33523 -j ACCEPT ipchains -A input -i eth0 -p icmp -s any/0 11 -d $FW_IP -j ACCEPT ipchains -A input -i eth0 -p icmp -s any/0 3 -d $FW_IP -j ACCEPT
|
以下的 $FW_IP 代表防火牆的第一片網卡的真實 IP。
#! /bin/sh
FW_IP="163.26.197.8"
# enable forward echo "1" > /proc/sys/net/ipv4/ip_forward
# clear all chains ###-----------------------------------------------------### # 清除先前的設定 ###-----------------------------------------------------### # 清除預設表 filter 中,所有規則鏈中的規則 iptables -F # 清除預設表 filter 中,使用者自訂鏈中的規則 iptables -X
# 清除mangle表中,所有規則鏈中的規則 iptables -F -t mangle # 清除mangle表中,使用者自訂鏈中的規則 iptables -t mangle -X
# 清除nat表中,所有規則鏈中的規則 iptables -F -t nat # 清除nat表中,使用者自訂鏈中的規則 iptables -t nat -X
#iptables -P INPUT ACCEPT #iptables -P FORWARD ACCEPT #iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT iptables -A OUTPUT -o eth1 -j ACCEPT iptables -A FORWARD -i eth1 -j ACCEPT iptables -A FORWARD -o eth1 -j ACCEPT
# NAT iptables -t nat -A POSTROUTING -o eth0 -j SNAT -s 172.16.0.0/16 --to-source $FW_IP
# 虛擬主機 iptables -t nat -A PREROUTING -i eth0 -p tcp -d $FW_IP --dport 80 -j DNAT --to-destination 172.16.254.2:80
# open ssh server iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 1024:65535 -d $FW_IP --dport 22 -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 22 -d any/0 --dport 1024:65535 -j ACCEPT
# open telnet iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 23 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 23 -d $FW_IP --dport 1024:65535 -j ACCEPT
# open web browser iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 80 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 80 -d $FW_IP --dport 1024:65535 -j ACCEPT
# open mail iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 25 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 25 -d $FW_IP --dport 1024:65535 -j ACCEPT
# open pop3 iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 110 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 110 -d $FW_IP --dport 1024:65535 -j ACCEPT
# open ssh client iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 22 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 22 -d $FW_IP --dport 1024:65535 -j ACCEPT
# open dns 1st => udp iptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT
# open dns 2st => tcp iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT
# open telnet server iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 1024:65535 -d $FW_IP --dport 23 -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 23 -d any/0 --dport 1024:65535 -j ACCEPT
# open ftp channel 21 iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 21 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 21 -d $FW_IP --dport 1024:65535 -j ACCEPT
# open ftp data channel 20 iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 20 -d $FW_IP --dport 1024:65535 -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 1024:65535 -d any/0 --dport 20 -j ACCEPT
# open Passive FTP mode iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 1024:65535 -j ACCEPT iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 1024:65535 -d $FW_IP --dport 1024:65535 -j ACCEPT
# open ping iptables -A OUTPUT -o eth0 -p icmp -s $FW_IP --icmp-type 8 -d any/0 -j ACCEPT iptables -A INPUT -i eth0 -p icmp -s any/0 --icmp-type 0 -d $FW_IP -j ACCEPT
|
#!/bin/sh
# 本 scritp 參考 Oskar Andreasson 的 script 而來, 其版權如下所示。
# OLS3 謹誌。ols3@www.tnc.edu.tw
#-----------------------------------------------------------------------------
# rc.firewall - Initial SIMPLE IP Firewall script for Linux 2.4.x and iptables
#
# Copyright (C) 2001 Oskar Andreasson <blueflux@koffein.net>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program or from the site that you downloaded it
# from; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA
#-----------------------------------------------------------------------------
###-----------------------------------------------------###
# 設定內部網段 IP 及介面
###-----------------------------------------------------###
echo "Set internal ......"
echo
LAN_IP="172.16.255.254"
LAN_IP_RANGE="172.16.0.0/16"
LAN_BCAST_ADRESS="172.16.255.255"
LAN_IFACE="eth1"
# loopback interface
LO_IFACE="lo"
LO_IP="127.0.0.1"
###-----------------------------------------------------###
# 外部網段 IP 及介面
###-----------------------------------------------------###
echo "Set external ......"
echo
FW_IP="163.26.197.8"
FW_IP_RANGE="163.26.197.0/24"
FW_IFACE="eth0"
###-----------------------------------------------------###
# 設定 iptables 的路徑
###-----------------------------------------------------###
echo "Set path of iptables"
echo
IPTABLES="/sbin/iptables"
###-----------------------------------------------------###
# 打開 forward 功能
###-----------------------------------------------------###
echo "Enable ip_forward ......"
echo
echo "1" > /proc/sys/net/ipv4/ip_forward
###-----------------------------------------------------###
# 清除先前的設定
###-----------------------------------------------------###
echo "Flush fiter table ......"
echo
# Flush filter
$IPTABLES -F
$IPTABLES -X
echo "Flush mangle table ......"
echo
# Flush mangle
$IPTABLES -F -t mangle
$IPTABLES -t mangle -X
echo "Flush nat table ......"
echo
# Flush nat
$IPTABLES -F -t nat
$IPTABLES -t nat -X
###-----------------------------------------------------###
# 設定 filter table 的預設政策
###-----------------------------------------------------###
echo "Set default policies for filter table"
echo
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
###-----------------------------------------------------###
# 自訂一個 chain , 名為 tcp_packets
###-----------------------------------------------------###
echo "Name a new chain : tcp_packets ......"
echo
$IPTABLES -N tcp_packets
# 在此 tcp_packets chain 中, 附加一個 chain rule , 規則如下:
# 1. 在非主動連線時, 卻有一 new connection start , 此時予以記錄下來, 且加上 New not syn:的前置字串
#$IPTABLES -A tcp_packets -p tcp ! --syn -m state --state NEW -j LOG
#--log-prefix "New not syn:"
# 2. 這種封包, 予以丟棄.
#$IPTABLES -A tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
# disable been scaned
$IPTABLES -A tcp_packets -p TCP --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix "been scanned:"
$IPTABLES -A tcp_packets -p TCP --tcp-flags ALL ALL -j LOG --log-prefix "been scanned:"
$IPTABLES -A tcp_packets -p TCP --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG --log-prefix "been scanned:"
$IPTABLES -A tcp_packets -p TCP --tcp-flags ALL NONE -j LOG --log-prefix "been scanned:"
$IPTABLES -A tcp_packets -p TCP --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix "been scanned:"
$IPTABLES -A tcp_packets -p TCP --tcp-flags SYN,FIN SYN,FIN -j LOG --log-prefix "been scanned:"
$IPTABLES -A tcp_packets -p TCP --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A tcp_packets -p TCP --tcp-flags ALL ALL -j DROP
$IPTABLES -A tcp_packets -p TCP --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPTABLES -A tcp_packets -p TCP --tcp-flags ALL NONE -j DROP
$IPTABLES -A tcp_packets -p TCP --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A tcp_packets -p TCP --tcp-flags SYN,FIN SYN,FIN -j DROP
###-----------------------------------------------------###
# 啟動內部對外轉址
###-----------------------------------------------------###
echo "Enable simple IP Forwarding and Network Address Translation"
echo
$IPTABLES -t nat -A POSTROUTING -o $FW_IFACE -j SNAT --to-source $FW_IP
###-----------------------------------------------------###
# 啟動外部對內部轉址
###-----------------------------------------------------###
# 凡對 $FW_IP:8080 連線者, 則轉址至 172.16.255.2:80
$IPTABLES -t nat -A PREROUTING -p tcp -d $FW_IP --dport 8080 -j DNAT --to 172.16.255.2:80
###-----------------------------------------------------###
# FOWARD
###-----------------------------------------------------###
echo "Process forward ......"
echo
# FORWARD 由先由 tcp_packets 中來處理不好的 tcp packets
$IPTABLES -A FORWARD -p tcp -j tcp_packets
# 接受我們想 forward 的封包
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
###-----------------------------------------------------###
# 自訂 ICPM 及 UDP chain 來處理對應的封包
###-----------------------------------------------------###
echo "New name for icpm and udp chain"
echo
$IPTABLES -N icmp_packets
$IPTABLES -N udpincoming_packets
###-----------------------------------------------------###
# 自訂 allowed 這個 chain 來處理 允許進入的 tcp 連線
# 凡 tcp_packets 中的 chain rule 目的是某些欲開放的 port 者,
# 則跳至此一 allowed chain 來處理.
###-----------------------------------------------------###
echo "New name for allowed chain"
echo
$IPTABLES -N allowed
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP
###-----------------------------------------------------###
# ICMP chain rule
###-----------------------------------------------------###
# 允許 ping 的要求(icmp-type =8), 至於回應(icmp-type=0)則不必規定
# 回應屬出 OUTPUT, 由 OUTPUT chain 來處理即可.
#$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s $FW_IP_RANGE -d $FW_IP --icmp-type 8 -j ACCEPT
# 允許 time-exceeded 的要求(maximus hop count(TTL)is exceeded)
#$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s $FW_IP_RANGE --icmp-type 11 -j ACCEPT
#$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s $FW_IP_RANGE --icmp-type 3 -j ACCEPT
###-----------------------------------------------------###
# TCP rules
###-----------------------------------------------------###
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 20 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 1024:65535 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 110 -j allowed
# for CVS server
$IPTABLES -A tcp_packets -p TCP -s $FW_IP_RANGE --dport 2401 -j allowed
#
# UDP ports
#
# nondocumented commenting out of these rules
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 53 -j ACCEPT
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 123 -j ACCEPT
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 2074 -j ACCEPT
#$IPTABLES -A udpincoming_packets -p UDP -s 0/0 --source-port 4000 -j ACCEPT
# 允許 traceroute 至 FW_IP
$IPTABLES -A udpincoming_packets -p UDP -s $FW_IP_RANGE -j ACCEPT
#$IPTABLES -A udpincoming_packets -p UDP -j ACCEPT
##########################
# PREROUTING chain.
#
# Do some checks for obviously spoofed IP's
#
#$IPTABLES -t nat -A PREROUTING -i $FW_IFACE -s 192.168.0.0/16 -j DROP
$IPTABLES -t nat -A PREROUTING -i $FW_IFACE -s 10.0.0.0/8 -j DROP
#$IPTABLES -t nat -A PREROUTING -i $FW_IFACE -s 172.16.0.0/12 -j DROP
##########################
# INPUT chain
# Bad TCP packets we don't want.
$IPTABLES -A FORWARD -p tcp -j tcp_packets
# 進來的 ICMP 由 icmp_packets 這個 chain 來處理
$IPTABLES -A INPUT -p ICMP -i $FW_IFACE -j icmp_packets
# 進來的 TCP 由 tcp_packets 這個 chain 來處理
$IPTABLES -A INPUT -p TCP -i $FW_IFACE -j tcp_packets
# 進來的 UDP 由 udpincomming_packets 這個 chain 來處理
$IPTABLES -A INPUT -p UDP -i $FW_IFACE -j udpincoming_packets
#
# Rules for special networks not part of the Internet
#
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BCAST_ADRESS -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $FW_IP -m state --state ESTABLISHED,RELATED
-j ACCEPT
###############################
# OUTPUT chain
$IPTABLES -A FORWARD -p tcp -j tcp_packets
# 對外連線, 先全部打開
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $FW_IP -j ACCEPT
原文转自:http://www.ltesting.net
|