免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 8387 | 回复: 33
打印 上一主题 下一主题

一些网络中流传的 iptables 脚本的误区 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-21 15:09 |只看该作者 |正序浏览
经常看到一些网络中流传的 iptables 脚本在开头的位置大多是如下内容


  1. #!/bin/sh
  2. #
  3. modprobe ipt_MASQUERADE
  4. modprobe ip_conntrack_ftp
  5. modprobe  ip_nat_ftp
  6. iptables -F
  7. iptables -t nat -F
  8. iptables -X
  9. iptables -t nat -X
  10. iptables -P INPUT DROP

  11. 摘自 http://bbs.chinaunix.net/viewthread.php?tid=712506
复制代码

有的是这样的

  1. # 2.0 载入模组
  2. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  3. export PATH EXTIF INIF INNET
  4. modprobe ip_tables > /dev/null 2>&1
  5. modprobe iptable_nat > /dev/null 2>&1
  6. modprobe ip_nat_ftp > /dev/null 2>&1
  7. modprobe ip_nat_irc > /dev/null 2>&1
  8. modprobe ip_conntrack > /dev/null 2>&1
  9. modprobe ip_conntrack_ftp > /dev/null 2>&1
  10. modprobe ip_conntrack_irc > /dev/null 2>&1

  11. 摘自 http://linux.vbird.org/linux_server/0250simple_firewall.php#simple_firewall_script
复制代码

网上流传的东西未必就都是正确的,针对上面一些误区,我来做一下详细说明
(上面第二个出自鸟哥的脚本,我们只讨论技术,没有得罪的意思 ^_^)



1、modprobe ip_tables
当 iptables 对 filter、nat、mangle 任意一个表进行操作的时候,会自动加载 ip_tables 模块
另外,iptable_filter、iptable_nat、iptable_mangle 模块也会自动加载,情形例如

  1. # lsmod
  2. Module                  Size  Used by    Not tainted
  3. iptable_mangle          2136   0  (autoclean) (unused)
  4. iptable_filter          1708   0  (autoclean) (unused)
  5. ip_tables              12832   2  [iptable_mangle iptable_filter]
  6. 8139too                13704   1
  7. mii                     2544   0  [8139too]
  8. reiserfs              183376   2  (autoclean)
  9. raid1                  13068   1  (autoclean)
  10. md                     44480   2  [raid1]
复制代码

因此,脚本里不用写 modprobe ip_tables



2、modprobe ip_conntrack
ip_conntrack 是状态检测机制,state 模块要用到
当 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 时,ip_conntrack 自动加载,例如

  1. # lsmod
  2. Module                  Size  Used by    Not tainted
  3. ipt_state                536   1  (autoclean)
  4. ip_conntrack           25096   0  (autoclean) [ipt_state]
  5. iptable_filter          1708   1  (autoclean)
  6. ip_tables              12832   2  [ipt_state iptable_filter]
  7. 8139too                13704   1
  8. mii                     2544   0  [8139too]
  9. reiserfs              183376   2  (autoclean)
  10. raid1                  13068   1  (autoclean)
  11. md                     44480   2  [raid1]
复制代码

另外,modprobe ip_conntrack_ftp 时也会自动加载 ip_conntrack

因此,脚本里不用写 modprobe ip_conntrack



3、modprobe ip_conntrack_ftp
ip_conntrack_ftp 是本机做 FTP 时用的
ip_nat_ftp 是通过本机的 FTP 需要用到的(若你的系统不需要路由转发,没必要用这个)
当 modprobe ip_nat_ftp 时,系统自动会加载 ip_conntrack_ftp 模块,例如

  1. # lsmod
  2. Module                  Size  Used by    Not tainted
  3. ip_nat_ftp              2736   0  (unused)
  4. iptable_nat            18040   4  [ip_nat_ftp]
  5. ip_tables              12544  12  [iptable_filter iptable_nat]
  6. ip_conntrack_ftp        3856   1
  7. ip_conntrack           20268   3  [ip_nat_ftp iptable_nat ip_conntrack_ftp]
  8. 8139too                13704   1
  9. mii                     2544   0  [8139too]
  10. reiserfs              183376   2  (autoclean)
  11. raid1                  13068   1  (autoclean)
  12. md                     44480   2  [raid1]
