Linux -------------------设置防火墙和SELinux

(一)防火墙概述

        防火墙的概念:防火墙是一种非常重要的网络安全工具,它是网络安全的重要组成部分,用于保护计算机网络免受未经授权的访问、恶意攻击和数据泄漏等威胁等。

防火墙的特点

防火墙通常具备以下几个特点。
         位置权威性:网络规划中,防火墙必须位于网络的主干线路。只有当防火墙是内外部网络之间通信的唯一通道时,才可以全面、有效地保护企业内部的网络安全。
        检测合法性:防火墙最基本的功能是确保网络流量的合法性,只有满足防火墙策略的数据包才能够进行相应转发。
         性能稳定性:防火墙处于网络边缘,它是连接网络的唯一通道,时刻都会经受网络的考验,所以其稳定性对于网络安全而言,至关重要。
         防火墙的分类方法多种多样,不过从传统意义上讲,防火墙大致可以分为三大类,分别是“包过滤”、“应用代理”和“状态检测”。无论防火墙的功能多么强大,性能多么完善,归根结在这三种技术的基础之上进行功能扩展的。

iptables 与 firewall

       对于Linux服务器而言,采用netfilter/iptables数据包过滤系统,能够节约软件成本,并可以提供强大的数据包过滤控制功能,iptables是理想的防火墙解决方案。
        在RHEL8系统中,firewalld防火墙取代了iptables防火墙。就现实而言,iptables与firewalld 都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。iptables 服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。换句话来说,当前在Linux系统中其实存在多个防火墙管理工具,旨在方便运维人员管理Linux系统中的防火墙策略,只需要配置妥当其中的一个就足够了。虽然这些工具各有优劣,但它们在防火墙策略的配置思路上是保持一致的。

NAT 基础知识

NAT(Network Address Translation,网络地址转换)位于使用专用地址的Intranet和使用公用地址的Internet之间,主要有以下几种功能:

(1)从Intranet 传出的数据包由NAT将它们的专用地址转换为公用地址。

(2)从Internet传入的数据包由NAT将它们的公用地址转换为专用地址。

(3)支持多重服务器和负载均衡。
(4)实现透明代理。
       在内网中计算机使用未注册的专用IP地址,而在与外部网络通信时,使用注册的用IP地址,大幅降低了连接成本。同时,NAT也起到将内部网络隐藏起来,保护内部网络作用,因为对外部用户来说,只有使用公用IP地址的NAT是可见的,类似于防火墙的安全措施。


1.NAT的工作过程


  (1)客户机将数据包发给运行NAT的计算机。
(2)NAT将数据包中的端口号和专用的IP地址换成它自己的端口号和公用的IP地,然后将数据包发给外部网络的目的主机,同时在映像表中记录一个跟踪信息,以便向客机发送回答信息。
(3)外部网络发送回答信息给NAT。
(4)NAT将收到的数据包的端口号和公用IP地址转换为客户机的端口号和内部网络
用的专用IP地址并转发给客户机。
        以上步骤对于网络内部的主机和网络外部的主机都是透明的,对它们来讲就如同直接信通一样。
 


 

NAT的分类:

(1)SNAT:指修改第一个包的源IP地址。SNAT会在包送出之前的最后一刻做好Post-Routing的动作。Linux中的IP伪装(MASQUERADE)就是SNAT的一种特殊形式。

(2)DNAT:指修改第一个包的目的IP地址。DNAT总是在包进入后立即进行Pre-Routing动作。端口转发、负载均衡和透明代理均属于DNAT。

(二)SELinux

          SELinux(Security-Enhanced Linux,安全增强型 Linux)是美国国家安全局(National Security Agency,NSA)对于强制访问控制的实现,是Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在它的任务中所需要的文件。2.6及以上版本的Linux内核都已经集成 SELinux 模块。简言之,SELinux 是一个强制访问控制机制,与传统的自主访问控制相比,它提供了更多的安全性和精细的权限管理,有助于防止潜在的安全漏洞和攻击。

DAC

        Linux上传统的访问控制标准是DAC(Discretionary Access Control,自主访问控制)。在这种形式下,一个软件或守护进程以UID(User ID)或 SUID(Set owner User ID)的身份运行,并且拥有该用户的目标(文件、套接字以及其他进程)权限。这使恶意代码很容易运行在特定权限之下,从而取得访问关键的子系统的权限。而最致命问题是,root用户不受任何管制,系统上任何资源都可以无限制地被访问。在传统的 DAC 模型中,访问资源的权限受到用户或进程的用户标识(UID)和文件的权限位的控制。这意味着进程以其拥有者的权限运行,恶意代码可能以特权用户的身份运行,并访问敏感资源。根用户(UID 0)拥有无限制的访问权限,这是一个潜在的安全风险。


MAC

        在 SELinux 中,除了 DAC 模型中的 UID 和文件权限之外,还引入了更严格的安全策略,以确定哪些进程可以访问哪些资源。这意味着即使进程以 root 用户身份运行,也需要遵守 SELinux 策略来确定其是否可以访问资源。进程的类型和资源的类型都被考虑在内,从而限制了恶意代码的权限和活动范围

        在使用了SELinux的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。
        这样即使进程是以root身份运行的,也需要判断这个进程的类型以及允许访问的资源类型才能决定是否允许访问某个资源。进程的活动空间也可以被压缩到最小。即使是以root 身份运行的服务进程,一般也只能访问到它所需要的资源。即使程序出了漏洞,影响范围也只在其允许访问的资源范围内,安全性大幅增加。这种权限管理机制的主体是进程,也称为MAC(Mandatory Access Control,强制访问控制)。
        SELinux 实际上就是MAC理论最重要的实现之一,并且SELinux从架构上允许DAC和MAC两种机制都可以起作用,所以,在RHEL8系统中,实际上DAC和MAC机制是共同使用的,两种机制共同过滤作用能达到更好的安全效果。


SELinux工作机制

SELinux 基于一组策略规则(Policy)来控制系统资源的访问。以下是相关概念:

  • 主体(Subject):主体通常是进程或程序,它们试图访问资源。
  • 目标(Object):目标是系统中的资源,例如文件、套接字或进程。
  • 策略(Policy):策略数据库中包含了 SELinux 规则,决定哪些主体可以访问哪些目标。
  • 模式(Mode):SELinux 支持多种工作模式,如强制模式(Enforcing)和宽松模式(Permissive)   ,用于控制策略的执行严格程度。

        当主体(例如程序)尝试访问目标(例如文件)时,SELinux 安全服务器会在策略数据库中检查是否允许这种访问。如果 SELinux 安全服务器授予权限,主体就可以访问目标。这种方式确保了更细粒度的权限控制和更高级别的系统安全性。如果SELinux安全服务器拒绝了权限,就会在/var/log/message中记录一条拒绝信息。

(三)使用firewalld服务

           RHEL 8系统集成了多款防火墙管理工具,其中 firewalld提供了支持网络/防火墙区域定义网络链接以及接口安全等级的动态防火墙管理工具——Linux系统的动态防火墙管理器(Dynamic Firewall Manager of Linux Systems)。 Linux 系统的动态防火墙管理器拥有基于CLI命令行界面)和基于GUI(图形用户界面)的两种管理方式。 相较于传统的防火墙管理配置工具,firewalld支持动态更新技术并加入了区域的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生场景的不同选择合适的策略集合,从而实现防火墙策略之间的快速切换。

        例如,有一台笔记本电脑,每天都要在办公室、咖啡厅和家里使用。按常理来讲,这三者的安全性按照由高到低的顺序排列,应该是家庭、公司办公室、咖啡厅。所以,希望为这台笔记本电脑指定如下防火墙策略规则:在家中允许访问所有服务;在办公室内仅允许访问文件共享服务;在咖啡厅仅允许上网浏览。搁以前,需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合,然后轻点鼠标就可以自动切换了,从而极大地提升了防火墙策略的应用效率。firewalld中常见的区域名称(默认为public)以及相应的策略规则如下表所示。

firewalld中常用的区域名称以及相应的策略规则
区城默认策略规则
 trusted允许所有的数据包
home拒绝流入的流量,除非与流出的流量相关;而如果流量与SSH、mdns、ipp-client、amba-client与 dhcpv6-client服务相关,则允许流量
internal等同于home区域
work拒绝流入的流量,除非与流出的流量数相关;而如果流量与SSH、ipp-client与dhcpv6-client服 务相关,则允许流量
public拒绝流入的流量,除非与流出的流量相关;而如果流量与 SSH、dhepv6-client 服务相关,则允许流量
external拒绝流人的流量,除非与流出的流量相关,而如果流量与SSH服务相关,则允许流量
dmz拒绝流入的流量,除非与流出的流量相关,而如果流量与SSH服务相关,则允许流量
block拒绝流入的流量,除非与流出的流量相关
drop拒绝流入的流量,除非与流出的流量相关

使用终端管理工具


        命令行终端是一种高效率的工作方式,fiewall-cmd 是firewalld 防火墙配置管理工具的CLI(命令行界面)版本。它的参数一般都是以“长格式”来提供的,但幸运的是,RHEl 8系统支持部分命令的参数补齐。现在除了能用 Tab键自动补齐命令或文件名等内容之外,还可以用 Tab键来补齐下表中的长格式参数。

firewall-cmd命令中使用的参数以及作用
参数作用
--get-defaultzone查询默认的区域名称
--set-default-zone=<区域名称>设置默认的区域,使其永久生效
--get-zones显示可用的区域
--get-services显示预先定义的服务
--get-active zones显示当前正在使用的区域与网卡名称
--add-source=将源自此IP或子网的流量导向指定的区域
--remove source=不再将源自此IP或子网的流量导向
--add-interface=<网卡名称>某个指定区域将源自该网卡的所有流量都导向某个指定区域
--change interface=<网卡名称>
将某个网卡与区域关联
--list-all显示当前区域的网卡配置参数、资源、端口以及服务等信息
--list-all-zones显示所有区域的网卡配置参数、资源、端口以及服务等信息
--add-service=<服务名>设置默认区域允许该服务的流量
--add-port=<端口号/协议>设置默认区域允许该端口的流量
--remove-service=<服务名>设置默认区域不再允许该服务的流量
--remove port=<端口号/协议>设置默认区域不再允许该端口的流量
--reload让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
--panic on开启应急状况模式
--panic off关闭应急状况模式


        与Linux系统中其他的防火墙策略配置工具一样,使用firewalld配置的防火墙策略默认为运行时模式,又称为当前生效模式,而且系统重启后会失效。如果想让配置策略一直存在,就需要使用永久模式,方法就是在用 firewall-cmd 命令正常设置防火墙策略时添加permanent叁数,这样配置的防火墙策略就可以永久生效了。但是永久生效模式有一个的特点,就是使用它设置的策略只有在系统重启之后才能自动生效。如果想让配置的策略立即生效,需要手动执行 firewall-cmd-reload命令。

用命令设置防火墙策略


 
1)systemctl命令速查

systemctl start nfs-server.service . # 启动nfs服务
systemctl start firewalld.service    #启动防火墙
systemctl stop firewalld.service     #停止防火墙
systemctl reloadt firewalld.service  #重载配置
systemctl restart firewalld.service # 重启服务 
systemctl enable nfs-server.service  #设置开机自启动
systemctl disable nfs-server.service # 停止开机自启动
systemctl status nfs-server.service  #查看服务当前状态
systemctl restart nfs-server.service #重新启动某服务
systemctl list-units --type=service  #查看所有已启动的服务
systemctl list-units-files|grep enavle # 查看所有已启动的服务列表
systemctl --failed                   #查看启动失败的服务列表



