生命在于学习——Linux安全加固以及基线检查

在这里插入图片描述

一、账号管理

1、口令锁定策略

基线检查:

查看文件more /etc/pam.d/password-auth

判定条件:是否存在以下内容

auth required pam_tally2.so deny=5 onerr=fail unlock_time=300 even_deny_root=5 root_unlock_time=600

安全加固:
(1)执行备份
(2)修改策略,编辑文件,增加以上内容。
ps:如果要对root用户生效,请在内容后继续添加:

even_deny_root=5 root_unlocak_time=600

查询被锁定的账号:

pam_tally2 -u

手动解锁某个被锁定账号:

pam_tally2 -u 用户名 -r

2、口令生存期

基线检查:

查看文件more /etc/login.defs

判定条件:检查参数值是否满足要求

PASS_MAX_DAYS用户密码最长使用天数不大于90
PASS_WARN_AGE用户密码到期提前提醒天数为7

安全加固:
(1)执行备份
(2)修改策略,编辑文件,增加以下内容,如果存在则修改。

PASS_MAX_DAYS 90
PASS_WARN_AGE 7

执行命令:修改已有用户的口令生存期和过期告警天数

chage -M 9 -W 7 username

3、口令复杂度

基线检查:执行命令查看是否有返回结果

grep -E "^minlen|/^minclass" /etc/security/pwquality.conf

判定条件:

有返回结果等于或大于,则合规。minlen=8,minclass=3

安全加固:
(1)执行备份
(2)执行命令:

authconfig --passminlen=8 --passminclass=3 --update
至少包含数字、小写字母、大写字母、特殊字母三项,且长度大于等于8。

4、检查密码重用是否受限制

基线检查:查看文件

cat /etc/pam.d/system-auth
找到password sufficient pam_unix.so这行

判定条件:

检查末尾是否有remember参数,有参数且值大于等于5合规

安全加固:

(1)备份
(2)执行命令,编辑文件:
vim /etc/pam.d/system-auth
找到password sufficient pam_unix.so这行
末尾添加remember参数且值等于5

它表示禁止使用最近用过的五个密码(使用过的密码会保存在/etc/security/opasswd下面)。

5、检查是否存在除root之外UID为0的用户

基线检查:执行命令查看返回值

awk -F:'($3 == 0){print $1}' /etc/passwd

判定条件:

返回值包括root以外的条目,则低于安全要求

安全加固:

(1)备份
(2)执行命令
userdel -r username删除返回值除root外的用户
usermod -u uid username为他们分配新的UID

6、禁止存在空密码的账号

基线检查:执行命令

awk -F:'($2 == ""){print $1}' /etc/shadow

判定条件:

执行命令后没有返回值合规

安全加固:

为账户设置满足密码复杂度的密码:
passwd username

二、服务管理

1、禁止SSH空密码用户登录

基线检查:执行命令

more /etc/ssh/sshd_config

判定条件:

查看PermitEmptyPasswords的值是no则合规。

安全加固:

1、备份
2、将其值改为no
3、systemctl restart sshd

2、SSH多次登录失败后锁定用户

基线检查:执行命令

more /etc/pam.d/sshd

判定条件:

查看是否存在
auth required pam_tally2.so deny=5 unlock_time=300
deny小于等于5,unlock_time大于等于300则合规

安全加固:

1、备份
2、编辑/etc/pam.d/sshd,将上述内容添加。
备注:如果要对root用户也限制,继续添加:
even_deny_root=5 root_unlock_time=1200

3、限制root用户远程登录

基线检查:执行命令

more /etc/ssh/sshd_config
查看PermitRootLogin参数的值

判定条件:

PermitRootLogin参数值为no且该行没有被注释则合规。

安全加固:

1、备份
2、编辑/etc/ssh/sshd_config找到PermitRootLogin将其后面的yes改为no,并删除前面的#
3、systemctl restart sshd

4、检查SSH使用的端口

基线检查:执行命令

more /etc/ssh/sshd_config
查看port的值

判定条件:

Port参数值不是默认值(22)且该行没有被注释则合规

安全加固:

1、编辑/etc/ssh/sshd_config找到port将其后方的22改为其他端口号,然后删除#注释。
2、执行命令:semanage port -a -t ssh_port_t tcp 修改后的端口号
	将修改后的端口添加到SELinux开放给ssh使用的端口
