当前位置: 首页 > news >正文

Linux安全技术与防火墙

一、安全技术和防火墙
1.1 安全技术
入侵检测系统:特点是不阻断网络访问,主要是提供报警和时候报警,不主动介入。

入侵防御系统:透明模式工作,对数据包、网络监控、服务攻击、木马蠕虫、系统漏洞等等进行准确的分析和判断。在判定为攻击行为后会立即阻断,主动防御。所有数据在进入本机之前,必须要通过的设备或软件。

防火墙:核心功能:隔离,工作在网络或者主机的边缘,一般在Internet和内网之间。对网络或者主机的数据包基于一定的规则进行检查,根据匹配到的规则放行或拒绝(丢弃数据包)。

只开放允许访问的策略。(白名单机制,拒绝所有,允许个别。)

防水墙:是一种防止内部信息泄露的产品。对外有防火墙的功能,对内是透明模式工作,类似于监控。

 1.2 防火墙
iptables :这个linux自带的防火墙,一般用于内部配置。对外一般不适用(对外都使用专业的)。

firewalld :CentOS7以后默认的防火墙。功能和iptables大体一致。

ufw :是ubantu自带的防火墙,ubantu也有iptables,功能也一致

iptables ufw 和 firewalld都是包过滤防火墙,对数据包进行控制。在网络层对数据包进行选择,选择的依据是防火墙设置的策略。

策略:IP地址,端口,协议。

优点:处理速度快,利于维护。

缺点:无法检查应用层数据,无法对病毒进行处理。

  1. 应用层防火墙:在应用层对数据进行检查,比较安全。

​ 优点:相对更安全,可以精准定位问题。

​ 缺点:所有数据都要检查,会增加防火墙的负载。

  2.iptables防火墙

iptables防火墙工作在网络层,针对数据包实施过滤和限制,属于包过滤防火墙

1.3 内核态和用户态
内核态

涉及到软件的底层代码或者是系统的基层逻辑,以及一些硬件的编码。相对比较复杂,开发人员更关注内核态。

如果数据是内核态处理的,处理速度相对较快。

iptables的过滤规则就是由内核来进行控制的。

用户态

应用层软件层面,多是人为控制的一系列操作,使用功能等。

运维人员一般只考虑用户态。

数据只通过用户态处理,速度相对较慢。

二、iptables防火墙
iptables的配置和策略

2.1 四表五链
iptables的四表:

1.Raw表 :用于控制数据包的状态,可以跟踪数据包的状态

2.Mangle表 :用于修改数据包的头部信息

3.Nat表 :用于网络地址转换,可以改变数据包的源地址和目的地址

4.Filter表 :也是iptables的默认表,不做声明时,默认就是filter表,过滤数据包的进出,以及接收和拒绝数据包

iptables的五链:

PREROUTING链 :处理数据包进入本机之前的规则(路由前)(Nat表)

INPUT链 :处理数据包进入本机的规则(Filter表,是否允许数据包进入)

OUTPUT链 :处理本机发出的数据包的规则,或者是数据包离开本机的规则(Filter表,是否允许数据包发出,一般不做设置)

FORWARD链 :处理数据包转发到其他主机的规则,或者是否允许本机进行数据包转发

POSTROUTING链 :处理数据包离开本机之后的规则(路由后)(Nat表)

通俗的说法:表里面有链,链里面有规则。

四表的优先级

Raw > Mangle > Nat > Filter,匹配规则由高到低。

2.2 数据流向
例:数据转发的过程
按优先级高低查四表里的链,并匹配链里的规则

查PREROUTING链和POSTROUTING链查看地址变换规则,

查FORWARD链是否允许转发,以及转发的具体规则。

例:请求响应的过程(http https服务等)
按优先级高低查四表里的链,并匹配链里的规则

请求:查INPUT链的规则:是否允许该地址或者端口访问web服务。若拒绝,数据包将直接丢弃

响应:查OUTPUT链的规则:是否允许响应,一般不做约束。如拒绝,响应的数据包也被丢弃
 2.3 iptables命令

管理选项 :在表的链中插入、增加、删除、查看规则。

