Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5379976
  • 博文数量: 890
  • 博客积分: 12876
  • 博客等级: 上将
  • 技术积分: 10760
  • 用 户 组: 普通用户
  • 注册时间: 2004-10-04 14:18
个人简介

猝然临之而不惊,无故加之而不怒。

文章分类

全部博文(890)

文章存档

2016年(1)

2014年(18)

2013年(41)

2012年(48)

2011年(65)

2010年(84)

2009年(121)

2008年(101)

2007年(129)

2006年(95)

2005年(118)

2004年(69)

分类: LINUX

2009-01-15 15:21:49

来源:网络
有空多多研究一下.

shell1:


Nat+Iptables+Squid的脚本
#!/bin/bash
# 飘飘的风于2003年7月26日修改,端口影射成功。

###--------------------------------------------------------------------###
#以下是定义变数
###--------------------------------------------------------------------###

PATH=/sbin:/usr/sbin:/bin:/usr/bin
RC_SQUID=/etc/rc.d/init.d/squid
EXT_IF=eth1
#外网接口,确定网卡,如果是拨号就用ppp0
INT_IF=eth0
LAN_IP_RANGE="192.168.0.0/24"
STATIC_IP="80.234.71.88"
TRUSTED_TCP_PORT="22 25 53 80 110 143 443 993 995 3389"
TRUSTED_UDP_PORT="53 3389"
ALLOWED_ICMP="0 3 3/4 4 11 12 14 16 18"


###--------------------------------------------------------------------###
#确定iptables安装情况
###--------------------------------------------------------------------###

which iptables &>/dev/null || {
echo
echo "$(basename $0): iptables程序没有找到"
echo "请先安装好这个程序."
echo
exit 1
}

###--------------------------------------------------------------------###
#废掉ipchains,这是针对redhat以前的版本,新版已经把iptables嵌到内核里了
###--------------------------------------------------------------------###

lsmod | grep ipchains &>/dev/null && {
echo "正在废掉ipchains服务........."
rmmod ipchains
}

###--------------------------------------------------------------------###
#装载模块modules
###--------------------------------------------------------------------###

echo "模块正在载人......"
modprobe ip_tables &>/dev/null || {
echo -n "$(basename $0): ip_tables模块载人失败"
echo "请检查"
exit 3
}
for file in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_conntrack_*.o
do
module=$(basename $file)
modprobe ${module%.*} &>/dev/null
done
for file in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_nat_*.o
do
module=$(basename $file)
modprobe ${module%.*} &>/dev/null
done

# ------------- 端口开启 ------------
echo "开启所要的端口...."
iptables -N services
for PORT in $TRUSTED_TCP_PORT; do
iptables -A services -i $EXT_IF -p tcp --dport $PORT -j ACCEPT
done
for PORT in $TRUSTED_UDP_PORT; do
iptables -A services -i $EXT_IF -p udp --dport $PORT -j ACCEPT
done

#----ipforwarding--------
echo "打开foward功能"
echo "1" > /proc/sys/net/ipv4/ip_forward

#动态ip使用
#
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
#这里是动态ip实现nat共享必改之处

###---------------------------------------------------###
#清除先前的设定
###---------------------------------------------------###
echo "正在清除先前的设定......."
#清除预定表filter中,所有规则链中的规则
iptables -F
#清除预定表filter中,使用者自定链中的规则
iptables -X

#清除预定表mangle中,所有规则链中的规则
iptables -F -t mangle
#清除预定表mangle中,使用者自定链中的规则
iptables -X -t mangle

#清除nat表中的规则
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat

###---------------------------------------------------###
#设定预设规则
###---------------------------------------------------###
#预设规则要么为全部丢弃,要么为全部接受
#本列为全部丢弃,然后逐步开放,这是安全系数很高的设法
#若目标为DROP,则policy设为ACCEPT;若目标为ACCEPT,则policy设为DROP

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

#TCP的设定
#
#我们丢弃坏的TCP包
#

iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

#局域网共享的实现
#iptables -t nat -A POSTROUTING -o $EXT_IF -s $LAN_IP_RANGE -j SNAT --to-source $STATIC_IP
iptables -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE
echo "局域网共享的已实现,请试用局域网机器"

#这一步实现局域网内部机对外部网开放
#凡对$STATIC_IP:80连线者,则转址到192.168.0.100:80
iptables -t nat -A PREROUTING -d 80.234.71.88 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100:80
iptables -A FORWARD -p tcp -d 192.168.0.100 --dport 80 -j ACCEPT
iptables -t nat -I POSTROUTING -s 192.168.0.0/255.255.255.0 -p tcp -d 192.168.0.100 --dport 80 -j SNAT --to 192.168.0.1
#192.168.0.250装有win2003,提供远程桌面服务
iptables -t nat -A PREROUTING -d 80.234.71.88 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.250:3389
iptables -A FORWARD -p tcp -d 192.168.0.250 --dport 3389 -j ACCEPT
#允许内网机使用外网机的IP访问内网机,把内网机的IP转换成网关IP
iptables -t nat -I POSTROUTING -s 192.168.0.0/255.255.255.0 -p tcp -d 192.168.0.250 --dport 3389 -j SNAT --to 192.168.0.1

#允许要转向的包
iptables -A FORWARD -i $INT_IF -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
#对于不管来自哪里的ip碎片都进行控制,允许每秒通过100个碎片
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
#icmp包通过的控制,防止icmp黑客攻击
iptables -A FORWARD -p udp -d $LAN_IP_RANGE -i $EXT_IF -j ACCEPT
#这一条是针对oicq等使用udp服务而接收所有的udp包

