【CentOS7操作系统安全加固系列】第(1)篇

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
简介: 【CentOS7操作系统安全加固系列】第(1)篇

640.jpg

1、口令锁定策略


规则描述:设置口令认证失败后的锁定策略 为了保障用户系统的安全,建议用户设置口令出错次数的阈值,以及由于口令尝试被锁定用户的自动解锁时间。用户锁定期间,任何输入被判定为无效,锁定时间不因用户的再次输入而重新计时;解锁后,用户的错误输入记录被清空。通过上述设置可以有效防范口令被暴力破解,增强系统的安全性。

修改方法:例如设置口令最大的出错次数 5 次,系统锁定后的解锁时间为 180 秒 在配置文件/etc/pam.d/system-auth 和/etc/pam.d/password-auth 中添加


auth required pam_faillock.so preauth audit silent deny=5 unlock_time=180
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=180
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=180


pam_faillock.so 配置项说明


  • authfail:捕获用户登录失败的事件
  • deny=5:用户连续登录失败次数超过 5 次即被锁定
  • unlock_time=180:普通用户自动解锁时间为 180 秒(即 3 分钟)
  • even_deny_root:同样限制 root 帐户


操作步骤截图

修改前

640.png

修改后


640.png

640.png


验证测试

centos用户ssh登录多次输错密码  

faillock命令查看锁定情况  

faillock --user username --reset解锁操作

640.png


2、口令生存期


出于系统安全性考虑,建议设置口令有效期限,且口令到期前通知用户更改口令。

规则描述:该设置确定在系统要求用户更改某个密码之前可以使用改口令的期限及口令过期提前告警时间(以天为单位),此策略使得攻击者用来破解用户密码以及访问网络资源的时间受到限制


审计描述:设置检查配置文件/etc/login.defs 的选项:应设置 PASS_MAX_DAYS 的值大于等于 10 且小于等于 90,PASS_MIN_DAYS 的值为 10, PASS_WARN_AGE(口令过期提前时间)的值为 7,同时还要检查文件/etc/shadow 中有口令且可登录用户(root 用户除外)的口令保持有效的最大天数为大于等于 10 且小于等于 90,两次修改口令之间所需的最小天数为 10,口令失效告警时间为 7。


修改建议:设置配置文件/etc/login.defs 的选项:PASS_MAX_DAYS 90(10~90), PASS_MIN_DAYS 10, PASS_WARN_AGE 7,同时对已有用户还需要修改/etc/shadow 文件中有密码且可登录用户(root 用户除外)的口令保持有效的最大天数为大于等于 10 且小于等于 90,两次修改口令之间所需的最小天数为 10,口令失效告警时间为 7

实现:口令有效期的设置通过修改/etc/login.defs 文件实现

login.defs 配置项说明


  • PASS_MAX_DAYS 口令最大有效期:建议设置为 90
  • PASS_MIN_DAYS 两次修改口令的最小间隔时间:建议设置为 10
  • PASS_WARN_AGE 口令过期前开始提示天数:建议设置为 7


说明:login.defs 是设置用户帐号限制的文件,可配置口令的最大过期天数、最大长度约束等。该文件里的配置对 root 用户无效。如果/etc/shadow 文件里有相同的选项,则以/etc/shadow 配置为准,即/etc/shadow 的配置优先级高于/etc/login.defs。口令过期后用户重新登录时,提示口令过期并强制要求修改,不修改则无法进入系统。


sed -i '/^PASS_MAX_DAYS/cPASS_MAX_DAYS   90' /etc/login.defs
sed -i '/^PASS_MIN_DAYS/cPASS_MIN_DAYS   10' /etc/login.defs


修改前

640.png


修改后


640.png

3、口令复杂度


规则描述:该设置确定用户账户口令包含的最少字符数

审计描述:执行命令:cat /etc/pam.d/password-auth /etc/pam.d/system-auth | grep -v '^\s*#' | grep password | grep pam_pwquality.so

检查是否存在以下内容:password requisite pam_pwquality.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1

执行命令:cat /etc/security/pwquality.conf

检查是否存在以下内容:minlen = 8 dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1

修改建议:编辑/etc/pam.d/password-auth 和 /etc/pam.d/system-auth 文件,分别修改包含 minlen 的 pam_pwquality.so 模块如下:password requisite pam_pwquality.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 或编辑/etc/security/pwquality.conf 文件,修改以下内容:minlen = 8 dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1

