Linux中系统安全及应用

发布于:2025-04-04 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

一.账号安全基本措施

1.系统账号清理

1.1 将用户设置为无法登录

1.2 锁定用户

1.3 删除用户

1.4锁定账户密码

2.密码安全控制

3.命令历史

4.切换用户

二.pam安全认证 

1.PAM相关文件

2.PAM工作原理

3.sudo

3.1.sudo组成

3.2sudo命令

3.3 sudo设置 


一.账号安全基本措施

1.系统账号清理

  • 将用户设置为无法登录

  • 锁定账户

  • 删除账户

  • 锁定账户密码 本质锁定

1.1 将用户设置为无法登录

usermod -s /sbin/nologin 用户名

1.2 锁定用户

usermod -L 用户名
 
passwd -l 用户名
 
passwd -S 用户名

1.3 删除用户

userdel -r  用户名

1.4锁定账户密码

chattr +i /etc/passwd /etc/shadow
 
lsattr /etc/passwd /etc/shadow(锁定文件并查看状态)
 
chattr -i /etc/passwd /etc/shadow(解锁)
 
md5sum /etc/password    校验和

2.密码安全控制

2.1对于新建用户

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

[root@localhost ~]# vim /etc/login.defs              
#适用于修改后生效后修改的用户
     --------------------------------
     25 PASS_MAX_DAYS   99999
     26 PASS_MIN_DAYS   0
     27 PASS_MIN_LEN    5
     28 PASS_WARN_AGE   7
[root@localhost ~]# tail -5 /etc/shadow            
#修改密码有效期限

2.2 对于已有用户

可以使用chage命令

格式:chage [选项] 用户名

常用选项:

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

3.命令历史

history(查看历史命令)
 
vim /etc/profile  -->  export HISTSIZE=XX  -->  source /etc/profile(限制历史命令数量)
 
history -c(临时清空历史命令)
 
vim /etc/profile  -->  > ~/.bash_history

4.切换用户

切换用户的方式:

su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换

su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换

说明:root su至其他用户无须密码;非root用户切换时需要密码

注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

限制使用su命令的用户:

  • 将允许使用su命令的用户加入wheel组 
    gpasswd wheel -a 用户名
    
  • 启用pam_wheel认证模块
    vim /etc/pam.d/su -> 开启 auth   required   pam_wheel.so use_uid 的配置

二.pam安全认证 

1.PAM相关文件

  • 包名: pam

  • 模块文件目录:/lib64/security/*.so

  • 特定模块相关的设置文件:/etc/security/ 功能比较强大的模块 才有特定的配置文件

  • man 8 加模块名 可以查看帮助

  • 应用程序调用PAM模块的配置文件

  1. 主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置

  2. 为每种应用模块提供一个专用的配置文件:/etc/pam.d/ APP_NAME

  3. 注意:如/etc/pam.d存在,/etc/pam.conf将失效

2.PAM工作原理

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

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

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回传的结果决定下一个动作(重新输入密码或者通过验证)

3.sudo

3.1.sudo组成

包:sudo

配置文件:/etc/sudo.conf

执行授权命令:/usr/bin/sudo

时间戳文件:/var/db/sudo

日志文件:/var/log/secure

授权规则配置文件:/etc/sudoers  #修改文件
                                /etc/sudoers.d/*.conf  子配置 
 

3.2sudo命令

ls -l   /usr/bin/sudo
sudo  -i  -u  wang 切换身份功能和 su 相似,但不一样,sudo必须提前授权,而且要输入自已的密码
sudo  [ -u user]  COMMAND 
-V 显示版本信息等配置信息
-u user 默认为root
-l,ll 列出用户在主机上可用的和被禁止的命令
-v 再延长密码有效期限5分钟,更新时间戳
-k 清除时间戳(1970-01-01),下次需要重新输密码
-K 与-k类似,还要删除时间戳文件
-b 在后台执行指令
-p 改变询问密码的提示符号
 示例:-p "password on %h for user %p: "

3.3 sudo设置 

vi  /etc/sudoers(此文件的默认权限为 440,保存退出时必须执行“:wq!”命令来强制操作)

用户 主机名=命令程序列表    //可以使用通配符*全部,!取反符号

别名创建
User_Alias 大写别名=用户1,用户2,……
Host_Alias 大写别名=主机名1,主机名2,……
Cmnd_Alias 大写别名=程序1,程序2,……

模块 含义
user(用户名或群组名) 表示系统中的那个用户或群组,可以使用 sudo 这个命令。
host (被管理主机的地址) 用户可以管理指定 IP 地址的服务器。这里如果写 ALL,则代表用户可以管理任何主机;如果写固定 IP,则代表用户可以管理指定的服务器。如果我们在这里写本机的 IP 地址,不代表只允许本机的用户使用指定命令,而是代表指定的用户可以从任何 IP 地址来管理当前服务器。
runas(以谁的身份运行) 就是把来源用户切换成什么身份使用,(ALL)代表可以切换成任意身份。这个字段可以省略。
授权命令 表示 root 把什么命令命令授权给用户,换句话说,可以用切换的身份执行什么命令。需要注意的是,此命令必须使用绝对路径写。默认值是 ALL,表示可以执行任何命令。