Linux等保测评与加固

news2024/10/12 9:29:36

Linux三级系统测评及加固方法

  • 身份鉴别
  • 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换

测评方法:

①一般采用用户名+口令进行身份鉴别,身份标识具有唯一性无法创建相同用户名
通过more /etc/shadow 命令查看用户列表,此语句字段格式有九段

图片

第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd和shadow中用的用户记录联系在一起;这个字段是非空的;

第二字段:密码(已被加密,所以看到是一堆乱码,CentOS7以上都是采取的SHA256加密算法进行加密),如果是有些用户在这段是x,*,!!,表示这个用户不能登录到系统或者是没用密码不能登录;这个字段是非空的;

第三字段:上次修改口令的时间;这个时间是从UNIX的诞生日1970年01月01日算起到最近一次修改口令的时间间隔(天数),你可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;

第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;

第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;

第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;

第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;

第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;

第九字段:保留字段,目前为空,以备将来Linux发展之用;

也可通过awk -F: ' ($2=="") {print $1}' /etc/shadow查看是否具有空口令账户。

图片

②查看密码复杂度配置:cat /etc/pam.d/system-auth 或 cat /etc/security/pwquality.conf 密码长度应不低于8位,需由大小写字母、数字、特殊字符等三种以上组合而成,图中为符合要求
 

图片

图片

③查看密码定期更换策略:cat /etc/login.defs  密码最长应不超过180天,图中为符合要求
lslogins -a 可查看所有用户口令过期时间,chage -l [user]  可查看对应用户的口令过期时间

图片

加固方法:

针对②,编辑system-auth文件,通过命令vim /etc/pam.d/system-auth进入配置文件,修改策略或通过命令vim /etc/security/pwquality.conf 进入配置文件,修改策略

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=5 enforce_for_root

参数说明
负数:代表最少出现次数,正数:代表最多出现次数

       minlen = 8,密码长度至少8位;

lcredit=-1,至少包含一个小写字母;

ucredit=-1,至少包含一个大写字母;

dcredit=-1,至少包含要给数字;

ocredit=-1,至少包含一个特殊字符;

difok=5,新密码最多与旧密码重复5个字符;

enforce_for_root,对root强制执行密码复杂度策略。

针对③,编辑login.defs文件,通过命令vim /etc/login.defs 进入配置文件,修改策略

PASS_MAX_DAYS   90   #密码的最大有效期

PASS_MIN_DAYS   0   #是否可修改密码,多少天后可修改

PASS_MIN_LEN    8    #密码最小长度,pam_pwquality设置优先

PASS_WARN_AGE   7    #密码失效前多少天在用户登录时通知用户修改密码
#以上设置只针对新用户生效,原来用户不生效,原有用户设置密码有效期,可以使用命令:
chage -M [90] [user]
 

  1. b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措


测评方法:

①查看远程管理登录失败策略:cat /etc/pam.d/sshd  登录失败次数最多不应超过5次,图中为符合要求

图片

②查看本地管理登录失败策略:cat /etc/pam.d/system-auth  登录失败次数最多不应超过5次,图中为符合要求

图片

③查看登录超时自动退出策略:cat /etc/profile 或echo $TMOUT 最多不应超过30分钟

图片

加固方法:

针对①,通过命令vim /etc/pam.d/sshd进入配置文件,修改策略

authrequired     pam_tally2.so onerr=fail deny=3 unlock_time=300 root_unlock_time=300

针对②,通过命令vim /etc/pam.d/system-auth进入配置文件,修改策略

authrequired      pam_tally2.so onerr=fail deny=3 unlock_time=300 root_unlock_time=300

针对③,通过命令vim /etc/profile进入配置文件,添加策略TMOUT=300保存退出后执行source /etc/profile 使其生效

  1. c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听

测评方法:

①查看远程管理ssh是否开启:systemctl list-unit-files | grep ssh

图片

②查看远程管理telnet是否开启:systemctl list-unit-files | grep telnet 默认未安装Telnet服务即默认未开启,符合

图片

  1. d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现

测评方法:

Linux操作系统一般采用“用户名+口令”进行鉴别,一般是不符合的,目前常见的有通过数字证书、Ukey来实现双因子认证。

二、访问控制

a)应对登录的用户分配账户和权限;
测评方法:

通过more /etc/shadow   more /etc/passwd命令查看用户列表
通过passwd文件,判断出哪些是普通用户(UID>1000,该设置值在login.defs文件中)、系统用户(UID<1000)和超级用户(UID=0)。

再判断哪些用户不可登录,如shell字段为/sbin/nologin、/bin/false的就不可登录,shadow文件用户第二字段为*或!!为锁定状态,不允许登录。

图片

图片

b)应重命名或删除默认账户,修改默认账户的默认口令;

测评方法:

①通过 more /etc/shadow 命令查看用户列表,查看是否有默认账户在使用,centos默认可登录账户只有root,其他账户虽不会被使用,但应禁用或删除。

图片

②root作为Linux系统的超级用户,要求禁止远程登录,通过more /etc/ssh/sshd_config 命令查看,需注意是否被注释掉,图中为符合

图片

加固方法:

针对②,通过vim /etc/ssh/sshd_config命令进入配置文件,修改策略,如图即可满足

图片

c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;
 

测评方法:

通过shadow文件确定是否存在多余过期等账户,除root外默认账户应禁用或删除,也可以通过lastlog命令查看用户最后登录时间。

图片

d)应授予管理用户所需的最小权限,实现管理用户的权限分离;

测评方法:

①通过命令more /etc/sudoers查看权限划分情况

图片

e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则;

测评方法:

①我们都知道在Linux下创建一个文件或者目录之后,可以通过chmod等命令进行权限设置,来达到给当前用户、用户组用户以及其他用户分配不同的访问权限。那么,我们新创建的目录和文件本身也是有它的默认权限的,这个默认权限是什么,就是由权限掩码umask所决定。它的功能可以说与chmod刚好相反,掩码我们都知道其含义,就是掩盖,代表默认拿走的,也就是说不要的权限。

②所以说,umask用来指定"当前用户在新建文件或者目录时候的权限默认值"。那我们如何得知或者设置这个umask呢?

③在linux下我们查看的方式有两种,一种可以直接输入umask,就可以看到数字形态的权限掩码,一种则是加-S(Symbolic)参数,就能以符号的方式来显示出权限了。我先进行一次查看,显示如下所示:

图片

我们在这里看到的0022有四组数字,第一组代表的是特殊权限我们这里先不做讨论。后面三组依次表示属主、属组、其他人的权限掩码。

然而,目录和文件的默认权限属性是不同的,因为对于一个目录来说它的x权限也就是执行权限是很重要的,进入目录等操作都是需要目录具有执行权限的,而对于文件来说,一般情况都是用于数据的记录操作,所以一般不需要执行权限。从而,在linux下默认的情况是这样的:

如果用户创建的是目录,则默认所有权限都开放,为777,默认为:drwx rwx rwx

如果创建的是文件,默认没有x权限,那么就只有r、w两项,最大值为666,默认为:-rw-rw-rw-

那么之前所说的拿走的权限就是这个默认值要减掉的权限,r、w、x分别是4、2、1,要拿掉读权限就输入4,拿掉写权限就输入2,以此类推。

再看上图,umask为022,也就是说,对于当前用户没有拿掉权限,group用户和other用户都被拿走了w权限,所以此时如果用户创建目录和文件的时候,默认权限会进行如下的减法操作:

**新建文件:**666-022=644;

**新建目录:**777-022=755.

经过验证,目录的默认权限是rwxr-xr-x(755),文件的默认权限是-rw-r--r--(644)。

f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;

测评方法:

此项默认满足要求。

g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问


测评方法:

首先敏感标记的目的就是实现强制访问控制,而目前我们所接触到的操作系统基本均是传统的基于权限的访问控制(如文件权限、用户组权限等)是自主访问控制(Discretionary Access Control,DAC),其中资源的所有者可以自行决定资源的访问权限。而强制访问控制则超越了个体的控制权,依赖于更为严格的访问策略和安全模型。它是一种基于系统级别的强制性访问控制,不受用户或进程的自主决策的影响,确保系统中的资源只能被授权用户或进程访问,而不依赖于用户或进程的标签或权限。

这条应该是作为做等保人员比较难测评的一条条款了,因为客户基本不可能会去自己配置。

SELinux 提供 3 种不同的策略可供选择,分别是 Targeted、MLS 以及 MiNimum;

Target 策略主要对系统中的服务进程进程访问控制,同时,它还可以限制其他进程和用户

MLS策略会对系统中的所有进程进行控制,启用 MLS 之后,用户即便执行最简单的指令(如 ls),都会报错;