复制代码

因此,当需要用到 ip_nat_ftp 时,脚本里不用写 modprbe ip_conntrack 和 modprobe ip_conntrack_ftp



4、iptables -P OUTPUT DROP
http://phorum.study-area.org/vie ... 175c3f06d03f#145378
除非你明白 filter 中 OUTPUT 链的作用,除非你想限制 Linux 本机上网
否则,不要 iptables -P OUTPUT DROP!




5、先设置规则,还是先设置默认策略
不少脚本都是这样写的

  1. iptables -F xxx
  2. iptables -X
  3. iptables -P INPUT DROP
  4. modprobe ip_nat_ftp
复制代码

之后才是具体规则
iptables -P INPUT DROP 是什么意思?
设置默认规则为 DROP,也就是说如果数据包没有被链中规则匹配,则默认按默认规则处理
试想,假如你在远程调试一个脚本,当前 filter 表的 INPUT 链默认规则是 DROP,iptables -F 后意味着什么?
因此,我建议大家

先设置默认规则为 ACCEPT
然后添加具体链的规则
最后设置默认规则为 DROP
若用基于 RedHat(CentOS) 的发行版,可以用 service iptables stop 来卸载内核中与 iptables 和 netfilter 有关的东西


[ 本帖最后由 platinum 于 2006-7-26 16:29 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
34 [报告]
发表于 2006-08-05 23:04 |只看该作者
原帖由 platinum 于 2006-7-25 18:28 发表

想知道不能自动挂载 module 的一些发行版,能举些例子吗?

其实 modprobe 也是自动加载。

论坛徽章:
0
33 [报告]
发表于 2006-07-30 12:45 |只看该作者
支持
至少这种认真的态度是我们每个人都应该具备的
什么事情把他彻底弄清楚了

论坛徽章:
0
32 [报告]
发表于 2006-07-30 11:24 |只看该作者
嘿嘿,以前我也发现了,但一直没有说。。

很多脚本都有不好的地方,所以我的做法是先把规则搞清楚,然后service iptables save,以后就直接用系统的配置文件,什么模块该insmod的都自己ins,何必非要用自己写的喃? 显得高手瞒?

论坛徽章:
0
31 [报告]
发表于 2006-07-26 16:20 |只看该作者
总之,我是狠狠的顶~~~

论坛徽章:
0
30 [报告]
发表于 2006-07-26 16:19 |只看该作者
原帖由 platinum 于 2006-7-25 18:28 发表

想知道不能自动挂载 module 的一些发行版,能举些例子吗?



高手就是高手,问倒我了。说实话,我目前用过的版本还没有发现。其实这不是发行版的问题,而是设计module运作的问题。
也许所有的发行版都有自动挂载。
但是我还是觉得原文中的相关写法不能算作错误。更详细的些技术文档会讲清楚很多事情的来龙去脉。
况且这些文档时不要稿费的。我觉得写原文的那些技术人员是很负责任的。
但是楼主这种精神也是很负责任的~~呵呵~~
取舍之间的问题,看个人做事情的角度来定。
不是吗?嘿嘿~~

论坛徽章:
0
29 [报告]
发表于 2006-07-26 04:06 |只看该作者
支持
lz加上中文注释流传出去吧

论坛徽章:
0
28 [报告]
发表于 2006-07-25 19:42 |只看该作者
我想要努力了!这贴讲的很好!Sample Text

论坛徽章:
0
27 [报告]
发表于 2006-07-25 18:28 |只看该作者
原帖由 jerry017cn 于 2006-7-25 18:19 发表
各种发布版设置不是很一样,原文的那些动作可以屏蔽掉很多不同版本之间的差异。
不过楼主这种精神值得支持。还是顶下~~

想知道不能自动挂载 module 的一些发行版,能举些例子吗?

论坛徽章:
0
26 [报告]
发表于 2006-07-25 18:19 |只看该作者
各种发布版设置不是很一样,原文的那些动作可以屏蔽掉很多不同版本之间的差异。
不过楼主这种精神值得支持。还是顶下~~
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP