这个iptables用起来很不错!大家分享

来源:百度文库 编辑:神马文学网 时间:2024/04/28 01:13:08
发表于: 2005-08-30 11:28    发表主题: 这个iptables用起来很不错!大家分享
我想下面的脚本很容易看懂!当然 如果没看懂提出来,我很乐意解答!当然,也很希 望 你们可以指出错误 !很感谢大家的指导 ,特别是platinum!
环境:redhat9 加载了string time等模块,加载方法参照http://bbs.chinaunix.net/forum/viewtopic.php?t=525493
etho 接外网──ppp0
eth1 接内网──192.168.0.0/24
#!/bin/sh
#
modprobe ipt_MASQUERADE
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -X
###########################INPUT键###################################
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 110,80,25 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 139 -j ACCEPT
#允许内网samba,smtp,pop3,连接
iptables -A INPUT -i eth1 -p udp -m multiport --dports 53 -j ACCEPT
#允许dns连接
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
#允许外网vpn连接
iptables -A INPUT -s 192.186.0.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
#为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃
iptables -A INPUT -s 192.186.0.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
#为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃
iptables -A INPUT -p icmp -m limit --limit 3/s -j LOG --log-level INFO --log-prefix "ICMP packet IN: "
iptables -A INPUT -p icmp -j DROP
#禁止icmp通信-ping 不通
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
#内网转发
iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT
#防止SYN攻击 轻量
#######################FORWARD链###########################
iptables -P FORWARD DROP
iptables -A FORWARD -p tcp -s 192.168.0.0/24 -m multiport --dports 80,110,21,25,1723 -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.0.0/24 --dport 53 -j ACCEPT
iptables -A FORWARD -p gre -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -p icmp -s 192.168.0.0/24 -j ACCEPT
#允许 vpn客户走vpn网络连接外网
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -p udp --dport 53 -m string --string "tencent" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
#星期一到星期六的8:00-12:30禁止qq通信
iptables -I FORWARD -p udp --dport 53 -m string --string "TENCENT" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
#星期一到星期六的8:00-12:30禁止qq通信
iptables -I FORWARD -p udp --dport 53 -m string --string "tencent" -m time --timestart 13:30 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
iptables -I FORWARD -p udp --dport 53 -m string --string "TENCENT" -m time --timestart 13:30 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
#星期一到星期六的13:30-20:30禁止QQ通信
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "qq.com" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
#星期一到星期六的8:00-12:30禁止qq网页
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "qq.com" -m time --timestart 13:00 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
#星期一到星期六的13:30-20:30禁止QQ网页
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "ay2000.net" -j DROP
iptables -I FORWARD -d 192.168.0.0/24 -m string --string "宽频影院" -j DROP
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "色情" -j DROP
iptables -I FORWARD -p tcp --sport 80 -m string --string "广告" -j DROP
#禁止ay2000.net,宽频影院,色情,广告网页连接 !但中文 不是很理想
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
#禁止BT连接
iptables -A FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 --connlimit-mask 24 -j DROP
#只允许每组ip同时15个80端口转发
#######################################################################
sysctl -w net.ipv4.ip_forward=1 &>/dev/null
#打开转发
#######################################################################
sysctl -w net.ipv4.tcp_syncookies=1 &>/dev/null
#打开 syncookie (轻量级预防 DOS 攻击)
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=3800 &>/dev/null
#设置默认 TCP 连接痴呆时长为 3800 秒(此选项可以大大降低连接数)
sysctl -w net.ipv4.ip_conntrack_max=300000 &>/dev/null
#设置支持最大连接树为 30W(这个根据你的内存和 iptables 版本来,每个 connection 需要 300 多个字节)
#######################################################################
iptables -I INPUT -s 192.168.0.50 -j ACCEPT
iptables -I FORWARD -s 192.168.0.50 -j ACCEPT
#192.168.0.50是我的机子,全部放行!
############################完#########################################
###########################枫影-乡下猫#################################
最后进行编辑的是 枫影谁用了 on 2005-09-16 14:35, 总计第 16 次编辑
返回页首

wind521    
版主 - 大法师


注册时间: 2002-02-20
最后登录: 2005-09-27
帖子总数:10512
精华帖子:27
原创精华:2
来自: 独行万里,为有破天时
BLOG主页:进入
在线状态: ...保密...
发表于: 2005-08-30 11:31    发表主题:
不错,网友可以拿下去自己去实验一下
_________________

希望日子可以更愉悦、更从容、更优雅一些
返回页首

leenfm
侠客


注册时间: 2005-06-15
最后登录: 2005-09-19
帖子总数:24
精华帖子: 0
原创精华: 0
BLOG主页:进入
在线状态: ...离线...
发表于: 2005-08-30 11:46    发表主题:
好东西````
返回页首

jiecho
精灵

注册时间: 2003-08-12
最后登录: 2005-09-26
帖子总数:162
精华帖子: 0
原创精华: 0
BLOG主页:进入
在线状态: ...离线...
发表于: 2005-08-30 11:55    发表主题:
iptables -I INPUT -s 192.168.0.50 -j ACCEPT
iptables -I FORWARD -s 192.168.0.50 -j ACCEPT
#192.168.0.50是我的机子,全部放行!
鄙视你!     
返回页首