2)firewall-cmd命令速查

firewall-cmd --state                 #查看防火墙状态
firewall-cmd --reload              #更新防火墙规则
firewall-cmd --state                #查看防火墙状态
firewall-cmd --reload             #重载防火墙规则
firewall-cmd--list-ports         #查看所有打开的端口
firewall-cmd--list-services      #查看所有允许的服务
firewall-cmd--get-services      #获取所有支持的服务

3)区域相关命令速查 

firewall-cmd --list-all-zones                     #查看所有区域的信息
firewall-cmd --get-active-zones                   #查看活动区域信息
firewall-cnd --get-default-zone                   #设置public为默认区域信息
firewall-cmd --set-default-zone-public            #查看默认区域信息
firewall-cmd --zone-public --add-interface-eth0   #接口eth0加入区域public


4)接口相关命令速查

tirewall-cmd --zone-public --remove-interface-ens160  #从区域pubiic中副除接口 ens160
firewall-cmd --zone-default --change-interface-ens160 #修改接口ens160所属区域为default
firewall- cmd --get- zone-of-interface-ens160         #查看接口ens160所属区域

5)端口控制命令速查 

firewall-cmd --add-port=80/tcp --permanent               #永久添加80端口例外(全局)
firewall-cmd --remove-port=80/tcp --permanent            #永久删除 80端口例外(全局)
firewall-cmd --add-port=65001-65010/tcp --permanent      #永久增加65001-65010例外(全局)
firewall-cmd --zone=public --add-port=80/tcp --permanent  #永久添加80端口例外(区域 public)
firewall-cmd --zone=public --remove-port=80/tcp --permanent#永久删除80端口例外(区域 public)
firewall-cmd --zone=public --add-port=65001-65010/tcp --permanent#永久增加65001-65010例外(区域public)
firewall-cmd--query-port=8080/tcp               #查询端口是否开放
firewall-cmd --permanent --add-port=80/tcp      #开放80端口
firewall-cmd --permanent --remove-port=8080/tcp #移除端口
firewall-cmd --reload                           #重启防火墙(修改配置后要重启防火墙)


6)项目实战

(1)查看firewalld服务当前状态和使用的区域。

# firewall-cmd --state
# systemctl restart firewalld
#firewall-cmd --get-default-zone
 


(2)查询防火墙生效ens160网卡在 firewalld服务中的区域。

# firewall-cnd --get-active-zones#查看当前防火墙中生效的域
# firewall-cmd --set-default-zone=trusted _#设定默认域 


(3)把firewalld 服务中ens160网卡的默认区域修改为external,并在系统重启后生效,分别查看当前与永久模式下的区域名称。


 

 firewall-cnd --11st-all --zone-work   //查看指定与的防火墙策略

firewall-cnd --permanent        --zone-external        --change-interface=ens160

firewall-cmd --get-zone-of-interface =ens160
firewall-cnd --permanent        --get-zone-of-interface=ens160



(4)把firewalld服务的当前默认区域设置为 public

#firewall-cmd --set-default-zone-public
#firewall-cmd --get-default-zone


(5)启动/关闭firewalld 防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用)

# firewall-cmd?--panic-on
#firewall-cmd?--panic-off



(6)查询public 区域是否允许请求SSH和HTTPS协议的流量。

# firewall-cmd        --zone-public --query-service-ssh
#firewall-cmd        --zone-public --query-service-https


(7)把firewalld服务中请求HTTPS协议的流量设置为永久允许,并立即生效。

#firewall-cmd --get-services                        #查看所有可以设定的服务
#firewall-cmd --zone=public --add-service-https
#firewall-cmd --permanent --zone-public --add-service=https
#firewall-cmd --reload
#firewall-cmd --list-all                                #查看生效的防火墙策略
#firewall-cmd--list-all                                #查看生效的防火墙策略



(8)把firewalld服务中请求HTTPS协议的流量设置为永久拒绝,并立即生效

# firewall- cmd --permanent  -- zone-public       - - remove-service-https
#firewall-cmd --reload
]#firewall-cmd --list-all                        #查看生效的防火墙策略


(9)把在firewalld服务中访问8088和8089端口的流量策略设置为允许,但仅限当前生效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/127821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】备战校赛Day1

日期:11.1 星期二 L1-001 Hello World 题目描述 这道超级简单的题目没有任何输入。 你只需要在一行中输出著名短句“Hello World!”就可以了。 输入样例: 无 输出样例: Hello World! 解题代码 int main() {printf("Hello World!");return 0; } 该题较为简单,但要注…

基于Tensorflow卷积神经网络玉米病害识别系统(UI界面)

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 Tensorflow是一个流行的机器学习框架&#xff0c;可用于训练和部署各种人工智能模型。玉米病害识别系统基于Tensorf…

[idea]关于idea开发乱码的配置

在JAVA开发中&#xff0c;一般统一设置为UTF-8的编码&#xff0c;包括但不限于开发工具、日志架构、虚拟机、文件编码等。常见配置如下&#xff1a; 1、IDEA工具 在idea64.exe.vmoptions、idea.exe.vmoptions中添加&#xff1a; -Dfile.encodingUTF-8 2、JAVA 运行在window…

chat2db初步使用和体验AI

今天下载chat2db体验了下将主要功能和使用截图总结下&#xff1a; 功能&#xff1a; 1.传统客户端能使用的功能基本都有&#xff0c;并且增加了导出excel等便捷的能力。 2.报表功能&#xff1a; 可以根据查询结果进行对应报表可视化显示 3.AI解析sql 可以根据输入的汉语例如…

开源的网站数据分析统计平台——Matomo

Matomo 文章目录 Matomo前言一、环境准备1. 整体安装流程2.安装PHP 7.3.303.nginx配置4.安装matomo4.1 访问安装页面 http://192.168.10.45:8088/index.php4.2 连接数据库4.3 设置管理员账号4.4 生成js跟踪代码4.5 安装完成4.6 警告修改4.7 刷新页面&#xff0c;就可以看到登陆…

软件测试报告所需周期和费用简析

软件测试报告是在软件开发和测试过程中生成的重要文档之一。它提供了对软件系统经过全面测试后的状态和质量的详细描述&#xff0c;以记录软件测试的过程和结果。 生成一个完整的测试报告需要根据软件项目的规模和复杂性来确定时间。较大规模和复杂的软件项目可能需要更长的时…

【错误解决方案】ModuleNotFoundError: No module named ‘feather‘

1. 错误提示 在python程序中&#xff0c;尝试导入一个名为feather的模块&#xff0c;但Python提示找不到这个模块。 错误提示&#xff1a;ModuleNotFoundError: No module named feather 2. 解决方案 出现这种情况&#xff0c;有可能是因为你还没有安装这个模块&#xff0c;…

Flutter 小技巧之不一样的思路实现炫酷 3D 翻页折叠动画

今天聊一个比较有意思的 Flutter 动画实现&#xff0c;如果需要实现一个如下图的 3D 折叠动画效果&#xff0c;你会选择通过什么方式&#xff1f; 相信可能很多人第一想法就是&#xff1a;在 Dart 里通过矩阵变换配合 Canvas 实现。 因为这个效果其实也算「常见」&#xff0c;…

使用 PyTorch 构建自定义 GPT

一、介绍 介绍大模型&#xff0c;首先考虑一下使用 ChatGPT、Bing Chat 或 Bard 。您是否想过拥有自己的 ChatGPT 会是什么样子&#xff1f;想象一下创建自己的 GPT 模型的兴奋程度。这确实是一种难以置信的感觉&#xff01; 为了开始构建自定义 GPT 的旅程&#xff0c;让我们仔…

