这个iptables用起来很不错!大家分享 - Linux讨论区/精华帖 - - ChinaUnix.net

来源:百度文库 编辑:神马文学网 时间:2024/04/29 00:04:53
发表于: 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
这个iptables用起来很不错!大家分享 - Linux讨论区/精华帖 - - ChinaUnix.net 这个iptables用起来很不错!大家分享 Linux内存使用的体会(原创) - Linux 高级应用讨论区/原创精华帖 - - ChinaUnix.net - linux讨论区/保留帖 - - chinaunix.net 每周一题——读写配置文件。 - Python讨论区/精华帖 - - ChinaUnix.net 每周一题——读写配置文件。 - Python讨论区/精华帖 - - ChinaUnix.net - perl讨论区 - - chinaunix.net 一次宕机的处理(错误码4b2a25f4u0.1-p1-c1) - aix讨论区/精华帖 - - chinaunix.net 救命啊,关于企业linux as4 集群应用架构的问题讨论。! - Linux 高级应用讨论区 - - ChinaUnix.net - it职业生涯讨论区 - - chinaunix.net - c/c++讨论区 - - chinaunix.net 做HP-UX技术多年的感悟:IT人士之成功之6大步骤 - HP-UX讨论区/原创精华帖 - - ChinaUnix.net 在VMware5.0环境下编译内核(kernel2.6.13)全过程 - Linux 高级应用讨论区/保留帖 - - ChinaUnix.net 使用bacula备份 - Linux 时代 - ChinaUnix.Net 从Linux迁移到FreeBSD - Linux 时代 - ChinaUnix.Net 首次曝光,李开复年轻时的结婚照 - 业界新闻与评论讨论区 - - ChinaUnix.net 展现个人实力 自信面对面试 之二 - IT职业生涯讨论区/精彩帖 - - ChinaUnix.net 首次曝光,李开复年轻时的结婚照 - 业界新闻与评论讨论区 - - ChinaUnix.net 想要升职加薪 请切莫做六种人[转贴] - IT职业生涯讨论区 - - ChinaUnix.net httpd.conf中文说明 - Web服务器讨论区/精彩帖 - - ChinaUnix.net [精彩] 请问版主如何利用iptables实现定时功能 - ChinaUnix.net ChinaUnix.net [原创] Linux中/proc目录下文件详解 - ChinaUnix.net oracle服务启动和停止脚本(redhat as2.1下) - oracle讨论区/精彩帖 - - chinaunix.net