iptables防火墙

本文详细介绍了Linux防火墙的基础概念、iptables工具的概述、工作原理、规则表链结构,以及如何使用iptables进行包过滤、安装、基本语法和管理规则,包括添加、删除和查看操作。涵盖了iptables在网络安全中的重要应用和控制类型。
摘要由CSDN通过智能技术生成

目录

一、Linux防火墙基础

1、防火墙的分类

二、防火墙工具iptables/nftables概述

2.1netfilter

2.2 iptables

2.3netfilter/iptables的区别

2.4 包过滤的工作层次

2.5 iptables的表、链结构

三、iptables

3.1、概述:

3.2、iptables四表五链

3.3数据包过滤的匹配流程

3.4规则表之间的匹配顺序

3.5规则链之间的顺序

3.6规则链内部各条防火墙规则之间的顺序

四、iptables工具使用

4.1、安装iptables

 4.2 iptables基本语法

4.3  数据包的常见控制类型

4.4 iptables 命令的常用管理选项

4.5添加新的规则(规则表从上到下)


一、Linux防火墙基础

Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。
体现在对包内的 IP 地址、端口等信息的处理上
Linux 系统的防火墙基于内核编码实现,具有非常稳定的性能和极高的效率,也因此获得广泛的应用

1、防火墙的分类

包过滤防火墙:网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流每个数据的源地址,目的地址,所有端口号和协议状态等因素,或他们的组合来确定谁都允许该数据包通过。

        优点:对用户来说透明,处理速度快且易于维护缺点:无法检查应用层数据,如病毒等

        缺点:无法检查应用层数据,如病毒等

        应用层防火墙:应用层防火墙/代理服务型防火墙,也成为代理服务器。将所有跨越防火墙的网络通信链路分为两段。内外网用户的访问都是通过代理服务器上的“链接”来实现优点:在应用层对数据进行检测比较安全。

        缺点:增加防火墙的负载
 

二、防火墙工具iptables/nftables概述

2.1netfilter

是内核的一部分,由一些数据包过滤表组成,不以程序文或文件的形式存在

这些表包含内核用来控制数据包过滤处理的规则集

属于“内核态”(Kernel Space,又称为内核空间)的防火墙功能体系

2.2 iptables

是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录

属于“用户态”(User. Space,又称为用户空间) 的防火墙管理体系

iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务
 

2.3netfilter/iptables的区别

netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于内核态(Kernel Space,又称为内核空间)的防火墙功能体系。

iptables:指的是用来管理Linux防火墙的命令程序,通常位于/sbin/iptables目录下,属于用户态(User Space,又称用户空间)的防火墙功能体系。
 

2.4 包过滤的工作层次

  • 主要事网络层,针对IP数据包
  • 体现在对包内的IP地址、端口等信息的处理上

2.5 iptables的表、链结构

iptables的作用是为包过滤机制的实现提供规则(或称为策略),通过各种不同的规则,告诉 netfilter 对来自某些源、前往某些目的或具有某些协议特征的数据包应该如何处理

netfilter/iptables 后期简称为 iptables

为了更方便地组织和管理防火墙规则,iptables 采用了“表”和“链”的分层结构,且表中所有规则配置后,立即生效,不需要重启服务
 

 

三、iptables

3.1、概述:

       Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率,也因此获得广泛的应用。

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

3.2、iptables四表五链

ptables的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉netfilter对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理,为了更加方便的组织和管理防火墙规则。
iptables采用了表和链的分层结构,所以它会对请求的数据包的包头数据进行分析,根据我们预先设定的规则进行匹配来决定是否可以进入主机。
其中,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,在每个表容器内又包括不同的规则链,根据处理数据包的不同时机划分为五种链
 

四表

raw

主要用来决定是否对数据包进行状态跟踪包含两个规则OUTPUT,PREROUTING

mangle

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

nat

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

filter

负责过滤数据包,确定是否放行该数据包(过滤),包含三个表链:PREROUTING、POSTROUTING、OUTPUT

