Linux服务器安全设置

参考文章:
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外所有用户有效。例如:

ClientAliveInterval 600
ClientAliveCountMax 2

重启sshd服务:

service sshd restart
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值