(1)将非登录用户的Shell设为/sbin/nologin
usermod -S /sbin/nologin
(2)锁定长期不使用的账号
usermod-L用户名
passwd -|用户名
passwd -S用户名
(3)删除无用的账号
userdel [-r]将家目录一起删掉
(4)锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shadow(锁定文件并查看状态)
Isattr /etc/passwd /etc/shadow(解锁文件并查看状态)
chattr -i /etc/passwd /etc/shadow(解锁文件并查看状态)
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow [root@localhost ~]# lsattr /etc/passwd /etc/shadow ----i----------- /etc/passwd ----i----------- /etc/shadow 此刻阻止添加修改密码 [root@localhost ~]# chattr -i /etc/passwd /etc/shadow [root@localhost ~]# lsattr /etc/passwd /etc/shadow ---------------- /etc/passwd ---------------- /etc/shadow 此刻解锁定可以添加修改密码
(1)设置密码有效期
(2)要求用户下次登录时修改密码
适用于新用户 [root@localhost ~]# vim /etc/login.defs # # Please note that the parameters in this configuration file control the # behavior of the tools from the shadow-utils component. None of these # tools uses the PAM mechanism, and the utilities that use PAM (such as the # passwd command) should therefore be configured elsewhere. Refer to # /etc/pam.d/system-auth for more information. # # *REQUIRED* # Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence. # QMAIL_DIR is for Qmail # #QMAIL_DIR Maildir MAIL_DIR /var/spool/mail #MAIL_FILE .mail # 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 30 PASS_MIN_DAYS 0 :wq
适用于老用户 [root@localhost ~]# chage -M 30 123 天数 用户名 [root@localhost ~]# cat /etc/shadow |grep 123 123:$6$1VOb.Rd.emlYopvT$tclzmGjvX3.y/pLPumnx.L1Ew4s8bCP2Ovc7tjYGO0R3/LljHB/gqlhuyleqjjsv1lJTwDoyTobYAJmLiULkH0::0:30:7::: 我们可以通过此查看密码有效期 [root@localhost ~]# chage -d 0 123强制每次登陆都需要改密码
[root@localhost ~]# echo “123123” |passwd --stdin 123 更改用户123的密码为123123
减少记录的命令条数
注销时自动清空命令历史
(1)产看历史history
[root@localhost ~]# history 1 vim /etc/sysconfig/network-scripts/ifcfg-ens33 2 vim /etc/sysconfig/network-scripts/ifcfg-ens33 3 systemctl restart network 。。。(以下还有好多,此处省略)
(2)临时隐藏历史
[root@localhost ~]# history -c 临时隐藏历史,关机重启后会再次显现 [root@localhost ~]# history 1 history
(3)减少记录的命令条数
[root@localhost ~]# vim /etc/profile 输入/HIS<回车> HOSTNAME=`/usr/bin/hostname 2>/dev/null` HISTSIZE=10(这这里修改) :wq (保存退出) [root@localhost ~]# source /etc/profile我们刷新一下 [root@localhost ~]# history 391 chage -M 30 123 392 cat /etc/shadow |grep 123 393 su 123 394 hitory 395 history 396 vim /etc/profile 397 history 398 source .bashrc 399 source /etc/profile 400 history (现在我们就只显示最近十条历史)
(4)清空命令历史
[root@localhost ~]# vim .bashrc # .bashrc 按o插入,在空白处输入 echo "" > ~/.bash_history :wq 保存退出 [root@localhost ~]# source .bashrc 刷新 [root@localhost ~]# cat ./bash_history (里面的东西空了) [root@localhost ~]# reboot重启下 [root@localhost ~]# history历史就无了 1 history
闲置60秒后自动注销
[root@localhost ~]# vim .bash_profile PATH=$PATH:$HOME/bin export PATH G到行尾,输入 export TMOUT=60 <esc>输入 :wq 保存退出 [root@localhost ~]# source .bash_profile 要刷新下 闲置60秒会自动注销
用途:Substitute User,切换用户
格式:su -用户名
root→任意用户,不需要验证密码
普通用户→其他用户,需要验证目标用户的密码
[root@localhost ~]# su 123 [123@localhost root]$ pwd /root [123@localhost root]$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 不加-,保留目前所有的环境 [root@localhost ~]# su - 123 [123@localhost ~]$ pwd /home/123 [123@localhost ~]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/123/.local/bin:/home/123/bin 加-,使用目标用户的shell环境,目录切换为目标用户的家目录
查看当前用户名
[123@localhost ~]$ whoami 123 查看当前用户名
将允许使用su命令的用户加入wheel组
启用pam_wheel
[root@localhost pam.d]# vim su 将第六行开启,删除# #%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. auth required pam_wheel.so use_uid(开启后只有wheel组里面的用户才能使用su) auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so :wq [123@localhost pam.d]$ su root 密码: 12^Hsu: 拒绝权限(这里权限被拒绝) 开启第二行,注释(#)第六行与注释第二行与第六行,都是所有用户都可以使用su命令
安全日志文件:/var/log/secure
(1)默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险
(2)为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
(1)是一种高效而且灵活便利的用户级别的认证方式
(2)是当前Linux服务器普遍使用的认证方式
(1)一般遵循的顺序
Service (服务) →PAM (配置文件) →pam_ *.so
(2)首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security'下)进行安全认证
(3)用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
(4)不同的应用程序所对应的PAM模块是不同的
(1)查看某个程序是否支持PAM认证,可以用Is命令
示例:查看su是否支持PAM模块认证
[123@localhost pam.d]$ ls /etc/pam.d | grep su ksu su sudo sudo-i su-l
(2)查看su的PAM配置文件: cat /etc/pam.d/su
每一行都是一个独立的认证过程
每一行可以区分为三个字段:认证类型;控制类型;PAM模块及其参数
[123@localhost pam.d]$ cat /etc/pam.d/su #%PAM-1.0 #auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so
第一列代表PAM认证模块类型
auth:对用户身份进行识别,如提示输入密码,判断是否为root。
account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password:使用用户信息来更新数据,如修改用户密码。
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,
用户数据的打开和关闭,挂载文件系统。能连接几个终端
第二列代表PAM控制标记
required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite:与reguired类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),
include:表示在验证过程中调用其他的PAM配置文件。
比如很多应用通过完整调用/ etc/pam.d/syatem- auth (主要负责用户登录系统的认证工作)
来实现认证而不需要重新逐一去 写配置项。
用途:以其他用户身份(如root)执行授权命令
用法:sudo 授权命令
(1)visudo或者vi /etc/sudoers
(2)记录格式
用户 主机名列表=命令程序列表
[123@localhost root]$ sudo ifconfig ens33:2 192.168.91.202/24 我们信任您已经从系统管理员那里了解了日常注意事项。 总结起来无外乎这三点: #1) 尊重别人的隐私。 #2) 输入前要先考虑(后果和风险)。 #3) 权力越大,责任越大。 [sudo] 123 的密码: 对不起,用户 123 无权以 root 的身份在 localhost.localdomain 上执行 /sbin/ifconfig ens33:2 192.168.91.202/24。 [root@localhost ~]# visudo ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root ALL=(ALL) ALL ## Allows members of the 'sys' group to run networking, software, ## service management apps and more. # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL ## Allows members of the users group to mount and unmount the ## cdrom as root # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom ## Allows members of the users group to shutdown this system # %users localhost=/sbin/shutdown -h now ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment) #includedir /etc/sudoers.d 123 localhost=(root) /sbin/iconfig :wq