使用iptables和ipchains
在这一节中,我将为你讲述使用iptables(和ipchains)命令控制抵达每个集群节点的数据包的命运,执行命令也可以用于在集群外建立一个防火墙,通过为每个INPUT规则添加对应的FORWARD规则,并将它们安装到集群负载调度器上实现,究竟是安装在每个集群节点上还是集群负载调度器上,还是两个上面都安装,就看你自己的选择了。
执行命令可以从一个shell提示符输入,但是它们在系统下次启动后将丢失,为了固定这些规则,你必须将它们放入一个每次随系统启动而自动执行的脚本(或你的发行版使用的一个配置文件)中,本章后面提供有一个样例脚本。
注意:如果你正工作在一个新的内核(2.4系列或更高)上,使用它提供的iptables(ipchains规则只是为了历史目的)。
清除现有的规则
在向内核添加任何规则前,先执行一个清除动作,在故障检修和建立一个新配置时,如果你需要启动但不想重启系统,此时ipchains和iptables命令是非常有用的。
使用其中一个命令(在2.2系列内核上是ipchains,在2.4及更高版本内核上是iptables)清除三个链表(INPUT、FORWARD和OUTPUT)中的所有规则:
#ipchains -F
#iptables -F
设置默认的INPUT链表策略
使用其中一个命令设置默认INPUT策略不允许入站数据包:
#ipchains -P input DENY
#iptables -P INPUT DROP
记住,如果你创建路由规则将数据包路由出系统(本章后面会介绍),你可能也想设置默认的FORWARD策略为DROP,并明确为允许通行的数据包指定准则,这就是你如何建立一个安全的负载调度器了(与Linux虚拟服务器一起在本书的第三部分描述)。
回想2.2系列内核ipchains的input策略对本地的数据包和需要发送到网络上的数据包的影响,而2.4及更高版本系列内核iptables的INPUT策略只影响到本地的数据包。
注意:如果你需要通过一个远程telnet或SSH连接向一个系统添加iptables(或ipchains)规则,在你设置好默认策略为DROP(或DENY)后,你首先应该输入ACCEPT规则(本节后面将会展示)允许你的telnet或SSH连接。
FTP
使用下面这些规则允许来自任意位置的FTP连接:
#ipchains -A input -i eth0 -p tcp -s any/0 1024:65535 -d MY.NET.IP.ADDR 21 -j ACCEPT |
依赖于你的内核版本,要么你将使用ipchains要么使用iptables,只使用两个规则匹配你的实用程序。
让我们更进一步了解一下这两个iptables命令的语法:
-A INPUT
表明我们想向input过滤器添加一个新的规则。
-i eth0
只应用到eth0接口,如果你想一个input规则应用到所有连接到系统的接口,你可以将其留空(使用ipchains,当你为output链表创建规则时你可以指定input接口,但是在iptables下不再可能了,因为output链表只能应用到本地创建的数据包)。
-p tcp
这个规则应用到TCP协议(如果你计划阻止或接受基于一个端口号的数据包就需要)。
-s any/0 and --sport 1024:65535
这些参数表明源地址可以是任意地址,源端口可以是从1024到65535之间的任意端口,any后的0意味着我们不对ip地址应用子网掩码,通常,当你指定一个特定的ip地址时,你将需要象下面这样输入:
ALLOWED.NET.IP.ADDR/255.255.255.0
或
ALLOWED.NET.IP.ADDR/24
这里的ALLOWED.NET.IP.ADDR是一个ip地址,如209.100.100.3。
在这两个例子中,iptables命令屏蔽了ip地址前面作为地址网络部分的24位。
注意:我们将暂时跳过TCP/IP会话的细节,这里最重要的一个正常的入站TCP请求将到达一个特权端口(在/etc/services中定义的范围在1-1023之间的端口号),并要求你在一个非特权端口(范围在1024-65535之间的端口)发送一个应答。
-d MY.NET.IP.ADDR and --dport 21
这两个参数指定在数据包头请求的目标ip地址和目标端口号,用你eth0接口的ip地址替换这里的MY.NET.IP.ADDR,或如果你在-i选项处留空而且不担心数据包抵达哪个接口时,输入0.0.0.0(FTP同时请求端口20和21)。
-j ACCEPT
当一个数据包匹配到一条规则时,它丢掉这个链表(本例中的INPUT链表),无论你在这里为-j选项输入了什么,它将指定数据包下一步该怎么处理,如果一个数据包没有匹配到任何规则,本例中将应用默认的过滤器策略DENY或DROP。
被动FTP
仅为FTP提供了规则不允许被动FTP连接到服务器上的FTP服务,FTP是一个旧的协议,它只用于没有防火墙的情景,FTP服务器可以连回到FTP客户端以传输请求的数据,现在,大多数客户端都位于防火墙后面,这种情况就不再可能了,因此,FTP协议发布了一个新特性叫做被动FTP,它允许客户端在端口21上请求数据连接,它引起服务器监听来自客户端的入站数据连接(而不是象以前那样连回到客户端去),要使用被动FTP,你的FTP服务器必须有一条iptables规则允许它为这些被动的FTP数据连接监听非特权端口,使用iptables的规则如下:
#iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 1024:65535 -d MY.NET.IP.ADDR --dport 1024:65535 -j ACCEPT
| 回书目 上一节 下一节 |
|
· 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. · 08年5月各大网上书店及.. · 2008年5月24日软考试题.. |
· 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. · 系统分析师自测获奖名.. · Linux结课考试自测获奖.. |
|
||||
| · Windows Server 2008专.. · 杀毒软件评测专题 · 2008中国互联网大会 · 微软出价446亿美元收购.. · 技术人求职简历完备手册 · 访问控制列表(ACL)介绍 · 隐私保护技术探讨 · 勇闯IT培训黑色围城 |
· CISSP认证成长之路 · 解析35岁技术人的价值.. · 网络工程师职业规划与.. · LAMP技术精解 · AMD Phenom三核处理器.. · 充电计划之热门IT认证.. · 如何有效防御SQL注入攻.. · 2008年上半年全国软考.. |
|||
|
||||
| · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Apache技术专题 |
· 国际文档格式标准开战 · 路由器设置与口令恢复 · 打造安全服务器 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 · 了解统一威胁管理(UTM).. · 专题:AIX操作系统管理.. |
|||
|
||||
| · iSCSI应用与发展 · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · iSCSI应用与发展 · 三层交换技术专题 · Apache技术专题 |
· 企业数据恢复指南 · 路由器设置与口令恢复 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 · 访问控制列表(ACL)介绍 · PHP开发应用手册 · 专题:AIX操作系统管理.. |
|||