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

Linux系统安全及其应用

文章目录

    • 一、用户账号安全管理
      • 1.1 系统账号的清理
      • 1.2 对用户账号的操作
        • 1.2.1 锁定和解锁用户
        • 1.2.2 删除无用账号
      • 1.3 对重要文件进行锁定
      • 1.4 密码安全控制
        • 1.4.1 新建用户
        • 1.4.2 已有用户
    • 二、历史命令管理
      • 2.1 历史命令限制
      • 2.2 自动清空历史命令
    • 三、设置终端登录的安全管理
      • 3.1 设置终端登录超时
      • 3.2 禁止普通用户登录
    • 四、对用户切换进行限制
      • 4.1 su命令
      • 4.2 限制普通用户使用`su`
        • 4.2.1 wheel组
        • 4.2.2 PAM安全认证
    • 五、授权用户管理
      • 5.1 sudo命令配置
      • 5.2 使用别名批量设置普通用户权限
    • 六、其他
      • 6.1 开关机安全控制
      • 6.2 弱口令扫描工具
    • 七、总结
      • 你会做哪些系统加固?

一、用户账号安全管理

1.1 系统账号的清理

将不需要登录的用户的登录shell设置为/sbin/nologin。

usermod -s /sbin/nologin 用户  	//需要管理员权限

1.2 对用户账号的操作

1.2.1 锁定和解锁用户
usermod -L 用户	//锁定用户
passwd -l 用户	//锁定用户usermod -U 用户	//解锁用户	
passwd -u 用户	//解锁用户
1.2.2 删除无用账号
userdel -r 用户	//删除用户及家目录

1.3 对重要文件进行锁定

如:passwd shadow fstab ifcfg-ens33等文件

lsattr 文件	//查看文件状态锁定(全- 表示没有状态,有i表示被锁定)
chattr +i 文件	//锁定文件,可多个
chattr -i 文件	//解锁文件

1.4 密码安全控制

1.4.1 新建用户

/etc/login.defs 文件中修改新建用户配置

在第25行,可以改变密码有效期,只对新建用户有效

在这里插入图片描述

1.4.2 已有用户
chage -M 30 用户	//改变已有用户密码有效期为30天
chage -d 0 用户	//使用户密码失效,下次登录时需要重设密码

二、历史命令管理

2.1 历史命令限制

history			//查看历史命令
history -c		//临时清空历史命令

永久限制历史命令数量:编辑 /etc/profile进行全局配置,第46行,HISTSIZE 设置为60-80条,保存退出并source,使立即生效

在这里插入图片描述

2.2 自动清空历史命令

vim ~/.bash_logout
echo "" > ~/.bash_history		//注销时自动清空历史命令 vim ~/.bashrc
echo "" > ~/.bash_history		//登录时自动清空历史命令

三、设置终端登录的安全管理

3.1 设置终端登录超时

vim /etc/profile ,键入行

TMOUT=600

(默认单位:秒):10分钟无操作,终端自动断开。

3.2 禁止普通用户登录

root用户 touch /etc/nologin,可禁止普通用户登录

root用户 rm -rf /etc/nologin,恢复普通用户登录

四、对用户切换进行限制

4.1 su命令

su 用户名:在终端中切换已知密码的用户,root用户切换到普通用户默认不需要密码,普通用户发起的切换需要目标账户的密码。su切换用户不会改变环境变量,用的还是之前用户的shell,是不完全切换。

su - 用户名:登录式切换,读取目标用户的配置文件,切换到家目录。

如果在root用户下,su相当于刷新;如果是普通用户,就是切换回root。

4.2 限制普通用户使用su

4.2.1 wheel组

wheel :wheel组,这个在组文件中查不到,属于特殊组,用来控制系统管理员的权限。专为管理员服务。

如果普通用户加入到wheel组,就能拥有管理员才能执行的一些权限。需要用sudo命令执行wheel组的特殊权限。

vim /etc/pam.d/su    //进入存放wheel组和默认root切换权限的配置

在这里插入图片描述

解除注释,保存退出后,可以发现除了wheel组用户和root用户,其他用户都不能切换用户。

wheel组默认是空的,没有任何成员,需要管理员账号手动添加。

gpasswd -a 用户 wheel

将用户添加到wheel组,用户即可获得切换用户的权限。

wheel组的权限很大,配置的时候要以最小权限的原则来进行配置。

4.2.2 PAM安全认证

PAM安全认证:Linux系统身份认证的一个架构,提供了一种标准的身份认证的接口,允许管理员定制化地管理认证方式和方法。

PAM认证是一个可插拔式的模块。所谓可插拔,是因为PAM认证的配置文件里,启用和停用只需要改变相应命令行开头的#号即可。