MATLAB和S7-1200PLC OPC通信(激活S7-1200PLC OPC UA服务器)

MATLAB和SMART PLC OPC通信请参考下面文章博客: MATLAB和西门子SMART PLC OPC通信-CSDN博客文章浏览阅读123次。西门子S7-200SMART PLC OPC软件的下载和使用,请查看下面文章Smart 200PLC PC Access SMART OPC通信_基于pc access smart的opc通信_RXXW_Dor的博客-CSDN博客OPC是…

通讯网关软件032——利用CommGate X2OPC实现OPC客户端访问Modbus TCP设备

本文介绍利用CommGate X2OPC实现OPC客户端连接Modbus TCP设备。CommGate X2OPC是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;SCADA系统上位机、PLC、设备具备Modbus TCP通讯接口&#xff…

机器学习2:决策树--基于信息增益的ID3算法

1.决策树的简介 建立决策树的过程可以分为以下几个步骤: 计算每个特征的信息增益或信息增益比,选择最优的特征作为当前节点的划分标准。根据选择的特征将数据集划分为不同的子集。对每个子集递归执行步骤 1 和步骤 2,直到满足终止条件。构建决策树,并输出。基于信息增益的…

k8s调度约束

List-Watch Kubernetes 是通过 List-Watch的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 List-Watch机制 工作机制&#xff1a;用户通过 kubectl请求给 APIServer 来建立一个 Pod。APIServer会将Pod相关元信息存入 etcd 中…

移动路由器Cellular Router命令执行漏洞复现 [附POC]

文章目录 移动路由器Cellular Router命令执行漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 移动路由器Cellular Router命令执行漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章…

SQL面试

#(1)请写出要查询员工J开头的名字其工号(EMPNO)及部门名称(DEPTNA)的 SQL语句SELECT e.emp,e.name,d.deptna FROM emp e left join dept d on d.deptno e.deptno where e.name like J%#(2)请写出要查询 Kevin 所在部门的部门代号(DEPTNO)及部门名称(DEPTNA)的 SQL 语句SELECT e…

Pure-Pursuit 跟踪双移线 Gazebo 仿真

Pure-Pursuit 跟踪双移线 Gazebo 仿真 主要参考学习下面的博客和开源项目 自动驾驶规划控制&#xff08;&#xff21;*、pure pursuit、LQR算法&#xff0c;使用c在ubuntu和ros环境下实现&#xff09; https://github.com/NeXTzhao/planning Pure-Pursuit 的理论基础见今年六月…

如何巧妙公布成绩

宝子们&#xff0c;来来来&#xff01;听说你们对如何公布学生成绩很头疼&#xff1f;别担心&#xff0c;今天就让我来给大家支支招&#xff01; 1在家长群内发公告&#xff0c;孩子的成绩已出&#xff0c;想知道具体成绩可以私信哦&#xff5e;简单粗暴&#xff01;关心孩子的…

频谱仪超外差和零中频架构

文章目录 超外差结构零中频结构接收机结构发射机结构 优缺点对比附录相关词汇多次变频的形象解释 参考文献 频谱仪的本质就是一个超宽带、超宽调谐范围、高动态范围的通信接收机&#xff0c; 频谱仪的原理即通信接收机的原理。 遇到高频率高带宽谐波成分复杂的通信信号的话&am…

【网络协议】聊聊HTTPS协议

前面的文章&#xff0c;我们描述了网络是怎样进行传输数据包的&#xff0c;但是网络是不安全的&#xff0c;对于这种流量门户网站其实还好&#xff0c;对于支付类场景其实容易将数据泄漏&#xff0c;所以安全的方式是通过加密&#xff0c;加密方式主要是对称加密和非对称加密。…

【蓝桥杯选拔赛真题08】C++最大值最小值平均值 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++最大值最小值平均值 一、题目要求 1、编程实现 2、输入输出 二、算法分析</