16 CentOS7登录安全修复——密码复杂度-登录限制-root限制登录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16 CentOS7登录安全修复——密码复杂度-登录限制-root限制登录相关的知识,希望对你有一定的参考价值。
参考技术A 一、密码复杂度设置CentOS密码复杂度配置通过/etc/pam.d/system-auth文件中的pam_cracklib.so模块来实现。
首先查看/etc/pam.d/system-auth文件
可以看到当前并没有看到pam_cracklib.so模块
原因:
pam_pwquality.so是兼容pam_cracklib.so模块的,所以pam_cracklib.so的选项也适用于pam_pwquality.so
pam_cracklib.so支持的部分选项如下:
retry=N:定义登录/修改密码失败时,可以重试的次数
minlen=N:新密码的最小长度
dcredit=N:当N>0时表示新密码中数字出现的最多次数;当N<0时表示新密码中数字出现最少次数;
ucredit=N: 当N>0时表示新密码中大写字母出现的最多次数;当N<0时表示新密码中大写字母出现最少次数;
lcredit=N: 当N>0时表示新密码中小写字母出现的最多次数;当N<0时表示新密码中小写字母出现最少次数;
ocredit=N:当N>0时表示新密码中特殊字符出现的最多次数;当N<0时表示新密码中特殊字符出现最少次数;
maxrepeat=N:拒绝包含多于N个相同连续字符的密码。 默认值为0表示禁用此检查
maxsequence=N:拒绝包含长于N的单调字符序列的密码。默认值为0表示禁用此检查。实例是'12345'或'fedcb'。除非序列只是密码的一小部分,否则大多数此类密码都不会通过简单检查。
enforce_for_root: 如果用户更改密码是root,则模块将在失败检查时返回错误。默认情况下,此选项处于关闭状态,只打印有关失败检查的消息,但root仍可以更改密码。不要求root用户输入旧密码,因此不会执行比较旧密码和新密码的检查
接下来修改system-auth文件,配置密码复杂度策略
在system-auth文件中 pam_pwquality.so后添加minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1
参数含义:密码长度最小为8位,数字出现的最少次数为2次,大写字母出现最少1次,小写字母出现最少1次,特殊字符出现最少1次
保存退出后,进行测试密码复杂度配置是否生效
新建一个test账户,使用root账户设置test账户的密码为test,密码修改成功。(证明root账户不受pam认证规则的限制)
账号密码规则测试:
然后切换到test账户设置test账户的密码。这里尝试设置密码为Pw39@。
报错提示大写字母少于8位,说明minlen=8已经生效。
接下来尝试设置密码为Pwqwert@
报错提示数字少于2位,说明dcredit=-2已经生效。
接下来尝试设置密码为pw12qwer@
报错提示大写字母少于1位,说明ucredit=-1已经生效。
passwd:Have exhausted maximum number of retries for service(passwd:已经用尽了最多可重试的服务次数),说明retry=3已经生效。
接下来重新设置密码,尝试设置密码为PW12QWER@
报错提示小写字母少于1位,说明lcredit=-1已经生效。
接下来尝试设置密码为Pw12qwer
报错提示特殊字符少于1位,说明ocredit=-1已经生效。
限制root用户
vi etc/pam.d/system-auth
在sysstem-auth文件中pam_pwquality.so行添加enforce_for_root
然后测试是否root被限制,也要遵守密码复杂度策略
用root账户设置test账户密码为Pw12qwer
报错提示特殊字符少于1位,说明root用户已经被限制,也要遵守pam认证规则。
二、禁用root用户登录
注意:禁用root前必须要创建一个普通账户,并且验证用户可以正常登录
1、首先增加一个普通账号,别禁止root账号后没有其他账号登录系统了:
——增加用户:adduser xxxx
——设置密码:passwd xxxx
2、修改ssh配置:
——修改配置文件:vi /etc/ssh/sshd_config
——配置文件中增加一行:PermitRootLogin no
——保存退出,重启ssh服务:service sshd restart
3、下次登录系统,root账号会被拒绝登录。
——可以先用xxxx登录,之后su root即可
三、限制用户登录失败次数并锁定用户
centos 7 安全加固脚本
脚本如下
该脚本采取了多项安全加固措施,包括关闭不必要的服务和端口,禁用文件共享,设置密码复杂度,禁止root用户远程登录,设置超时自动注销等。同时还安装了常用的安全工具,并更新了系统。可以根据需要进行修改和扩展,以适应不同的安全需求。
#!/bin/bash
# 该脚本用于红帽系统的安全加固
# 关闭不必要的服务
systemctl stop abrtd.service
systemctl disable abrtd.service
systemctl stop auditd.service
systemctl disable auditd.service
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
systemctl stop cups.service
systemctl disable cups.service
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl stop kdump.service
systemctl disable kdump.service
systemctl stop postfix.service
systemctl disable postfix.service
systemctl stop rpcbind.service
systemctl disable rpcbind.service
systemctl stop rsyslog.service
systemctl disable rsyslog.service
systemctl stop sshd.service
systemctl disable sshd.service
# 禁用不必要的网络端口
firewall-cmd --permanent --zone=public --remove-port=2049/tcp
firewall-cmd --permanent --zone=public --remove-port=111/tcp
firewall-cmd --permanent --zone=public --remove-port=111/udp
firewall-cmd --permanent --zone=public --remove-port=32769/tcp
firewall-cmd --permanent --zone=public --remove-port=892/tcp
firewall-cmd --permanent --zone=public --remove-port=2049/udp
firewall-cmd --reload
# 关闭不必要的文件共享
sed -i s/^hosts:.*/hosts: files dns/ /etc/nsswitch.conf
# 设置密码复杂度
sed -i s/^# minlen/minlen/ /etc/security/pwquality.conf
sed -i s/^# dcredit/dcredit/ /etc/security/pwquality.conf
sed -i s/^# ucredit/ucredit/ /etc/security/pwquality.conf
sed -i s/^# lcredit/lcredit/ /etc/security/pwquality.conf
sed -i s/^# ocredit/ocredit/ /etc/security/pwquality.conf
# 禁止root用户远程登录
sed -i s/^#PermitRootLogin yes/PermitRootLogin no/ /etc/ssh/sshd_config
# 设置超时自动注销
echo TMOUT=600 >> /etc/profile
echo export TMOUT >> /etc/profile
# 安装常用的安全工具
yum -y install nmap
yum -y install tcpdump
yum -y install telnet
yum -y install lsof
yum -y install strace
yum -y install curl
yum -y install wget
# 更新系统
yum -y update
以上是关于16 CentOS7登录安全修复——密码复杂度-登录限制-root限制登录的主要内容,如果未能解决你的问题,请参考以下文章