linux系统安全

news2024/11/27 4:29:24

一、账号安全基本措施

1.1 系统账号清理

1.1.1 将用户设置为无法登录-- 改登录shell

登录shell是用户与计算机系统直接交互的接口,使用户能够通过命令行方式进行各种操作和管理。 所以让用户无法登录,其实就是将登录shell改为 /sbin/nologin,可以用usermod -s 更改。

[root@localhost home]# usermod -s /sbin/nologin lisi ##更改登录shell
[root@localhost home]# cat /etc/passwd |grep lisi   ##查看修改是否成功
lisi:x:1001:1001::/home/lisi:/sbin/nologin
[root@localhost home]# su lisi   ##查看能否切换到目标用户
This account is currently not available.     ##用户无法切换
​
1.1.2 删除用户 userdel
[root@localhost home]# userdel -r lisi   ##加上选项r删除用户的同时删除家目录
​
1.1.3 锁定用户

方式一

usermod -L 用户名 锁定用户

usermod -U 用户名 解锁用户

方式二

passwd -l 用户名 锁定用户

passwd -u 用户名 解锁用户

1.1.4 锁定配置文件 chattr

chattr 命令用于修改文件或目录的属性,设置文件的特殊属性,使其具有更高级的保护或控制

chattr [选项] 文件名

+i 将文件设置为“不可修改”,即无法被删除、重命名、修改内容或链接的操作

-i 取消对文件的“不可修改”属性

+a 只能向文件中添加内容,无法修改或删除已有内容

通过锁定配置文件 /etc/passwd 和 /etc/shadow ,可以防止恶意修改或者误修改,保证系统和数据的安全性。

[root@localhost home]# chattr +i /etc/passwd /etc/shadow   ##锁定配置文件
[root@localhost home]# useradd liwu    
useradd:无法打开 /etc/passwd        ##无法打开配置文件 无法创建用户
​

1.2 密码安全

1.2.1 对新建用户

编辑 /etc/login.defs 文件来设置密码规则

PASS_MAX_DAYS   99999     ##修改此部分来设置密码有效期
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
​

PASS_MAX_DAYS:指定用户密码的最长有效天数

PASS_MIN_DAYS:指定在更改密码之间必须等待的最小天数

PASS_MIN_LEN: 指定用户密码的最小长度

PASS_WARN_AGE:指定在密码过期之前的多少天开始向用户发出警告

1.2.2 对已有用户 chage

chage [选项] 用户名 -m:密码可更改的最小天数,m=0 代表任何时候都可以更改密码 -M:密码保持有效的最大天数

-w:用户密码到期前,提前收到警告信息的天数 -E:帐号到期的日期。过了这天,此帐号将不可用 -d:上一次更改的日期 -i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。 -l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

[root@localhost ~]# chage -d  0 用户名 
##强制用户下一次登录要修改密码
​
[root@localhost ~]#chage -M 30 lisi
#设置密码有效期为30天
[root@localhost ~]#cat /etc/shadow|tail -1
lisi:!!:19055:0:30:7:::
第5字段

1.3 自动注销

设置自动注销时间

[root@localhost ~]# vi /etc/profile   ##对所有用户生效
.................................
export  TMOUT=60
​
[root@localhost ~]# source /etc/profile    ##使配置文件生效

1.4 清除命令历史

1.4.1 查看历史命令
[root@localhost ~]# history  |tail
  138  vim /etc/login.defs 
  139  vim .bashrc
  140  ls
  141  vim /etc/bashrc
  142  history 
  143  history  |head 
  144  history  |tail -f 
  145  cd
  146  history  |tail -f 
  147  history  |tail
​
1.4.2 历史命令限制
方式一、注销时清空历史命令
​
vim .bash_logout 
.. ..
echo ' ' > /root/.bash_history   ##空文件导入
...
:wq
​
. /.bash_logout   ##应用修改
​
方式二、修改全局配置文件
​
vim /etc/proflie    ##修改此文件  全局生效
.....
HISTSIZE =....(自定义数字)    ##最大显示
....
:wq  
​
reboot ##重启应用修改
​

二、用户切换和用户提权

2.1 用户切换 su命令

su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

