什么是iptables?
一: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
什么是iptables?的更多相关文章
- iptables
一.在服务器上打开 22.80.9011端口: iptables -A INPUT -p tcp --dport 9011 -j ACCEPT iptables -A OUTPUT -p tcp -- ...
- 浅谈iptables 入站 出站以及NAT实例
--------------本文是自己工作上的笔记总结,适合的可以直接拿去用,不适合的,适当修改即可!--------------- iptbales默认ACCEPT策略,也称通策略,这种情况下可以做 ...
- Failed to stop iptables.service: Unit iptables.service not loaded.
redhat 7 [root@lk0 ~]# service iptables stop Redirecting to /bin/systemctl stop iptables.service Fai ...
- CentOS7安装iptables防火墙
CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #先检查是否安装了iptables service iptables st ...
- linux iptables常用命令之配置生产环境iptables及优化
在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...
- CentOS系统配置 iptables防火墙
阿里云CentOS系统配置iptables防火墙 虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FO ...
- /etc/sysconfig/下找不到iptables文件解决方法
时间:2014-12-19 01:17来源:csdn 作者:大智 举报 点击:5639次 本想做些防火墙策略.防火墙策略都是写在/etc/sysconfig/iptables文件里面的.可我发现我也没 ...
- docker通过iptables修改或新增镜像映射端口
443 8088 22 端口是初始映射端口 [root@SERVER ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAM ...
- lnmp 预设iptables设置
「LNMP」iptables初始配置 首先使用命令iptables -P INPUT ACCEPT允许所有连接,否则容易把自己关在外边.然后使用iptables -F;iptables -X;ip ...
- 关闭SELinux和iptables防火墙
1.关闭SELinux: 编辑SELinux配置文件: [root@Redis selinux]# vim /etc/selinux/config 修改SELINUX配置项为disable SELIN ...
随机推荐
- cmake以源码的方式引入第三方项目
最前 本文将介绍一种以源码的方式引入第三方库的方法 准备 主项目,需要引用第三方库的某些函数 第三方库,以源码的形式提供给主项目使用 注意: 本文的背景:已经将第三方源码下载好. 一个例子 我这里准备 ...
- 【LeetCode】5083. Occurrences After Bigram 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字符串分割遍历 日期 题目地址:https://le ...
- Improving Adversarial Robustness via Channel-Wise Activation Suppressing
目录 概 主要内容 代码 Bai Y., Zeng Y., Jiang Y., Xia S., Ma X., Wang Y. Improving adversarial robustness via ...
- Vue.js高效前端开发 • 【Ant Design of Vue框架基础】
全部章节 >>>> 文章目录 一.Ant Design of Vue框架 1.Ant Design介绍 2.Ant Design of Vue安装 3.Ant Design o ...
- 编写Java程序,编写自定义异常类封装将棋子落在格子中已有棋子的异常
返回本章节 返回作业目录 需求说明: 完善控制台版五子棋,判断用户所下棋子的位置,是否已经存在棋子,如果已经存在,则抛出用户自定义异常,提示用户该位置已经有棋子. 实现思路: 创建用户自定义异常类Go ...
- Zookeeper基础教程(四):C#连接使用Zookeeper
Zookeeper作为分布式的服务框架,虽然是java写的,但是强大的C#也可以连接使用. C#要连接使用Zookeeper,需要借助第三方插件,而现在主要有两个插件可供使用,分别是ZooKeeper ...
- ES开源工具 elastichd 的使用(另一个elasticsearch可视化管理)
1. 获取elastichd镜像 docker pull containerize/elastichd 2. 启动镜像 docker run -p 9800:9800 -d containerize/ ...
- powershell操作excel
https://blog.csdn.net/u010288731/article/details/83120205 如何创建一个Excel 应用程序对象? $xl = new-object -como ...
- Windows Batch 编程 和 Powershell 编程
Batch Script - Functions with Return Values https://www.tutorialspoint.com/batch_script/batch_script ...
- [ SQLAlchemy ] 关于dynamic的“一知半解”
问题提出: 1.粉丝机制 2.评论的点赞功能 这两个功能分别由User类和Comment类来实现,同样定义了多对多的关系,查询的时候用的方法却大不一样,先看看代码吧. ### # User类的中间表 ...