Iptables工作原理及命令

一、防火墙的概念

       防火墙(firewall)是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙是系统的第一道防线,其作用是防止非法用户以及非法数据包进入内部网络。

二、防火墙的分类

1.包过滤型防火墙包过滤型防火墙工作在OSI参考模型的网络层。包过滤型防火墙主要是根据数据包的源地址、目的地址、端口号和协议类型等标志来确定是否让数据包通过。

2.代理型防火墙代理型防火墙主要工作在OSI的应用层。代理服务在确定客户端连接请求有效后接管连接,代为向服务器发送连接请求。代理型防火墙可以允许或拒绝特定的应用程序或服务,还可以实施数据流量监控、过滤、记录和报告功能。代理型防火墙先将客户端对服务器的请求进行存储,然后再代替客户端向服务器转发客户端的请求,因此,代理服务器通常具有高速缓存功能,代理型防火墙的最大缺点是速度较慢。

3.状态检测型防火墙:状态检测型防火墙可以动态的根据实际应用需求,自动生成或删除包过滤规则。这种防火墙不但能够根据数据包的源地址、目标地址、协议类型、源端口、目标端口等对数据包进行控制,而且能记录通过防火墙的连接状态,直接对包里的数据进行过滤。

三、Linux防火墙概述

1.Linux系统的防火墙功能是由内核实现的

(1):2.0版内核中,包过滤机制是ipfw,管理工具是ipfwadm

(2):2.2版内核中,包过滤机制是ipchain,管理工具是ipchains

(3):2.4版及以后的内核中,包过滤机制是netfilter,管理工具是iptables(当然了,现在使用的管理工具肯定是iptables了)

2.Linux防火墙

(1):netfilter

  • 位于Linux内核中的包过滤型防火墙功能体系
  • 称为Linux防火墙的“内核态”

(2):iptables

  • 位于/sbin/iptables,是用来管理防火墙的命令工具
  • 为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包
  • 称为Linux防火墙的“用户态”

习惯上,上述两种称呼都可以代表Linux防火墙

3.iptables的规则表、规则链

(1):规则表

  • 具有某一类相似用途的防火墙规则,按照不同处理时机区分到不同的规则链以后,被归置到不同的表中
  • 规则表是规则链的集合
  • 默认的4种规则表

raw表:确定是否对该数据包进行状态跟踪

mangle表:为数据包设置标记

nat表:修改数据包中的源、目的IP地址或端口

filter表:确定是否放行该数据包(过滤)

(2):规则链

  • 规则链的作用在于对数据包进行过滤或处理,根据处理时机的不同,各种规则被组织在不同的链中
  • 规则链是防火墙规则/策略的集合
  • 默认的5种规则链

INPUT链:处理入站数据包

OUTPUT链:处理出战数据包

FORWARD链:处理转发数据包

POSTROUTING链:在进行路由选择后处理数据包

PREROUTING链:在进行路由选择前处理数据包

注意:规则表都是小写,规则链都是大写!

(3):iptables规则表、规则链结构

在raw表中只有PREROUTING链和OUTPUT链;

在mangle表中有PREROUTING链、POSTROUTING链、INPUT链、OUTPUT链和FORWARD链;

在nat表中有PREROUTING链、POSTROUTING链和OUTPUT链;

在filter表中有INPUT链、FORWARD链和OUTPUT链。

(4):数据包过滤匹配流程

  • 规则表中的优先顺序

依次为raw、mangle、nat、filter表

  • 规则链间的匹配顺序

入站数据:PREROUTING链、INPUT链

出战数据:OUTPUT链、POSTROUTING链

转发数据:PREROUTING链、FORWARD链、POSTROUTING链

  • 规则链内的匹配顺序

按顺序依次进行检查,找到相匹配的规则即停止,若在该链中找不到相匹配的规则,则按该链的默认策略进行处理。

(5):举例说明数据进出防火墙的顺序

  • 数据进入防火墙:先进入到raw表中的PREROUTING链,然后进入mangle表中的PREROUTING链,再进入mangle表中的INPUT链,再进入到nat表中的PREROUTING链,最后再进入到filter表中的INPUT链。
  • 数据转发:先进入到raw表中的PREROUTING链,然后进入mangle表中的PREROUTING链,然后进入mangle表中的FORWARD链,然后进入mangle表中的POSTROUTING链,再进入到nat表中的PREROUTING链,再进入到nat表中的POSTROUTING链,最后再进入到filter表中的FORWARD链。
  • 数据出防火墙:先进入到raw表中的OUTPUT链,然后进入到mangle表中的OUTPUT链,然后进入到mangle表中的POSTROUTING链,然后进入到nat表中的OUTPUT链,然后进入到nat表中的POSTROUTING链,最后再进入到filter表中的FORWARD链。

