一:iptables

1.iptables简介
什么是iptables?我们首先应该知道它是Linux平台最著名的防火墙工具,系统自带的,从什么版本的内核开始自带的呢,2.4以后。
它的全称应该是netfilter/iptables,从这个名称上看,它其实是两个软件。netfilter是运行在内核之中的,对数据包进行分析处理;iptables是提供用户的一个配置管理工具,它可以设置一些表、表中有一些链条、链条上面有一些规则。通过iptables建立的一整个的规则体系,netfilter来对数据包进行分析处理。

2.什么是防火墙?
防火墙一直被认为是保护敏感信息的第一道防线。它们在安全和受控内部网络之间建立了一道屏障,提供低级网络保护,以及重要的日志记录和审计功能。
它能监视传入和传出的网络流量,并根据一组已定义的安全规则决定是允许还是阻止特定流量。

3.防火墙种类
1.硬件防火墙(主机防火墙)
F5
2.软件防火墙(网络防火墙)
iptables
firewalld

二:iptables基本介绍

  • 流程
用户层  --->  调用iptables  --->  ip_tables内核模块  --->  Netfilter(系统安全框架) --->  过滤请求
1.解析内容
1.iptables:
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的 “安全框架中” 才是真正的防火墙,这个框架的名字叫netfilter
iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。 2.ip_tables内核模块:
ip_tables模块它是防火墙的核心模块,负责维护防火墙的规则表,通过这些规则,实现防火墙的核心功能。归纳起来,主要有三种功能:包过滤(filter)、NAT以及包处理(mangle) 3.netfilter:
netfilter才是防火墙真正的安全框架,netfilter位于内核空间
Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:网络地址转换(Network Address Translate), 数据包内容修改, 以及数据包过滤的防火墙功能

三:iptables流程(讲解)

1.流入本机

2.解析(流入本机)
讲解:
当外部的数据进入时通过网卡进入本机后,在网络层时会经过PREROUTING链,PREROUTING链继续前进到达用户层之前,会经过INPUT链。 解析流程:
数据进入(通过网线) --> 链接网卡设备 --> 网络接口层 --> Netfilter -->
在网络层时会经过PREROUTING链 --> TCP UDP协议 --> 进入用户层之前(INPUT链)
--> 到达用户层
3流出本机

4.解析(流出本机)
讲解:
当用户从用户层发出数据之后,会先经过OUTPUT链,在经过了OUTPUT链到达Netfilter防火墙,在经过防火墙到达设备驱动之前,会经过POSTROUTING链,之后在发送出去。 流程图解析:
用户操作命令工具(iptables) --> OUTPUT链 --> ip_tables内核模块 -->
Netfilter(防火墙) --> 网络层 --> 网络接口层 --> POSTROUTING链
-- 设备驱动 --> 网络传输出
5.经过本机

6.解析(经过本机)
讲解:
报文经过路由并且发觉目的并不是本机,在经过PREROUTING链进入本机发现最终目的并不是本机时被转到FORWORD链后经过POSTROUING链转发出去。 流程解析:
数据进入 --> PREROUTING --> FORWARD --> POSTROUTING --> 出去

四:什么是包过滤防火墙

1.什么是包?
在数据传输过程,并不是一次性传输完成的;而是将数据分成若干个数据包,一点一点的传输。

2.什么是包过滤防火墙?
过滤数据包的防火墙。
3.包过滤防火墙如何实现?
通过系统安全框架,过滤数据包。

五:Iptables四表五链的概念

1.什么叫表?
具备某种功能的集合叫做表
2.那四个表,有哪些作用?
filter:  负责做过滤功能呢	:    	INPUT、OUTPUT、FORWARD
nat: 网络地址转换 PREROUTING、INPUT、OUTPUT、POSTROUTING
mangle: 负责修改数据包内容 PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD
raw: 负责数据包跟踪 PREROUTING、OUTPUT 解析内容:
filter:
负责过滤数据包功能(过滤,防火墙) nat :a-b网络,中间经历c网络,本来访问b,但是通过c访问的b,这个时候由a访问c,转变成a访问b,中间就有一个地址转换(网络地址转换,端口映射,地址映射等) mangle:
用于对特定数据包的修改(修改数据包的服务类型、TTL、并且可以配置路由实现QOS)
raw:
跟踪数据包走到那个位置了(决定数据包是否被状态跟踪机制处理)
3.那五条链,运行在那些地方?
1) PREROUTING: 主机外报文进入位置,允许的表mangle, nat(目标地址转换,,通常指响应报文)
2) INPUT:报文进入本机用户空间位置,允许的表filter, mangle
3) OUTPUT:报文从本机用户空间出去的位置,允许filter, mangle, nat
4) FOWARD:报文经过路由并且发觉不是本机决定转发但还不知道从哪个网卡出去,允许filter, mangle(中转)
5) POSTROUTING:报文经过路由被转发出去,允许mangle,nat(源地址转换,把原始地址转换为转发主机出口网卡地址)
五链
PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING

六:iptables全面流程图(详解)

1.解析流程顺序
流入本机: A  --->  PREROUTING  --->  INPUT ---> B
解析:
网络经过该流程才能发出(出去) 流出本机:OUTPUT ---> POSTROUTING ---> B
网络经过该流程才能进入(进来) 经过本机: A ---> OUTPUT ---> POSTROUTING | ---> PREROUTING ---> FORWARD ---> POSTROUTING ---> C ---> PREROUTING ---> INPUT ---> B
2.内容解析
 A ---> OUTPUT ---> POSTROUTING
作用于A阶段(出去) c相当于是一个防火墙
PREROUTING ---> FORWARD ---> POSTROUTING ---> C
作用于C阶段(出去) PREROUTING ---> INPUT ---> B
作用于B阶段(进入)

七:链包含表

filter :  INPUT 、OUTPUT 、FORWARD
nat : PREROUTING 、 OUTPUT、 POSTROUTING
raw : PREROUTING、 OUTPUT
mangle : PREROUTING INPUT FORWARD OUTPUT POSTROUTING

最新文章

  1. php正则获取html图片标签信息(采集图片)
  2. At.js – 用于 Web 应用程序的自动完成库
  3. SqlSever基础 datepart函数 返回现在多少秒
  4. 用rem来做响应式开发
  5. Sciter使用心得
  6. OpenJDK 阅读源代码 Java 实现字节流输入类
  7. Android 4.4 KitKat NotificationManagerService使用具体解释与原理分析(一)__使用具体解释
  8. 【servlet】客户端是否可以访问到WEB-INF下的jsp文件
  9. rhel配置网络yum源
  10. Android 音视频深入 十六 FFmpeg 推流手机摄像头,实现直播 (附源码下载)
  11. HP-Socket v5.0.1:支持 IPv6 及多 SSL 证书
  12. individual project1 12061183
  13. WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
  14. Java学习笔记——IO操作之以图片地址下载图片
  15. 根据ip查询经纬度的接口
  16. mybatis使用注解往postgresql数据库表insert数据[主键自增]的写法
  17. day7回顾
  18. mysql 判断表字段是否存在,然后修改
  19. 利用python 学习数据分析 (学习二)
  20. 20145328 《Java程序设计》第3周学习总结

热门文章

  1. 【LeetCode】1631. 最小体力消耗路径 Path With Minimum Effort
  2. 【LeetCode】349. Intersection of Two Arrays 解题报告(Java & Python)
  3. 【九度OJ】题目1175:打牌 解题报告
  4. 【LeetCode】617. Merge Two Binary Trees 解题报告
  5. 【剑指Offer】包含min函数的栈 解题报告
  6. AUGMIX : A SIMPLE DATA PROCESSING METHOD TO IMPROVE ROBUSTNESS AND UNCERTAINTY
  7. SQLServer中的CTE(Common Table Expression)通用表表达式使用详解
  8. Salesforce LWC学习(三十九) lwc下quick action的recordId的问题和解决方案
  9. 02.python线性数据结构
  10. wordpress搭建网站更改域名后打开网页排版显示错乱解决办法