Linux下Netfilter/IPTables防火墙案例分析

一、概述

在计算机领域内,防火墙是一种能够依照设定的规则,对网络传输进行控制,以确保信息安全的软硬件组成的防护系统。

Linux的Netfilter/IPTables架构

Netfilter/IPTables架构是Linux系统提供的自带的防火墙,它包含在Linux 2.4以后的内核中,功能十分强大,可以实现包过滤、NAT(网络地址转换)、数据包的分割等功能。

Netfilter工作在内核,而IPTables则是提供在用户空间的工具,可以让用户自定义规则集的表结构。

Netfilter/IPTables的框架

Netfilter工作在内核的IP协议栈上,它为多种协议提供了一套类似的钩子(HOOK),这些钩子函数设置在了报文传送的必经之路上。

报文按照来源和去向可以分为三类:流入的、流出的、流经的,其中流入、流经要经过路由才能区分,流出和流经也要经过路由转发。那么Netfilter就在这些必经之路上提供了5个钩子位置,分别是:

PREROUTING在路由决策之前

INPUT包将要被投递到本地socket之前

FORWARD经本机转发的包

OUTPUT本机发出的包

POSTROUTING路由决策后交给硬件之前

IPTables是用户空间的工具,它提供了4张表,分别是:

raw第一个处理的表,在连接追踪前作用,可以避免非常频繁的服务使用连接追踪功能

mangle它能够修改报文内容

nat网络地址转换,处理DNAT、SNAT转换

filter通用匹配的包过滤,不做任何修改

优先级顺序是:raw —> mangle —> nat —> filter。也就是说在某一个链上有多张表,就是按照这个顺序依次处理。

4张表中定义好规则,作用在不同的链上。如下图:

二、iptables简介

安装很简单,只需要安装用户空间工具iptables就行。在CentOS6光盘上有,可以rpm、yum安装。包安装请参看以前的博文,这里不再赘述。

# yum -y install iptables

语法规则(简要说明)

iptables [-t TABLE] COMMAND CHAIN CRETIRIA -j TARGET

-t 指明表,表有filter、nat、mangle和raw,filter是缺省值。

下面我们就从默认规则中初步了解一下iptables:

[语法]

iptables的-L选项,是列出所选链的所有规则,默认显示filter表,可以使用-t nat、-t mangle、-t raw。

常用有几个子选项

-n 数字格式,不要反解IP

-v 详细信息输出

–line-numbers 显示规则行号

-x 精确显示

常用目标TARGET

ACCEPT 允许

DROP 丢弃

REJECT 拒绝

LOG 记录日志

[规则分析]

INPUT链

1、默认规则

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

这一句说明INPUT链上默认的策略是允许放行。

根据默认策略,设置可以分为2种:

默认拒绝,把需要的数据放行,即白名单策略

默认允许,把不需要的数据拒绝,即黑名单策略

2、规则列表

1 201 14896 ACCEPT all — * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 这一句基于状态检测的规则,它在INPUT链上判断所有协议数据包,如果是与之前有关联,或者已经建立了的连接放行

2 2 168 ACCEPT icmp — * * 0.0.0.0/0 0.0.0.0/0

任何icmp协议请求都允许

3 0 0 ACCEPT all — lo * 0.0.0.0/0 0.0.0.0/0

在lo接口上的所有协议请求都允许,这是设置本地回环地址的行为 4 0 0 ACCEPT tcp — * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22

这一条比较重要,这是允许tcp新建立连接于22号端口,即默认的ssh服务端口,要与OUTPUT配合,才能完成整个数据的请求和响应 5 79 10272 REJECT all — * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

最后一条,所有协议所有地址都被拒绝,并告知主机禁止错误。

通过INPUT的规则设置,可以看出,虽然默认为允许放行,但是通过规则的分析,实际上除了本地接口lo外,只允许icmp和对TCP的22号端口的访问,其他全部拒绝,并返回指定错误。

FORWARD链

有时我们选择改变,并非经过深思熟虑,而更像是听见了天地间冥冥中的呼唤,

Linux下Netfilter/IPTables防火墙案例分析

相关文章:

你感兴趣的文章:

标签云: