首页 > 其他分享 >系统安全及应用

系统安全及应用

时间:2024-04-26 17:45:24浏览次数:22  
标签:系统安全 配置文件 etc sudo 用户 密码 模块 应用

系统安全及应用

目录

一、账号安全基本措施

1、系统账号清理

1.1 将非登录用户的Shell设为/sbin/nologin

image-20240418161650636

1.2 锁定长期不使用的账号

image-20240418162144846

1.3 删除无用的账号

image-20240418162436419

1.4 锁定账号文件passwd、shadow

chattr +i /etc/passwd /etc/shadow
#锁定文件
 
lsattr /etc/passwd /etc/shadow
#查看状态
 
chattr -i /etc/passwd /etc/shadow
#解锁文件

实例:

image-20240418163301394

2、密码安全控制

2.1 方法一:修改密码配置文件 (密码配置文件为/etc/login.defs)——针对新用户,已有用户不能更改

image-20240418165804722

2.2 方法二:修改已有用户的密码有效期——chage命令

2.2.1 格式

change [选项] 用户名

2.2.2 常用选项

选项 功能
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码
-M 密码保持有效的最大天数。
-w 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期。
-i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

3、命令历史记录限制

以下有几个方法:

  • 减少记录的命令条数;
  • 登录时自动清空命令历史 ;
  • 系统默认保存1000条历史命令记录;
  • history -c 命令只可以临时清除记录(其实所有的文件都还保存在.bash_history ),重启后记录还在。

3.1 对历史命令的数量进行限制

image-20240418171108369

image-20240418182912674

3.2 设置登陆时,退出时自动清空命令历史

image-20240418185222958

#退出
vim .bash_logout
#在里面写
echo " " >~/.bash_history

#登录
vim .bashrc
echo " " >~/.bash_history

4、使用su命令切换用户

4.1 格式

su  目标用户	#切换用户
su - 目标用户   #用目标用户登录,记得-两边都有空格
exit   #回至旧的用户

4.2 密码验证

  • root:任意用户,不验证密码
  • 普通用户:其他用户,验证目标用户的密码
  • 带 “-” 表示将使用目标用户登录Shell环境

实例

image-20240418190410958

5、PAM安全认证

PAM:Pluggable Authentication Modules,插件式的验证模块,Sun公司于1995 年开发的一种与认证相关的通用框架机制。PAM 只关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统一的API 接口,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证。

image-20240419140855593

image-20240419141018890

5.1专用配置文件/etc/pam.d/格式

image-20240419142002352

类别 作用
type 指模块类型,即功能
control PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现
module-path 用来指明本模块对应的程序文件的路径名
Arguments 用来传递给该模块的参数
模块类型(type) 作用
Auth 账号的认证和授权
Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)
password 用户修改密码时密码复杂度检查机制等功能
session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
-type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
控制位(control) 作用
required 表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件
requisite 一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件
sufficient 一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的
equired和requisiteoptional 表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略include: 调用其他的配置文件中定义的配置
optional 可选项

image-20240419145254765

5.2 shell模块

功能:检查有效shell

实例:

image-20240419150426907

image-20240419150705663

image-20240419150938012

image-20240419151000188

image-20240419151341429

5.3 pam_nologin.so 模块

功能:如果/etc/nologin文件存在,将导致非root用户不能登陆,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆

默认此模块可以对ssh等登录有效,但不影响su登录

5.4 limit

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

5.4.1ulimit

ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。

ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。

ulimit只影响shell进程及其子进程,用户登出后失效。

可以在profile中加入ulimit的设置,变相的做到永久生效

5.4.1.1 常用选项
命令 作用
-H 设置硬件资源限制
-S 设置软件资源限制
-a 显示当前所有的资源限制
-c 设置core文件的最大值.单位:blocks
-d 设置数据段的最大值.单位:kbytes
-f 设置创建文件的最大值.单位:blocks
-l 设置在内存中锁定进程的最大值.单位:kbytes
-m 设置可以使用的常驻内存的最大值.单位:kbytes
-n 设置内核可以同时打开的文件描述符的最大值.单位:n
-p 设置管道缓冲区的最大值.单位:kbytes
-s 设置堆栈的最大值.单位:kbytes
-t 设置CPU使用时间的最大上限.单位:seconds
-u 最大用户进程数
-v 设置虚拟内存的最大值.单位:kbytes
unlimited 是一个特殊值,用于表示不限制

实例:

临时:

image-20240419153030131

永久:

image-20240419160507528

image-20240419160712789

6、使用sudo机制提升权限

sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。

6.1 sudo的特性

  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

6.2 sudo组成

  • 包:sudo
  • 配置文件:/etc/sudo.conf
  • 执行授权命令:/usr/bin/sudo
  • 时间戳文件:/var/db/sudo
  • 日志文件:/var/log/secure

6.3 编辑配置文件

两种方法:

vim /etc/sudoers ,但需要visudo -c来检查语法

image-20240419162232458

image-20240419162253187

visudo:自动检查语法错误

image-20240419162616971

6.4 字段解析

image-20240419164002957

字段 作用
root/zhangsan/%wheel(wheel组) 运行命令者的身份
ALL 通过哪些主机
(ALL)/(root) 以哪个用户的身份
All/user/bin/mount /dev/sr0 /mnt 运行哪些命令