匹配的条件 :数据包的IP地址、端口、协议。

控制类型 :允许,拒绝,丢弃,地址转换。

注意事项

  1. 不指定表名的话,默认指的是filter
  2. 不指定链名的话,默认指的是所有链(此乃禁止行为!)
  3. 除非设置了链的默认策略,否则必须指定匹配条件(一般都要指定匹配条件)
  4. 大部分选项、所有的链名和控制类型都是大写

2.3.1 控制类型
ACCEPT :允许数据包通过

DROP :直接丢弃数据包,且没有任何回应信息

REJECT :拒绝数据包通过,数据包也会被丢弃,但是会有响应的信息

SNAT :修改数据包的源地址(source)

DNAT :修改数据包的目的地址(destination)
 

2.3.2 常用管理选项
-A :在链中添加一条规则,在链尾添加。

-I :指定位置插入一条规则。

-P :默认指定规则,链的规则一般都是设置成拒绝(默认是允许)

-D :删除规则

-R :修改规则(慎用)

-vnL :-v显示详细信息,-n数字形式展示内容,-L查看

--line-numbers :显示规则的编号,一般和查看一起使用

-F :清空链中的所有规则(慎用)

-X :清除自定义链中的规则
 

2.3.3 常用匹配条件
-p :指定协议类型

-s :指定匹配的源IP地址

-d :指定匹配的目的IP地址

-i :指定数据包进入本机的网络设备(指定网卡设备,如ens33)

-o :指定数据包离开本机的网络设备

--sport :指定源端口

--dprot :指定目的端口

-m :使用扩展模块,扩展模块的使用方法在2.4内容中有介绍
 2.3.4 iptables的命令格式 

注意事项

  1. [-t 表名]不指定时默认指定filter
  2. [-j 控制类型],所有控制都要在前面 -j
  3. 需要先安装iptablesiptables-services,安装完成后启动并enable服务iptables
  4. 命令立即生效,不需要重启服务,重启服务会恢复默认策略
2.3.5 iptables匹配原则
  1. 每个链中的规则都是从上到下的顺序依次匹配,匹配到之后就不再向下匹配。
  2. 如果链中没有规则,则执行链的默认策略进行处理。
2.4 iptables实例

例:插入规则

拒绝所有主机来ping本机

在上一行后再添加一行

在第一行插入规则

指定源IP地址20.0.0.20进行控制

对多个源IP地址时,用逗号隔开

指定端口,端口要写在协议后面

拒绝指定IP20.0.0.20通过ssh服务远程登录主机

拒绝指定IP20.0.0.20获取本机的web服务

2.5 iptables的备份和保存
​ iptables 的配置文件保存在 /etc/sysconfig/iptables,每次重启服务都会重新读取配置文件里的规则

也可以通过iptables-save把当前防火墙配置保存在文件中,每次需要读取这个配置时通过iptables-restore命令获取配置,这个获取配置也是临时生效。可以配合脚本在系统启动时自动加载配置
 

2.6 iptables自定义链

创建自定义链

修改自定义链名

删除自定义链

2.7 地址转换
2.7.1 snat和dnat
snat :源地址转换

内网—外网 :内网IP转换成可以访问外网的IP

内网的多个主机可以只有一个有效的公网IP地址访问外部网络

dnat :目的地址转换

外部用户,可以通过一个公网地址访问服务器内部的私网服务。

私网的IP和公网的IP做一个映射。
 

2.7.2 实验
1、test1 :20.0.0.10 ,nginx服务

2、test2 :两个网卡设备:

      ens33:20.0.0.254(私网的网关)
      ens36:12.0.0.254(用来模拟test3的地址是公网地址)
    模拟test1的公网IP :10.0.0.10(test1的地址转换成10.0.0.10和test3进行通信)
3、test3 :12.0.0.10 ,nginx服务

要求:在test2上配置防火墙,使test1作为私网地址,test3作为公网地址,观察双方获取对方web服务时,/var/log/nginx/access.log中记录的访问主机地址,理解NAT的工作方式。

对test1,test2,test3的IP地址分别设置。其中test2两个网卡的IP地址分别作为test1和test3的网关地址。

对test2:

Linux 内核参数的配置文件/etc/sysctl.conf

源地址转换:

  • -t nat :指定表为nat表
  • -A POSTROUTING :添加规则到链
  • -s 20.0.0.0/24 :指定网段
  • -o :指定输出设备
  • -j SNAT :指定控制参数SNAT
  • --to 10.0.0.10 :20.0.0.0/24网段的源地址转换为10.0.0.10这个公网IP地址

目的地址转换:

-d 10.0.0.10 :指定作为目的地址转换的IP地址
-i :从指定设备进入本机
-p :指定协议
--dport :指定端口
-j DNAT :使用目的地址转换
--to 20.0.0.10:80 :外网想要访问内网的20.0.0.10:80(端口号80也可以不加)的web服务,只需要访问公网的10.0.0.10这个IP地址。

2.7.3 tcpdump抓包工具

tcpdump是Linux系统自带的抓包工具。

固定抓包:

tcp :指定抓包的协议,这个位置是第一个参数,也可以不指定
-i :只抓经过指定设备的包
-t :不显示时间戳(可以不加)
-s0 :抓取完整的数据包
-c 10 :抓几个数据包(10就是抓10个包)
dst port :指定抓包的目的端口
src net :指定抓包的IP网段,如果要指定主机把net改成host
-w :保存结果到指定文件


  动态抓包:

 

 一般把抓包的记录保存在.cap文件,导出到Windows系统用wireshark之类的抓包软件分析。需要注意的是,使用wireshark分析,需要tcpdump指定选项-s0获取抓包的完整格式。

相关文章:

Linux安全技术与防火墙

一、安全技术和防火墙 1.1 安全技术 入侵检测系统:特点是不阻断网络访问,主要是提供报警和时候报警,不主动介入。 入侵防御系统:透明模式工作,对数据包、网络监控、服务攻击、木马蠕虫、系统漏洞等等进行准确的分析和…...

C#中简单Socket编程

C#中简单Socket编程 Socket分为面向连接的套接字(TCP套接字)和面向消息的套接字(UDP 套接字)。我们平时的网络编程是对Socket进行操作。 接下来,我用C#语言来进行简单的TCP通信和UDP通信。 一、TCP通信 新建项目SocketTest,首先添加TCP通信的客户端代…...

UNIAPP_ReferenceError: TextEncoder is not defined 解决

错误信息 1、安装text-decoding npm install text-decoding2、main.js import { TextEncoder, TextDecoder } from text-decoding global.TextEncoder TextEncoder global.TextDecoder TextDecoder...

科普文:微服务技术栈梳理

概叙 如上两图所示,微服务架构下,需要的组件很多,上面中也并未列全。下面将梳理一下国内微服务架构下,用到的技术栈,仅供参考。 科普文:12种常见的软件架构-CSDN博客 没有最好的架构,只有最适…...

如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围

如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围 在这篇博客中&#xff0c;我将介绍如何使用HTML和JavaScript读取文件夹中的所有图片&#xff0c;并显示这些图片以及它们的RGB范围。这个项目使用现代浏览器提供的<input type"file" webkitdirecto…...

PDF公式转Latex

文章目录 摘要数据集 UniMER介绍下载链接 LaTeX-OCRUniMERNet安装UniMER 用的数据集介绍下载链接 PDF-Extract-Kit整体介绍效果展示评测指标布局检测公式检测公式识别 使用教程环境安装参考[模型下载](models/README.md)下载所需模型权重 在Windows上运行在macOS上运行运行提取…...

excel 百分位函数 学习

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、函数说明PERCENTILE 函数PERCENTILE.inc 函数PERCENTILE.exc 函数QUARTILE.EXC 函数 二、使用步骤总结 前言 excel 百分位函数 Excel提供了几个函数用于…...

(十一) Docker compose 部署 Mysql 和 其它容器

文章目录 1、前言1.1、部署 MySQL 容器的 3 种类型1.2、M2芯片类型问题 2、具体实现2.1、单独部署 mysql 供宿主机访问2.1.1、文件夹结构2.1.2、docker-compose.yml 内容2.1.3、运行 2.2、单独部署 mysql 容器供其它容器访问&#xff08;以 apollo 为例&#xff09;2.2.1、文件…...

提高项目透明度:有效的跟踪软件

国内外主流的10款项目进度跟踪软件对比&#xff1a;PingCode、Worktile、Teambition、Tower、Asana、Trello、Jira、ClickUp、Notion、Liquid Planner。 在项目管理中&#xff0c;确保进度跟踪的准确性与效率是每位项目经理面临的主要挑战之一。选用合适的项目进度跟踪软件不仅…...

大模型生成人物关系思维导图的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

精通 mysqldumpslow:深度分析 MySQL 慢查询日志

引言 在数据库管理与优化的领域中&#xff0c;慢查询日志是识别性能瓶颈的金矿。mysqldumpslow 工具是挖掘这座金矿的利器&#xff0c;它帮助我们分析 MySQL 慢查询日志并提取关键信息。本文将详细介绍 mysqldumpslow 的核心选项&#xff0c;并通过实例展示如何使用这些选项来…...

C# Winform之propertyGrid控件分组后排序功能

在 WinForms 的 PropertyGrid 控件中&#xff0c;你可以通过多种方式对属性进行排序&#xff0c;包括按类别&#xff08;Category&#xff09;排序以及按属性名称排序。默认情况下&#xff0c;PropertyGrid 控件会根据 [Category] 和 [DisplayName] 属性装饰器对属性进行分组和…...

Java基础(十九):集合框架

目录 一、Java集合框架体系二、Collection接口及方法1、添加2、判断3、删除4、其它 三、Iterator(迭代器)接口1、Iterator接口2、迭代器的执行原理3、foreach循环 四、Collection子接口1&#xff1a;List1、List接口特点2、List接口方法3、List接口主要实现类&#xff1a;Array…...

execute_script与JS

JavaScript简称JS&#xff0c;有的测试场景需要JS脚本辅助完成Selenium无法做到的测试工作。webdriver提供了execute_script()方法调用JS代码。execute_script()可以在当前窗口/框架中执行JS脚本&#xff0c;并返回结果。可以使用它操作DOM元素、获取元素属性、执行异步操作等。…...

访问 Postman OAuth 2.0 授权的最佳实践

OAuth 2.0 代表了 web 安全协议的发展&#xff0c;便于在多个平台上进行授权服务&#xff0c;同时避免暴露用户凭据。它提供了一种安全的方式&#xff0c;让用户可以授权应用程序访问服务。 在 Postman 中开始使用 OAuth 2.0 Postman 是一个流行的API客户端&#xff0c;支持 …...

《BASeg: Boundary aware semantic segmentation for autonomous driving》论文解读

期刊&#xff1a;Neural Networks | Journal | ScienceDirect.com by Elsevier 年份&#xff1a;2023 代码&#xff1a;https://github.com/Lature-Yang/BASeg 摘要 语义分割是自动驾驶领域街道理解任务的重要组成部分。现有的各种方法要么专注于通过聚合全局或多尺度上下文…...

高效利用iCloud指南

高效利用iCloud的指南主要包括以下几个方面&#xff1a; 一、注册与登录 创建Apple ID&#xff1a; 如果尚未拥有Apple ID&#xff0c;可以在苹果官网或iOS设备的设置中创建。Apple ID是访问iCloud服务的前提。登录iCloud&#xff1a; 在苹果设备上&#xff0c;进入“设置”应…...

【MySQL】常见的MySQL日志都有什么用?

MySQL日志的内容非常重要&#xff0c;面试中经常会被问到。同时&#xff0c;掌握日志相关的知识也有利于我们理解MySQL 底层原理&#xff0c;必要时帮助我们排查解决问题。 MySQL中常见的日志类型主要有下面几类(针对的是InnoDB 存储引擎): 错误日志(error log):对 MySQL 的启…...

IDEA社区版使用Maven archetype 创建Spring boot 项目

