LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4668|回复: 11

900台机器的网吧iptables+squid方案征集

[复制链接]
发表于 2004-12-13 10:37:58 | 显示全部楼层 |阅读模式
外网IP为:a.b.c.d 内网1:192.168.1.0 内网2: 192.168.2.0 内网3:192.168.3.0 内网4:192.168.4.0(该子网给40个办公人员使用)
iptables要求:1 防止别人用DDOS攻击,防止别人用ping 探测。
              2 开放尽可能端口,防止别人用端口扫描器扫描本机。          3 开放内网的WEB FTP DNS SENDMAIL 服务器,但不能影响正常的服务,FTP是以standalone模式运行。
              4 有3个子网,要求都通过squid来代理。
              5 常规服务的端口都绑到1024以上如FTP WED MAIL等(如果达不到,这项可以不讨论)
              6 在这些基础不能影响正常的服务,如局域网的所有网络游戏要正常运行,正常发邮件等。
squid要求:
              1 要建立缓冲区,但是要定期释放空间,如40G缓冲空间。
              2 只能访问一些特殊的安全端口,SAFE—port
              3 禁止下载以exe结尾的文件,禁止浏览黄色网站。
              4 于iptables紧密结合,正常提供服务,同时3个子网,正常服务。
              5 子网4上网要求有认证其中192.168.4.2--8为高级用户,上网没有限制
              6  子网4 普通用户要求上班时间8:00-16:00可以上网,其余时间不能上网,普通用户不能下载exe mp3 wav war等结尾的文件。    7 子网4 的普通用户要求通过身份验证,高级不用验证。          8 在此基础上,不影响网吧其于的正常服务。

欢迎大家前来讨论啊,每个人跟贴时候,希望尽可能提供完整的脚本方案啊,不要每个人只上来说一句话。希望大家尽可能把此贴跟完美,谢谢大家来热烈讨论!
发表于 2004-12-13 11:01:59 | 显示全部楼层
哈哈 我来第一帖~~~不是全部的~~~只是个别的~~~这是个演示稿~~~~~
我这里有1500台左右的机子~~~这个脚本是我拿来实验的哦~~~~
(网吧只需要过滤 输入链,其他的可以一律放行!)具体要开什么端口这个大家应该清楚,不用我多说了吧~~~~~
这个是我自己拿来实验的,至于转到squid上大家就自己做吧~~~~



#!/bin/bash
/sbin/modprobe ip_tables
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp

/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/iptables -X
/sbin/iptables -Z

IP="61.150.0.1"
UPLINK="eth0"
ROUTER="yes"
NAT="61.150.0.1"
INTERFACES="lo eth0 eth1"
SERVICES="ssh rsync"

iptables -P INPUT DROP
iptables -A INPUT -i ! ${UPLINK} -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
for x in ${SERVICES}
do
iptables -A INPUT -p tcp --dport ${x} -m state --state NEW -j ACCEPT
done
iptables -A INPUT -p tcp -i ${UPLINK} -j REJECT --reject-with tcp-reset
iptables -A INPUT -p udp -i ${UPLINK} -j REJECT --reject-with icmp-port-unreachable
if [ -e /proc/sys/net/ipv4/tcp_ecn ]
then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi
for x in ${INTERFACES}
do
echo 1 > /proc/sys/net/ipv4/conf/${x}/rp_filter
done
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 5899 -j DNAT --to 192.168.0.254:4899
iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 9999 -j DNAT --to 192.168.0.233:9999

################## MU #########################
iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 44405 -j DNAT --to-destination 192.168.0.233:44405
iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 44405 -j SNAT --to-source 192.168.0.1

iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 55901 -j DNAT --to-destination 192.168.0.233:55901
iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 55901 -j SNAT --to-source 192.168.0.1

#iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 55902 -j DNAT --to-destination 192.168.0.233:55902
#iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 55902 -j SNAT --to-source 192.168.0.1

iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.233:80
#iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.0.1

iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 81 -j DNAT --to-destination 192.168.0.233:81
iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 81 -j SNAT --to-source 192.168.0.1

#iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 82 -j DNAT --to-destination 192.168.0.233:82
#iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 82 -j SNAT --to-source 192.168.0.1
################## MU END #########################

################## CS SERVER Start ################
iptables -t nat -A PREROUTING -p udp -d ${IP} --dport 27015 -j DNAT --to 192.168.0.233:27015
#iptables -t nat -A POSTROUTING -p udp -d 192.168.0.233 --dport 27015 -j SNAT --to 192.168.0.1

iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 27015 -j DNAT --to-destination 192.168.0.233:27015
#iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 27015 -j SNAT --to-source 192.168.0.1
################## CS SERVER End #################

################## D2 SERVER Start ################
#iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 23 -j DNAT --to 192.168.0.233:23
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 23 -j SNAT --to 192.168.0.1
#iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 4000 -j DNAT --to 192.168.0.233:4000
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 4000 -j SNAT --to 192.168.0.1
#iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 6112 -j DNAT --to 192.168.0.233:6112
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 6112 -j SNAT --to 192.168.0.1
#iptables -t nat -A PREROUTING -p udp -d ${IP} --dport 6112 -j DNAT --to 192.168.0.233:6112
#iptables -t nat -A POSTROUTING -p udp -d 192.168.0.233 --dport 6112 -j SNAT --to 192.168.0.1
#iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 6113 -j DNAT --to 192.168.0.233:6113
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 6113 -j SNAT --to 192.168.0.1
#iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 6114 -j DNAT --to 192.168.0.233:6114
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 6114 -j SNAT --to 192.168.0.1
#iptables -t nat -A PREROUTING -p udp -d ${IP} --dport 6114 -j DNAT --to 192.168.0.233:6114
#iptables -t nat -A POSTROUTING -p udp -d 192.168.0.233 --dport 6114 -j SNAT --to 192.168.0.1

#iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 6200 -j DNAT --to 192.168.0.233:6200
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 6200 -j SNAT --to 192.168.0.1
#iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 6667 -j DNAT --to 192.168.0.233:6667
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 6667 -j SNAT --to 192.168.0.1
################## D2 SERVER END #################

################## Mir Server Start ###############
iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 7000 -j DNAT --to 192.168.0.233:7000
iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 7000 -j SNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 7100 -j DNAT --to 192.168.0.233:7100
iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 7100 -j SNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 5999 -j DNAT --to 192.168.0.233:4899
iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 7200 -j DNAT --to 192.168.0.233:7200
iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 7200 -j SNAT --to 192.168.0.1

##################### Mir3 Server ############
#iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 5600 -j DNAT --to 192.168.0.233:5600
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 5600 -j SNAT --to 192.168.0.1
#iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 6000 -j DNAT --to 192.168.0.233:6000
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 6000 -j SNAT --to 192.168.0.1
#iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 5100 -j DNAT --to 192.168.0.233:5100
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.233 --dport 5100 -j SNAT --to 192.168.0.1
#################### Mir3 End ##################

#################### Ftp Server ################
iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 21 -j DNAT --to 192.168.0.233:21
iptables -t nat -A PREROUTING -p tcp -d ${IP} --dport 2100 -j DNAT --to 192.168.0.254:21
################### Ftp Server End ##############

################### MoHuan #####################
#iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 4000 -j DNAT --to-destination 192.168.0.233:4000
#iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 4000 -j SNAT --to-source 192.168.0.1

#iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 4001 -j DNAT --to-destination 192.168.0.233:4001
#iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 4001 -j SNAT --to-source 192.168.0.1

#iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 4100 -j DNAT --to-destination 192.168.0.233:4100
#iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 4100 -j SNAT --to-source 192.168.0.1

#iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 4101 -j DNAT --to-destination 192.168.0.233:4101
#iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 4101 -j SNAT --to-source 192.168.0.1