命令格式
su [options...] [-] [user [args...]
​
su [选项] 用户名      ##不完全切换,上一个用户的部分设置会保留
​
su -  用户名         ##完全切换 ,相当于重新登录,
​
​
查看su操作记录
安全日志文件:cat /var/log/secure
[liwi@localhost root]$ su liwu
密码:
##普通用户切换需要密码
​
[root@localhost ~]# su liwi
##root用户切换到普通用户不需要密码

2.2 sudo命令格式

sudo [选项] 命令

-V 显示版本编号

-l 显示出自己(执行 sudo 的使用者)的权限

-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)

-p 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称

-u 用户名 以指定用户的权限

-s 执行环境变数中的 SHELL 所指定的 shell

vim /etc/sudoers =visudo ## 编辑配置文件

root    ALL=(ALL)       ALL
​

1.user字段 用户名或UID %组名或者%GID

2.host字段 IP地址或主机名 ALL代表任意主机

3.代表用户字段 用户名或UID ALL代表任意用户

4.命令字段(绝对路径) command name (命令) directory (文件夹里的命令) sudoedit (可以编辑sudoers这个文件,变相变成管理员) Cmnd_Alias (命令别名)

2.3 sudo子目录

将所有提权都放在配置文件/etc/sudoers中,不便于管理。 通过再/etc/sudoers.d/下创建子目录,可以更好地管理sudo的授权规则。

/etc/sudoers.d/test1 test2.....(针对性的创建文件)

举例
vim /etc/sudoers.d/test      ##创建子目录(新配置文件)
...
test1 ALL= (root) sudoedit     ##用户test1可以使用 sudoedit 命令
...
:wq
​
​
chmod 440 test   ##设置权限,加固安全

2.4区别

1.身份验证方式: su命令(切换用户)需要输入目标用户的密码来切换到目标用户的身份。

sudo命令(以超级用户执行)需要输入当前用户的密码来验证身份。

2.执行命令的方式: su命令会切换用户的环境,包括当前工作目录和环境变量等。在切换用户后,需要重新设置所需的工作环境。

sudo命令在当前用户的环境下以超级用户身份执行命令,不会切换用户的环境。这使得在执行完命令后,可以继续以当前用户身份继续工作,而不需要重新设置环境。

3.授权: su命令切换到目标用户后,拥有目标用户的完整权限。

sudo命令可以按需授予用户对特定命令或特定命令组合的访问权限。

三、PAM安全认证

3.1 什么是PAM?

PAM:Pluggable Authentication Modules,插件式的验证模块,用于管理和进行用户身份验证的模块化系统。

PAM提供了灵活和可定制的用户身份验证框架,使系统管理员能够根据需要配置和管理身份验证方式。

3.2 为什么要用PAM?

su命令的安全隐患

默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险;

为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。

3.3 PAM认证原理

PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_*.so

1.用户访问(应用程序需要进行用户身份验证时,会调用PAM库来初始化PAM会话)

2.确定service类型(加载哪些身份验证模块,用户名、密钥、短信验证码等等)

3.PAM根据配置文件确定是否允许访问或者进一步的操作

4.PAM会话结束时,将最终的身份验证结果返回给应用程序

3.4 PAM配置文件

只有功能较强的功能模块才有配置文件,所以配置文件的数量小于功能模块的总数

配置文件路径 主要配置文件

/ etc / security / ,只有功能强大的pam模块才会有主配置文件

次要配置文件(优先生效)

/etc/pam.d/

[root@localhost ~]# vim /etc/pam.d/login 
​
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so
~                                                                           
#模块类型     控制位        PAM模块                                                              
~                                                                           
~                                                                           
~                                                                           
~                                                                           
"/etc/pam.d/login" 18L, 796C                              1,1          全部
​

第一列:模块类型(module-type)

模块类型功能
Auth账号的认证和授权
Account帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)
Password用户修改密码时密码复杂度检查机制等功能
Session用户会话期间的控制,如:最多打开的文件数,最多的进程数等
-type表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用

第二列:Control:( 控制位)

required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件 requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件 sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的 equired和requisiteoptional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略include: 调用其他的配置文件中定义的配置 optional 可选项

第三列:PAM模块

模块功能
认证管理(authentication management)接受用户名和密码,进而对该用户的密码进行认证
帐户管理(account management)检查帐户是否被允许登录系统,帐号是否已经过 期,帐号的登录是否有时间段的限制等
密码管理(password management)主要是用来修改用户的密码
会话管理(session management)主要是提供对会话的管理和记账
  1. 模块配置文件路径

