Linux基线加固原理,及工作过程

  • 账户管理

1.1口令锁定策略

检查方法

1、查看配置文件:

cat /etc/pam.d/password-auth

2、查看是否存在如下内容:

auth required pam_tally2.so deny=5 onerr=fail unlock time=300 even_deny_root=5 root unlock_time=600

(连续认证5次会锁定账户,锁定300秒,root的话,5次失败,锁定600秒)

加固方法

1、执行备份

cp -p /etc/pam.d/password-auth /etc/pam.d/password-auth_bak

2、修改策略设置,编辑文件

vi /etc/pam.d/password-auth

3、增加以下内容:

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

注意:unlock_time和root_unlock_time单位为秒。

4、验证

备注

1、  PAM通过提供一些动态链接库和一套统一的AP1,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。

2、root下查看因为验证登录失败的账户

pam_tally2 -u

3、解锁

pam_tally2 -u username -r

1.2口令生存期

检查方法

1、查看文件

cat /etc/login.defs

检查如下参数值是否满足要求:

PASS_MAX_DAYS用户的密码最长使用天数不大于90

PASS_WARN_AGE #用户的密码到期提前提醒天数为7

加固方法

1、执行备份

cp -p /etc/login.defs /etc/login.desfs_bak

2、修改策略设置,编辑/etc/login.defs在文件中加入如下内容(存在的话修改,不存在则添加):

PASS_MAX_DAYS 90

PASS_WARN_AGE 7

chage -M 90 -W 7 username

//修改已有用户的口令生存期和过期告警天数

1.3口令复杂度

检查方法

1、执行命令

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

查看是否有返回结果。有返回结果且返回结果等于或者大于minlen = 8,minclass =3 即合规,否则不合规。

加固方法

1、执行备份

cp -p /etc/security/pwquality.conf /etc/security/pwquality.conf_bak

2、执行命令

authconfig --passminlen=8 --passminclass=3 –update

(至少包含数字、小写字母、大写字母、特殊字符中的三项,且密码长度>=8)

3、执行命令

chage -d 0 username

强制指定的用户下次登录修改密码

1.4检查密码重用是否受限制

检查方法

1、查看文件

cat /etc/pam.d/system-auth

找到password sufficient pam_unix.so 这行,检查未尾是否有remember参数

加固方法

1、执行备份

cp -p /etc/pam.d/system-auth

2、执行命令

vi /etc/pam.d/system-auth

编辑该文件,找到password sufficient pam_unix.so这行在末尾添加remember参数他的值为5,原来的内容不用更改,只在末尾加remember=5即可,他表示禁止使用最近用过的5个密码(已使用过的密码会被保存在 /etc/security/opasswd下面)

1.5检查是否存在除root之外UID0的用户

检查方法

1、执行命令

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

查看返回值,若返回值除了root外还有其他内容,则需要加固

加固方法

1、执行备份

cp -p /etc/passwd cp -p /etc/shadow

2、执行命令

userdel -r username

删除返回值中root除外的其他用户。

或者使用命令:

usermod -u uid username

为他们分配新的UID

1.6禁止存在空密码的帐户

检查方法

1、执行命令

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

执行命令后没有返回值即合规,否则不合规

加固方法

1、为帐户设置满足密码复杂度的密码

passwd username

  • 服务管理

2.1禁止SSH空密码用户登录

检查方法

1、执行命令

cat /etc/ssh/sshd_config

查看 PermitEmptyPasswords 配置情况

加固方法

1、执行备份

cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

2、执行命令

vi /etc/ssh/sshd_config

找到 PermitEmptyPasswords 将其设置为no后保存并退出

3、执行命令

systemctl restrat sshd

重启服务使配置生效

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

检查方法

1、执行命令

cat /etc/pam.d/sshd

查看是否存在auth required pam_tally2.sodeny=5 unlock_time=300

加固方法

1、执行备份

cp -p /etc/pam.d/sshd /etc/pam.d/sshd bak

2、执行命令

vi /etc/pam.d/sshd

在文件开头添加一行,内容为

auth requiredpam_tally2.so deny=5 unlock time=300

如要对root用户也进行限制,在刚添加的内容后继续添加:

even deny_root=5 root_unlock time=1200

3、重启生效

systemctl restart sshd

2.3限制root用户远程登录

检查方法

1、执行命令

cat /etc/ssh/sshd_config

查看PermitRootLogin 参数的值

加固方法

1、执行备份

cp -p /etc/ssh/sshd_config /etc/ssh

2、执行命令

vi /etc/ssh/sshd_config

找到 PermitRootLogin 将其后方的 yes改为 no 并删除前方的 # 取消该行的注释

3、执行命令

systemctl restrat sshd

重启服务使配置生效

2.4检查ssh使用的端口

检查方法

1、执行命令

cat /etc/ssh/sshd_config

查看Port 参数的值

加固方法

1、执行命令

vi /etc/ssh/sshd_config

找到 Port 将其后方的 22 改为其他端口号,然后删除前方的 # 取消该行的注释 (端口号最好挑10000-65535之间的端口号,10000以下容易被系统或一些特殊软件占用)

2、执行命令

semanage port -a -t ssh_port_t -p tcp 22233

3、执行命令