#开放主机的ssh port 22,使内部机以ssh连至外部
iptables -A OUTPUT -o $EXT_IF -p tcp -s $STATIC_IP --sport 1024:65535 -d any/0 --dport 22 -j ACCEPT
iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 22 -d $STATIC_IP --dport 1024:65535 -j ACCEPT

#防止外网用内网ip欺骗
iptables -t nat -A PREROUTING -i $EXT_IF -s 192.168.0.0/16 -j DROP
iptables -t nat -A PREROUTING -i $EXT_IF -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i $EXT_IF -s 172.16.0.0/12 -j DROP

#-----------透明代理------------
$RC_SQUID status | grep pid &>/dev/null && {
echo "透明代理实现"
INT_IP=$(ifconfig | grep $INT_IF -A 1 | awk '/inet/ {print $2}' | sed -e s/addr\://)
if [ -z "$INT_IP" ]; then
echo
echo "$(basename $0): $INT_IF没有IP存在"
echo "请检查$INT_IF是否正确配置了"
echo
exit 3
fi
}
exit 0
## EOS

shell2:

某台网关的IPtables配置:

#!/bin/bash
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
# start firewall service with deny all
iptables -F
iptables -F -t nat
iptables -X
iptables -X -t nat
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 eth+ -j ACCEPT
iptables -A OUTPUT -o eth+ -j ACCEPT
#iptables -A INPUT -i ppp0 -j ACCEPT
#iptables -A OUTPUT -o ppp0 -j ACCEPT
# ICMP Control
iptables -A OUTPUT -o ppp0 -p icmp -j ACCEPT
iptables -A INPUT -i ppp0 -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -i ppp0 -p icmp --icmp-type echo-request -j DROP

iptables -A FORWARD -p tcp -d 192.168.1.0/24 ! --syn -i ppp0 -j ACCEPT
iptables -A FORWARD -m mac --mac-source 00-0E-A6-27-10-46 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -m mac --mac-source 00-0E-A6-27-10-46 -p tcp --dport 443 -j ACCEPT

iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 80 -j REJECT
# outgoing
iptables -A INPUT -i ppp0 -p TCP --sport www -j ACCEPT
iptables -A OUTPUT -o ppp0 -p TCP --dport www -j ACCEPT
iptables -A INPUT -i ppp0 -p UDP --sport www -j ACCEPT
iptables -A OUTPUT -o ppp0 -p UDP --dport www -j ACCEPT
iptables -A INPUT -i ppp0 -p TCP --sport smtp -j ACCEPT
iptables -A OUTPUT -o ppp0 -p TCP --dport smtp -j ACCEPT
iptables -A INPUT -i ppp0 -p TCP --sport domain -j ACCEPT
iptables -A OUTPUT -o ppp0 -p TCP --dport domain -j ACCEPT
iptables -A INPUT -i ppp0 -p UDP --sport domain -j ACCEPT
iptables -A OUTPUT -o ppp0 -p UDP --dport domain -j ACCEPT
iptables -A INPUT -i ppp0 -p TCP --sport telnet -j ACCEPT
iptables -A OUTPUT -o ppp0 -p TCP --dport telnet -j ACCEPT
iptables -A INPUT -i ppp0 -p TCP --sport ssh -j ACCEPT
iptables -A OUTPUT -o ppp0 -p TCP --dport ssh -j ACCEPT
# incoming
iptables -A INPUT -i ppp0 -p TCP --dport www -j ACCEPT
iptables -A OUTPUT -o ppp0 -p TCP --sport www -j ACCEPT
iptables -A INPUT -i ppp0 -p UDP --dport www -j ACCEPT
iptables -A OUTPUT -o ppp0 -p UDP --sport www -j ACCEPT
iptables -A INPUT -i ppp0 -p TCP --dport smtp -j ACCEPT
iptables -A OUTPUT -o ppp0 -p TCP --sport smtp -j ACCEPT
iptables -A INPUT -i ppp0 -p TCP --dport pop3 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p TCP --sport pop3 -j ACCEPT
iptables -A INPUT -i ppp0 -p UDP --dport pop3 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p UDP --sport pop3 -j ACCEPT
iptables -A INPUT -i ppp0 -p TCP --dport domain -j ACCEPT
iptables -A OUTPUT -o ppp0 -p TCP --sport domain -j ACCEPT
iptables -A INPUT -i ppp0 -p UDP --dport domain -j ACCEPT
iptables -A OUTPUT -o ppp0 -p UDP --sport domain -j ACCEPT
iptables -A INPUT -i ppp0 -p TCP --dport ssh -j ACCEPT
iptables -A OUTPUT -o ppp0 -p TCP --sport ssh -j ACCEPT
# SET NAT camouflage IP with more to one
echo "1" > /proc/sys/net/ipv4/ip_forward
#MASQUERADE the PPP link
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
#iptables -t nat -A PREROUTING -p all -i ppp0 \-j DNAT --to 192.168.0.51
#iptables -A PREROUTING -t nat -p tcp -d 61.70.177.180 \--dport 8080 -j DNAT --to 192.168.0.51:80
iptables -A FORWARD -p tcp -s 0/0 --sport ftp-data -d 192.168.1.0/24 -i ppp0 -j ACCEPT
iptables -A FORWARD -p udp -d 192.168.1.0/24 -i ppp0 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j ACCEPT

阅读(1153) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~