Centos7.x系统登录加固及密码复杂度

© 版权声明:本文为博主原创文章,转载请注明出处

添加普通用户
#useradd opsadm (其他参数可自行百度)
#passwd opsadm

普通用户授权
#vim /etc/sudoers
文件最后添加一行
opsadm ALL=(ALL) NOPASSWD:ALL

禁止root远程登陆
#vi /etc/ssh/sshd_config
添加两行如何之前有的则注释掉
PermitRootLogin no 禁止root远程登陆
UsePAM yes 启用Pam认证

禁止服务用户登陆
#chsh -s /sbin/nologin opsadm
比如nginx、mysql登录用户
解除禁止服务用户登陆
#chsh -s /bin/bash opsadm

限制远程ssh多次登入失败的用户
#vi /etc/pam.d/sshd
在第一行下即#%PAM-1.0的下面添加
auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=600
account required pam_tally2.so
deny 设置用户连续错误登录的最大次数,超过该值则将其锁定
unlock_time 设定普通用户锁定后,多少时间后自动解锁,单位是秒。
用户连续输错次数达到5之前,只要输入正确的密码就可登录系统,并且错误次数自动清零。若连续错误达到5次,则在解锁时间120秒结束之前,即使输入正确密码也无法登录,此时若输入错误密码则从输错密码时刻算起再等120秒。

查看某用户登入失败次数
pam_tally2 --user root
清空某个opsadm用户失败次数(执行两次)
pam_tally2 -u opsadm --reset

加速 SSH登录速度
把GSSAPIAuthentication选项和UseDNS选项设置为no
sed -i ‘s/# StrictHostKeyChecking ask/StrictHostKeyChecking no/’ /etc/ssh/ssh_config
sed -i ‘s/GSSAPIAuthentication yes/GSSAPIAuthentication no/’ /etc/ssh/sshd_config
sed -i ‘s/UseDNS yes/UseDNS no/’ /etc/ssh/sshd_config

口令复杂度
Linux用户密码的复杂度可以通过pam pam_cracklib module或pam_passwdqc module控制,两者不能同时使用。编辑文件/etc/pam.d/system-auth,在文件中找到如下内容(没有则添加)
#vi /etc/pam.d/system-auth
注释掉password requisite pam_pwquality.so
password requisite pam_cracklib.so,将其修改为:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
这个为大写、小写、数字和字符都至少一个,至少8位密码。

pam_cracklib主要参数说明: 
	tretry=N:重试多少次后返回密码修改错误 
	difok=N:新密码必需与旧密码不同的位数 
	dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字. 
	lcredit=N:小写字母的个数 
	ucredit=N大写字母的个数 
	ocredit=N:特殊字母的个数 
	minclass=N:密码组成的个数(大/小字母,数字,特殊字符) 

pam_passwdqc主要参数说明: 
	mix:设置口令字最小长度,默认值是mix=disabled。 
	max:设置口令字的最大长度,默认值是max=40。 
	passphrase:设置口令短语中单词的最少个数,默认值是passphrase=3,如果为0则禁用口令短语。 
	atch:设置密码串的常见程序,默认值是match=4。 
	similar:设置当我们重设口令时,重新设置的新口令能否与旧口令相似,它可以是similar=permit允许相似或similar=deny不允许相似。 
	random:设置随机生成口令字的默认长度。默认值是random=42。设为0则禁止该功能。 
	enforce:设置约束范围,enforce=none表示只警告弱口令字,但不禁止它们使用;enforce=users将对系统上的全体非根用户实行这一限制;enforce=everyone将对包括根用户在内的全体用户实行这一限制。 
	non-unix:它告诉这个模块不要使用传统的getpwnam函数调用获得用户信息, 
	retry:设置用户输入口令字时允许重试的次数,默认值是retry=3 

口令生存期
修改策略设置,编辑文件/etc/login.defs,在文件中加入如下内容(如果存在则修改,不存在则添加):
#vi /etc/login.defs
PASS_MAX_DAYS 90 最长期限
PASS_MIN_DAYS 6 最短期限
PASS_MIN_LEN 8 最少字符
PASS_WARN_AGE 7 提前7天修改密码
UMASK 027 设置用户目录缺省访问权限

关闭selinux
#sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
#setenforce 0

你可能感兴趣的:(linux系统安全)