使用netfilter/iptables构建防火墙

运维 系统运维
iptables是Linux内核集成的IP信息包过滤系统,他可以更好地控制、过滤IP信息包。本文讲述的是如何使用配置iptables构建防火墙。

  如何使用netfilter/iptables构建防火墙

  对于Internet上的系统,不管是什么情况都要明确一点:网络是不安全的。因此,虽然创建一个防火墙并不能保证系统100%安全,但却是绝对必要的。Linux提供了一个非常优秀的防火墙工具—netfilter/iptables。它完全免费、功能强大、使用灵活、可以对流入和流出的信息进行细化控制,且可以在一台低配置机器上很好地运行。本文将简单介绍使用netfilter/iptables实现防火墙架设和Internet连接共享等应用。

  netfilter/iptabels应用程序,被认为是Linux中实现包过滤功能的第四代应用程序。netfilter/iptables包含在2.4以后的内核中,它可以实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。netfilter/iptables从ipchains和ipwadfm(IP防火墙管理)演化而来,功能更加强大。下文将netfilter/iptabels统一称为iptables。

  可以用iptables为Unix、Linux和BSD个人工作站创建一个防火墙,也可以为一个子网创建防火墙以保护其它的系统平台。iptales只读取数据包头,不会给信息流增加负担,也无需进行验证。要想获得更好的安全性,可以将其和一个代理服务器(比如squid)相结合。

  基本概念

  典型的防火墙设置有两个网卡:一个流入,一个流出。iptables读取流入和流出数据包的报头,将它们与规则集(Ruleset)相比较,将可接受的数据包从一个网卡转发至另一个网卡,对被拒绝的数据包,可以丢弃或按照所定义的方式来处理。

  通过向防火墙提供有关对来自某个源地址、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用iptables系统提供的特殊命令iptables建立这些规则,并将其添加到内核空间特定信息包过滤表内的链中。关于添加、去除、编辑规则的命令,一般语法如下:

  iptables [-t table] command [match] [target]

  1.表(table)

  [-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三个可用的表选项:filter、nat和mangle。该选项不是必需的,如果未指定,则filter作为缺省表。各表实现的功能如表1所示。

  

 

表1 三种表实现的功能

  2.命令(command)

  command部分是iptables命令最重要的部分。它告诉iptables命令要做什么,例如插入规则、将规则添加到链的末尾或删除规则。表2是最常用的一些命令及例子。

  

 

表2 命令的功能和样例

  3.匹配(match)

  iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源地址、目的地址、协议等)。匹配分为通用匹配和特定于协议的匹配两大类。这里将介绍可用于采用任何协议的信息包的通用匹配。表3是一些重要且常用的通用匹配及示例说明。

  

 

表3 通用匹配及示例说明

  4.目标(target)

  目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。除了允许用户定义的目标之外,还有许多可用的目标选项。表4是常用的一些目标及示例说明。

  除表4外,还有许多用于建立高级规则的其它目标,如LOG、REDIRECT、MARK、MIRROR和MASQUERADE等。

  

 

表4 目标及示例说明

  应用iptables

  与ipchains和ipfwadm不同的是,iptables可以配置有状态的防火墙。iptables可以检测到源地址和目的地址、源端口和目的端口及流入数据包的顺序,即iptables记住了在现有连接中,哪些数据包已经被允许接收。这使得暂时性的端口只有在需要时才会被打开,并且会拒绝所有***性占用端口的请求,大大地加强了安全性。同时,那些被更改了报头的数据包,即使包含有一个被允许的目的地址和端口,也会被检测到并被丢弃。此外,有状态的防火墙能够指定并记住为发送或接收信息包所建立连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。在决定新的信息包过滤时,防火墙所使用的这些状态信息可以增加其效率和速度。

  1.   $IPTABLES -A OUTPUT -o eth0 -p tcp -dport 31337 -j DROP  
  2.  
  3.   $IPTABLES -A OUTPUT -o eth0 -p tcp -sport 31337 -j DROP  
  4.  

  #此外,31335、27444、27665、20034 NetBus、9704、137-139(smb)端口也应被禁止。有没有学会如何使用netfilter/iptables构建防火墙呢?

【编辑推荐】

Linux下用iptables上网

使用Iptables进行并发连接限制

如何用IPtables限制网络流量

责任编辑:zhaolei 来源: 开放系统世界
相关推荐

2011-03-15 10:48:47

2011-03-15 17:12:11

2011-07-05 14:34:23

2011-03-15 15:47:26

LinuxIptables防火墙

2011-03-16 10:12:32

2011-03-16 10:17:06

2011-07-13 10:30:09

2011-03-15 16:35:27

2011-03-17 16:00:57

2011-03-15 15:47:15

Iptables防火墙

2011-03-17 10:58:55

Linux防火墙Iptables入门

2011-03-15 17:18:45

2011-03-16 12:46:29

CentOSiptables防火墙

2011-03-15 17:38:24

2018-07-02 09:18:11

Linuxiptables防火墙

2010-01-07 14:12:11

Linux防火墙

2011-03-15 09:10:42

Linux防火墙Iptables

2011-03-15 17:25:38

2011-03-16 16:23:23

保存iptables防火墙

2011-03-16 15:58:40

Iptables防火墙
点赞
收藏

51CTO技术栈公众号