免费注册 查看新帖 |

Chinaunix

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

[网络管理] 我对 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 有关的东西

上一篇:我对 iptables 的一些体会(一)
http://linux.chinaunix.net/bbs/viewthread.php?tid=506345

[ 本帖最后由 platinum 于 2007-7-8 08:17 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-07-21 16:01 |只看该作者
收藏之

论坛徽章:
0
3 [报告]
发表于 2006-07-21 16:04 |只看该作者
也许有时无法自动加载,而写上去的/

论坛徽章:
0
4 [报告]
发表于 2006-07-21 17:08 |只看该作者
原帖由 dehuang2005 于 2006-7-21 16:04 发表
也许有时无法自动加载,而写上去的/

那是你的系统有问题了
写那几句解决问题不如去检查系统

论坛徽章:
0
5 [报告]
发表于 2006-07-21 17:46 |只看该作者
确实有些不用一条一条加载,只要运行命令会自动加载的

论坛徽章:
0
6 [报告]
发表于 2006-07-21 18:04 |只看该作者
好帖啊

论坛徽章:
0
7 [报告]
发表于 2006-07-21 18:09 |只看该作者
原帖由 platinum 于 2006-7-21 15:09 发表
5、先设置规则,还是先设置默认策略
不少脚本都是这样写的


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

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



我就这样写的。

试想,假如你在远程调试一个脚本,当前 filter 表的 INPUT 链默认规则是 DROP,iptables -F 后意味着什么?
主机drop所有包。你也就失去了主机连接。是这样吧。。

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-04-19 06:20:00
8 [报告]
发表于 2006-07-21 18:30 |只看该作者
原帖由 platinum 于 2006-7-21 15:09 发表
5、先设置规则,还是先设置默认策略
不少脚本都是这样写的


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

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

谢谢platinum .
我写的脚本都是先-P DROP,再写规则的.每次远程用SSH调IPTABLES时都要很小心.呵呵.

[ 本帖最后由 platinum 于 2007-7-8 08:25 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-07-21 20:50 |只看该作者
iptables -P INPUT DROP

这个是由需要而决定的,事实上不论是route还是三层switch,在firewall相关的时候,都会特别地有提到,如不是熟悉,最好不要远程调试firewall。

因此,这就决定了2个先觉条件:
1.要么熟悉,能保证设置的规则是按照计划情形执行的有经验的用户;
2.要么就是本地调试。

默认拒绝,允许特殊的做法,在很多场合都有用到的。

论坛徽章:
0
10 [报告]
发表于 2006-07-21 20:59 |只看该作者
另外,关于 modprobe 的问题。。。在目前的版本中,的确是不需要的

好奇地用google搜索了一下,在2001-2003年期间,在其官方论坛 www.filter.org 的lists 中,也有上百页的帖子是加载了这些文件的。

或许是以前iptables/netfilter的版本不可以自动加载,因此才手工给于加载的吧。

利用

  1. site:netfilter.org modprobe
复制代码

在google中,一共搜索到了86页的返回记录,大多都是lists上面,而且时间集中于2001-2003年期间。

猜想,或许是此缘故吧。

鸟哥的文章,想来也是写于该期间?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP