科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网服务器频道Linux下的防火墙机制应用

Linux下的防火墙机制应用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

基于netfilter/iptables的Linux防火墙是目前最新的开放源代码的Linux网络安全软件。本文将介绍防火墙的基本原理及如何使用Linux下的防火墙机制来保护Linux系统安全。

作者:李洋 2005年5月9日

关键字: 防火墙 Linux

  • 评论
  • 分享微博
  • 分享邮件
    ZDNetChina服务器站 5月9日操作系统技巧  基于netfilter/iptables的Linux防火墙是目前最新的开放源代码的Linux网络安全软件。本文将介绍防火墙的基本原理及如何使用Linux下的防火墙机制来保护Linux系统安全。

    总体说来,防火墙产品应该具有下述几点基本功能:防火墙的设计策略应遵循安全防范的基本原则——“除非明确允许,否则就禁止”;防火墙本身应支持各种安全策略;可扩展性强,组织机构可以根据实际情况,变更安全策略,可以加入新的服务;有先进的认证手段或有挂钩程序,可以安装先进的认证方法;如果需要,可以运用过滤技术允许和禁止服务;可以使用FTP和telnet等服务代理,以便先进的认证手段可以被安装和运行在防火墙上;需要提供界面友好、易于编程实现的IP过滤规则语言,并可以根据数据包的性质进行基于TCP/IP的包过滤,数据包的性质有目标和源IP地址、协议类型、源和目的TCP/UDP端口、TCP包的ACK位、出站和入站网络接口等;能够维护自身软件的安全,即具有较好的存活性。

    在这几点当中,安全策略是防火墙的灵魂和基础。用户在使用防火墙保护关键业务系统之前需要从整体上在安全现状、风险评估和商业需求几个层次上提出一个完备的总体安全策略,这是配置和使用防火墙的关键所在。通常的安全策略可以基于如下两点制订(相对而言,后一方面限制性大,前一方面宽松):

    ● 准许除明确拒绝以外的全部访问——所有未被禁止的都是合法的;

    ● 拒绝访问除明确准许以外的全部访问——所有未被允许的都是非法的。

    Netfilter/IPTable框架介绍

    这里所说的iptables是ipchains的后继工具,但具有更强的可扩展性。内核模块可以注册一个新的规则表,并要求数据包流经指定的规则表。这种数据包选择用于实现数据报过滤(filter表)、网络地址转换(NAT表)及数据报处理(mangle表)。Linux2.4内核提供的这三种数据报处理功能都基于netfilter的钩子函数和IP表。它们是相互间独立的模块,并且都集成到了由netfilter提供的框架中(见图1)。

Linux下的防火墙机制应用

    ● 包过滤

    filter表格不会对数据报进行修改,而只对数据报进行过滤。iptables优于ipchains的一个方面就是它更为小巧和快速。它是通过钩子函数NF_IP_LOCAL_IN、NF_IP_FORWARD及NF_IP_LOCAL_OUT接入netfilter框架的。

    ● NAT

    NAT表格监听三个netfilter钩子函数: NF_IP_PRE_ROUTING、NF_IP_POST_ROUTING及NF_IP_LOCAL_OUT。NF_IP_PRE_ROUTING实现对需要转发数据报的源地址进行地址转换,而NF_IP_POST_ROUTING则对需要转发的数据报目的地址进行地址转换。对于本地数据报目的地址的转换,则由NF_IP_LOCAL_OUT来实现。

    ● 数据报处理

    mangle表格在NF_IP_PRE_ROUTING和NF_IP_LOCAL_OUT钩子中进行注册。使用mangle表,可以实现对数据报的修改或给数据报附上一些外带数据。当前mangle表支持修改TOS位及设置skb的nfmard字段。

    安装 netfilter/iptables

    因为 netfilter/iptables 的 netfilter 组件是与内核 2.4.X 集成在一起的,所以只需要下载并安装 iptables 用户空间工具即可。

    带有内核 2.4 或更高版本的任何版本的 Linux都支持该框架系统。我们可以从 http://www.kernel.org 下载最新版本的内核。对于 RedHat Linux 版本 7.1 或更高版本的Linux都配备了iptables这个用户空间工具,所以一般不需要下载。

    在开始安装 iptables 用户空间工具之前,需要对系统做一些修改。需要使用 make config 命令来配置内核的选项。在配置期间,必须通过将CONFIG_NET

    FILTER 和 CONFIG_IP_NF_

    IPTABLES 选项设置为“Y”来打开它们,因为这是使 netfilter/iptables 工作所必需的。

    使用iptable的过滤规则

    通过使用 netfilter/iptables 系统提供的特殊命令 iptables,建立过滤规则,并将其添加到内核空间的特定信息包过滤表内的链中。关于添加/除去/编辑规则的命令的一般语法如下:

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

    ● 表(table):

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

    filter表用于一般的信息包过滤,它包含 INPUT、OUTPUT 和 FORWARD 链。nat 表用于要转发的信息包,它包含 PREROUTING、OUTPUT 和 POSTROUTING 链。如果信息包及其头内进行了任何更改,则使用 mangle 表。该表包含一些规则来标记用于高级路由的信息包,该表包含 PREROUTING 和 OUTPUT 链。

    ● 命令(command):

    上面这条命令中具有强制性的 command 部分是 iptables 命令的最重要部分。它告诉 iptables 命令要做什么,例如,插入规则、将规则添加到链的末尾或删除规则等。

    ● 匹配(match):

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

    -p 或 --protocol:该通用协议匹配用于检查某些特定协议。协议示例有 TCP、UDP、ICMP和用逗号分隔的任何这三种协议的组合列表以及 ALL(用于所有协议)。ALL 是缺省匹配。可以使用“!” 符号,它表示不与该项匹配。

    -s 或 --source:该源匹配用于根据信息包的源IP地址来与它们匹配。该匹配还允许对某一范围内的IP地址进行匹配,可以使用“!” 符号,表示不与该项匹配。缺省源匹配与所有IP地址匹配。

    -d 或 --destination:该目的地匹配用于根据信息包的目的IP地址来与它们匹配。该匹配还允许对某一范围内IP地址进行匹配,可以使用“!” 符号,表示不与该项匹配。

    ● 目标(target):

    我们已经知道,目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。除了允许用户定义的目标之外,还有许多可用的目标选项。下面是常用的一些目标及其示例和说明:

    ACCEPT:当信息包与具有ACCEPT目标的规则完全匹配时,会被接受(允许它前往目的地)。

    DROP: 当信息包与具有DROP目标的规则完全匹配时,会阻塞该信息包,并且不对它做进一步处理。该目标被指定为“-j DROP”。

    REJECT:该目标的工作方式与DROP目标相同,但它比DROP好。和DROP不同,REJECT不会在服务器和客户机上留下死套接字。另外,REJECT将错误消息发回给信息包的发送方。该目标被指定为“-j REJECT”。

    RETURN:在规则中设置的 RETURN目标让与该规则匹配的信息包停止遍历包含该规则的链。如果链是如INPUT之类的主链,则使用该链的缺省策略处理信息包。它被指定为“-jump RETURN”。

    下面将给出运用上述框架理论形成规则的一些简单示例,以便于理解:

    (1)接受来自指定IP地址的所有流入的数据报:

    $ iptables -A INPUT -s 203.159.0.10 -j ACCEPT

    (2)只接受来自指定端口(服务)的数据报:

    $ iptables -D INPUT --dport 80 -j DROP

    (3)(网关)允许转发所有到本地(198.168.10.13)smtp服务器的数据报:

    $ iptables -A FORWARD -p tcp -d 198.168.10.13 --dport smtp -i eth0 -j ACCEPT

    (4)(网关)允许转发所有到本地的udp数据报(诸如即时通信等软件产生的数据报):

    $ iptables -A FORWARD -p udp -d 198.168.80.0/24 -i eth0 -j ACCEPT

    (5)拒绝发往WWW服务器的客户端的请求数据报:

    $ iptables -A FORWARD -p tcp -d 198.168.80.11 --dport www -i eth0 -j REJECT

    根据实际情况,灵活运用上述Netfilter/iptables框架,生成相应的防火墙规则可以方便、高效地阻断部分网络攻击以及非法数据报,其中的技巧和用法都需要用户通过实践来掌握。另外,由于配置了防火墙,可能引起诸如FTP、QQ、MSN等协议和软件无法使用或者某些功能无法正常使用,也有可能引起RPC(远程过程调用)无法执行,这需要根据实际情况来配置相应的服务代理程序来开启这些服务。需要特别提醒的是,防火墙也可能被内部攻击,它并不是万能的,还需要综合使用其他防护手段。内部人员由于无法通过Telnet浏览邮件或使用FTP向外发送信息,个别人会对防火墙不满进而可能攻击它、破坏它。而且,攻击的目标常常是防火墙或防火墙运行的操作系统,这极大地危害了防火墙系统甚至是关键信息系统的安全。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章