|
楼主 |
发表于 2003-11-28 08:55:14
|
显示全部楼层
第一次先将内容加入/etc/sysconfig/iptabls里,结果iptables无法启动,提示失败;第二次将内容加入了/etc/rc.d/rc.local中,结果提示了很多出错信息,因为在开机时提示,很快,我无法将出错信息贴上来。我的思路是:我们目前只有一个外网的IP,各个用户是通过代理上网,例如代理上网IP为:192.168.0.1,现在想实现通过Ip地址转换,外网和内网可以通过这个IP访问内部的WEB服务器(192.168.0.3),另外,客户端是通过代理上网,而且是需要验证的。
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
# 1.Configuration options.
# 1.0 Protocols Configuration.
#定义会用到的通讯协议
HTTP="80"
HTTPS="443"
FTP="21"
FTP_DATA="20"
SMTP="25"
POP3="110"
IMAP="143"
WEBMIN="10000"
# 1.1 Internet Configuration.
INET_IP="10.1.52.1"
INET_IFACE="eth0"
# 1.2 Local Area Network configuration.
LAN_IP="192.168.0.1"
LAN_HTTP1_IP="192.168.0.3"
LAN_MAIL1_IP="192.168.0.3"
LAN_BROADCAST_ADDRESS="192.168.0.255"
LAN_IFACE="eth1"
# 1.4 Localhost Configuration.
LO_IFACE="lo"
LO_IP="127.0.0.1"
# 1.5 IPTables Configuration
IPTABLES="/sbin/iptables"
# 2. Module loading.
/sbin/depmod -a
# 2.1 Required modules
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
# 2.2 Non-Required modules
# 3./proc set up.
# 3.1 Required proc configuration
echo "1" > /proc/sys/net/ipv4/ip_forward
# 4. rules set up.
# 4.1 Filter table
# 4.1.0 Reset the default policies in the nat table.
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
# 4.1.1 Set policies
#定义安全策略为正面表列
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
# 4.1.2 Create userspecified chains
#新增使用者自订规则炼
$IPTABLES -N bad_tcp_packets
$IPTABLES -N allowed
$IPTABLES -N icmp_packets
# 4.1.3 Create content in userspecified chains
#该炼的功能是:将要求重导向的联机记录起来,然后将封包丢弃
$IPTABLES -A bad_tcp_packets -p tcp! --syn -m state --state NEW -j LOG --log-level INFO --log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp! --syn -m state --state NEW -j DROP
# allowed chain
#该炼的功能是:允许要求联机封包或响应封包进入,将其余封包丢弃
$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 rules
#该炼的功能是:允许ping封包进入,将其余封包丢弃
#$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
#$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
# 4.1.4 INPUT chain(过滤要到达防火墙的封包)
#进入防火墙主机的TCP封包必须先进行bad_tcp_packets过滤
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
#从WAN进入防火墙主机的ICMP封包必须先进行icmp_packets过滤,这是为了避免黑客传送不完整的Ip封包,系统会响应icmp封包通知对方,导致主机位置被侦测出来
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
#从LAN进入防火墙主机的全部封包通通放行,额外检查目的地ip可以将multicast封包过滤
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BROADCAST_ADDRESS -j ACCEPT
#防止ip欺骗
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
#从WAN进入防火墙主机的所有封包,检查是否为响应封包,若是则予以放行
$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
# 限制过滤规则的比对频率为每分钟平均流量三个封包(超过上限的封包将暂停比对),并将瞬间流量设定为一次最多处理三个封包(超过上限的封包将丢弃不予处理),这类封包通常是骇客用来进行阻断式攻击
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "IPT INPUT packet died:"
# 4.1.5 FORWARD chain(过滤要通过防火墙的封包)
# 通过防火墙的 TCP 封包必须先进行 bad_tcp_packets 过滤
$IPTABLES -A FORWARD -p TCP -j bad_tcp_packets
# 从 LAN 要到 WAN 的封包通通放行
$IPTABLES -A FORWARD -i $LAN_IFACE -o $INET_IFACE -j ACCEPT
# 从 WAN 要到 LAN 的封包仅放行回应封包
$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许来自 WAN 的 HTTP、HTTPS 封包
#$IPTABLES -A FORWARD -p TCP -i $INET_IFACE -o $LAN_IFACE -d $LAN_HTTP1_IP -m multiport --dport $HTTP,$HTTPS -j allowed
# 允许来自 WAN 的 FTP 封包
$IPTABLES -A FORWARD -p TCP -i $INET_IFACE -o $LAN_IFACE -d $LAN_HTTP1_IP -m multiport --dport $FTP,$FTP_DATA -j allowed
# 允许来自 WAN 的 SMTP、POP3、IMAP 封包
$IPTABLES -A FORWARD -p TCP -i $INET_IFACE -o $LAN_IFACE -d $LAN_MAIL1_IP -m multiport --dport $SMTP,$POP3,$IMAP -j allowed
# 限制过滤规则的比对频率为每分钟平均流量三个封包(超过上限的封包将暂停比对),并将瞬间流量设定为一次最多处理三个封包(超过上限的封包将丢弃不予处理),这类封包通常是骇客用来进行阻断式攻击
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died:"
# 4.1.6 OUTPUT chain(过滤从防火墙送出的封包)
# 从防火墙网卡送出的所有封包,通通放行
$IPTABLES -A OUTPUT -p TCP -j bad_tcp_packets
$IPTABLES -P OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -P OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -P OUTPUT -p ALL -s $INET_IP -j ACCEPT
# 限制过滤规则的比对频率为每分钟平均流量三个封包(超过上限的封包将暂停比对),并将瞬间流量设定为一次最多处理三个封包(超过上限的封包将丢弃不予处理),这类封包通常是骇客用来进行阻断式攻击
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died:"
$IPTABLES -t nat -A PREROUTING -d $INET_IP -j DNAT --to-destination $LAN_HTTP1_IP
$IPTABLES -t nat -A POSTROUTING -o $INET_FACE -s $LAN_HTTP1_IP -j SNAT --to-source $INET_IP
究竟错在哪里呢,我的系统是Redhat9,默认已经安装了iptables,好象格式不太一样,是不是这个原因导致不行,还是……??参考:http://www.linuxsir.com/bbs/showthread.php?s=&threadid=45600 |
|