PAM的认证类型

  • 认证模块:验证用户的身份,基于密码的认证。
  • 授权模块:控制用户对系统资源的访问,文件访问、进程权限等。
  • 账户管理模块:管理用户账户的信息,密码过期策略,账户锁定策略等等。
  • 会话管理模块:管理用户会话,注销用户等。

PAM认证:确定服务Service----> 加载/etc/pam.d下的PAM配置文件 ---->调用/lib64/security下的认证文件进行认证。

PAM安全认证流程:

在这里插入图片描述

控制位:

required:只有成功才能通过认证,验证失败也不会立刻结束,只有所有的要素验证完整才会最终返回结果。必要条件。

requisite:只有成功才能通过认证,但是一旦失败,其他要素不再验证,立刻结束。必要条件。

sufficient:一票通过,成功了之后就是满足条件,但是失败了也可忽略。成功了执行验证成功的结果,失败则返回验证失败的结果,是最终的结果。充分条件。

optional:选项,反馈给用户的提示或结果。

五、授权用户管理

5.1 sudo命令配置

sudo:相当于给普通用户赋权

配置sudo需要对/etc/sudoers进行编辑

vim /etc/sudoers	//该文档是只读文档,需要wq!强制保存退出
visudo		//快捷打开/etc/sudoers

进入配置,注释掉图中两行

在这里插入图片描述

再到100行,下行插入

test2	ALL=(root)	/usr/bin/passwd 	//(多个赋权“,”隔开)
用户名	主机名=(用户)   命令

为test2用户赋权可以调用passwd命令,命令前加NOPASSWD可免密码sudo

test2用户使用授权命令:

sudo passwd test2

test2可以给所有用户设置密码(包括root),这种行为很危险。所以sudo的配置一般仅给予需要的最小权限。

注意:第一次执行需要验证密码,默认超时时长为5分钟,在此期间不再重复验证密码

5.2 使用别名批量设置普通用户权限

还是在/etc/sudoers 文件里编辑:

