iptables安全技术和防火墙
防火墙:隔离功能
位置:部署在网络边缘或主机边缘,在工作中,防火墙的主要作用是决定哪些数据可以被外网访问以及哪些数据可以进入内网访问,主要在网络层工作
其他类型的安全技术:1、入侵检测系统 2、入侵防御系统 (了解即可)
防火墙有软件防火墙:360,iptables,firewalld
还有硬件防火墙:路由器,交换机,三层交换机
保护范围:1、主机防火墙,服务范围就是当前的主机
2、网络防火墙:服务范围为防火墙一侧的局域网,必经之路
实现方式:1、硬件防火墙,既有专业的硬件来实现防火墙功能,又有软件来进行配合
2、软件防火墙:代码实现判断
网络协议划分:
网络层:包过滤防火墙
应用层(代理服务器):设置数据的进出
linux防火墙:firewalld centos7自带的防火墙
iptables:包过滤防火墙 selinux自带的安全工具
集成在一个内核中:netfilter组件
总结:iptables工作在网络层,针对ip数据包进行过滤和限制,属于用户态
属于典型的包过滤防火墙,体现在对包内的IP地址、端口等信息的处理
面试题:
通信五元素:1,源端口 2,目的端口 3,源IP 4,目的 IP 5, 协议:tcp/udp
SCTP:在网络连接两端之间同时传输多个数据流的协议。SCTP提供的服务与UDP和TCP类似
通信四元素:源/目的 端口 源/目的 IP
iptables的构成和工作机制:根据规则进行匹配,能进就进,不能进则丢弃,对出不做限制
iptables的组成部分:四表五链组成(面试会问)
四表:
raw:连接跟踪机制,可以加快封包穿过防火墙的速度,数据包跟踪
mangle:数据标记
nat:地址转换表
filter:过滤规则表,根据规则来定义或者过滤符合条件的数据包,默认表
#security也算一个表
优先级:security(不再讨论范围之内)→raw→mangle→nat→filter
五链:
INPUT:处理数据包进入本机的规则
OUTPUT:处理数据包发出的规则,一般不作处理,因为基本都在INPUT处理了
prerouting:处理数据包进入本机之前的规则
postrouting:处理数据包离开本机之后的规则 (prerouting postrouting要结合地址转换)
FORWARD:处理数据包转发到其他主机的规则
总结:iptables的规则:表里有链,链里面有规则,规则就是我们自定义的对于数据包的控制命令
四表五链
规则表的作用:容纳各种规则链
规则链的作用:容纳各种防火墙规则
总结:表里有链,链里有规则
管理选项:表示iptables规则的操作方式,如插入、增加、删除、查看等; 增删改查
匹配条件:用来指定要处理的数据包的特征,不符合指定条件的数据包将不会处理; IP地址,端口。协议
控制类型指的是数据包的处理方式,如允许、拒绝、丢弃等。 ACCEP REJECT DROP
注意事项:
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链,一般不这么操作
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
匹配数据:
1、根据表的优先级匹配,在表中从上到下进行检查,找到匹配规则后立即停止,不再表中向下继续查找,如果匹配不到规则,按照链的规则进行处理
2、报文流向(数据走向):
流入本机:prerouting(看需不需要把外网地址转换成内部可以访问的地址,必须要直接到input链)→input链(让不让数据包进入本机,让它进就直接访问用户进程httpd服务)→用户进程(httpd服务)......请求访问......响应(响应就是输入要返回)→数据要返回用户
流出本机:httpd(服务先发出响应)→响应报文(往用户发)→output(直接出,一般不会对出进行限制)→postrouting(看要不要做地址转换,不需要则直接带用户)→用户
转发:数据包进来,肯定不是同一网段,路由转发→forward→数据出去,不允许转发,数据包丢弃
iptables的命令格式:iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
[-t 表名] 也可以不写,不写就是指定filter表
管理选项:(除了v,n都是大写)
-A 在指定链末尾追加一条 例:iptables -A INPUT
-I 在指定链中插入一条新的,未指定序号默认作为第一条 例:iptables -I INPUT
-P 指定默认策略 例:iptables -P OUTPUT ACCEPT
-D 删除(慎用) 例:iptables -t nat -D INPUT 2
-R 修改、替换某一条规则 例:iptables -t nat -R INPUT
-F 清除链中所有规则 例:iptables -F
-L 查看链中的规则 例:iptables -t nat -L
-n 所有字段以数字形式显示
-v 查看时显示更详细信息,常跟-L一起使用 (v,n,L经常结合在一起使用例:vnL)
--line-numbers 规则带编号 例 iptables -t nat -L -n --line-number iptables -t nat -L --line-number
(不常用的)
-X 清空自定义链的规则,不影响其他链 iptables -X
-Z 清空链的计数器(匹配到的数据包的大小和总和)iptables -Z
-S 看链的所有规则或者某个链的规则/某个具体规则后面跟编号
链名:
PREROUTING链:处理数据包进入本机之前的规则。
INPUT链:处理数据包进入本机的规则。
FORWARD链:处理数据包转发到其他主机的规则。
OUTPUT链:处理本机发出的数据包的规则,一般不做处理。
POSTROUTING链:处理数据包离开本机之后的规则。
匹配的条件(都是小写)
-p 指定要匹配的数据包的协议类型
-s 指定要匹配的数据包的源IP地址
-d 指定要匹配的数据包的目的IP地址
-i 指定数据包进入本机的网络接口
-o 指定数据包离开本机做使用的网络接口
--sport 指定源端口号
--dport 指定目的端口号
控制类型:(全部大写)
ACCEPT:允许数据包通过
DROP: 拒绝,直接丢弃数据包,不给出任何回应信息
REJECT:拒绝数据包通过,会给一个响应信息
SNAT: 修改数据包的源ip地址
DNAT: 修改数据包的目的地址
iptables的命令格式:iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
[-t 表名] 也可以不写,不写就是指定filter表
iptables的前置操作:
rpm -q iptables-services 检查是否安装iptables
yum -y install iptables-services 安装iptables
systemctl stop firewalld.service 关闭防火墙
例:查看规则