Minimum 策略的意思是“最小限制”,该策略最初是针对低内存计算机或者设备(比如智能手机)而创建的。
所以,在实际测评中,此项基本都是不符合的,详细配置可以查阅资料进行了解配置。

三、安全审计

a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;

测评方法:

①通过命令service auditd status 和 service rsyslog status 查看日志服务是否开启
 

图片

图片

②通过命令cat /etc/audit/audit.rules查看审计规则

图片

③通过命令cat /etc/rsyslog.conf查看日志记录各字段的详细情况

图片

b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;

测评方法:

① 通过命令tail -20 /var/log/audit/audit.log或ausearch -i |more查看日志信息

图片

c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;

① 通过命令cat /etc/rsyslog.conf查看日志是否发送到日志服务器或日志审计系统,日志留存时间是否满足网络安全法要求不少于6个月

图片

d)应对审计进程进行保护,防止未经授权的中断。

测评方法:

①使用非审计管理员测试中断审计进程,是否能成功,询问和检查是否安装第三方审计进程保护软件。

四、入侵防范

a) 应遵循最小安装的原则,仅安装需要的组件和应用程序;

测评方法:

①通过命令uname -a和yum list installed查看系统版本和已安装的程序

图片

图片

b) 应关闭不需要的系统服务、默认共享和高危端口;

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

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

相关文章

WPF 手撸插件 八 操作数据库一

1、本文将使用SqlSugar创建Sqlite数据库&#xff0c;进行入门的增删改查等操作。擦&#xff0c;咋写着写着凌乱起来了。 SqlSugar官方文档&#xff1a;简单示例&#xff0c;1分钟入门 - SqlSugar 5x - .NET果糖网 2、环境SqlSugar V5.0版本需要.Net Framework 4.6 &#xff0…

MySQL 创建子账号

1. 使用 root 账号登录 MySQL 使用 root 账号登录 MySQL&#xff0c;登录成功如图所示&#xff1a; 新建一个 MySQL 子账号&#xff0c;新建子账号命令如下&#xff1a; 命令 : CREATE USER testlocalhost IDENTIFIED BY 123456;若出现如下图所示&#xff0c;则表示新建 MySQL…

技术总结(三)

Checked Exception 和 Unchecked Exception 有什么区别&#xff1f; Checked Exception 即 受检查异常 &#xff0c;Java 代码在编译过程中&#xff0c;如果受检查异常没有被 catch或者throws 关键字处理的话&#xff0c;就没办法通过编译。 比如下面这段 IO 操作的代码&…

设计模式---责任链模式快速demo

Handler&#xff08;处理者&#xff09;&#xff1a; 定义一个处理请求的接口。通常包括一个处理请求的方法。它可以是抽象类或接口&#xff0c;也可以是具体类&#xff0c;具体类中包含了对请求的处理逻辑。处理者通常包含一个指向下一个处理者的引用。ConcreteHandler&#x…

esp32-c3 Supermini 模块下载

1.此模块自带usb 功能&#xff0c;可以直接利用数据线连接模块与pc进行下载。此模块不带uart to usb 集成块。 2. 此模块下载只能用自带type c 数据口与pc usb 连接进行。不能用usb 转 uart 对模块下载&#xff0c;但可以通讯 3. 利用idf.py 对模块下载前&#xff0c;必…

Thread类的用法练习

目录 1.继承 Thread, 重写 run 2.实现 Runnable, 重写 run 3.继承 Thread, 重写 run, 使用匿名内部类 4.实现 Runnable, 重写 run, 使用匿名内部类 5.使用 lambda 表达式 6.请回答以下代码的输出, 并解释原因 1.继承 Thread, 重写 run 2.实现 Runnable, 重写 run 3.继承 Th…

四、远程登录到Linux服务器

说明 linux 服务器是开发小组共享&#xff0c;正式上线的项目是运行在公网&#xff0c;因此需要远程登录到 Linux 进行项目管理或者开发 Xshell 1、特点 Xshell 是目前最好的远程登录到 Linux 操作的软件&#xff0c;流畅的速度并且完美解决了中文乱码的问题&#xff0c; 是目…

计算机毕业设计 基于Python+Django的旅游景点数据分析与推荐系统的设计与实现 Python毕业设计 Python毕业设计选题【附源码+安装调试】

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

黑马程序员C++提高编程学习笔记

