iptables防火墙

目录

前言

一、iptables概述

1.1 netfilter/iptables关系

netfilter:

iptables:

二、 iptables 的表、链结构

2.1 iptables的四表五链结构介绍

2.1.1 四表五链

2.1.2 四表

2.1.3 五链

2.1.4 默认的表、链结构示意图

2.2 数据包过滤的匹配流程

2.2.1 规则链之间的匹配顺序

2.2.2 规则链内的匹配顺序

2.3 数据包在规则表、链间的匹配流程

三、编写防火墙规则

3.1 iptables 安装

3.2 iptables 基本语法、数据包控制类型

3.2.1 基本语法

3.2.2 数据包的常见控制类型

3.2.3 匹配条件

3.3 添加、查看、删除规则等基本操作

3.3.1 iptables 命令的常用管理选项

3.3.2 添加新的规则

3.3.3 查看规则列表

3.3.4 删除、清空规则

 3.3.5 设置默认策略

3.4 规则的匹配条件

3.4.1 通用匹配

3.4.2 隐含匹配

3.4.3 显示匹配

总结


前言

在 Internet 中,企业通过架设各种应用系统来为用户提供各种网络服务,如 Web 网站、电子邮件系统、FTP 服务器、数据库系统等。那么,如何来保护这些服务器,过滤企业不需要的访问甚至是恶意的入侵呢?
Linux 系统中的防火墙 netfilter 和 iptables 为了实现该目标而生。Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率,也因此获得广泛的应用。

一、iptables概述

netfilter/iptables:IP信息包过滤系统,它实际上由两个组件netfilter和iptables组成。主要工作在网络层,针对IP数据包,体现在对包内的IP地址、端口等信息的处理。

1.1 netfilter/iptables关系

netfilter:

(1)属于 “内核态” (kernel space,又称内核空间)的防火墙功能体系

(2)linux 好多东西都分 “内核态” 和 “用户态”,运维人员关注的是用户态,内核态是开发人员需要关心的事情
(3)netfilter 是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集

iptables:

(1)属于 “用户态”(User Space,又称用户空间)的防火墙管理体系
(2)是一种用来管理 Linux 防火墙的命令程序,它使插入、修改和删除数据包和过滤表中的规则变得容易,通常位于 /sbin/iptables 目录下
(3)iptables 是基于内核的防火墙,其中内置了 raw、mangle、nat filter 四个规则表。表中所有规则配置后,立即生效,不需要重启服务。

二、 iptables 的表、链结构

2.1 iptables的四表五链结构介绍

ptables 的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉 netfilter 对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理,为了更加方便的组织和管理防火墙规则,iptables 采用了表和链的分层结构,所以它会对请求的数据包的包头数据进行分析,根据我们预先设定的规则进行匹配来决定是否可以进入主机。

其中,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,在每个表容器内又包括不同的规则链,根据处理数据包的不同时机划分为五种链。

2.1.1 四表五链

规则表的作用:容纳各种规则链;

表的划分依据:防火墙规则的作用相似;

规则链的作用:容纳各种防火墙规则;

规则的作用:对数据包进行过滤或处理;

链的分类依据:处理数据包的不同时机;

总结:表里有链,链里有规则

2.1.2 四表

raw表:确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING。

mangle表:修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。

nat表:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、PREROUTING、POSTROUTING。

filter表:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT。 注:在 iptables 的四个规则表中,mangle 表和 raw 表的应用相对较少。

2.1.3 五链

INPUT:处理入站数据包,匹配目标IP为本机的数据包。

OUTPUT:处理出站数据包,一般不在此链上做配置。

FORWARD:处理转发数据包,匹配流经本机的数据包。

PREROUTING链:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网中的80端口映射到路由器外网端口上。

POSTROUTING链:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

2.1.4 默认的表、链结构示意图

数据包到达防火墙时,规则表之间的优先顺序:raw→ mangle→ nat→ filter

2.2 数据包过滤的匹配流程

数据包到达防火墙时,规则表之间的优先顺序:raw→ mangle→ nat→ filter

2.2.1 规则链之间的匹配顺序

主机型防火墙

入站数据(来自外界的数据包,且目标地址是防火墙本机):PREROUTING -> INPUT -> 本机的应用程序

出站数据(从防火墙本机向外部地址发送的数据包) :本机的应用程序–> OUTPUT --> POSTROUTING

网络型防火墙

转发数据(需要经过防火墙转发的数据包) : PREROUTING --> FORWARD --> POSTROUTING

2.2.2 规则链内的匹配顺序

自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志) 若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)

注:按第一条规则……第二条规则的顺序进行匹配处理,遵循“匹配即停止”的原则,一旦找到一条匹配规则将不再检查后续的其他规则,如果一直找不到匹配的规则,就按默认规则处理。

默认规则用iptables -L查看,规则链后面出现(policy ACCEPT)即是默认放行

默认策略不参加链内规则的顺序编排

-F清空链时,默认策略不受影响

2.3 数据包在规则表、链间的匹配流程

(1)入站数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING链处理(是否修改数据包地址等),然后进行路由选择(判断该数据包应发往何处):如果数据包的目的地址是防火墙本机(如Internet 用户访问网关的Web服务端口),那么内核将其传递给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如httpd服务器)进行响应。

(2)转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING链处理,然后再进行路由选择:如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问QQ服务器),则内核将其传递给FORWARD链进行处理(允许转发或拦截、丢弃),最后交给POSTROUTING链(是否修改数据包的地址等)进行处理。

(3)出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先进行路由选择,确定了输出路径后,再经由OUTPUT链处理,最后再交POSTROUTING链(是否修改数据包的地址等)进行处理。

三、编写防火墙规则

3.1 iptables 安装

CentOS7 默认使用 firewalld 防火墙,没有安装 iptables。若想使用 iptables 防

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值