注:在iptables 的四个规则表中,mangle 表 和raw表的应用相对较少

五链
INPUT处理出战数据包,一般不在此链上做配置
OUTPUT处理转发数据包,匹配流经本机的数据包
FORWORD处理转发数据包,匹配流经本机的数据包
PREROUTING在进行路由选择钱处理数据包,用来修改目的地址,用来DNAT。相当于把内网
服务器的IP和端口映射到路由的外网IP和端口上。
POSTROUTING在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通
过路由器NAT转换功能实现内网主机通过一个公网IP地址上网


3.3数据包过滤的匹配流程

iptables 管理着四个默认表和五种链,各种防火墙规则依次存放在链中

3.4规则表之间的匹配顺序

当数据包抵达防火墙时,优先顺序为(如果存在):

raw >> mangle >> nat >> filter

3.5规则链之间的顺序

根据规则链的划分原则,不同链的处理时机是比较固定的,因此规则链之间的应用顺序取决于数据包的流向

1.入站数据流向
来自外界的数据包到达防火墙后,首先被 PEROUTING 链处理(是否修改数据包地址等),然后进行路由选择(判断该数据包应该发往何处);如果数据包的目标地址是防火墙本机,那么内核将其传递给 INPUT 链进行处理(决定是否允许通过),通过后再交给系统上层的应用程序进行相应

2.转发数据流向
来自外界的数据包到达防火墙后,首先被 PREOUTING 链处理,然后再进行路由选择;如果数据包的目标地址是其他外部地址,则内核将其传递给 FORWARD 链进行处理(允许转发、拦截或丢弃),最后交给 POSTROUTING 链进行处理(是否修改数据包的地址等)

3.出站数据流向
防火墙本机向外部地址发送数据包,首先被 OUTPUT 链处理,然后进行路由选择,再交给 POSTROUTING 链进行处理(是否修改数据包的地址等)
 

3.6规则链内部各条防火墙规则之间的顺序

当数据包经过每条规则链时,自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)

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

四、iptables工具使用

4.1、安装iptables

在安装之前我们需要先关闭自带的firewalld防火墙,再装iptables

关闭firewalld防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

安装iptables 防火墙

yum -y install iptables iptables-services
 

 设置iptables开机启动

 

iptables防火墙的配置方法:

  1. 使用iptables命令行
  2. 使用system-config-firewall centso7不能使用 centos 6可以使用

 4.2 iptables基本语法

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


注意事项

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

4.3  数据包的常见控制类型

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

ACCEPT

允许数据包通过

DROP

直接丢弃数据包,不给出任何回应信息

REJECT

拒绝数据包通过,必要时会给数据发送端一个响应信息

LoG

在lvarlog/messages文件中记录日志信息,然后将数据包传递给下一条规则

SNAT

修改数据包的源地址

DNAT

修改数据包的目的地址

MASQUERADE

伪装成一个非固定公网IP地址

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

4.4 iptables 命令的常用管理选项

管理选
用法示例
-A在指定链末尾追加—条iptables -A INPUT(操作)
-l在指定链中插入—条新的,未指定序号默认作为第—条iptables -l
INPUT(操作)
-P指定默认规则iptables -P OUTPUT ACCEPT(操作)
-D删除iptables -t nat -D INPUT2(操作)
-p服务名称
-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(查看)
-v查看时显示更详细信息,常跟-L一起使用(查看)
--line-
number
规则带编号iptables -t nat -L-n --line-number /iptables -t nat -L --
line-number
-F清除链中所有规则iptables -F(操作)
-X清空自定义链的规则,不影响其他链iptables -x
-Z清空链的计数器(匹配到的数据包的大小和总和)iptables -z
-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号

4.5添加新的规则(规则表从上到下)

添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。

例如,若要在 filter 表 INPUT 链的末尾添加一条防火墙规则,可以执行以下操作(其中 “-p 协议名”作为匹配条件)。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值