不用-t指定表名,默认是浏览filter表
-vnL:以数字化详细的显示链中的规则
表中有三个链INPUT(数据包进入),FORWARD(数据包转发),OUTPUT(发出数据包)
且都是允许ACCEPT
例:指定查看nat表规则

也都是允许ACCEPT
例:清空表中所有规则,慎用且用的较少
iptables -F
例:禁止所有主机来ping10地址
![]()

-f filter:指定filter表(不指定表名默认指向filter表)
-A INPUT:在INPUT链插入
-p icmp:指定协议,icmp网际控制报文协议
-j REJECT:指定控制类型为拒绝且会给回应
查看一下

新增规则,让所有主机允许来ping10地址:用-I来进行插入,通过指定序号来往INPUT链插,让所有主机允许来ping10地址
查看一下,第一条的控制类型变为ACCEPT
插入的特点:即配即生效,从上到下匹配,匹配到了就不匹配了,此处第一条控制类型为ACCEPT匹配到了第一条就不往下继续匹配了
补充:在查看 -vnL后加 --line-number 可以为规则前面加上编号,查看更直观

例:指定ip地址,让20地址不能ping通10地址
![]()
是有顺序的,ip地址要写在协议的前面
-A INPUT:在INPUT链添加
-s 192.168.88.20:因为是在20地址ping10地址,20地址是作为源ip地址,所以用-s

当要拒绝多个ip地址进行访问时
![]()
指定多个ip地址要用逗号隔开
例:指定端口拒绝访问
指定端口也有顺序要求,端口要写在协议的后面
![]()
因为要在别的段楼访问22端口,所以22端口是作为目的端口,所以要用--dport
指定只有20地址才能访问80网段
![]()
例:把不想要的规则删除,根据编号来删除

例:修改规则(一般不用,要么直接添加,要么直接删除)
![]()
先设置所以主机都可以和10地址ping通(这条命令本身没有任何意义,因为本身就是允许的)

-R INPUT:修改规则 1:通过序号进行修改
重点:修改链的默认规则 在生产中,iptables所有的链的默认规则都是DROP
在生产中都是按照白名单的形式来进行设置,默认的策略都是拒绝
例:拒绝所有主机来访问10地址
![]()
-P:修改链的规则 不用加控制状态-j,直接加控制类型DROP
这时发现虚拟机卡死了,因为所有都被拒绝访问了,只能进虚拟机进行操作

