【跟我一起学Linux之防火墙】iptables 入门到贯通

逻辑图


1.防火墙基础概念

1.1 iptables 概述

  • Linux系统的防火墙:IP信息包过滤系统,实际由两个组件netfilter和iptables组成。
  • 包过滤的工作层次:主要工作在网络层,针对TCP/IP 数据包实施过滤和限制(体现在对包内的IP地址、端口等信息的处理上)属于典型的包过滤防火墙 或又称为网络层防火墙。
  • netfilter/iptables:网络过滤器/IP信息包过滤系统,实际上netfilter 和 iptables组成。

1.2 netfilter与iptables关系

netfilter:

  • 称为Linux防火墙的“内核态” (Kernel Space,又称为内核空间)的防火墙功能体系。
    由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。

iiptables:

  • 称为Linux防火墙的“用户态” (User Space,又称为用户空间)的防火墙管理体系。
    是一种用来管理Linux 防火墙的命令程序,它使得插入、修改、删除数据包过滤表中的规则变得容易,位于/sbin/Iptables,通常用来管理防火墙规则的工具。

注:上述两种称呼都可以表示Linux防火墙。

2.iptables的表、链结构

2.1 四表五链

规则表?

  1. 表的作用:容纳各种规则链 。
  2. 表的划分依据:防火墙规则的作用相似。

默认包括四种规则表

1、raw表
  • 确定是否对该数据包进行状态跟踪。(包含两个规则表:OUTPUT、PREROUTING)
2、mangle表
  • 修改数据包内容,用来做流量整形的,给数据包设置标记。(包含五个规则链,INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING)
3、nat表
  • 负责网络地址转换,用来修改数据包中的源、目标IP地址或端口(包含三个规则链,OUTPUT、PREROUTING、POSTROUTING)
4、filter表
  • 负责过滤数据包,确定是否放行该数据包(过滤).(包含三个规则链,INPUT、FORWARD、OUTPUT)

规则链?

  1. 规则的作用:对数据包进行过滤或处理。
  2. 链的作用: 容纳各种防火墙规则。
  3. 链的分类依据:处理数据包的不同时机。

默认包括五种规则链

1、INPUT`
  • 处理入站数据包。(匹配目标IP为本机的数据包)
2、OUTPUT
  • 处理出站数据包。(一般不在此链上做配置)
3、FORWARD
  • 处理转发数据包。(匹配流经本机的数据包)
4、PREROUTING
  • 在进行路由选择前处理数据包。(用来修改目的地址,用来做DNAT。相当于把内网中的80端口映射到 路由器外网端口上)
5、POSTROUTING
  • 在进行路由选择后处理数据包。(用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能 实现内网主机通过一个公网IP上网)

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

在这里插入图片描述

3、数据包过滤的匹配流程

3.1 规则表之间的匹配顺序

当数据包到达防火墙时,规则表之间的优先顺序为:

raw ===> mangle ===> nat ===>filter

3.2 规则链之间的匹配顺序

3.2.1主机型防火墙

① 入站数据

(来自外界的数据包,且目标地址是防火墙本机)

  PREROUTING -> INPUT -> 本机的应用程序

②出站数据

(从防火墙本机向外部地址发送的数据包)

   OUTPUT -> POSTROUTING -> POSTROUTING

3.2.2 网络型防火墙

③转发

转发数据(需要经过防火墙转发的数据包)

  PREROUTING <- FORWARD <- POSTROUTING

注意事项:

  1. 主机型防火墙主要使用 INPUT、OUTPUT 链,设置规则时一般要详细的指定到端口。
  2. 网络型防火墙主要使用 FORWARD链,设置规则时很少去指定到端口,一般指定到 IP 地址或者到网段 即可。

3.3 规则链内的匹配顺序

  • 按从上而下顺序依次检查,找到相匹配即停止,要么放行、要么丢弃。(LOG策略例外,表示记录相关日志)

  • 若在该链内找不到相匹配的规则,则按该链的默认策略处理。(未修改的状况下,默认策略为允许)

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

默认规则用 iptables -L 查看,规则链后面出现(policy ACCEPT)即是默认放行,默认策略不参与链内规则的顺序编排
-F 清空链时,默认策略不受影响。

4、编写防火墙规则

4.1 iptables 安装

CentOS7 默认使用 firewalld 防火墙,没有安装 iptables。若想使用 iptables 防火墙,必须先关闭 firewalld 防火墙,再安装 iptables。

#关闭 firewalld 防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

#安装 iptables 防火墙 
yum -y install iptables iptables-services

#设置 iptables 开机启动
systemctl start iptables.service
systemctl enable iptables.service

iptables 防火墙的配置方法:

使用 iptables 命令行
使用 system-config-firewall,centos7 不能使用 centos6 可以使用

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

4.2.1 基本语法

格式:

iptables [-t 表名]  管理选项  [链名]  [匹配条件]  [-j 控制类型]
  • 表名、链名用来指定 iptables 命令所操作的表和链,未指定表名时将默认使用 filter 表。
  • 管理选项表示 iptables 规则的操作方式,如插入、增加、删除、查看等。
  • 匹配条件用来指定要处理的数据包的特征,不符合指定条件的数据包将不会处理。
  • 控制类型指的是数据包的处理方式,如允许、拒绝、丢弃等。

注意:

不指定表名时,默认指 filter 表
不指定链名时,默认指表内的所有链 除非设置链的默认策略,否则必须指定匹配条件选项、链名、控制类型使用大写字母,其余均为小写

4.2.2 数据包的常见控制类型

对于防火墙,数据包的控制类型非常关键,直接关系到数据包的放行、封堵以及相应的日志记录等。在 iptables 防火墙体系中,最常用的几种控制类型如下:

ACCEPT	        允许数据包通过。
DROP   	        直接丢弃数据包,不给出任何回应信息。
REJECT	        拒绝数据包通过,必要时会给数据发送端一个响应信息。
LOG		        在 /var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则。
SNAT	        修改数据包的源地址。
DNAT	        修改数据包的目的地址。
MASQUERADE	    伪装成一个非固定公网 IP 地址。

注意:
防火墙规则的 ”匹配即停止“ 对于 LOG 操作来说是一个特例,因为 LOG 只是一种辅助动作,并没有真正处理数据包。

4.2.3 匹配条件

匹配条件 说明
p 指定要匹配的数据包的协议类型
-s 指定要匹配的数据包的源 IP 地址
-d 指定要匹配的数据包的目的 IP 地址
-i 指定报文仅能够从指定的接口流入
-o 指定报文仅能够从指定的接口流出
- -sport 定源端口号
- -dport 指定目的端口号

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

在这里插入图片描述

4.3.1 iptables 命令的常用管理选项

管理选项 用法示例
-A 在指定链末尾追加一条新的规则 iptables -A INPUT
-I 在指定链中插入一条新的规则,未指定序号默认作为第一条 iptables -I INPUT
-P 设置指定链的默认策略规则 iptables -P OUTPUT ACCEPT
-D 根据规则编号删除规则 iptables -t nat -D INPUT
-R 修改、替换某一条规则 iptables -t nat -R INPUT
-L 列出指定链中所有的规则,若未指定链名,则列出表中的所有链 iptables -t nat -L
-n 所有字段以数字形式显示(比如任意 IP 地址是 0.0.0.0 而不是 anywhere,比如显示协议端口号而不是服务名)iptables -L -n,iptables -nL,iptables -vnL
-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋刀鱼_天官

奇迹每天都在发生!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值