四、管理和设置iptables规则

1.iptables命令

(1):iptables命令的语法格式

  • iptables  [-t  表名]  管理选项  [链名]   [条件匹配]   [-j   目标动作或跳转]

注意事项:

  • 不指定表名时,默认表示filter表
  • 不指定链名时,默认表示该表内所有链
  • 除非设置规则链的缺省策略,否则需要指定匹配条件。

(2):设置规则内容

  • -A:在链尾追加一条新的规则
  • -I(是大写的i):在指定位置(或链首)插入一条新的规则
  • -R:修改、替换指定位置或内容的规则
  • -P:设置指定链的默认策略

(3):列表查看规则

  • -L:列表查看各条规则信息
  • --line-numbers:查看规则信息时显示规则的行号
  • -n:以数字形式显示IP地址、端口等信息
  • -v:显示数据包个数、字节数等详细信息

(4):清除规则

  • -D:删除指定位置或内容的规则
  • -F:清空规则链中的所有规则

和上面相比,可以看见,第二条防火墙策略已经被删除。

可以看见,所有链中的策略都已经被清除,但是,之前修改的默认策略不会被清除。

(5):自定义规则链

  • -N:创建一条新的规则链
  • -X:删除自定义规则链

可以看见,在filter表中(因为没有指定表,所以默认打开filter表)添加了一条TCP链

和之前相比,发现刚才的新添加的TCP链被删除了。

(6):查看帮助

拓展:在设置防火墙策略时,如果不想让数据包经过防火墙,则可以设置防火墙策略为DROP和REJECT,两者区别如下:

DROP只是将收到的包进行丢弃,并不会返回任何信息;REJECT将数据包进行丢弃,还会向主机进行回应,返回错误信息。

2.通用条件匹配

  • 可直接使用,不依赖其他的条件或扩展模块
  • 包括网络协议、IP地址、网络接口等匹配方式

(1):协议匹配

  • 使用" -p  协议名"的形式
  • 协议名可以使用在"/etc/protocols"文件中定义的名称
  • 常用的协议包括TCP、UDP、ICMP等

(2):地址匹配

  • 使用"-s 源地址"、"-d 目标地址"的形式
  • 地址可以是单个IP地址、网络地址(带掩码长度)

(3):接口匹配

  • 使用"-i 网络接口名"、"-o 网络接口名"的形式,分别对应接收、发送数据包的网络接口

3.隐含条件匹配

  • 一般需要以特定的协议匹配作为前提
  • 包括端口、TCP标记、ICMP类型等匹配方式

(1):端口匹配

  • 使用“--sport 源端口”、“--dport 目的端口”的形式
  • 采用"端口1:端口2"的形式可以指定一个范围的端口

(2):ICMP类型匹配

  • 使用"--icmp-type ICMP类型"的形式
  • ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Resquest、Echo-Reply

(3):TCP标记匹配

  • 使用"--tcp-flags 检测范围 被设置的标记"的形式
  • 如"--tcp-flags SYN,RST,ACK SYN"表示检查SYN、RST、ACK这3个标志,只有SYN=1时满足条件

4.显式条件匹配

  • 需要使用"-m 扩展模块"的形式明确指定匹配方式
  • 包括多端口、MAC地址、IP地址范围、数据包状态等匹配方式

(1):MAC地址匹配

  • 使用"-m mac"结合"--mac-source MAC地址"的形式

(2):多端口匹配

  • 使用"-m  multiport"结合"--sport 源端口列表"或者"--dport 目标端口列表"的形式
  • 多个端口之间使用逗号","分隔,连续的端口也可以使用冒号":"分隔

(3):IP地址范围匹配

  • 使用"-m iprange"结合"--src-range 源IP范围"或者"--dst-range 目标IP范围"的形式
  • 以"-"符号连接起始IP地址、结束IP地址

(4):数据包状态匹配

  • 使用"-m  state"结合"--state  状态类型"的形式
  • 同时表示多种状态使用逗号","分隔
  • 常见的数据包状态包括:NEW、ESTABLISHED、RELATED、INVALID 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值