/usr/lib64/security/

required 无论验证成功还是失败 会继续往下验证

requisite 验证成功则继续 验证失败则立即结束整个验证过程

sufficient 验证成功则立即返回,否则忽略结果并继续

optional 一般不用于验证,只显示信息

3.6 部分PAM功能模块

3.6.1 limits模块(重要)
1)功能

功能:限制用户的资源使用,例如:可打开的文件数量,可运行的进程数量,可用内存空间

2)ulimit 命令

通过ulimit命令可以查看和设置不同类型的资源限制

ulimit -a 显示当前所有资源的限制

ulimit -c 设置core文件的最大大小,单位为blocks

ulimit -n 设置可以打开的最大文件描述符数

ulimit -u 设置用户可创建的最大进程数

ulimit -m 设置单个进程的物理内存限制,单位为KB

ulimit -v 设置单个进程的虚拟内存限制,单位为KB

ulimit -s 设置单个栈的最大大小,单位为blocks

ulimit -f 设置单个文件的最大大小,单位为blocks

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

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

相关文章

移动应用安全

移动应用安全 移动应用安全主要关注Android、iOS、Windows Phone等平台上移动应用软件安全状态。它涉及应用程序在其设计运行的平台上下文中的安全问题、它们使用的框架以及预期的用户集。所有主流的移动平台都提供大量可选的安全控制,旨在帮助软件开发人员构建安全…

面试官问如何实现二级缓存怎么进行回答以及延伸出更多知识点呢?

二级缓存的优势与缺点 优点: 1)二级缓存相比只调用一层 Redis 缓存,访问速度更快。对于一些不经常修改的数据而查询十分频繁的可以直接放在本地缓存(一级)里面。 作为面试者的扩展延伸:我在本地缓存的实…

【MySQL 数据宝典】【索引原理】- 002 示例+逐个字段学明白 Explain

一、Explain 概述 使用 EXPLAIN 关键字可以模拟优化器来执行SQL查询语句,从而知道MySQL是如何处理我们的SQL语句的。分析出查询语句或是表结构的性能瓶颈。 1.1 MySQL 查询过程 通过explain我们可以获得以下信息: 表的读取顺序数据读取操作的操作类型…

华为ensp中链路聚合两种(lacp-static)模式配置方法

作者主页:点击! ENSP专栏:点击! 创作时间:2024年4月26日11点54分 链路聚合(Link Aggregation),又称为端口聚合(Port Trunking),是一种将多条物理…

OU和域用户的创建

OU和域用户的创建 导航 文章目录 OU和域用户的创建导航一、创建ou二、创建用户三、验证 一、创建ou 在服务器管理器里面点击右上角的工具,选择Active Directory 用户和计算机右击我们的域,选择新建,选择组织单位,并填入我们的单位名字 二、创建用户 右击我们刚刚新建的组织…

prompt提示词:AI英语词典优化版Pro,让AI教你学英语,通过AI实现一个网易有道英语词典

目录 一、前言二、效果对比三、优化《AI英语词典》提示词四、其他获奖作品链接 一、前言 不可思议!我的AI有道英语字典助手竟然与百度千帆AI应用创意挑战赛K12教育主题赛榜首作品差之毫厘 ,真的是高手都是惺惺相惜的,哈哈,自恋一…

pytest参数化数据驱动(数据库/execl/yaml)

常见的数据驱动 数据结构: 列表、字典、json串 文件: txt、csv、excel 数据库: 数据库链接 数据库提取 参数化: pytest.mark.parametrize() pytest.fixture()…

Stable Diffusion WebUI 使用 VAE 增加滤镜效果

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 大家好,我是水滴~~ 本文主要介绍 VAE 模型,主要内容有:VAE 模型的概念、如果下载 VAE 模型、如何安装 VAE 模型、如…

苍穹外卖学习

并不包含全部视频内容&#xff0c;大部分都按照操作文档来手搓代码&#xff0c;资料&#xff0c;代码都上传git。 〇、实际代码 0.1 Result封装 package com.sky.result;import lombok.Data;import java.io.Serializable;/*** 后端统一返回结果* param <T>*/ Data pub…