实例:

image-20240419164748596

image-20240419165236146

image-20240419165509554

6.5 别名

sudo别名有四种类型:

  • User_Alias(用户)
  • Runas_Alias(代表用户)
  • Host_Alias(登录主机)
  • Cmnd_Alias(命令)

实例:

image-20240419171035060

6.6 子目录

只需要在/etc/sudoers.d文件夹下创一个文件写下配置,就跟在visudo下面写配置文件一样。

实例:

image-20240419172007394

image-20240419171950840

image-20240419172205787

二 、系统引导

1、开关机安全控制

1.1 调整BIOS引导设置

将第一引导设备设为当前系统所在硬盘;
禁止从其他设备(光盘、 U盘、网络)引导系统;
将安全级别设为setup,并设置管理员密码。

1.2.GRUB限制

使用grub2-mkpasswd-pbkdf2生成密钥;
修改/etc/grub.d/00_ header文件中, 添加密码记录;
生成新的grub.cfg配置文件。

1.3 限制更改GRUB引导参数

通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。可以使用grub2-setpassword直接设置密码。

实例:

image-20240419173054387

标签:系统安全,配置文件,etc,sudo,用户,密码,模块,应用
From: https://www.cnblogs.com/shijunan2/p/18160561

相关文章

  • 目标检测与追踪AI算法模型及边缘计算智能分析网关V4的算法应用
    目标检测与追踪是计算机视觉领域中的一个重要任务,主要用于识别图像或视频中的目标,并跟踪它们的运动轨迹。针对这一任务,有许多先进的AI算法模型,例如:YOLO(YouOnlyLookOnce):一种实时目标检测算法,通过单个神经网络模型实现对图像中多个目标的检测和定位。FasterR-CNN:基于深度学习......
  • 【网络通信】一文读懂网络应用层常见协议的区别(HTTP 、HTTPS、MQTT、FTP、RTSP、RTMP)
        应用层协议是计算机网络中至关重要的组成部分,它们定义了应用程序如何与网络进行交互,实现数据的传输、接收和处理。本文将重点介绍几种常见的应用层协议:HTTP、HTTPS、MQTT、FTP、RTSP和RTMP,分析它们的特点、区别、工作原理以及应用场景。一、HTTP协议      ......
  • 金融案例:统一查询方案助力数据治理与分析应用更高效、更安全
    随着企业数据规模的增长和业务多元化发展,海量数据实时、多维地灵活查询变成业务常见诉求。同时多套数据库系统成为常态,这既带来了数据管理的复杂性,又加大了数据使用的难度,面对日益复杂的数据环境和严格的数据安全要求,需要解决多数据库系统并存、数据孤岛严重、权限管理混乱和数据......
  • 系统安全及应用
    本章结构账号安全控制系统引导和登录控制弱口令检测端口扫描一、账号安全基本措施1.系统账号清理1.1将非登录用户的Shell设为/sbin/nologinshell——/sbin/nologin比较特殊,所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无......
  • Spring Boot应用中如何动态指定数据库,实现不同用户不同数据库的场景
    当在SpringBoot应用程序中使用SpringDataJPA进行数据库操作时,配置Schema名称是一种常见的做法。然而,在某些情况下,模式名称需要是动态的,可能会在应用程序运行时发生变化。比如:需要做数据隔离的SaaS应用。所以,这篇博文将帮助您解决了在SpringBoot应用程序中如何设置动态S......
  • python装饰器 - 理解与应用
    装饰器定义Python装饰器是一种高级功能,可以用来修改或扩展函数或类的行为。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。通过在函数定义前使用@符号和装饰器函数的名称,可以在不修改原函数代码的情况下对函数进行功能增强或修改。装饰器可以用来实现日志记......
  • 使用 .NET 的 Dev Proxy 构建和测试弹性应用
    使用.NET的DevProxy构建和测试弹性应用https://devblogs.microsoft.com/dotnet/build-test-resilient-apps-dotnet-dev-proxy/在构建连接到API的应用时,我们通常专注于让应用正常工作。但是,当API速度慢、返回错误或不可用时会发生什么?你最不想看到的就是当你的应用程序......
  • python闭包 - 理解与应用
    闭包定义闭包是指在一个函数内部定义的函数,并且这个内部函数可以访问外部函数的局部变量。当外部函数执行完毕后,内部函数仍然可以访问外部函数的局部变量,这种函数就称为闭包。在Python中,闭包通常用来保存一些状态信息,可以在外部函数执行完毕后继续使用这些状态信息。闭包可以帮......
  • 多进程编程:原理、技术与应用
    title:多进程编程:原理、技术与应用date:2024/4/2612:14:47updated:2024/4/2612:14:47categories:后端开发tags:多进程并发编程网络服务分布式系统任务处理进程池线程对比第一章:进程与线程进程与线程的概念及区别:进程:进程是操作系统中的一个程序执行......
  • js 闭包的概念及应用场景
    1.概念是内部函数可以访问外部函数作用域中的变量。2.来由由于JavaScript中的函数作用域规则和函数可以作为值传递的特性产生的3.优点封装性(可以将变量和函数封装起来,防止外部访问和修改,提高了代码的可维护性和可重用性)保存状态(即使函数已经执行完毕,状态仍然保存,在事件处理......