Linux系统安全加固-账号管理
1、口令锁定策略
安全基线项名称 |
口令锁定策略 |
检查操作步骤 |
杏看配置文件:more /etc/pam.d/password-auth 查看是否存在如下内容:auth required pam_tally2.so deny=5 onerr=failunlock time=300 even deny root=5 root unlock time=600 |
基线符合性性判定依据 |
用户连续认证失败次数设置为5即合规,否则不合规。 |
安全加固方案 |
参考配置操作 1、执行备份#/etc/pam.d/password-auth_bak 2、修改策略设置,编辑文件vi/etc/pam.d/password-auth 增加如下内容:auth required pam_tally2.so deny=5 onerr=fail unlock_time=300如果要对root用户生效,请在添加的内容后继续添加even_deny_root=5 root_unlock_time=600 注:unlock_time和root_unlock_time单位为秒 |
备注 |
PAM通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。 查询被锁定的账号:pam_tally2 -u 手动解锁某个被锁定的账号:pam_tally2-u要解锁的用户 -r |
2、口令生存期
安全基线项名称 |
口令生存期 |
检查操作步骤 |
查看文件:more /etc/login.defs, 检查如下参数值是否满足要求:PASS_MAX_DAYS 用户的密码最长使用天数不大于90 PASS_WARN_AGE #用户的密码到期提前提醒天数为7 |
基线符合性性判定依据 |
PASS_MAX_DAYS不大于90,PASS_WARN_AGE等于7即合规,否则不合规。 |
安全加固方案 |
参考配置操作 1、执行备份:#cp -p /etc/login.defs /etc/login.defs bak 2、修改策略设置,编辑文件/etc/login.defs(vi/etc/login.defs),在文件中加入如下内容(如果存在则修改,不存在则添加): PASS_MAX_DAYS 90 PASS_WARN_AGE 7 执行命令:chage-M 90-W7username 修改已有用户的口令生存期和过期告警天数 |
3、口令复杂度
安全基线项名称 |
口令复杂度 |
检查操作步骤 |
执行命令: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 #强制指定的用户下次登录修改密码 |
4、检查密码重用是否受限制
安全基线项名称 |
检查密码重用是否受限制 |
检查操作步骤 |
查看文件:cat /etc/pam.d/system-auth 找到 password sufficient pam_unix.so 这行,检查末尾是否有 remember参数 |
基线符合性性判定依据 |
有remember参数且参数的值大于等于5即合规,否则不合规 |
安全加固方案 |
参考配置操作 1、执行备份:cp -p /etc/pam.d/system-auth 2、执行命令:vi /etc/pam.d/system-auth 编辑该文件,找到passwordsufficient pam_unix.so 这行在末尾添加 remember 参数它的值为5,原来的内容不用更改,只在末尾加remember=5 即可,它表示禁止使用最近用过的5个密码(已使用过的密码会被保存在 /etc/security/opasswd 下面) |
5、检查是否存在除root之外UID为0的用户
安全基线项名称 |
检查是否存在除root之外UID为0的用户 |
检查操作步骤 |
执行命令: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 |
6、禁止存在空密码的帐户
安全基线项名称 |
禁止存在空密码的帐户 |
检查操作步骤 |
执行以下命令查看系统中是否存在空口令账号 #awk -F : '($2 ==" ") {print $1 }' /etc/shadow |
基线符合性性判定依据 |
执行命令后没有返回值即合规,否则不合规。 |
安全加固方案 |
参考配置操作 1、为帐户设置满足密码复杂度的密码 #passwd username |
Linux系统安全加固-服务管理
1、禁止SSH空密码用户登录
安全基线项名称 |
检查是否禁止SSH空密码用户登录 |
检查操作步骤 |
执行命令:more /etc/ssh/sshd config 查看 PermitEmptyPasswords 配置情况 |
基线符合性性判定依据 |
PermitEmptyPasswords 的值设置为no即合规,否则不合规 |
安全加固方案 |
参考配置操作 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、设置SSH多次登录失败后锁定用户
安全基线项名称 |
设置ssh多次登录失败后锁定用户 |
检查操作步骤 |
执行命令 :more /etc/pam.d/sshd 查看是否存在 auth required pam_tally2.so deny=5 unlock time=300内容 |
基线符合性性判定依据 |
存在该行且 deny小于等于5,unlock time大于等于300,否则不合规 |
安全加固方案 |
参考配置操作 1、执行备份: cp -p /etc/pam.d/sshd /etc/pam.d/sshd_bak 2、执行命令:vi /etc/pam.d/sshd 在文件开头添加一行,内容为 auth reguiredpam _tally2.so deny=5 unlock_time=300,如要对root用户也进行限制,在刚添加的内容后继续添加:even_deny_root=5 root_unlock_time=1200 即可 重启:systemctl restart sshd |
3、限制root用户远程登录
安全基线项名称 |
限制root用户远程登录 |
检查操作步骤 |
执行命令:more /etc/ssh/sshd_config 查看PermitRootLogin 参数的值 |
基线符合性性判定依据 |
PermitRootLogin参数值为no且该行没有被注释即合规,否则不合规 |
安全加固方案 |
参考配置操作 1、执行命令:vi /etc/ssh/sshd_config 找到 PermitRootLogin 将其后方的 yes改为 no 并删除前方的 #取消该行的注 2、释执行命令:svstemctl restart sshd 重启服务使其生效 |
4、检查ssh使用的端口
安全基线项名称 |
检查ssh使用的端口 |
检查操作步骤 |
执行命令:more /etc/ssh/sshd_config 查看Port 参数的值 |
基线符合性性判定依据 |
Port参数值不是默认值(22)且该行没有被注释即合规,否则不合规 |
加固方案 |
参考配置操作 1、执行命令:vi /etc/ssh/sshd_config 找到 Port 将其后方的 22 改为其他端口号,然后删除前方的 #取消该行的注释(端口号最好挑10000-65535之间的端口号,10000以下容易被系统或一些特殊软件占用) 2、执行命令:semanage port -a -t ssh_port t-p tcp 修改后的端口号,将修改后的端口添加到SELinux开放给ssh使用的端口 3、执行命令:firewall-cmd --zone=public --add -port=ssh端口号/tcp --permanent防火墙放行刚修改的 ssh 端口号 4、执行命令:systemctl restart sshd ; systemctl restart firewalld 重启ssh和防火墙,使配置生效 |
5、设置登录超时自动注销
检查ssh使用的端口 |
设置登录超时自动注销 |
检查操作步骤 |
执行命令 :more /etc/profile 查看是否有export TMOUT=180 |
基线符合性性判定依据 |
存在export TMOUT且他的值小于等于180即合规,否则不合规 |
安全加固方案 |
参考配置操作 1、执行备份:cp-p/etc/profile /etc/profile_bak 2、执行命令:vi /etc/profile 在该文件末尾添加 export TMOUT=180 或者将原 来的值修改为180 注意=号前后不能有空格 |
Linux系统安全加固-权限管理
1、检查用户umask值
安全基线项名称 |
检查用户umask值 |
检查操作步骤 |
执行命令:more /etc/profile 查看该文件末尾是否设置umask值 |
基线符合性性判定依据 |
/etc/profile文件末尾存在umask027,则合规,否则为不合规。 |
安全加固方案 |
参考配置操作 1、执行备份:cp -p /etc/profile /etc/profile_bak 2、执行命令:vi /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/aroup文件的权限<=644 /etc/gshadow文件的权限<=600 /etc/hosts.deny文件的权限<=644 /etc/hosts.allow文件的权限<=644 /etc/services文件的权限<=644 /etc/ssh/sshd confiq文件的权限<=600 以上条件同时满足则合规,否则不合规。 |
安全加固方案 |
参考配置操作 1、执行命令:ls -l /etc/passwd /etc/shadow /etc/group /etc/gshadow/etc/hosts,allow /etc/hosts,allow /etc/services /etc/ssh/sshd_config 查看文件权限 2、对不符合要求的文件使用chmod命令修改权限, 如chmod 644 /etc/passwd |
3、限制可以su为root的用户
安全基线项名称 |
限制可以su为root的用户 |
检查操作步骤 |
执行命令:more /etc/pam.d/su 找到 auth required pam wheel.souse uid 查看该行是否存在且是否被注释 |
基线符合性性判定依据 |
auth required pam wheel.so use 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 |
Linux系统安全加固-日志管理
1、检查rsyslog服务启用状况以及对登录事件的记录
安全基线项名称 |
检查rsyslog服务是否启用且对所有登录事件都记录 |
检查操作步骤 |
执行命令:more /etc/rsySog.conf 查看authpriv的值 |
基线符合性性判定依据 |
authpriv值为authpriv.* /var/log/secure即合规,否则不合规 注:/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 |
2、检查是否启用记录定时任务行为日志功能
安全基线项名称 |
检查是否启用记录定时任务行为日志功能 |
检查操作步骤 |
执行命令:more /etc/rsyslog.conf 查看 cron 的值 |
基线符合性性判定依据 |
corn值为cron.*合规,否则不合规注:/var/log/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 使配置生效 |
3、查看SSH LogLevel设置是否为INFO
安全基线项名称 |
确保SSH LogLevel设置为INFO |
检查操作步骤 |
执行命令:more vi /etc/ssh/sshd_config 找到 LogLevel 查看设置的级别是否为INFO |
基线符合性性判定依据 |
LogLevel的级别是INFO 且该行未被注释即合规,否则不合规 |
安全加固方案 |
参考配置操作 1、执行命令:vi /etc/ssh/sshd_config 找到 LogLevel 将其设置为 INFO ,如果该行被注释,还应删掉该行前方的 # 2、执行命令:systemctl restart sshd 重启ssh服务使其生效 |
4、是否将 /var/log/messages 文件设置为只可追加
安全基线项名称 |
是否将 /var/log/messages 文件设置为只可追加 |
检查操作步骤 |
执行命令:lsattr /var/log/messages 查看该文件属性第六位是否为a |
基线符合性性判定依据 |
为a即合规,否则不合规 |
安全加固方案 |
参考配置操作执行命令:lsattr /var/log/messages 查看该文件属性第六位是否为a不为a则执行命令:chattr +a/var/log/messages 将该文件的属性修改为只可追加 |