系统安全及应用

2024-01-07 19:29:57

一,账号安全及基本措施

(一)系统账号清理

1,将非登录用户的shell? 设为? /sbin/nologin

usermod?命令


[root@localhost ~]# usermod -s /sbin/nologin lisi     
#修改lisi的shell属性

通常情况下,管理员会将某些不打算提供交互式登录权限的账户(如系统服务账户)的shell设置为 /sbin/nologin,这样可以防止误操作或恶意登录这些账户,并确保它们仅用于执行后台任务或作为守护进程运行,而不是进行人工操作

在/etc/passwd/文件里是可以看到哪些用户可以登录,哪些用户不可以登录

2,锁定长期不使用的账号

passwd? ?或者usermod命令

[root@localhost ~]# passwd -l zhaosi
                    usermod -L zhaosi

锁定用户 zhaosi

3,删除无用的账号

userdel?命令

4,锁定配置文件

chattr? 命令

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
锁定账户密码  配置文件

chattr? -i? 解除锁定

拓展:

问:中病毒怎么处理?

答:中病毒一般会导致cpu和内存出现故障,用ps或者top命令看异常进程,通过进程pid号?找到? ? ? ? proc? exe? 找到文件的真实位置,把他删除

自己建和病毒同名的文件,加上chattr? +i? 锁定文件

二,密码安全控制

(一)设置密码规则

1,对于新建用户

可以修改 /etc/login.defs 文件里的内容来设置密码规则

2,对于已有用户

chage

2.1? 选项

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

2.2常用使用情况
[root@localhost ~]# chage -d  0 zhangsan
#强制张三下一次登录一定修改密码(且密码符合复杂性要求)


[root@localhost ~]#chage -M 30 lisi
#设置密码有效期为30天

三,历史命令

Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。

输入history可以看到所有的历史命令

(一)临时清理历史命令

history? -c

(二)永久清空

vim? ~/.bashrc?

在命令里写入echo "? "? ??>~/.bash_history

解释:开机时,会先读取~/.bashrc? 配置文件,因为而~/.bash_history放的是历史命令,这样,在用户登录前,会先把历史命令全部清空

(三)设置历史命令个数

通过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户

?重新加载一下配置文件

四,切换用户su

su? zhangsan? ? ? ? ? ? 切换不加- 不完全切换

su? -zhangsan? ? ? ? ? ?加换加- 是完全切换

限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组(超级管理员组)中
  • 启用pam_wheel认证模块

pam_rootok.so? ? ? root用户不需要密码也可以切换用户;如果将其修改为注释(在这一行前加#表示注释)表示root切换到普通用户也需要修改密码

pam_wheel.so? 只有wheel组才可以切换用户?

五,PAM安全认证

su命令的安全隐患

默认情况下,任何用户都允许使用su? 命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。为了加强su命令的使用控制,可借助于pam认证模块,只允许极个别用户使用su命令进行切换。

(一)相关文件

1.? ? ? ? ?/usr/lib64/security

存放功能模块

这个路径通常存放着一些安全相关的库文件,尤其是在使用PAM时。对于64位系统,程序的库文件一般存储在/usr/lib64/lib64目录下。在该路径下的security子目录里可能包含用于PAM认证机制的动态链接库(.so文件),这些库实现了各种具体的认证策略

2.? ? ? ? /etc/pam.d

配置文件

?这个目录包含了PAM模块的具体应用配置文件,每个应用程序都有一个对应的配置文件,例如/etc/pam.d/sshd对应SSH服务,/etc/pam.d/login对应本地登录等。这些配置文件定义了在用户登录或者执行特定操作时,系统应如何按照顺序调用不同的PAM模块进行身份验证、账户管理和会话管理等操作。
3.? ? ? ?/etc/security

复杂的配置文件

此目录则包含了一些高级的安全性配置文件,如限制用户资源使用量的配置文件limits.conf,以及与PAM交互的一些安全设置文件,比如用于密码复杂度检查的passwd配置等。此外,还包括了与sudo权限控制相关的文件以及其他系统级别的安全配置项。

(二)pam?工作原理

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

PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证

用户访问服务器时,服务器的某一个服务程序会把用户的请求发送到pam模块进行认证

不同的应用程序所对应的pam?模块是不同的

PAM认证过程示例:

1.使用者执行/usr/bin/passwd 程序,并输入密码
2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件
3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)

(三)专用配置文件/etc/pam.d/ 格式

每个程序单独一个配置文件,这个文件记录了这个程序怎么调用pam

可以看到,有四列

type:指模块类型,即功能

control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现 module-path: 用来指明本模块对应的程序文件的路径名

Arguments: 用来传递给该模块的参数

1,type? 模块类型

  • Auth 账号的认证和授权? ? ? ? ? ? ? ? ??

