Centos7系统安全及应用(一)

账户安全基本措施

一、系统账户清理

1.将非登录用户的Shell设为/sbin/nologin
/sbin/nologin---禁止终端登录

[root@localhost ~]# grep "sbin/nologin$" /etc/passwd | wc -l
[root@localhost ~]# grep "/sbin/nologin$" /etc/passwd | awk -F: '{print $1}' > nologin.txt
[root@localhost ~]# cat nologin.txt

在这里插入图片描述
2.锁定长期不使用的账号
例如一些用户长期不使用,但不确认是否删除

[root@localhost ~]# useradd ajbn
[root@localhost ~]# echo "123" | passwd --stdin ajbn
[root@localhost ~]# usermod -L ajbn
[root@localhost ~]# passwd -S ajbn
[root@localhost ~]# usermod -U ajbn
[root@localhost ~]# passwd -S ajbn

在这里插入图片描述
3.锁定账号文件passwd、shadow
例如:服务器账户已固定,不再进行更改。可锁定

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow  (锁定)
[root@localhost ~]# lsattr /etc/passwd /etc/shadow     (查看文件状态)
[root@localhost ~]# useradd ajbm  (创建用户测试)
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow  (解锁)
[root@localhost ~]# useradd ajbm  (再次创建用户测试)

在这里插入图片描述

二、密码安全控制

1.设置密码有效期
默认天数为99999
适用于新建用户---密码有效期30天

[root@localhost ~]# vi /etc/login.defs
找到:
PASS_MAX_DAYS   99999
改为:
PASS_MAX_DAYS   30

适用于已有用户

[root@localhost ~]# chage -M 30 ajbn

2.强制在下次登录时更改密码

[root@localhost ~]# chage -d 0 ajbn

重新打开一个终端使用ajbn用户登录
在这里插入图片描述

三、命令历史限制

1.减少记录的命令条数
默认条数是1000条

[root@localhost ~]# vi /etc/profile
找到:
HISTSIZE=1000
改为:
HISTSIZE=5
[root@localhost ~]# source /etc/profile  (执行脚本)
[root@localhost ~]# history   (查看历史记录)

在这里插入图片描述
2.终端自动注销
在Bash终端环境中可以设置一个限制超时时间,,当超过指定时间没有任何操作自动注销终端

[root@localhost ~]# vi ~/.bash_profile
在最后面添加:
export TMOUT=10  #终端10秒不做任何操作将自动注销
[root@localhost ~]# source ~/.bash_profile   (执行脚本)

[root@localhost ~]# 等待输入超时:自动登出
在这里插入图片描述测试完后,将终端自动注销时间改为600秒

用户切换及提权

一、使用su命令切换用户

1.用途及用法
用途:Substitute User,切换用户 格式:su - 目标用户
2.密码验证
root --> 任意用户, 不验证密码 普通用户 --> 其他用户,验证目标用户的密码
【带 - 选项表示将使用目标用户的登录Shell环境】
在这里插入图片描述

[root@localhost ~]# whoami   (查看当前登录用户名)

3.限制使用su命令的用户
默认都可以使用su命令,防止密码穷举危险,只允许少量用户使用
启用pam_wheel认证模块

[root@localhost ~]# vi /etc/pam.d/su
#%PAM-1.0
auth        sufficient  pam_rootok.so          (默认就有)
auth        required    pam_wheel.so use_uid   (将前面#去掉)
[root@localhost ~]# grep wheel /etc/group
[root@localhost ~]# su - ajbn
[ajbn@localhost ~]$ su -
[ajbn@localhost ~]$ exit

不能切换到root用户,需要将用户“tom”加入到“wheel”组中

[root@localhost ~]# gpasswd -a ajbn wheel
[root@localhost ~]# su - ajbn
[ajbn@localhost ~]$ su -

在这里插入图片描述
4.查看su操作记录
安全日志文件:/var/log/secure

[root@localhost ~]# tail /var/log/secure

5.su命令的缺点
知道root密码的用户越少越安全
sudo---普通用户拥有一部分管理权限,又不需要知道root密码

二、使用sudo机制提升权限

1.sudo命令的用途及用法
用途:以其他用户身份(如root)执行授权的命令 用法:sudo 授权命令
2.配置sudo授权 /etc/sudoers
2.1文件默认权限440,vi编辑时‘:w!’保存
visudo 或者 vi /etc/sudoers 都可以编辑
2.2 记录格式:
用户 主机名=命令程序列表
用户:用户名或“%组名”(组内所有用户)
主机名:一般为localhost或实际主机名
命令列表:命令的绝对路径,多命令用‘,’号分割
分别使用ajbm用户和ajbn用户进行测试
在这里插入图片描述

[root@localhost ~]# hostname  (查看当前主机名)
localhost.localdomain         .后面不用管)
[root@localhost ~]# visudo    (编辑sudo配置文件)