黑马程序员C提高编程 提高阶段主要针对泛型编程和STL技术 文章目录 黑马程序员C提高编程一、模板1.1 函数模板1.1.1 函数模板基础知识 案例一&#xff1a; 数组排序1.2.1 普通函数与函数模板1.2.2 函数模板的局限性 1.2 类模板1.2.1 类模板的基础知识1.2.2 类模板与函数模板1.…

ssm基于SSM框架的餐馆点餐系统的设计+VUE

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 摘要 I Abstract II 1绪论 1 1.1研究背景与意义 1 1.1.1研究背景 1 1.1.2研究意义 1 1.2国内外研究…

有什么方法可以保护ppt文件不被随意修改呢?

在工作或学习中&#xff0c;我们常常需要制作powerpoint演示文稿&#xff0c;担心自己不小心改动了或者不想他人随意更改&#xff0c;我们可以如何保护PPT呢&#xff1f;下面小编就来分享两个常用的方法。 方法一&#xff1a;为PPT设置打开密码 为PPT设置打开密码是最直接有效…

Prim算法实现最小生成树

Prim算法是一种用来寻找图的最小生成树的贪心算法。最小生成树是连接图中所有顶点的边的子集&#xff0c;这些边的权重总和最小&#xff0c;且形成一个树形结构&#xff0c;包含所有顶点。 Prim算法的基本步骤如下&#xff1a; 初始化&#xff1a; 选择任意一个顶点作为起始点…

全栈开发要掌握的技术

文章目录 1、前端开发2、后台开发2.1 编程语言2.2 网络框架 3、数据库开发3.1 RDBMS3.2 NoSQL 数据库 4、移动开发4.1 本地开发4.2 跨平台开发 5、云计算5.1 云平台5.2 容器化和协调 6、用户界面/用户体验设计6.1 设计工具6.2 原型和线框图 7、基础设施和 DevOps7.1 基础设施即…

C语言读取data.json文件并存入MySQL数据库小案例

本地有一个data.json文件 data.json [{"id": 1,"name": "Alice","age": 30},{"id": 2,"name": "Bob","age": 25} ]要将 data.json 文件中的数据存储到 MySQL 数据库中&#xff0c;首先需要…

快速入门Tomcat服务(业务发布基础技能)

文章目录 1 Tomcat简介 2 安装tomcat 2.1 安装jdk 2.2 安装Tomcat 3 Tomcat目录结构 4 Tomcat重要配置文件 1 Tomcat简介 Tomcat是Sun公司官方推荐的Servlet和JSP容器&#xff0c;在中小型系统和并发访问用户不是很多的场合下&#xff0c;其作为轻量级应用服务…

如何在Node.js里实现依赖注入

什么是依赖注入 依赖注入是一种用于在开发过程中实现控制反转&#xff08;IoC&#xff09;的技术。在IoC中&#xff0c;对程序流的控制是颠倒的&#xff1a;依赖项不是控制其依赖项的创建和管理的组件&#xff0c;而是从外部源提供给组件。 在传统的编程模式中&#xff0c;一个…

【ECC校验及使用】

ECC校验及使用 1 RAM ECC Demo 在IC设计中会经常用到ram来进行存储&#xff0c;在存储数据时我们写读时需要知道在传输过程中有没有出现差错&#xff0c;因此需要额外的校验位也存储下来&#xff1b; ECC验证能纠正1bit错误&#xff0c;能发现2bit错误&#xff0c;但是无法纠正…

第十三章:监控过程组(13.1控制质量--13.7监督沟通)

前言&#xff1a; 监督 是收集项目绩效数据&#xff0c;计算绩效指标&#xff0c;并报告和发布绩效信息。 控制 是比较实际绩效与计划绩效&#xff0c;分析偏差&#xff0c;评估趋势以改进过程&#xff0c;评价可选方案&#xff0c;并建 议必要的纠正措施。 13.1 控制质量 本过…

数据库SQL基础教程(二)

目录 连接(JOIN) 语法&#xff1a; 不同的 SQL JOIN INNER JOIN 关键字 LEFT JOIN 关键字 SQL LEFT JOIN 语法 RIGHT JOIN 关键字 SQL RIGHT JOIN 语法 FULL OUTER JOIN 关键字 SQL FULL OUTER JOIN 语法 UNION 操作符 SQL UNION 语法 SQL UNION ALL 语法 SELECT I…

大数据毕业设计选题推荐-B站短视频数据分析系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…