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渲染给眼睛添加材质,设置为自发光添加背景灯光 建模 身子: 眼睛: 头饰: 肩膀 手臂 腿 调整细节 渲染 导出…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