【wheel组成员不需验证密码即可执行任何命令】

wheel组成员不需验证密码即可执行任何命令:
%wheel    ALL=NOPASSWD: ALL  (默认就有)

【ajbm可使用df命令】

ajbm  localhost=/bin/df     (加上这个表示可以执行/bin/df命令)

在这里插入图片描述
【可以使用通配符、取反符号!】*

[root@localhost ~]# visudo
ajbm     localhost=/usr/sbin/*,!/usr/sbin/useradd,/usr/bin/cat /etc/shadow
可以使用/usr/sbin下所有命令,但不能创建用户
可以查看 /etcshadow文件内容

3.查看sudo操作记录
需启用 Defaults logfile 配置 默认日志文件:/var/log/sudo
启用日志配置以后,sudo操作过程才会被记录

在第二行添加:
Defaults logfile = "/var/log/sudo"

在这里插入图片描述

[root@localhost ~]# su - ajbm
[ajbm@localhost ~]$ sudo /usr/sbin/ss -anpt | grep 22
[ajbm@localhost ~]$ sudo /usr/sbin/useradd abc
[ajbm@localhost ~]$ cat /etc/shadow
[ajbm@localhost ~]$ sudo /usr/bin/cat /etc/shadow

在这里插入图片描述

[root@localhost ~]# tail /var/log/sudo  (查看日志)

系统引导和登录控制

服务器一般用远程登录的方式进行管理,而本地引导和终端登录过程被忽视,会留下安全隐患。因此需要加强对其他用户的非授权介入的安全管理

1.开关机安全控制

1.设置BIOS密码
防止U盘破解root密码,从网络启动等
重启虚拟机一直按F2,进入如下

在这里插入图片描述
在这里插入图片描述
2.禁用重启热键Ctrl+Alt+Del
避免因用户误操作导致重启
在不影响此文件的前提下禁用此热键(注销此服务)

[root@localhost ~]# systemctl mask ctrl-alt-del.target

Created symlink from /etc/systemd/system/ctrl-alt-del.target to /dev/null.
重新加载systemd配置:

[root@localhost ~]# systemctl  daemon-reload

3.设置GRUB引导密码
使用grub2-mkpasswd-pbkdf2生成密钥
pbkdf算法加密更安全。在/etc/grub.d/00_header配置文件中,添加用户密码(注意--实验中每个人生成的密码不一样)

[root@localhost ~]# grub2-mkpasswd-pbkdf2   (生成密钥)
输入口令:             (设置密码)
Reenter password:     (再次输入密码)

在这里插入图片描述
修改/etc/grub.d/00_header文件中,添加密码记录

[root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
[root@localhost ~]# vi /etc/grub.d/00_header
在末尾添加:
cat << EOF
set superusers="root"
password_pbkdf2 root
PBKDF2 hash of your password is
grub.pbkdf2.sha512.10000.9936C6AF3081AFB4C32DCAF6F3853CC82EF24C532C9A67B0C9F6E2086C0B119B24B7347087CAF72FB16F9EF8E5F2A24CE0044A826F2F3C4B7981275F677C0526.C893E8BEED32E35AB0CE86E0C0843226E67BBA768CB97B3C7D2D037F8A2C95D1DF4C82A1913AC26C017CE0B6EE3E262869BA76DC581797AC3B9745174C1B5A27
EOF

在这里插入图片描述
生成新的grub.cfg配置文件

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

在这里插入图片描述
验证:重启进入grub菜单,按E键将无法修改引导参数
在这里插入图片描述

2.终端登录安全控制

1).限制root只在安全终端登录
安全终端配置:/etc/securetty

[root@localhost ~]# vi /etc/securetty

在这里插入图片描述
在这里插入图片描述
2). 禁止普通用户登录
建立/etc/nologin文件,login程序会检查此文件是否存在。如果存在则拒绝普通用户登录系统(root不受限制)
建议在服务器维护期间临时使用

[root@localhost ~]# touch /etc/nologin

使用普通用户在终端登录测试:
在这里插入图片描述
删除nologin文件或重启后即恢复正常

[root@localhost ~]# rm -rf /etc/nologin

删除后再使用普通用户进行测试:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46902396/article/details/108864780