参考文章:
https://www.cnblogs.com/dadonggg/p/7977099.html
https://linux.cn/article-2518-1.html
https://www.136.la/nginx/show-83625.html
1 密码相关设置
1.1 密码复杂度设置
密码的复杂度越高,毋庸置疑,安全性肯定相对就越高。
编辑/etc/pam.d/system-auth
文件,找到同时具有“password”和“pam_cracklib.so”字段并且附加有 “ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1” 的那行,它表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)。
# 编辑之前可以把配置文件进行备份
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
# 编辑配置文件,例如:
password requisite pam_pwquality.so retry=3 minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1
- minlen=12 密码最小长度为12个字符。
- lcredit=-1 密码应包含的小写字母的至少一个
- ucredit=-1 密码应包含的大写字母至少一个
- dcredit=-1 将密码包含的数字至少为一个
- ocredit=-1 设置其他符号的最小数量,例如@,#、! $%等,至少要有一个
- enforce_for_root 确保即使是root用户设置密码,也应强制执行复杂性策略。
1.2 密码复杂度检查
检查密码长度和密码是否使用多种字符类型
编辑/etc/security/pwquality.conf
,把minlen
(密码最小长度)设置为8-32位,把minclass
(至少包含小写字母、大写字母、数字、特殊字符等4类字符中等3类或4类)设置为3或4。如:
minlen=10
minclass=3
1.3 密码失效时间
设置密码失效时间,定期修改密码,减少密码被泄漏和猜测风险,使用非密码登陆方式(如密钥对)请忽略此项。
在 /etc/login.defs
中将PASS_MAX_DAYS
参数设置为 60-180之间,如:
PASS_MAX_DAYS 90
/etc/login.defs 是设置用户帐号限制的文件。该文件里的配置对root用户无效。所以,需同时执行命令设置root密码失效时间:
chage --maxdays 90 root
1.4 密码修改最小间隔时间
设置密码修改最小间隔时间,限制密码更改过于频繁
在/etc/login.defs
中将PASS_MIN_DAYS
参数设置为7-14之间,建议为7:
PASS_MIN_DAYS 7
需同时执行命令为root用户设置:
chage --mindays 7 root
1.5 密码重用限制
强制用户不重用最近使用的密码,降低密码猜测攻击风险
在/etc/pam.d/password-auth
和/etc/pam.d/system-auth
中password sufficient pam_unix.so 这行的末尾配置remember参数为5-24之间,原来的内容不用更改,只用在末尾加remember=5即可。
2 登陆失败设置
如果有人恶意尝试破解你的服务器密码,那么这个功能就能帮你起到一定的作用,当尝试密码错误超过设定的次数后,就会锁定该账户多长时间(自行设定),时间过后即可自行解锁,这样可以增加攻击者的成本。
具体设置如下:
备份要操作的两个配置文件:
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
cp /etc/pam.d/login /etc/pam.d/login.bak
SSH远程连接登录失败处理功能策略设置,需要编辑系统/etc/pam.d/system-auth
文件,在 auth 字段所在的那一部分策略下面添加如下策略参数:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=300 even_deny_root root_unlock_time=300
注意添加的位置,要写在第一行,即#%PAM-1.0的下面。
以上策略表示:普通帐户和 root 的帐户登录连续 3 次失败,就统一锁定 300 秒, 300 秒后可以解锁。如果不想限制 root 帐户,可以把 even_deny_root root_unlock_time这两个参数去掉。
- onerr=fail:表示连续失败
- deny=3:表示超过3次登录失败即锁定
- unlock_time=300:锁定 300 秒
- even_deny_root:root用户同样受到限制
- root_unlock_time:表示 root 帐户的锁定时间
注意:用户锁定期间,无论在输入正确还是错误的密码,都将视为错误密码,并以最后一次登录为锁定起始时间,如果用户解锁后输入密码的第一次依然为错误密码,则再次重新锁定。
服务器终端登录失败处理功能策略,要改的是/etc/pam.d/system-auth
这个文件,添加的内容跟上面一样!
- 其他相关常用命令:
# 查看root用户的登录失败的次数
pam_tally2 --user root
# 重置计数器,即手动解锁
pam_tally2 --user root --reset
3 限制root权限用户远程登录
可以让用户先以普通权限用户远程登录后,再切换到超级管理员权限账号后执行相应操作,可以提升系统安全性。
编辑/etc/ssh/sshd_config
,将PermitRootLogin
设置为no。
PermitRootLogin no
重启sshd服务:
service sshd restart
4 命令历史记录保存数量
历史命令中通常也会包含一些服务相关信息,减小历史命令保存数量,一定程度上也可提升安全性。
查看历史命令保存数量值:
echo $HISTSIZE
修改/etc/profile
,将HISTSIZE
值改小,比如10。
HISTSIZE=10
使修改的配置生效:
source /etc/profile
5 登录超时自动登出设置
配置帐户超时自动登出,在用户输入空闲一段时间后自动断开。可以有效避免因为特殊情况账户一直登录避免别人误操作。
方法有二,具体如下:
5.1 超时自动登出配置
修改/etc/profile
,设置TMOUT,单位秒,没有此行可直接添加进去,此设置对所有用户有效。比如15分钟:
export TMOUT=900
使修改的配置生效:
source /etc/profile
5.2 SSH空闲超时退出时间
编辑/etc/ssh/sshd_config
,将ClientAliveInterval
设置为300到900,即5-15分钟,将ClientAliveCountMax
设置为0-3之间,此设置对除root外所有用户有效。例如:文章来源:https://www.toymoban.com/news/detail-469973.html
ClientAliveInterval 600
ClientAliveCountMax 2
重启sshd服务:文章来源地址https://www.toymoban.com/news/detail-469973.html
service sshd restart
到了这里,关于Linux服务器安全设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!