1.新建new project 2.选择Maven Archetype 3.命名name 4.选择存储地址 5.选择jdk版本 6.Archetype使用webapp 7.create创建项目 创建好长这样。 检查一下自己的Maven是否是自己的。 没问题的话就开始增添java包。 [有的人连resources包也没有&#xff0c;那就需要自己添…...

C/C++ list模拟

模拟准备 避免和库冲突&#xff0c;自己定义一个命名空间 namespace yx {template<class T>struct ListNode{ListNode<T>* _next;ListNode<T>* _prev;T _data;};template<class T>class list{typedef ListNode<T> Node;public:private:Node* _…...

android studio开发

Kotlin 编程简介 | Android Basics Compose - First Android app | Android Developers (google.cn) 这是官网的教程&#xff0c;实现试一下。 之后进入课程 您的第一个 Kotlin 程序 (google.cn) 程序可以被视为一系列指示计算机或设备执行某项操作的指令&#xff0c;...

PostgreSQl 物化视图

物化视图&#xff08;Materialized View&#xff09;是 PostgreSQL 提供的一个扩展功能&#xff0c;它是介于视图和表之间的一种对象。 物化视图和视图的最大区别是它不仅存储定义中的查询语句&#xff0c;而且可以像表一样存储数据。物化视图和表的最大区别是它不支持 INSERT…...

Win10工具:批量word转png图片

首先声明这个小工具是小编本人开发的&#xff0c;无任何广告&#xff0c;会员收费机制等&#xff0c;永久使用。允许公司或个人使用&#xff0c;不允许倒卖&#xff0c;否则发现后会追究法律责任&#xff0c;毕竟开发不易。工具是用python开发的。 功能非常单一&#xff0c;就…...

期货量化交易客户端开源教学第八节——TCP通信服务类

private FReciveStr: AnsiString; {接收到的数据} IsConErr: Boolean; {网络连接是否失败} FSocket_LB: Integer; {TCP连接类别,0为交易,1为行情,2为查询} FRetryCount: Integer; {网络连接重试次数} FLoginErrEvent: TLoginErrEvent; {…...

bi项目笔记

1.bi是什么 bi项目就是商业智能系统&#xff0c;也就是数据可视画、报表可视化系统&#xff0c;如下图的就是bi项目了 2.技术栈...

金蝶云苍穹-插件开发(四)GPT开发相关插件

我只对GPT开发的相关插件进行讲解&#xff0c;因为我的是插件开发教程&#xff0c;关于GPT的一些提示词的写法&#xff0c;GPT任务的配置&#xff0c;请去金蝶云苍穹的文档和社区内学习。 GPT自定义操作 GPT自定义操作的代码的类要实现 IGPTAction 这个接口&#xff0c;这个接…...

【机器学习】精准农业新纪元:机器学习引领的作物管理革命

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 精准农业的背景与现状&#x1f341;精准农业的概念与发展历程&#x1f342;国内外精准农业实践案…...

一键掌握天气动态 - 基于Vue和高德API的实时天气查询

前言 本文将学习如何使用Vue.js快速搭建天气预报界面,了解如何调用高德地图API获取所需的天气数据,并掌握如何将两者有机结合,实现一个功能丰富、体验出色的天气预报应用 无论您是前端新手还是有一定经验,相信这篇教程都能为您带来收获。让我们一起开始这段精彩的Vue.js 高德…...

PostgreSQL修改最大连接数

在使用PostgreSQL 的时候&#xff0c;经常会遇到这样的错误提示&#xff0c; sorry, too many clients already&#xff0c;这是因为默认PostgreSQL最大连接数是 100, 一般情况下&#xff0c;个人使用时足够的&#xff0c;但是在生产环境&#xff0c;这个连接数是远远不够的&am…...

C# SqlSugar 如何使用Sql语句进行查询,并带参数进行查询,防注入

一般ORM查询单表数据已经是很简单的一种方式了 详情可以看我的另一篇文章&#xff1a;ORM C# 封装SqlSugar 操作数据库_sqlsugar 基类封装-CSDN博客 下面是介绍有些数据是需要比较复杂的SQL语句来进行查询的时候&#xff0c;则需要自行组装SQL语句来进行查询&#xff0c;下面…...