枫影谁用了
风云使者


注册时间: 2005-01-11
最后登录: 2005-09-27
帖子总数:603
精华帖子:1
原创精华: 0
BLOG主页:进入
在线状态: ...离线...
发表于: 2005-08-30 12:03    发表主题:
jiecho 写到:
鄙视你!     
 
返回页首

platinum
版主 - 大法师


注册时间: 2002-11-02
最后登录: 2005-09-27
帖子总数:10704
精华帖子:4
原创精华:13
来自: 北京永外
BLOG主页:进入
在线状态: ...离线...
发表于: 2005-08-30 12:04    发表主题:
点评一下
先说几个创意很好的地方
代码:
1、iptables -A FORWARD -p udp --dport 53 -m string --string "tencent" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
这种思路不错,运用灵活,且多个模块一起使用,用 -p udp --dport 53 做数据分敛,可以降低由于 string 模块造成的效率低下问题,可见是认真考虑过的
2、文中用到了 time、ipp2p、string、connlimit 等模块,大大扩大了 iptables 的功能,不错!
3、利用了 sysctl 实现了一些修改 TCP/IP 的内核参数,实现一些自己的目的,不错,但要注意内存是否够大
但也有一些不足,说一下
代码:
1、insmod ipt_MASQUERADE
如果用 insmod 加载模块,必须制定模块路径以及模块全名,否则要用 modprobe
代码:
2、modprobe ip_conntrack_ftp
这个是在本机上开 ftp 服务要用到的,如果做 nat 还应该加载 ip_nat_ftp
代码:
3、iptables -A INPUT -i eth1 -p tcp -m multiport --dports
443,139,80,21,53,110,25 -j ACCEPT
DNS 服务是 UDP/53
代码:
4、iptables -F FORWARD
这个其实没必要了,因为在 script 一开始的时候就已经有了 iptables -F,意思是清空 filter 表中所有链的规则
5、filter 表中 FORWARD 链的默认规则问题
我没有看到 FORWARD 表中有设置默认规则的迹象,也许是你一时倏忽了
6、关于一些限制的阀值问题
有的值我感觉过小,有可能会造成网络不通的现象,阀值其实是个双刃剑,这个需要多测试才知道
说一下需要改进的地方
文中有大量这样的代码
代码:
iptables -A FORWARD -p udp --dport 53 -m string --string "tencent" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
其实完全可以用 -N 建立一个新链,把所有规定时间内的 UDP/53 都转过去,然后统一处理,这样相对效率会高一些
总的来说还是很不错的,在很短的时间内能把 iptables 学习到这种程度可见是下了一番苦心
继续努力哦
_________________
【共同祝愿 metor78(馒头) 早日康复 】
http://bbs.chinaunix.net/forum/viewtopic.php?t=606785
最后进行编辑的是 platinum on 2005-08-30 12:09, 总计第 1 次编辑
返回页首

枫影谁用了
风云使者


注册时间: 2005-01-11
最后登录: 2005-09-27
帖子总数:603
精华帖子:1
原创精华: 0
BLOG主页:进入
在线状态: ...离线...
发表于: 2005-08-30 12:07    发表主题:
platinum 写到:
这个其实没必要了,因为在 script 一开始的时候就已经有了 iptables -F,意思是清空 filter 表中所有链的规则
5、filter 表中 FORWARD 链的默认规则问题
我没有看到 FORWARD 表中有设置默认规则的迹象,也许是你..........
谢谢platinum的指导!我继续努力!
上面的提到问题,请看这个贴http://bbs.chinaunix.net/forum/viewtopic.php?t=601964
我出现了这个问题!所以我才加载!当然,请你指教
返回页首

ioly
精灵


注册时间: 2005-04-19
最后登录: 2005-09-23
帖子总数:173
精华帖子:1
原创精华:1
BLOG主页:进入
在线状态: ...保密...
发表于: 2005-08-30 12:46    发表主题:
长见识来了! 
返回页首

枫影谁用了
风云使者


注册时间: 2005-01-11
最后登录: 2005-09-27
帖子总数:603
精华帖子:1
原创精华: 0
BLOG主页:进入
在线状态: ...离线...
发表于: 2005-08-30 13:44    发表主题:
已经改正了白金兄提出的几个错误 !
返回页首

platinum
版主 - 大法师


注册时间: 2002-11-02
最后登录: 2005-09-27
帖子总数:10704
精华帖子:4
原创精华:13
来自: 北京永外
BLOG主页:进入
在线状态: ...离线...
发表于: 2005-08-30 14:18    发表主题:
http://bbs.chinaunix.net/forum/viewtopic.php?t=601993&show_type=
这样做可不好。。。。
_________________
【共同祝愿 metor78(馒头) 早日康复 】
http://bbs.chinaunix.net/forum/viewtopic.php?t=606785
_xyz