firewall-cmd --zone=public --add-port=22233/tcp --permanent

重启服务使配置生效

4、执行命令

systemctl restart sshd;systemctl restart firewalld

重启ssh和防火墙,使配置生效

2.5设置登录超时自动注销

检查方法

1、执行命令

cat /etc/profile

查看是否有export TMOUT=180

加固方法

1、执行备份

cp - p /etc/profile /etc/profile_bak

2、执行命令

vi /etc/profile

在该文件末尾添加export TMOUT=180,或者将原来的值修改为180注意=号前后不要有空格。

  • 权限管理

3.1检查默认umask

检查方法

1、执行命令

cat /etc/profile

查看该文件末尾是否设置umask值

加固方法

1、执行备份

cp - p /etc/profile /etc/profile_bak

2、执行命令

vi /etc/profile

在该文件末尾添加umask 027

3、执行命令

source /etc/profile

使配置生效

备注

umask 027是一种文件权限掩码,它用于控制新创建的文件和目录的默认权限。umask 027指定了在创建文件和目录时,文件权限将减去2个位的可写权限和一个位的可执行权限。也就是说,如果创建一个新文件,权限将是所有者权限为rw-r-----(所有者可读可写,组可读,其他用户没有任何权限),如果创建一个新目录,权限将是所有者权限为rwxr-x---(所有者可读可写可执行,组可读可执行,其他用户没有任何权限)。

3.2检查重要目录和文件的权限

检查方法

1、执行命令

ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/hosts.allow /etc/hosts.allow

/etc/services /etc/ssh/sshd_config

查看文件权限

加固方法

1、执行命令

ls -l /etc/passwd /etc/shadow /etc/group /etc/ashadow/etc/hosts.allow /etc/hostsallow /etc/services /etc/ssh/sshd_config

查看文件权限

2、对不符合要求的文件使用chmod命令修改权限,如

chmod 600 /etc/shadow

备注

/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

3.3设置限制可以suroot的用户

检查方法

1、执行命令

more /etc/pam.d/su

找到auth required pam_wheel.souse_uid查看该行是否存在且是否被注释

加固方法

1、执行备份

cp - p /etc/pam.d/su /etc/pam.d/su_bak

2、执行命令

vi /etc/pam.d/su

找到 auth required pam_wheel.souse_uid 删除该行前面的 # 使其生效,如果该行不存在则在文件末尾添加该行。

3、将需要su为root的用户使用命令:

usermod -G wheel username

加入 wheel 组,该用户即可su为root用户。如果需要将某个用户移出wheel组,可使用命令:

gpasswd -d username wheel

  • 日志管理

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

检查方法

1、执行命令

cat /etc/rsyslog.conf

查看authpriv的值,authpriv.* /var/log/secure即合规

加固方法

1、执行备份

cp - p /etc/rsyslog.conf /etc/rsyslog.conf_bak

2、执行命令

systemctl enable rsyslog

添加开机自启动

3、执行命令

systemctl start rsyslog

启动服务

4、执行命令

vi/etc/rsyslog.conf

查看authpriv值 将其设置为 authpriv.*/var/log/secure#将authpirv 的任何级别的信息记录到/var/log/secure 文件中

5、执行命令

systemctl restart rsyslog

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

检查方法

1、执行命令

cat /etc/rsyslog.conf

查看 cron 的值

加固方法

1、执行备份

cp - p /etc/rsyslog.conf /etc/rsyslog.conf_bak

2、执行命令

vi /etc/rsyslog.conf

查看 cron 的值,将其设置为cron.* /var/log/cron# 即将 cron 的任何级别的信息记录到 /ar/log/cron 文件中

3、执行命令

systemctl restart rsyslog

重启 rsyslog 使配置生效

4.3查看SSH LogLevel设置是否为INFO

检查方法

1、执行命令

cat /etc/ssh/sshd_config

找到 LogLevel 查看设置的级别是否为INFO

加固方法

1、执行备份

cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak(log)

2、执行命令

vi /etc/ssh/sshd_config

找到 LogLevel 将其设置为 INFO,如果该行被注释,i还应删掉该行前方的 #

3、执行命令

systemctl restart sshd

重启ssh服务使其生效

备注

SSH LogLevel设置为INFO是用来指定在SSH连接建立并进行时记录的信息级别的。INFO级别记录大量有关连接的详细信息,包括身份验证,所使用的密钥,认证的结果等。这些信息对诊断问题和了解连接的详细情况非常有用,但可能会产生大量的日志。因此,在平时使用SSH时,通常将LogLevel设置为更低的级别(如ERROR或WARNING),以避免生成过多的日志,并且只在需要排除连接问题时将其调整为更高的级别。

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

检查方法

1、执行命令

Isattr /var/log/messages

查看该文件属性第六位是否为a

加固方法

1、执行命令

lsattr var/log/messages

查看该文件属性第六位是否为a

2、不为a则执行命令

chattr +a /var/log/messages

将该文件的属性修改为只可追加

备注

`isattr`是一个Linux系统中的命令,用于检查指定文件或目录中是否包含扩展属性(extended attributes)。扩展属性是在Linux文件系统上添加的一种元数据形式,可以包含文件或目录的其他信息,例如访问控制列表和文件所有者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值