繁体中文
设为首页
加入收藏
当前位置:技术首页 >> 系统 >> Linux/Unix >> 实用技巧 >> 构筑防火墙之IPtables搭建防火墙的规则

构筑防火墙之IPtables搭建防火墙的规则 (1)

2006-12-12 22:16:56  作者:admin  来源:赛迪网  浏览次数:204  文字大小:【】【】【
关键字:防火墙
前面介绍了iptables的基本概念和用法,下面我们就开始正式使用iptables来创建我们的防火墙。启动和停止iptables的方法撒于所使用的Linux发行版,你可以查看所使用Linux版本的文档。在Red Hat中,启动iptables用:


#service iptables start

一般情况下,iptables已经包含在了Linux发行版中,可以运行iptables --version来查看系统是否安装了iptables。在我使用的Fedora Core 1中,安装的版本是iptables v1.2.8。如果你的系统确实没有安装iptables,那么可以从以下地址下载:

http://www.netfilter.org/

查看规则集

虽然上文对iptables的用法作一个简单介绍,但现实中我们可能需要知道更完整的信息,这时我们可以运行man iptables来查看所有命令和选项的完整介绍,也可以运行iptables help来查看一个快速帮助。要查看系统中现有的iptables规划集,可以运行以下命令:

 

iptables list

下面是没有定义规划时iptables的样子:

 

  Chain INPUT (policy ACCEPT)
  target   prot opt source               destination
  
  Chain FORWARD (policy ACCEPT)
  target   prot opt source               destination         
  
  Chain OUTPUT (policy ACCEPT)
  target   prot opt source               destination   
  
如上面的例子所示,每一个数据包都要通过三个内建的链(INPUT、OUTPUT和FORWARD)中的一个。 filter是最常用的表,上文所示设置所有的表规则的基本语法:iptables [-t table] command [match] [target]。

现实中,不一定要用到这里所列出的所有选项,也不一定是以这个顺序。当然,这是一种惯例,因为规则一般都比较长,为了清晰起见,最好能够按照这个顺序。

在没有指定规则表的情况下,缺省时使用的filter表。在filter表中最常用的三个目标是ACCEPT、DROP和REJECT。DROP会丢弃数据包,不再对其进行任何处理。REJECT会把出错信息传送至发送数据包的主机。虽然有时会有一些预想不到的影响,但在很多时候它还是非常有用。

增加规则

本例中的规则将会阻止来自某一特定IP范围内的数据包,因为该IP地址范围被管理员怀疑有大量恶意的攻击者在活动:

  # iptables -t filter -A INPUT -s 123.456.789.0/24 -j DROP

要了解有关iptables详细的参数和命令格式,请使用man iptables查看。可以说,现在我们对于网络上的恶意攻击者已经深恶痛绝,但不管怎么说,我们也不能因为憎恨它们就以同样的方法对其实行简单的报复,至少这种事情不能在你的网络里发生。因此,我们也可以很轻易地阻止所有流向攻击者IP地址的数据包,该命令也只是稍有不同:

 

  # iptables -t filter -A OUTPUT -d 123.456.789.0/24 -j DROP
  

注意这里的A选项,如前所述,使用它说明是给现有的链添加规则。

删除规则

网络上的恶意攻击者总是在变化着的,因此我们也要不断改变IP。假设我们了解的一个网上攻击者转移到了新的IP地址,而其老的IP地址被分配给了一些清白的用户,那么这时这些用户的数据包就无法通过你的网络了。这种情况下,我们可以使用带-D选项的命令来删除现有的规则:

 

  # iptables -t filter -D OUTPUT -d 123.456.789.0/24 -j DROP
  
缺省的策略

创建一个具有很好灵活性,可以抵御各种意外事件的规则需要花大量的时间。对于那些不想这样做的人,最基本的原则就是“先拒绝所有的数据包,然后再允许需要的”。下面我们来为每一个链设置缺省的规则:











  # iptables -P INPUT DROP
  # iptables -P FORWARD DROP
  # iptables -P OUTPUT ACCEPT
  

这里选项-P用于设置链的策略,只有三个内建的链才有策略。这些策略可以让信息毫无限制地流出,但不允许信息流入。但很多时候,我们还是需要接收外部信息的。这时可使用以下命令:

 

  # iptables -t filter -A INPUT -s 123.456.789.0/24 -j ACCEPT
 

SYN的使用

我们不能关闭所有的端口,那将会把我们自己完全“与世隔绝”。我们也不能只指定某些端口处于打开状态,因为我们无法预见哪一个端口将会被使用。事实上,只简单地允许目的地为某一特定端口的数据流通过将对阻止恶意的攻击毫无意义。那么我们怎样才能设置一个有效的规则,即可以允许普通用户正常通过,又可以阻止恶意攻击者访问我们的网络呢?

对于刚开始使用iptables的人,我们可以充分利用syn标识来阻止那些未经授权的访问。因为iptables只检测数据包的报头,所以不会增加有效负荷。事实上,除iptables以外,很多其它有用的数据包分析都是基于报头的。

比如,在进行Web冲浪时,一个请求从你的PC发送至其它某一个地方的Web服务器之上,接着该服务器就会响应请求并且向你发回一个数据包,并且得到你的系统上的一个临时端口。与响应请求不同的是,服务器并不关心你所传送的内容。这们可以利用这种特点,来设置一个规则,让它阻止所有没有经过你的系统授权的TCP连接:

 

  # iptables -t filter -A INPUT -i eth0 -p tcp --syn -j DROP
这里的-i指的是网卡,-p则是指协议,--syn则表示带有syn标识设置的TCP数据包。从中我们可以看出,对TCP/IP的了解将非常有利于维护网络安全。SYN用于初始化一个TCP连接,如果你在自己的机器上没有运行任何服务器,别人自然也就不会向你发送SYN数据包了。

就这点而言,有人会说:何必如此麻烦?的确,我们有更简单的创建防火墙的方法,也有很多不错的软件也可以帮助我们来构建自己的规则集,但是我们应该清楚,最简单的办法,往往不是最好的方法。既然我们有更好的方法,为什么不使用呢?

责任编辑:admin

本文引用地址: http://tech.itzero.com/2006/1212/5180.html 请粘贴到你的QQ/MSN上推荐给你的好友

相关文章
多WAN口VPN防火墙在大型企业的应用
快速解决 Windows系统防火墙的配置问题
让你瞧瞧 黑客眼中的防火墙与路由器
安全基础之 网络安全的几项关键技术
内网计算机安全技术 十大防护策略详解
如何用iptables实现NAT
教你将Linux配置为代理防火墙
深入分析Linux防火墙
软盘里的Linux防火墙
Cisco多个防火墙设备中存在口令配置漏洞
路由技术基础知识 PIX命令集解释说明
 

最新文章

更多

· Linux指令篇:设备管理--...
· SCO UNIX下磁盘设备的应...
· 简单方法确保 Linux 系统...
· 将SSH与PHP相连接 确保...
· 系统安全:快速安全地建立...
· 在Linux的系统环境下配置...
· 分级防御针对Linux服务器...
· Sendmail邮件服务器升级...
· 本文介绍最简单的Linux系...
· 手把手教授架设基于LINU...

热点文章

更多

· SCO UNIX下磁盘设备的应...
· Linux指令篇:设备管理--...

其它推荐