因为本身就是拒绝所以REJECT没有意义 iptables -D INPUT 1 把它删除
iptables -A INPUT -p tcp --dport 22 -j ACCEPT 把22端口打开
端口要写在协议后面此处sport dport都可以
通用匹配:网络协议、端口、ip地址
整个192.168.88网段禁止访问80端口的服务
![]()

隐藏扩展模块:即拒绝80端口又拒绝20端口,根据端口来进行匹配
![]()
22:80 小的要写在前面,大的在后面,一定要这样写,否则会报错
隐藏模块:-p指定协议时(tcp或udp),指明了是什么协议,就不需要再使用-m来指明扩展模块。
指定多端口可以用冒号的形式,也可以用-m隐藏模块来实现。
-m的作用:可以用明确的形式指出类型:多端口、mac地址、ip地址数据包的状态
用-m的形式指定多端口(用的最多的)
例:![]()
-m multiport:指定多端口,多个端口之间用逗号隔开
ip范围:-m iprange --src-range 源ip地址范围
-m iprange --dst-range 目的ip地址范围
例:![]()
iptables -A INPUT -p icmp -m iprange --src-range 192.168.88.20-192.168.88.30 -j REJECT
拒绝从20地址到30地址来访问10地址(本机地址)
总结:iptables要会1、四表五列,2、会增会删即可,3、指定多端口,范围
相关文章:
iptables安全技术和防火墙
防火墙:隔离功能 位置:部署在网络边缘或主机边缘,在工作中,防火墙的主要作用是决定哪些数据可以被外网访问以及哪些数据可以进入内网访问,主要在网络层工作 其他类型的安全技术:1、入侵检测系统 2、入侵…...
微信小程序开发5
一、自定义组件-插槽 1.1、什么是插槽 在自定义组件的wxml结构中,可以提供一个<slot>节点(插槽),用于承载组件使用者提供的wxml结构 1.2、单个插槽 在小程序中,默认每个自定义组件中允许使用一个<slot>进行占位,这种…...
【算法题】2681. 英雄的力量
题目: 给你一个下标从 0 开始的整数数组 nums ,它表示英雄的能力值。如果我们选出一部分英雄,这组英雄的 力量 定义为: i0 ,i1 ,… ik 表示这组英雄在数组中的下标。那么这组英雄的力量为 max(nums[i0],n…...
fastutil简单测试下性能
前言 简单测试一下fastutil的实现和Java类库实现的速率。 使用jmh进行测试。 简单解释一下,每轮测试预热2次,每次1s;实测2次,每次1秒。 进行5轮测试。数组大小3种。 package fastutil;import it.unimi.dsi.fastutil.ints.IntArr…...
【FAQ】关于无法判断和区分用户与地图交互手势类型的解决办法
一. 问题描述 当用户通过缩放手势、平移手势、倾斜手势和旋转手势与地图交互,控制地图移动改变其可见区域时,华为地图SDK没有提供直接获取用户手势类型的API。 二. 解决方案 华为地图SDK的地图相机有提供CameraPosition类&…...
腾讯云裸金属服务器CPU型号处理器主频说明
腾讯云裸金属服务器CPU型号是什么?标准型BMSA2裸金属服务器CPU采用AMD EPYC ROME处理器,BMS5实例CPU采用Intel Xeon Cooper Lake处理器,腾讯云服务器网分享落进书房武器CPU型号、处理器主频说明: 裸金属服务器CPU处理器说明 腾讯…...
工程安全监测无线振弦采集仪在建筑物中的应用
工程安全监测无线振弦采集仪在建筑物中的应用 工程安全监测无线振弦采集仪是一种用于建筑物结构安全监测的设备,它采用了无线传输技术,具有实时性强、数据精度高等优点,被广泛应用于建筑物结构的实时监测和预警。下面将从设备的特点、应用场…...
【iOS】isKindOfClass和isMemberOfClass方法
前言 这个归根结底还是在考察我们对isa走向图和类的继承的理解,也就是苹果官方这幅图: 接下来的函数调用流程请参考这张图。 1 isKindOfClass方法 1.1 objc_opt_isKindOfClass C函数 查看源码可发现,无论是谁调用isKindOfClass方法都会…...
李飞飞「具身智能」VoxPoser:0预训练完成复杂指令
机器人接入大模型听懂人话 论文地址: https://voxposer.github.io/voxposer.pdf 项目主页: https://voxposer.github.io/ 参考链接: [1]https://twitter.com/wenlong_huang/status/1677375515811016704 [1]https://www.amacad.org/publicatio…...
前端八股文
info 毕业设计(课题、方向 本科毕业设计:家庭医生签约管理系统后台开发(微信小程序) 硕士课题:医学图像分割(婴儿脑分割) 51062319991129351X 邮编 重庆市南岸区 400000 13183849783 // 18728097929 // 13158442955 中国广电四川网络股份有限公司中江…...
前端年度工作述职报告优秀
前端年度工作述职报告优秀篇1 尊敬的各位领导、各位同仁: 大家好!按照20__年度我公司就职人员工作评估的安排和要求,我认真剖析、总结了自己的工作情况,现将本人工作开展情况向各位领导、同仁做以汇报,有不妥之处,希…...
【MyBatis 学习一】认识MyBatis 第一个MyBatis查询
目录 一、认识MyBatis 1、MyBatis是什么? 2、为什么要学习MyBatis? 二、配置MyBatis环境 1、建库与建表 2、创建新项目 3、xml文件配置 (1)配置数据库连接 (2)配置 MyBatis 中的 XML 路径 三、测试&#x…...
TCP 和 UDP
TCP(Transmission Control Protocol,传输控制协议) 是面向连接的协议,即在收发数据前,必须和对方建立可靠的连接,TCP的头部为20个字节。 UDP(User Datagram Protocol,用户数据报协…...
springboot配置自定义数据源(Druid德鲁伊)的步骤。
今天和大家分享下在Springboot中配置自定义数据源Druid的两种方法及步骤。 方法一: 1.在pom.xml配置依赖(注释里面的内容) 2.配置自己的数据源设置,我是在yaml文件中配置的,顺便提醒一下,在配置yaml文件的时候缩进问题一定要注意…...
K8S:容器日志收集与管理
Kubernetes 里面对容器日志的处理方式,都叫作 cluster-level-logging,即:这个日志处理系统,与容器、Pod 以及 Node 的生命周期都是完全无关的。这种设计当然是为了保证,无论是容器挂了、Pod 被删除,甚至节点…...
Flutter系列文章-Flutter进阶
在前两篇文章中,我们已经了解了Flutter的基础知识,包括Flutter的设计理念、框架结构、Widget系统、基础Widgets以及布局。在本文中,我们将进一步探讨Flutter的高级主题,包括处理用户交互、创建动画、访问网络数据等等。为了更好地…...
【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式
文章目录 1. 右值引用和移动语义1.1 左值引用和右值引用1.2 左值引用和右值引用的比较1.3右值引用的使用场景和意义1.4 左值引用和右值引用的深入使用场景分析1.5 完美转发1.5.1 万能引用1.5.2 完美转发 2. 新的类功能2.1 默认成员函数2.2 类成员变量初始化2.3 强制生成默认函数…...
rust学习-线程
Rust 标准库只提供了 1:1 线程模型 Rust 是较为底层的语言,如果愿意牺牲性能来换取抽象,以获得对线程运行更精细的控制及更低的上下文切换成本,使用实现了 M:N 线程模型的 crate 示例 use std::thread; use std::time::Duration;fn main() …...
题目:2180.统计各位数字之和为偶数的整数个数
题目来源: leetcode题目,网址:2180. 统计各位数字之和为偶数的整数个数 - 力扣(LeetCode) 解题思路: 暴力遍历即可。 解题代码: class Solution {public int countEven(int num) {int re…...
3dsmax制作一个机器人
文章目录 建模身子:眼睛:头饰:肩膀手臂腿调整细节 渲染导出objMarmoset Toolbag 3.08渲染给眼睛添加材质,设置为自发光添加背景灯光 建模 身子: 眼睛: 头饰: 肩膀 手臂 腿 调整细节 渲染 导出…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