备注:当配置文件/etc/pam.d/password-auth 和/etc/pam.d/system-auth 未配置 minlen、dcredit、ucredit、ocredit、lcredit 时,/etc/security/pwquality.conf 文件设置生效

编辑/etc/security/pwquality.conf 文件,修改以下内容:


  • minlen = 8 口令长度至少包含 8 个字符
  • dcredit = -1 口令包含N个数字
  • ucredit = -1 口令包含N大写字母
  • ocredit = -1 口令包含N个特殊字符
  • lcredit = -1 口令包含N个小写字母
  • N<0可以自行man pwquality.conf查看解释


cat >>/etc/security/pwquality.conf << EOF
minlen = 8
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1
EOF


640.png

640.png


4、删除无关账号


规则描述:删除无关账号

审计描述:检查/etc/shadow文件,确认是否有以下用户(adm|lp|sync|halt|news|nfsnobody|mail|uucp|operator|games|gopher|ftp|nobody|nobody4|noaccess|listen|webservd|rpm|dbus|avahi|mailnull|smmsp|nscd|vcsa|rpc|rpcuser|nfs|sshd|pcap|ntp|haldaemon|distcache|apache|webalizer|squid|xfs|gdm|sabayon|named)


若有则检查文件中是否存在系统中未锁定的无关用户(用户密码字段列不是以*或者!开头)和需要锁定和删除的shell域设置的用户(用户shell域不是/bin/false或/sbin/nologin),均不存在则pass

修改建议:删掉不符规范的用户,执行:userdel username。或者编辑/etc/passwd文件,修改用户的密码字段和shell域。


egrep "^(adm|lp|sync|halt|news|nfsnobody|mail|uucp|operator|games|gopher|ftp|nobody|nobody4|noaccess|listen|webservd|rpm|dbus|avahi|mailnull|smmsp|nscd|vcsa|rpc|rpcuser|nfs|sshd|pcap|ntp|haldaemon|distcache|apache|webalizer|squid|xfs|gdm|sabayon|named):" /etc/passwd 2>/dev/null|awk -F':' '($7 != "/bin/false" && $7 != "/sbin/nologin") {print $1":"$7}'


返回的结果中含有 sync:/bin/sync halt:/sbin/halt

解决方法


userdel sync
userdel halt


640.png


5、禁止存在空密码的帐号


安全起见,在/etc/passwd 中用户的密码是被保护的状态,即使用了*号来隐藏。而实际的密码内容是加密后保存在/etc/shadow 文件中,我们确认是否存在空口令的用户就确认该文件中密码对应字段的长度是否为 0, 如果为 0 则证明该用户密码为空。通过使用命令来查找是否存在该字段长度为 0 的用户


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


passwd -d 将用户密码设置为空

640.png

相关文章
|
6月前
|
Linux 网络安全 数据安全/隐私保护
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
|
6月前
|
存储 Ubuntu 应用服务中间件
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
91 1
|
2月前
|
Oracle Java 关系型数据库
CentOS 7.6操作系统部署JDK实战案例
这篇文章介绍了在CentOS 7.6操作系统上通过多种方式部署JDK的详细步骤,包括使用yum安装openjdk、基于rpm包和二进制包安装Oracle JDK,并提供了配置环境变量的方法。
258 80
|
4月前
|
Linux 虚拟化 数据安全/隐私保护
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
|
24天前
|
弹性计算 关系型数据库 MySQL
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
|
2月前
|
运维 Linux
CentOS操作系统常见的故障处理
本文分享了CentOS操作系统网卡启动失败的故障处理方法,包括使用命令查看日志和禁用NetworkManager服务。
209 4
CentOS操作系统常见的故障处理
|
1月前
|
Linux 编译器 C语言
./build.sh:行1: g++: 未找到命令的错误问题在centos操作系统下面如何解决
通过上述步骤,您应该能够有效地解决CentOS系统中 `g++: 未找到命令`的错误。确保软件开发环境配置得当,对于顺利执行编译脚本和日常开发工作至关重要。如果问题依然存在,考虑检查脚本内的命令路径引用是否正确,或进一步排查系统配置问题。
62 0
|
3月前
|
人工智能 运维 安全
CentOS停更无忧,中国操作系统闯入后CentOS时代
CentOS停更无忧,中国操作系统闯入后CentOS时代
|
3月前
|
Linux Docker 容器
在CentOS操作系统上使用yum安装/使用/卸载Docker容器引擎
在CentOS操作系统上安装、配置、使用和卸载Docker容器引擎的详细步骤,包括配置Docker镜像加速的方法。
324 0
下一篇
无影云桌面