Host_Alias MYHOSTS = localhost 		 //设置主机名,可不设,用ALL匹配
User_Alias MYUSERS = test1,test2	//设置限制的用户,可批量
Cmnd_Alias MYCMNDS = /usr/sbin/*,!/usr/sbin/reboot,!/usr/sbin/poweroff,!/usr/sbin/init,!/usr/bin/rm  		//批量设置命令
// 注意:所有别名必须是全部大写
MYUSERS MYHOSTS=MYCMNDS		//启用配置

命令授权部分,定义了主机localhost,开放给dn这个用户/sbin下面所有的命令( *表示全部),除了(!表示取反,即不给权限)重启,关机,改变运行级别和删除。

六、其他

6.1 开关机安全控制

grub2 -setpassword :给grub菜单设置密码,要修改菜单需要此密码

6.2 弱口令扫描工具

弱口令扫描工具:检测过于简单的密码

使用john-1.8.0 工具

yum -y install gcc gcc-c++ make
//安装依赖环境
cd /opt/john-1.8.0/src
//工具解压在/opt目录下
make clean linux-x86-64
cp /etc/shadow /opt/shadow.txt
//复制密码文件到/opt下,
cd ../run
./john /opt/shadow.txt
//扫描密码
./john --show /opt/shadow.txt
//查看扫描情况

七、总结

你会做哪些系统加固?

  1. 锁定重要文件
  2. 修改history,命令历史记录
  3. 禁止普通用户切换
  4. 设置sudo权限,给普通用户
  5. 设置grub菜单加密
  6. 把一些默认的端口号改掉
  7. 内核参数调整:vim /etc/sysctl.conf,内核参数的配置文件。

相关文章:

Linux系统安全及其应用

文章目录 一、用户账号安全管理1.1 系统账号的清理1.2 对用户账号的操作1.2.1 锁定和解锁用户1.2.2 删除无用账号 1.3 对重要文件进行锁定1.4 密码安全控制1.4.1 新建用户1.4.2 已有用户 二、历史命令管理2.1 历史命令限制2.2 自动清空历史命令 三、设置终端登录的安全管理3.1 …...

JVM内存划分类加载的过程双亲委派模型的详解

JVM内存划分 JVM也就是java进程,这个进程一旦跑起来就会从操作系统这里申请一大块内存空间,JVM接下来就要进一步的对这个大的空间进行划分,划分成不同区域,从而每个区域都有不同的功能作用,一共分为如下几个区域 1.堆…...

Java异常详解

Java异常详解 前言一、异常类的定义Java异常异常类的构成Java常见运行错误异常示例除以 0数组下标越界访问 null 对象 防御式编程异常的好处LBYL 风格的代码EAFP 风格的代码 二、异常的基本用法捕获异常基本语法代码示例不处理异常使用 try catch 后的程序执行过程catch 只能处…...

C++入门3——类与对象2(类的6个默认成员函数)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 构造函数的概念 2.2 构造函数的特性 3. 析构函数 3.1 析构函数的概念 3.2 析构函数的特性 4.拷贝构造函数 4.1 拷贝构造函数的概念 4.2 拷贝构造函数的特性 5.赋值运算符重载函数 5.1运算符重载函数 5.2 赋值运算符重…...

CobaltStrike基本渗透

目录 CobaltStrike简介 主要功能: 使用注意: 在使用CobaltStrike进行渗透测试时,务必遵守法律法规,并获得合法授权。 CobaltStrike安装 前提 安装 服务端安装 windows安装 CS基本使用 监听器配置 一些基本的攻击…...

【linux深入剖析】进程间通信

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1.进程间通信目的2. 什么…...

关系数据库:关系模式

文章目录 基本概述关系的相关名词术语笛卡儿积与关系关系的类型 关系模式总结 基本概述 关系的相关名词术语 关系:简单来说,就是一张二维表格。属性(Attribute):也称字段或列,在现实世界中,要描述一个事务常常取若干…...

医学图像处理质量的评价方法

评判处理后医学图像的质量是确保图像处理技术有效性和可靠性的关键。以下是一些常用的图像质量评估方法和指标: 1. 主观评估 主观评估是由专业人员(如放射科医生)通过视觉检查对图像质量进行评分。常用的主观评估方法包括: 视觉…...

Ehcache Java 缓存框架

详解 下图是 Ehcache 在应用程序中的位置: Ecache 是一个广泛使用的 Java 缓存框架,能够有效提升应用性能,并减少与后端数据库的交互次数。它采用了一系列高级缓存策略,包括内存缓存、磁盘缓存、分布式缓存等,并提供了…...

详解Spring IoCDI(二)

目录 承接上文:详解Spring IoC&DI (一) 1.IoC详解 1.1方法注解Bean 1.2方法注解要配合类注解使用 1.3定义多个对象 1.4重命名Bean 1.5扫描路径 2.DI详解 2.1DI与IoC的关系 2.2属性注入 2.3构造方法注入 2.4Setter注入 2.5 三…...

说明白计算机网络之TCP的流量控制与拥塞控制之慢开始算法与拥塞避免算法

TCP的流量控制 利用滑动窗口实现流量控制 设A向B发送数据,连接建立时候,B告诉A自身的接收窗口大小,A的发送窗口大小不能超过接收方B的窗口大小 流量控制:发送方发送速率不要太快,要让接收方来得及接收。窗口大小的单…...

这款信创FTP软件,可实现安全稳定的文件传输

信创,即信息技术应用创新,2018年以来,受“华为、中兴事件”影响,国家将信创产业纳入国家战略,并提出了“28n”发展体系。“8”具体指金融、石油、电力、电信、交通、航空航天、医院、教育等主要行业。目前企业使用比较…...

代码随想录算法训练营第十天|232.用栈实现队列、225. 用队列实现栈

232.用栈实现队列 题目链接:232. 用栈实现队列 文档讲解:代码随想录 状态:写出来 ,但差强人意 思路: 定义两个容器,可以是Stack,也可以是Deque,stackIn相当于临时容器,用来存放元素&…...

STM32 IIC协议

本文代码使用 HAL 库。 文章目录 前言一、什么是IIC协议二、IIC信号三、IIC协议的通讯时序1. 写操作2. 读操作 四、上拉电阻作用总结 前言 从这篇文章开始为大家介绍一些通信协议,包括 UART,SPI,IIC等。 UART串口通讯协议 SPI通信协议 一、…...

Java生成随机数的几种方式

随机数,在一些特殊场景下,是非常常用的。比如一些测试和验证场景、安全加密、随机抽样等都有随机数的‘身影’。 一、 使用java.util.Random类 java.util.Random类提供了更全面的随机数生成功能,包括随机整数、随机浮点数、随机布尔值等。 p…...

【面试】什么是Java虚拟机

目录 1. 说明2. 关键点 1. 说明 1.Java虚拟机(Java Virtual Machine,简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境。2.JVM是Java平台无关性的关键,它允许Java程序在任何支持JVM的硬件和操作系统上运…...

Go 语言的基本构成、要素与编写规范

Go 语言,作为由 Google 开发的现代编程语言,以其简洁、高效和并发编程能力而著称。在构建高性能分布式系统和现代软件开发中,Go 语言正日益受到欢迎。本篇文章将详细探讨 Go 语言程序结构的各个要素,包括函数定义、注释规范、数据…...

从了解到掌握 Spark 计算框架(二)RDD

文章目录 RDD 概述RDD 组成RDD 的作用RDD 算子分类RDD 的创建1.从外部数据源读取2.从已有的集合或数组创建3.从已有的 RDD 进行转换 RDD 常用算子大全转换算子行动算子 RDD 算子综合练习RDD 依赖关系窄依赖宽依赖宽窄依赖算子区分 RDD 血统信息血统信息的作用血统信息的组成代码…...

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(三)

整期笔记索引 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(一) 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(二) 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(…...

【git】常用命令

删除 删除本地分支&#xff1a; // 删除本地分支 git branch -d localBranchName 删除远程仓库分支 git push origin --delete <branch_name> 验证远程分支是否删除 git fetch -p //会清理已经删除的远端分支的引用 git branch -r //列出所有远端分支&#xff0…...

JavaWeb_MySQL数据库

数据库&#xff1a; MySQL数据模型&#xff1a; MySQL是关系型数据库。 SQL&#xff1a; 简介 分类&#xff1a; 数据库设计-DDL 对数据库操作&#xff1a; 表操作&#xff1a; 小练习&#xff1a; 创建下表 SQL代码&#xff1a; create table tb_user (id int primar…...

中国BI步入增长大周期,腾讯云ChatBI加速AI+BI融合

过去十年&#xff0c;大数据技术的快速发展&#xff0c;让数据消费前进一大步&#xff0c;数据价值得到一定程度的挖掘与释放&#xff0c;真正开启了“用数”的大时代。但数据分析繁杂的技术栈、复杂的处理过程以及程式化的交互方式&#xff0c;让“数据消费”的门槛始终降不下…...

揭秘Python:下划线的特殊用法,你绝对想不到!

在Python编程中&#xff0c;下划线&#xff08;underscore&#xff09;是一个常见而又强大的工具。它不仅仅是一个普通的字符&#xff0c;而是具有特殊含义和用法的符号。今天&#xff0c;我们就来揭开Python下划线的神秘面纱&#xff0c;探索它的各种妙用。 下划线的基本用法…...

深入探索Java世界中的Jackson魔法:玩转JsonNode

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 揭秘Jackson库&#xff1a;JSON处理的瑞士军刀 在Java的世界里&#xff0c;处理JSON数据就像是一场探险。幸运的是&#xff0c;Jackson库就像一把多功能的瑞士军刀&#xff0c;为提供了强大而灵活的工具来解析和操作…...

为什么要使用动态代理IP?

一、什么是动态代理IP&#xff1f; 动态代理IP是指利用代理服务器来转发网络请求&#xff0c;并通过不断更新IP地址来保护访问者的原始IP&#xff0c;从而达到匿名访问、保护隐私和提高访问安全性的目的。动态代理IP在多个领域中都有广泛的应用&#xff0c;能够帮助用户…...

【PB案例学习笔记】-09滚动条使用

写在前面 这是PB案例学习笔记系列文章的第8篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gitee…...

C++中常见的构造函数类别

目录 摘要 默认构造函数&#xff08;Default Constructor&#xff09;&#xff1a; 带参数的构造函数&#xff08;Parameterized Constructor&#xff09;&#xff1a; 拷贝构造函数&#xff08;Copy Constructor&#xff09;&#xff1a; 移动构造函数&#xff08;Move C…...

万界星空科技MES系统功能介绍

制造执行系统或MES 是一个全面的动态软件系统&#xff0c;用于监视、跟踪、记录和控制从原材料到成品的制造过程。MES在企业资源规划(ERP) 和过程控制系统之间提供了一个功能层&#xff0c;为决策者提供了提高车间效率和优化生产所需的数据。 万界星空科技MES 系统基础功能&am…...

炸裂的开源AI语音生成模型ChatTTS

今天看到GitHub上开源了一个非常厉害的AI语音生成模型ChatTTS&#xff0c;可以生成和人类声音非常接近的语音&#xff0c;而且有语气、语调、可以停顿和发出笑声&#xff0c;再也没有了以前的AI味道 体验地址&#xff1a;https://colab.research.google.com/drive/1MYep5f0-BJ…...

Mac逆向Electron应用

工具库 解压asar文件 第一步 找到应用文件夹位置 打开活动监视器&#xff1a; 搜索相关应用 用命令行打开刚才复制的路径即可 open Applications/XXX.app/Contents/Resources/app第二步 解压打包文件 解压asar文件...