安全加固
长久不用的账号让它识别不出来
[root@localhost ~]# useradd yuheng1 #新建账户
[root@localhost ~]# passwd yuheng1 #设置账户密码
Changing password for user yuheng1.
New password:
[root@localhost ~]# vi /etc/passwd #查看passwd文件shift+g翻到最底
yuheng1:x:1001:1001::/home/yuheng1:/bin/bash #将bin/bash改成sbin/nologin 这样就识别不出来了
账户的锁定与解锁
[root@localhost ~]# passwd -l yuheng1 #锁定yuheng1账户
Locking password for user yuheng1.
passwd: Success
[root@localhost ~]# passwd -u yuheng1 #解锁yuheng1账户
Unlocking password for user yuheng1.
passwd: Success
另一种方法usermod(没有交互提示)
[root@localhost ~]# usermod -L yuheng1 #锁定yuheng1账户
[root@localhost ~]# usermod -U yuheng1 #解锁yuheng1账户
删除账户
[root@localhost ~]# cd /home #查看home下有几个账户
[root@localhost home]# ll
total 4
drwx------. 14 yuheng yuheng 4096 Jul 7 17:42 yuheng
drwx------. 3 yuheng1 yuheng1 78 Jul 21 13:40 yuheng1
[root@localhost home]# userdel -r yuheng1 #删除yuheng1账户
[root@localhost home]# ll #查看确认
total 4
drwx------. 14 yuheng yuheng 4096 Jul 7 17:42 yuheng
锁定文件
[root@localhost ~]# chattr +i /etc/passwd #锁定passwd文件
[root@localhost ~]# chattr +i /etc/shadow #锁定shadow文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow #查看文件状态只读
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/shadow #解锁passwd文件
[root@localhost ~]# chattr -i /etc/passwd #锁定shadow文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow #查看文件状态可写可读
---------------- /etc/passwd
---------------- /etc/shadow
密码安全控制
设置密码有效期30天
[root@localhost ~]# vi /etc/login.defs #进入文件修改配置99999为30
进入/PASS_MAX搜索n下翻到第二个修改为PASS_MAX_DAYS 30
然后新建账户yuheng2
vi/etc/shadow查看新建账户yuheng2
yuheng2:$6$109zGfvz$lISohthvdf8w4j89mqh.JM2rfhi0lhb5roYh0Kd/IrIRovTotLYOmBh3e5Tic3
WWhXZV1HhCBtZVWvx3Yzir00:18464:0:30:7:::
0:30:7::: #永久密码边成了30天
已拥有用户设置
[root@localhost ~]# chage -M 30 yuheng1 #把已拥有的yuheng1账户密码有效期修改为30天
vi/etc/shadow查看yuheng1账户
yuheng1:$6$K3KdtKwZ$RzhifcazZbptAq8DjLb1kp2fdtWIgF8MWCQXEZ7
xjsKWVBGt6zy5QnIWiaWTog916Rilcpyl0z.TOcH8W.0X80:18464:0:30:7:::
0:30:7::: #永久密码边成了30天
下次登录强制更改密码
[root@localhost ~]# chage -d 0 yuheng2 #yuheng2账户下次登录强制从新设定密码
命令历史限制设置为200条
[root@localhost ~]# vi /etc/profile #编辑文件profile
/HIS搜索让那和把1000改为200
HISTSIZE=200
只保存200条之内的命令多出的下次启动不会显示
另一种改法
export HISTSIZE =200
清除历史记录
[root@localhost ~]# vi .bash_logout #进入.bash_logout编辑
# ~/.bash_logout #下面插入
history -c #清楚历史命令
clear
wq保存
[root@localhost ~]# source .bash_logout #刷新一下这个文件
[root@localhost ~]# history #确认清空历史命令
1 history
闲置60s后自动注销
全局变量
[root@localhost ~]# vi /etc/profile #进入profile编辑
export PATH #在下面插入
export TIMEOUT=60 #设置无操作60s注销
source /etc/profile #刷新一下这个文件
针对root的60s注销
[root@localhost ~]# ls -a #查看隐藏文件.bash_profile
. .cache
.. .config
anaconda-ks.cfg .cshrc
.bash_logout .dbus
.bash_profile initial-setup-ks.cfg
.bashrc .tcshrc
vi .bash_profile #进入文件编辑
export PATH #在下面插入
export TIMEOUT=60 #设置无操作60s注销
source .bash_profile #刷新一下这个文件
使用su命令切换用户
su - 目标用户
[yuheng@localhost ~]$ su - root #yuheng切换root
Password: #输入密码
Last login: Tue Jul 21 13:39:51 CST 2020 from 20.0.0.1 on pts/0
[root@localhost ~]# whoami #确认我是谁
root
限制su用户切换
[root@localhost ~]# gpasswd -a yuheng wheel #将yuheng账户放入wheel组中
Adding user yuheng to group wheel
[root@localhost ~]# vi /etc/pam.d/su #进入pam.d模块编辑
#去掉让命令生效
每一行分成三个字段
认证类型、控制类型、PAM模块及其参数
#%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 #去掉
[root@localhost ~]# vi /etc/login.defs #进入login.defs追加SU_WHEEL_ONLY yes
登录设置只有通过WHEEL认证模块的账户才能放行,这样没有在wheel下的账户想要切换账户就不能了
PAM安全认证
可插拔的认证模块不需要刷新生效
一般遵循顺序
Service 服务 - PAM 配置文件 - pam_*.so
PAM配置文件位于/etc/pam.d下
认证文件位于/etc/security
查看su是否支持PAM模块认证
[root@localhost ~]# ls /etc/pam.d | grep su #查看模块pam.d过滤里面的su信息
ksu
su
sudo
sudo-i
su-l
sudo提升权限
[root@localhost ~]# visudo #编辑sudo
shift+g最后一行o编辑
yuheng localhost=/sbin/*,!/sbin/reboot
给yuheng账户提权,除了重启其他都可以用
登录yuheng账户查看全新
[yuheng@localhost ~]$ sudo -l #查看权限
[sudo] password for yuheng:
Matching Defaults entries for yuheng on
localhost:
!visiblepw, always_set_home,
match_group_by_gid, env_reset,
env_keep="COLORS DISPLAY HOSTNAME
HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE",
env_keep+="LC_TIME LC_ALL LANGUAGE
LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User yuheng may run the following commands on
localhost:
(ALL) ALL
(root) /sbin/*,!/sbin/reboot