linux之iptable篇(编辑修改稿)内容摘要:

法很好地工作。 在我们遇到 INPUT 链的默认规则前,我们把它记入日志以便 发现可能的问题或 bugs。 它或者是一个我们不允许的包,或者是对我们做坏事的人,或者是我们防火墙中的一个问题,不允许那些被允许的包。 无论是那种情况我们都想知道然后做出处理。 虽然每分钟我们记录不超过 3个包,这是为了使日志文件不被垃圾充斥,我们还为日志记录加了前缀,使我们知道它是哪来的。 不被匹配的东西就会被 INPUT 链的默认规则扔掉。 默认规则是很早以前设置的,你应该记得。 OUTPUT 链 因为我知道除了我之外没人使用这个部分用做防火墙和工作站的网络设备,我允许来自它拥有源地址 $LOCALHOST_IP, $LAN_IP 或 $STATIC_IP 的任何东西。 其他的所有东西都以某种方式欺骗,尽管这样我还是怀疑某个我知道的人会在我的网络设备上这么做。 最后,我们将扔掉的所有东西记录下来。 如果它确实被扔掉了,我们确定会因为这个或那个而想知道它。 不管它是一个令人厌恶的错误或是一个奇怪的包,都是欺骗。 最后我们扔掉默认规则中的包。 FORWARD 链 我虽然没在 例子文件中建立一个特别的块,但是我将对其中的几行加以评论。 象现在这样,我用下面这行接收来自我们局域网的所有包: /usr/local/sbin/iptables A FORWARD i $LAN_IFACE j ACCEPT 所以不管情况怎样来自我们本地网接口的任何东西都被接收。 之后我们接收来自任何地方具有 ESTABLISHED 或 RELATED 状态的任何东西,换句话说,如果我们打开一个从我们局域网到 Inter 上某个东西的连接,我们允许从那个站点回来的具有 ESTABLISHED 或RELATED状态的包。 之后我们记录所有的东西并丢弃它。 我们每分钟最多记录 3个日志记录以防止日志文件溢出,加一个短前缀, 可做文件内的字符 串查找。 同样我们也可以做调试级的记录。 我们最后会碰到 FORWARD链的默认规则,丢弃所有东西。 9 其他例子 你将在下书 URL处找到这一脚本:。 这一脚本是为那些拥有一个可信赖的网络、一个 DeMilitarized Zone 、一个 Inter 连接的人。 DeMilitarized Zone 是 1to1 NAT39。 ed ,需要你在防火墙上做一些 IP 别名,就是你必须使网络设备认识来自多于一个 IP 的包。 在这个指南的后面 你将看到如何做 IP 别名( IP aliasing )的例子,现在 你还看不到什么实际的例子。 从图中你可以看出你需要 2 个内部网络。 一个使用的 ip 范围是 ,包括 DeMilitarized Zone。 如果 inter 上的某个人向我们的 DNS_IP 发送一个包,我们使用 DNAT( Destination Network Adress Translation)将包发送到 DMZ上的 DNS。 当 DNS 看到我们的包时,包将去向真正的 DNS 内部网 IP,而不是外部的 DNS IP。 如果包不被翻译 , DNS不应答包。 DNAT 代码如下面的例子: $IPTABLES t nat A PREROUTING p TCP i $INET_IFACE d $DNS_IP –dport 53 j DNAT todestination $DMZ_DNS_IP 首先 DNAT 只能在 nat table的 PREROUTING 链中执行。 然后我们来看看拥有匹配 $DNS_IP的目的 IP 的 $INET_IFACE 上的 TCP 协议,被指向端口 53,是 DNS39。 s中地域传送的 TCP 端口。 如果我们真得到了一个目的 为 DNAT的包,即 Destination NAT。 之后我们用 todestination 选项规定想让包去的地方,将它赋值 $DMZ_DNS_IP,即我们 DMZ 上 DNS 的 IP。 这就是DNAT 工作的基本原理。 当对 DNAT包的应答穿过防火墙,它自动被 unDNAT39。 ed。 现在你该知道一切是怎么工作的,能够在较简单的情况下地了解这个脚本了吧 ? 如果有什么你不了解,而且我的指南也没讲,那么请发邮件给我,因为那也许是我的错误。 没有 DCC的被动 FTP , 感兴趣的额外阅读 这是关于 内核的新 iptables 支持的真正美好的部分之一,比如你可以允许被动的 FTP 连接,但不允许 DCC 发送带有新状态匹配代码的函数。 你可能会问自己如何做到,只要你想就很简单。 只要编译内核中的 ip_conntrack_irc 和 ip_conntrack_ftp 模块。 这些模块做的就是增加对 conntrack 模块的支持,使它可以识别一个被动的 FTP 连接或一个 DCC发送连接。 比如你想允许一个被动的 FTP 连接而不允许 DCC发送,你将加载 ip_conntrack_ftp 模块,而不是 ip_conntrack_irc 模块 ,然后做: /usr/local/sbin/iptables A INPUT p TCP m state state RELATED –j ACCEPT 允许被动的 FTP 而不允许 DCC。 如果你想做相反的,你就加载 ip_conntrack_irc 模块而不是 ip_conntrack_ftp 模块。 规定 NEW 信息包 但没有 SYN 置位 iptables 有一个特点没被很好的说明 , 因而可能被许多人忽视。 如果你使用状态 NEW, SYN 位没置的包将穿过你的防火墙。 有这个特点是因为特定情 况下我们不认为一个包是另一个防火墙上已建立连接的一部分。 这个特点使得有两个或更多的防火墙成为可能。 这个子网的防火墙将被我们的第二防火墙取代,状态 NEW 因此允许相当多的任何种类的 TCP 连接,不管这是否是三方握手( 3way handshake)。 为解决这个问题,我们向防火墙的 INPUT, OUTPUT 和 FORWARD 链添加如下规则: $IPTABLES A INPUT p tcp ! syn m state state NEW j LOG logprefix New not syn: $IPTABLES A INPUT p tcp ! syn m state state NEW j DROP 上述规则将解决这个问题。 这是 filter/iptables 计划中文档的严重问题,应该被提出。 换 10 句话说在你的防火墙上对此种行为应该发出严重警告。 使用赋值的 IP39。 s的奇怪的 ISP39。 s 我增加了这个是因为我的一个朋友告诉我我几乎忘光了的一件事,一些愚蠢的 ISP39。 s 为他们的本地网 使用用 IANA 赋值的 IP39。 s。 例如瑞典的 ISP 和电话垄断者 Telia在他们的 DNS 服务器上使用这种方法,使用 IP 范围。 你最可能遇到的问题是,在这个脚本中我们不允许任何在 IP39。 s 到我们的连接,因为可能有欺骗。 好,这有个例子,你在那些规则上的花些力气。 你可能在欺骗部分插入一个 ACCEPT 规则,允许来自那些 DNS 服务器的负载,或者你可以注释那部分脚本。 它看起来象这样: /usr/local/sbin/iptables t nat I PREROUTING i eth1 s –j ACCEPT 我将咒骂这些 ISP39。 s。 这个范围不是为你用来做填充的,至少在我的知识范围内不是,对于大的公司站点更不是,或者对于你的家庭网络,但你不能迫使我们开放自己只因为你的一些whince。 更新并刷新你的表 如果你弄乱了你的 iptables,有命令可以刷新它,你不必要重启动。 到现在为止我遇到这个问题好多次了,所以我想我将在这回答它。 如果你错误地增加了一条规则,你可以在你加错的那一行上将 A 参数改为 D, iptables 将发现错误行并替你抹去,万一你有几行看起来相同,它抹去它发现的与你的规则匹配的第一个实例。 如果这不是你想要的行为,你就要试着使用 D 选项, iptables D INPUT 10,将 INPUT链中的第十条规则抹去。 还有你想刷新整个链的情况,这时你要执行 F 选项。 比如 iptables F INPUT 将抹去整个INPUT 链,虽然它不会改变默认规则。 因此如果默认规则被置为“ DROP” ,而且你想象上面一样使用,则你要阻塞整个 INPUT 链,重置链规则,象你置“ DROP”一样做。 例如iptables P INPUT ACCEPT。 我做了一个小的脚本 (作为附录)可以刷新并重置你的 iptables,你在创建你的 文件时可以考虑使用。 还有一件事情,如果你在弄乱的表中变的混乱,这个脚本不会抹去它们,它只添加抹去它们需要的几行,但在这我不添加它们,因为弄乱的表在我的 脚本中不使用。 其他的资源及连接 这是我获得信息的一些连接:。 system control via /proc etc The official site of iptables and filter The official filter FAQ Rusty39。 s Unreliable Guide to packet filtering Rusty39。 s Unreliable Guide to Network Address Translation Rusty39。 s Unreliable Netfilter Hacking HOWTO Netfilter user mailinglist 当然,还包括 iptables 的原始资料,文档及帮助我的人。 贡献者 我感谢下面的人在我写这篇 文章时对我的帮助: Fabrice Marie, 修改我的语法及拼写 . 感谢他将指南修改成 DocBook 格式并带有 make 11 files等等。 Marc Boucher, 在使用状态匹配代码上给予了我很大的帮助。 Frode E. Nyboe,完善了 的规则,在我重写 ruleset时给了我很大灵感,使我引入了在同一文件中使用多重表格的方法。 * Chapman Brad, Alexander W. Janssen, 他们使我认识到,我在想包如何以它们显示的顺序穿过基本的 NAT 和 filters tables时最初是想错了。 Michiel Brandenburg, Myles Uyema,帮助我书写一些状态匹配代码并使它们工作。 Kent `Artech39。 Stahre, 帮助我从绘图的烦琐工作中解脱出来,我知道我热中于绘图,但是你是我所知道的绘图最好的人,还感谢你帮我检查指南的错误。 Jeremy `Spliffy39。 Smith, 感谢在可能扰乱人的素材上给我以暗示,感谢尝试它并检查我写的东西的错误。 还有所有我曾经谈过话、向他们询问过建议的朋友。 例子 !/bin/sh Initial SIMPLE IP Firewall test script for Author: Oskar Andreasson (c) of , use at your own risk, do whatever you please with it as long as you don39。 t distribute this without due credits to Configuration options, these will speed you up getting this script to work with your own setup. your LAN39。 s IP range and localhost IP. /24 means to only use the first 24 bits of the 32 bit IP adress. the same as mask STATIC_IP is used by me to allow myself to do anything to myself, might be a security risc but sometimes I want this. If you don39。 t have a static IP, I suggest not using this option at all for now but it39。 s stil enabled per default and will add some really nifty security bugs for all those who skips reading the documentation=) 12 LAN_IP_RANGE= LAN_IP= LAN_BCAST_ADRESS=。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。