3、执行命令:firewall-cmd --zone=public --add-port=ssh 端口号/tcp --permanent
	防火墙放行刚修改的ssh端口
4、执行命令:systemctl restart sshd; systemctl restart firewalld
	重启ssh和防火墙。

5、设置登录超时自动注销

基线检查:执行命令

more /etc/profile 查看是否有export TMOUT=180

判定条件:

存在export TMOUT且他的值小于等于180则合规

安全加固:

1、备份
2、编辑/etc/profile在该文件末尾添加export TMOUT=180或者将原来的值改为180。

三、权限管理

1、检查默认umask的值

基线检查:执行命令

more /etc/profile 查看该文件末尾是否设置umask值

判定条件:

文件末尾存在umask 027则合规

安全加固:

1、备份
2、编辑/etc/profile 在文件末尾添加umask 027。
3、source /etc/profile

2、检查重要目录和文件的权限设置

基线检查:执行命令

ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/hosts.allow /etc/hosts.allow /etc/services /etc/ssh/sshd_config查看文件权限。

判定条件:符合以下条件

/etc/passwd文件的权限<=644
/etc/shadow文件的权限<=600
/etc/group文件的权限<=644
/etc/gshadow文件的权限<=600
/etc/hosts.deny文件的权限<=644
/etc/hosts.allow文件的权限<=644
/etc/services文件的权限<=644
/etc/ssh/sshd_config文件的权限<=600
以上条件同时满足则合规,否则不合规。

安全加固:

对不符合要求的文件使用chmod命令修改权限。

3、限制可以su为root的用户

基线检查:执行命令

more /etc/pam.d/su 找到auth required pam_wheel.so use_uid查看该行是否存在且是否被注释

判定条件:

auth required pam_wheel.so use_uid存在且没有被注释则合规

安全加固:

1、备份
2、编辑/etc/pam.d/su找到该值,删除前面的#使其生效,如果不存在则添加该值。
3、将需要su为root的用户使用命令:usermod -G wheel username 加入 wheel 组,该用户即可su为root用户。如果需要将某个用户移出wheel组,可使用命令:gpasswd -d username wheel

四、日志管理

1、检查rsyslog服务启用状况以及对登录事件的记录

基线检查:执行命令

more /etc/rsyslog.conf查看authpriv的值

判定条件:

authpriv的值为authpriv.*  /var/log/secure则合规
注:/var/log/secure为可变项

安全加固:

1、备份:cp - p /etc/rsyslog.conf /etc/rsyslog.conf. bak
2、执行命令:systemctl enable rsyslog 添加开机自启动
、执行命令:systemctl start rsyslog 启动服务
4、执行命令:vi/etc/rsyslog.conf 查看authpriv值 将其设置为 authpriv.*/var/log/secure
将 authpirv 的任何级别的信息记录到 /var/log/secure 文件中
5、执行命令:systemctl restart rsyslog

2、检查是否启用记录定时任务行为日志功能

基线检查:执行命令

more /etc/rsyslog.conf查看cron的值

判定条件:

corn值为cron.*则合规

安全加固:

1、执行备份:cp -p /etc/rsyslog.conf /etc/rsyslog.conf_bak
2、执行命令:vi /etc/rsyslog.conf 查看 cron 的值,将其设置为
cron.* /var/log/cron
#即将 cron 的任何级别的信息记录到 Nvar/log/cron 文件中
3、执行命令:systemctl restart rsyslog 重启 rsyslog 使配置生效

3、查看SSH LogLevel设置是否为INFO

基线检查:执行命令

more /etc/ssh/sshd_config找到LogLevel

判定条件:

LogLevel的级别是INFO且未被注释则合规

安全加固:

1、执行命令:vi /etc/ssh/sshd_config 找到 LogLevel 将其设置为 INFO,如果
该行被注释,还应删掉该行前方的#
2、执行命令:Systemctl restart sshd 重启ssh服务使其生效

4、是否将/var/log/messages文件设置为只可追加

基线检查:执行命令

lsattr /var/log/messages查看该文件属性第六位是否为a

判定条件:

第六位为a则合规。

安全加固:

执行命令:lsattr /var/log/messages 查看该文件属性第六位是否为a
不为a则执行命令:chattr +a /Nar/log/messages 将该文件的属性修改
为只可追加

猜你喜欢

转载自blog.csdn.net/qq_15131581/article/details/132010545