Linux系统安全
- IT业界
- 2025-08-25 01:42:02

目录
一、账号安全的基本措施
1.1、用户登录限制
1.1.1、禁止用户登录
1.1.2 、锁定用户
1.1.3、删除用户
1.1.4锁定配置文件
1.2、限时密码设置
1.3、历史命令
1.3.1、history
1.3.2、历史命令配置文件修改
1.4、切换用户
1.4.1、su
1.4.2、sudo
1.5、PAM安全认证
1.5.1、PAM基本概念
1.5.2、PAM配置文件语法
1.5.3、常见PAM模块
1.5.4、PAM配置示例
一、账号安全的基本措施 1.1、用户登录限制 1.1.1、禁止用户登录
/sbin/nologin是一个常用的shell,当某个用户的shell设置为/sbin/nologin时,用户将不能登录系统。即使用户拥有正确的用户名和密码,也无法通过终端或其他方式进行登录。
chsh命令与usermod命令可用于更改登录shell。 [root@localhost ~]# tail -1 /etc/passwd //查看用户属性 123123:x:1000:1000:123123:/home/123123:/bin/bash [root@localhost ~]# chsh -s /sbin/nologin 123123 //-s参数指定用户登录shell Changing shell for 123123. chsh: 警告:“/sbin/nologin”未在 /etc/shells 中列出。 Shell changed. [root@localhost ~]# tail -1 /etc/passwd 123123:x:1000:1000:123123:/home/123123:/sbin/nologin //已限制用户登录 [root@localhost ~]# su 123123 //无法登录 This account is currently not available. [root@localhost ~]# usermod -s /bin/bash 123123 //也可通过usermod命令修改shell [root@localhost ~]# tail -1 /etc/passwd 123123:x:1000:1000:123123:/home/123123:/bin/bash 1.1.2 、锁定用户passwd -l命令与usermod -L命令可以锁定用户,使密码失效。
passwd -u命令与usermod -U命令解除密码锁定。
[root@localhost ~]# passwd -l 123123 锁定用户 123123 的密码 。 passwd: 操作成功 [root@localhost ~]# passwd -u 123123 解锁用户 123123 的密码。 passwd: 操作成功 [root@localhost ~]# usermod -L zz [root@localhost ~]# su 123123 [123123@localhost root]$ su zz 密码: su: 鉴定故障 1.1.3、删除用户userdel -r命令删除用户的同时,删除与用户相关的所有文件
[root@localhost ~]# userdel -r 123123 1.1.4锁定配置文件chattr命令的功能是更改文件隐藏属性
[root@localhost ~]# chattr +i /etc/passwd //权限限制 [root@localhost ~]# lsattr /etc/passwd ----i----------- /etc/passwd [root@localhost ~]# rm /etc/passwd rm:是否删除普通文件 "/etc/passwd"?y rm: 无法删除"/etc/passwd": 不允许的操作 [root@localhost ~]# chattr -i /etc/passwd //解除限制 1.2、限时密码设置通过修改/etc/login.defs配置文件,可以对新建用户设置密码规则
[root@localhost ~]# vim /etc/login.defs # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 99999 //密码可以使用的最大天数 PASS_MIN_DAYS 0 //密码可以使用的最小天数 PASS_MIN_LEN 5 //密码最小长度 PASS_WARN_AGE 7 //密码过期前警告天数对已存在用户可通过chage命令,设置账号密码的有效期
-m设置密码可更改的最小天数-E设置账号到期的日期-M设置密码保持有效的最大天数-d显示上一次更改的日期-i设置密码到期后还可以使用天数-l显示当前设置 [root@localhost ~]# chage -M 100 123123 [root@localhost ~]# chage -l 123123 最近一次密码修改时间 :从不 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :100 在密码过期之前警告的天数 :7 1.3、历史命令历史命令记录了用户在命令行中输入的所有命令,为用户提供了极大的便利,但也给系统安全带来了潜在的风险。当用户在命令行输入了明文密码,就会存在安全风险。可通过修改/etc/profile配置文件,设置HISTSIZE和 HISTFILESIZE环境变量来控制命令历史记录的条数。
1.3.1、history功能是显示与管理历史命令记录。
-a保存命令记录-n读取命令记录-c清空命令记录-r读取命令记录到缓冲区-d删除指定序号的命令记录-w将缓冲区信息写入历史文件参考示例:
[root@localhost ~]# history 1 vim /etc/sysconfig/network-scripts/ifcfg-ens33 2 reboot 3 systemctl restart network 4 vim /etc/sysconfig/network-scripts/ifcfg-ens33 [root@localhost ~]# history -c [root@localhost ~]# history 1 history 1.3.2、历史命令配置文件修改通过修改/etc/profile配置文件,限制历史命令最大显示数量。
[root@localhost ~]# vim /etc/profile HISTSIZE=10 //修改最大显示命令数 [root@localhost ~]# history //仅显示十条历史命令 8 df 9 history 10 reboot 11 echo ' ' > /root/.bash_history 12 vim ~/.bash_history 13 history 14 vim .bash_logout 15 vim ~/.bash_history 16 vim /etc/profile 17 history 1.4、切换用户 1.4.1、suswitch user的缩写,功能是切换当前用户身份到其他用户身份。
语法格式:su 参数 用户名
-完全切换身份 [root@localhost ~]# su 123123 [123123@localhost root]$ exit exit [root@localhost ~]# su - 123123 上一次登录:四 2月 20 20:28:14 CST 2025pts/0 上 1.4.2、sudosuper user do 的缩写,功能是授权普通用户执行管理员命令。在/etc/sudoers中设置了可执行sudo指令的用户。
配置文件:/etc/sudo.conf执行授权命令:/usr/bin/sudo时间戳文件:/var/db/sudo日志文件:/var/log/secure语法格式:sudo 参数 命令
-u以指定的用户作为新的身份-E继承当前环境变量-H将用户的家目录环境变量设置为/root
-k下次强制验证当前用户的密码-l列出目前用户可执行与无法执行的指令-p改变询问密码的提示符-s执行指定的shell-V显示版本信息参考示例:
[root@localhost 123123]# sudo su - //使用超级用户重新登录一次shell 上一次登录:四 2月 20 20:54:27 CST 2025pts/0 上 [root@localhost ~]# [123123@localhost ~]$ sudo -s //以当前用户的shell开启一个root用户的shell 我们信任您已经从系统管理员那里了解了日常注意事项。 总结起来无外乎这三点: #1) 尊重别人的隐私。 #2) 输入前要先考虑(后果和风险)。 #3) 权力越大,责任越大。授权规则配置:
模块含义user授权使用sudo的用户或用户组host可以执行命令的主机名(ALL代表所有主机)(run_as_user)可以使用sudo以哪个用户的身份执行命令(ALL代表所有主机)command可以运行的命令(可以是特定的命令,或ALL(所有命令) [root@localhost ~]# vim /etc/sudoers 114 # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom 115 # user host=(run_as_user) commad 116 user1 ALL=(ALL) /usr/bin/ls //表示用户可以执行/usr/bin/ls命令,但不能执行其他命令 1.5、PAM安全认证Pluggable Authentication Modules的缩写,PAM是Linux系统中用于管理用户认证和安全策略的框架。通过模块化的方式,使系统管理员灵活配置认证、授权、密码策略等功能。
1.5.1、PAM基本概念 模块化设计:PAM将认证过程分解为多个模块,每个模块负责特定的功能配置文件:配置文件在/etc/pam.d/目录中,每个服务都有独立的配置文件模块文件目录:/lib64/security/*.so 1.5.2、PAM配置文件语法PAM配置文件的内容通常由以下若干行组成:
type control module arguments //模块类型 控制标识 模块 传递给模块的参数 type:模块类别,指认证类型。 auth:用户身份验证account:账户管理password:密码管理session:会话管理 control_flag:控制标识,定义模块的行为。 required:表示该模块必须成功,否则认证失败。requisite:表示该模块不许成功,如果失败,则认证立即终止。sufficient:表示该模块成功时认证通过,但失败时不会终止认证。optional:表示该模块是可选的,不影响最终认证结果。 module:PAM模块的名称。arguments:传递给模块的参数,可以用于配置模块的行为。 1.5.3、常见PAM模块 pam_unix.so:基于系统的密码认证,通常与/etc/shadow和/etc/passwd配合使用,验证用户名和密码。pam_nologin.so:限制用户登录,当该用户登录时,会显示/etc/nologin文件内容,并拒绝登录。pam_limits.so:限制用户可使用的资源。限制可打开的文件数量、可运行的进程数量。pam_access.so:基于访问控制列表(ACL)控制用户是否能够登陆系统。 1.5.4、PAM配置示例 [root@localhost pam.d]# grep pam_nologin * gdm-autologin:account required pam_nologin.so gdm-fingerprint:account required pam_nologin.so gdm-password:account required pam_nologin.so gdm-pin:account required pam_nologin.so上一篇
压力测试知识总结