#iptables -t nat -A PREROUTING -d ${IP} -p tcp -m tcp --dport 4010 -j DNAT --to-destination 192.168.0.233:4010
#iptables -t nat -A POSTROUTING -d 192.168.0.233 -p tcp -m tcp --dport 4010 -j SNAT --to-source 192.168.0.1
################### MoHuan End ###############

iptables -t nat -A POSTROUTING -o ${UPLINK} -j MASQUERADE
echo "1"> /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p udp -d 192.168.0.1 --dport 53 -j DNAT --to 61.134.1.9:53
iptables -t nat -A PREROUTING -p udp -d 192.168.0.1 --dport 53 -j DNAT --to 61.134.1.4:53
/sbin/iptables -A INPUT -p udp -j DROP
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 445 -j DROP

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
 楼主| 发表于 2004-12-13 14:12:25 | 显示全部楼层
不会吧,没有人了吗,版主号召大家啊,
如果有人用Shell写的这个方案的iptables脚本更好
建议大家尽量用shell脚本写啊,这样可以缩小篇幅
发表于 2004-12-13 15:31:34 | 显示全部楼层
啊。这个方案蛮有意思的。晚上我来给你灌点~~~` 顶一下先
发表于 2005-4-2 21:57:10 | 显示全部楼层
ftp绑定到特定端口,在vsftpd.conf中使用下述语句:
linsten_port  2000

apache绑定到指定端口,在httpd.conf中使用下述语句:
Listen 12.34.56.78:8080

禁止下载以exe或EXE结尾的文件,在squid.conf中指定以下两行:
acl  noexe  urlpath_regex -i  \.exe$
http_access deny noexe

禁止下载exe mp3 wav war等结尾的文件同上使用这些:
acl  nodown  urlpath_regex -i \.exe$, \.mp3$,\.wav$,\.war$
http_access deny nodown

普通用户要求上班时间8:00-16:00可以上网,在squid.conf中使用:
acl normaluser   src  172.16.x.x
acl time_normaluser  time  8:00-16:00
http_access  allow normaluser  time_normaluser

要定期释放空间,如每隔4天就来一次,可以设定定时器:
* * */4 * * /usr/sbin/squid -z

禁止浏览黄色网站,可以根据关键字进行屏蔽,也可以分析日志,发现一个就封一个吧:
acl  badtype url_regex -i  sex  boy girl
acl  badsite  dstdomain  "/etc/squid/badsite"
acl  badip  dst "/etc/squid/badip"
http_access deny  badtype
http_access deny  badsite
http_access deny  badip

$cat /etc/squid/badsite
.xxx.com
.yyy.com

$cat /etc/squid/badip
61.x.y.z
221.x.y.z
子网4上网要求有认证其中192.168.4.2--8为高级用户,上网没有限制:这个要求在squid中不难实现,只是我没有认真搞过用户认证,看看文档吧,squid,太。。太强大了,嘿嘿

有3个子网,要求都通过squid来代理:这个没有测试过,个人认为不是问题。如果是900台电脑的话,最好使用代理阵列。追求速度的话,应该在内存中进行缓存,不要在磁盘上。

对iptables的要求是比较普通的,没有什么特别的,只是要开放内网的WEB FTP DNS,在使用iptables时,要使用nat表,语法上要看是静态ip还是动态ip而略有区别
回复 支持 反对

使用道具 举报

发表于 2005-4-2 21:59:16 | 显示全部楼层
没有注意,居然是一个老帖子,呵呵
回复 支持 反对

使用道具 举报

发表于 2009-8-3 20:18:04 | 显示全部楼层
这个需求不困难啊,只是有些麻烦而已。
squid的acl设置有些麻烦而已。
回复 支持 反对

使用道具 举报

发表于 2009-8-9 16:08:29 | 显示全部楼层
04年的=。=‘
回复 支持 反对

使用道具 举报

发表于 2009-8-11 10:33:50 | 显示全部楼层
学习一下,1000台,很大规模哦
回复 支持 反对

使用道具 举报

发表于 2009-8-15 19:40:32 | 显示全部楼层
都是挖贴的高手。 04年的也挖。
不过技术问题还分年头么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表