【EP2C35F672C8 EDA试验箱下载 38译码器实现】

文章目录 前言一、实验设备1.实验箱2.下载器&#xff1a; 二、编译工程1.编译工程2.添加tcl引脚配置文件2.1将tcl文件拷贝到工程目录下&#xff1a;2.2 在软件中添加tcl文件 3.tcl文件简答讲解 三、下载四、实验结果总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内…

【LeetCode:2095. 删除链表的中间节点 + 链表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

虚拟现实(VR)的应用场景

虚拟现实&#xff08;VR&#xff09;技术创建和体验三维虚拟世界的计算机仿真技术。用户通过佩戴VR头显等设备&#xff0c;可以完全沉浸在虚拟世界中&#xff0c;并与虚拟世界中的物体进行交互。VR技术具有广泛的应用前景&#xff0c;可以应用于各行各业。以下是一些VR的应用场…

C++ 并发编程 - 入门

目录 写在前面 并发编程&#xff0c;启动&#xff01; 写在前面 计算机的并发指在单个系统里同时执行多个独立的任务。 在过去计算机内只有一个处理器时并发是通过快速的切换进程上下文所实现的&#xff0c;而现在计算机已经步入了多核并发时代&#xff0c;所以多个进程的并…

利用STM32 HAL库实现USART串口通信,并通过printf重定向输出“Hello World“

一、开发环境 硬件&#xff1a;正点原子探索者 V3 STM32F407 开发板 单片机&#xff1a;STM32F407ZGT6 Keil版本&#xff1a;5.32 STM32CubeMX版本&#xff1a;6.9.2 STM32Cube MCU Packges版本&#xff1a;STM32F4 V1.27.1 上一篇使用STM32F407的HAL库只需1行代码实现US…

EDM营销工具效果如何评估?如何优化性能?

EDM营销工具的功能优势有哪些&#xff1f;怎么使用邮件营销工具&#xff1f; 对于许多营销人员来说&#xff0c;如何评估EDM营销工具的效果&#xff0c;却是一个颇具挑战性的问题。AokSend将围绕这一问题展开讨论&#xff0c;帮助读者更好地理解EDM营销工具效果的评估方法和技…

AI大模型蜂拥而至,PC准备好了吗?

通信世界网消息&#xff08;CWW&#xff09;在这个大模型风起云涌的年代&#xff0c;各行各业都在积极拥抱这波风口&#xff0c;试图让这个世界充满AI。根据最新公开的数据&#xff0c;截至2024年3月&#xff0c;中国共有117个大模型成功完成备案。这些大模型涵盖了各个领域&am…

Windows系统下将MySQL数据库表内的数据全量导入Elasticsearch

目录 下载安装Logstash 配置Logstash配置文件 运行配置文件 查看导入结果 使用Logstash将sql数据导入Elasticsearch 下载安装Logstash 官网地址 选择Windows系统&#xff0c;需下载与安装的Elasticsearch相同版本的&#xff0c;下载完成后解压安装包。 配置Logstash配…

黑马-设计模式-笔记(未完)

一、基础 UML类图 可见性&#xff1a; public- private#protected 表示方式&#xff1a;属性&#xff1a;可见性 名称:类型[默认值]方法&#xff1a;可见性 名称(参数)[:返回类型] 关系&#xff1a;关联关系&#xff1a;实线&#xff0c;引用关系&#xff0c;类属性里有另一个…

STM32存储左右互搏 SDIO总线FATS文件读写SD/MicroSD/TF卡

STM32存储左右互搏 SDIO总线FATS文件读写SD/MicroSD/TF卡 SD/MicroSD/TF卡是基于FLASH的一种常见非易失存储单元&#xff0c;由接口协议电路和FLASH构成。市面上由不同尺寸和不同容量的卡&#xff0c;手机领域用的TF卡实际就是MicroSD卡&#xff0c;尺寸比SD卡小&#xff0c;而…

switch语句深讲

一。功能 1.选择&#xff0c;由case N:完成 2.switch语句本身没有分支功能&#xff0c;分支功能由break完成 二。注意 1.switch语句如果不加break&#xff0c;在一次判断成功后会执行下面全部语句并跳过判断 2.switch的参数必须是整形或者是计算结果为整形的表达式,浮点数会…