? ? ? ?指账户是否有效

  • Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)

? ? ? ? 指账户是否在有效期

  • Password 用户修改密码时密码复杂度检查机制等功能

? ? ? ? 账户密码是否有效

  • Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等

? ? ? ? 可以同时和多少会话*(可以使用多少资源)

  • -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用

2,control?控制位

required 一票否决 如果失败,最后一定失败,但是会继续往下走,到最后再回到失败

requisite 如果失败 会立即结束验证 反馈失败

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

optional 可选项

3,PAM模块

默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。

3,1? ?shell?模块

功能:检查有效shell

只规定除nologin之外的类型通过? (用户的shell?不在里面就不让登录)

3.2? ? securetty模块? ?

功能:只允许root用户在/etc/securetty列出的安全终端上登录

?

将第一行注释的话,可以使用telnet协议进行远程登录??

不建议使用telnet协议登录,因为telnet是明文传输?,使用pam的目的是为了增强安全性

3.3? ?pam_nologin.so 模块

功能:如果/etc/nologin文件存在,将导致非root用户不能登录,当该用户登录时,会显示/etc/nologin文件内容,并拒绝登录(可以用于日常维护使用)

3.4? ?limit?模块
功能:

控制进程占用资源例如:可打开的文件数量,可运行的进程数量,可用内存空间

配置文件格式

vim 打开/etc/security/limits.conf这个配置文件,这个文件的内容就是控制进程打开的数量和内存大小

?

domain用户名
@组名
*表示所有用户和组
typehard:硬限制
soft:软限制
? —:软硬一起,相当于硬限制
itemcore :限制核心文件大小(KB)
data :最大数据大小(KB)
fsize :最大文件大小(KB)
memlock :最大锁定在内存中的地址空间(KB)
nofile :打开文件描述符的最大数目
rss :最大常驻集大小(KB)
stack :最大堆栈大小(KB)
cpu :最大cpu时间(MIN)
nproc :最大进程数
as :地址空间限制(KB)
maxlogins :该用户的最大登录数
maxsyslogins :系统上的最大登录数
priority :带锁运行用户进程的优先级
locks :用户可以持有的最大文件数
sigpending :挂起信号的最大数量
msgqueue : POSIX消息队列使用的最大内存(字节)
nice :允许提升的最大优先级:[: 20,19
rtprio :最大实时优先级
limit? 模块例子

?李四 这个用户在系统做个只可以打开5个进程(- 是软硬限制都有)

查看李四打开了多少个进程

内核调优,把系统可访问数量调大

输入ulimit? -a?查看看一下当前显示的所有资源

?

压力测试

?ab压力测试 -c 一次 -n一共

先来进行一个压力测试? 让它同时打开1025个文件? 最多打开5000个进行测试?

?可以看到,会有提示信息,无法同时打开,可以通过 ulimit? -n 来调整

或者在配置文件里加上,表示所有用户最大打开文件数量为100000?

?

六,sudo提权操作

(一)用途及用法

用途:以其他用户身份如(root)执行授权的命令

用法:?sudo? ?授权命令

(二)特性

  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员

  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器

  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票

  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

(三)配置文件

1,介绍具体含义

[root@localhost ~]#vim /etc/sudoers
[root@localhost ~]#visudo

?

? 第一个root:? ? ? ? ? ? ? ? ? 哪个用户要使用命令

? ?ALL? ? ? ? ? ? ? ? ? ? ? ? ? ? 哪台主机(可以写域名,也可以写网段 all 就是所有)

(ALL)? ? ? ? ? ? ? ? ? ? ? ? ?以谁的身份

? ? ALL? ? ? ? ? ? ? ? ? ? ? ? ? ? ?任何命令、

生产环境建议把这个注释掉,有人把用户名叫root 就可以执行任何命令

2,具体使用方法

配置文件写 ?

?外面命令要加sudo 输入的命令要和配置文件一样

3,?取反与* 的用法

3.1取反

?!取反 同时写可以,不可以 后面的生效

就是不能看

3.2? *

当配置文件写*? 有bug

只写message shadow 也可以看了? ? ? ? ? ?因为把空格 /etc/shadow 看成*

解决办法:

?

3.3? 拓展

?

(四)增加日志

进入visudo中配置defaults? logfile="/data/sudo.log"

??可以查看日志文件

?

(五)?对组

(六)?子配置文件

在子配置文件写sudo权限

?

作用:方便管理

最好先改一下权限,默认比较危险

?

(七)别名

sudo别名有四种类型:

  • User_Alias(用户)

  • Runas_Alias(代表用户)

  • Host_Alias(登录主机)

  • Cmnd_Alias(命令)

别名格式:必须大写字母,数字可以使用但是不能放在开头

?

文章来源:https://blog.csdn.net/wyq2070857323/article/details/135409403
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。