linux防火墙的机制,Linux防火墙机制Netfilter/iptables简介-博客

Netfilter是什么?

Netfilter是Linux的第三代防火墙,因其比之前的两种防火墙ipfwadm及ipchains出色而被Linux组织作为默认的防火墙。Netfilter是自由软件,但在各方面均不逊于商业版的防火墙。

Netfilter与Linux的关系

Netfilter与Linux是两个相互独立的组织,在Linux 2.4早期的版本,并没有包含Netfilter的功能,到后期的版本,才收录了Netfilter的功能。

139c669188473408d711a9af263a6f1a.png

Netfilter工作的位置

Netfilter以模块的形式存在于linux中,当网卡有数据包传入传出时,出入的数据包都会经由Netfilter穿过。所以Netfilter作为防火墙,能够起到数据包拦截的作用

a790c9a3ed883416e1af3a3ea6e1cbf7.png

Netfilter的命令结构

Netfilter要针对数据包进行过滤,就必须要人为制定一些规则,这些规则指示什么样的数据包可以放行,什么样的数据包是危险的,应该丢弃掉,这些规则越来越多之后,就会对其进行分类存储在内存块中,内存就被分为四个表(Table),分别是filter、nat、mangle及raw表,这也是目前Netfilter机制所提供的四大功能。

描述

filter

INPUT

FORWARD

OUTPUT

filter是Netfilter中最重要的机制,其任务是执行数据包的过滤操作,也就是起到防火墙的作用

nat

PREROUTING

POSTROUTING

OUTPUT

nat(Network Address Translation, NAT)也是防火墙上一个不可或缺的重要机制,比较通俗的方式来说,其功能就是IP分享器

mangle

PREROUTING

INPUT

FORWARD

POSTROUTING

通过mangle机制来修改经过防火墙内数据包的内容

raw

PREROUTING

OUTPUT

负责加快数据包穿过防火墙机制的速度,由此提高防火墙的性能

netfilter的filter机制

filter对数据包的分类如下:

INPUT类型:网络上其他主机发送给本机进程的数据包就是INPUT类型的数据包

OUTPUT类型:本机进程所生成的数据包即为OUTPUT类型数据包

FORWARD类型:数据包对本机而言只是路过而已,那么这就属于FORWARD类型

filter表结构图如下

8a2007252edef6eac3383cca7f2bdcf2.png

filter机制的结构图如下:

caf1a57dd4a7582d9922436d988d9baa.png

规则的匹配方式

每条链上都有N条被制定的规则,这些规则该如何匹配呢?first match即优先匹配采用的方式为从INPUT链中的rule-1逐一向下匹配,如果rule-1指明要丢弃数据包,则数据包马上被丢弃,不再执行后面的规则,相反,如果rule-1指明允许数据包进来,则数据包立即进入到本机程序的位置,当前,不管后面的规则内容是什么也都不再重要,这就是优先匹配

8a2007252edef6eac3383cca7f2bdcf2.png

不过万一该数据包的特征从INPUT链的rule-1匹配到rule-6均没有匹配成功,该数据包是丢弃还是放行?这就涉及到默认策略(Default Policy)的问题了,请注意,不管链中有多少条规则,默认策略永远在每个链的最底端,而且每个链的默认策略各自独立。linux的默认策略的默认状态是ACCEPT

Netfilter与iptables的关系

Netfilter所需要的规则是存放在内存中的,但是我们如何对这些规则进行添加、删除、修改及查询等操作呢,这个时候必须要有一个针对规则的编辑工具提供给网络管理人员,这个工具就是iptables

iptables工具使用方法

iptables命令可以划分为两个部分,一个是“iptables命令参数”,另一个则是“规则语法”

iptables命令参数

f77303a9f62f69349661a70ba4f32332.png

iptables的命令结构

iptables -t TABLE -操作方式 规则条件

语法

说明

-t TABLE

内置filter、nat、mangle及raw四个表,即Netfilter的四大功能。-t参数的含义是选择我们要操作的功能,如果没有输入,默认则是filter表

-操作方式

当我们选择好所要使用的表之后,接下来要决定如何操作这个表,在iptables工具中有很多不同的操作方式,在此仅列出必须了解的操作方式,如下:

-L: 将所选择的表内容列出

-A: 在指定的链中添加新规则

-F: 将所选择的表内容清除掉

-P: 设置某个链的默认策略

规则条件

实例规则:

-p tcp -j ACCEPT

-p udp -j ACCEPT

-p icmp -j ACCEPT

iptables规则语法

接口的匹配参数

9ebd014edf80ddfb3a36e89037ca41e4.png

上层协议(upper layer protocol)的匹配参数

25524fc494a10de3344194edfbd761c0.png

180785db5012fa86175c1f6296e94564.png

匹配来源/目的的IP地址

d127bc9010a8691279fb5b22cb58e5b4.png

匹配来源/目的的端口

c8db0ba12b6a18234f443e8a677fab13.png

处理方式

179b38d1a9dddee3ca06a680a16aa11c.png

Netfilter的NAT机制

NAT的结构

b4c301b18bd0a63e0d449d8aabe84c8f.png

PREROUTING

NAT有很多不同的种类,但不管是哪一种NAT,都是由SNAT及DNAT搭配组合而成的,因此,当我们下发“规则”要去修改数据包的Destinaion IP时,请将规则放入PREROUTING链中

POSTROUTING

POSTROUTING链的任务是修改数据包内的Source IP

OUTPUT

对本机进程产生并要外送的这些数据包进行DNAT操作

总结

数据入口只能修改目的IP,数据出口只能修改源IP,本机程序往外吐包时,只能在OUTPUT链修改目的IP

NAT的分类

一对多NAT

语法实例

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 10.0.1.200

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

多对多NAT

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 10.0.1.200-10.0.1.205

一对一NAT

iptables -t nat -A PREROUTING -i eth0 -d 10.0.1.201 -j DNAT --to 192.168.0.1

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.1 -j SNAT --to 10.0.1.201

NAPT

iptables -t nat -A PREROUTING -i eth0 -p tcp ---dport 80 -j DNAT --to 192.168.0.1:80

iptables -t nat -A PREROUTING -i eth0 -p tcp ---dport 443 -j DNAT --to 192.168.0.1:443

未完待续

参考文献:

《Linux安全技术与实现第2版》—陈勇勋著

本帖子中包含资源

您需要 登录 才可以下载,没有帐号?立即注册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值