PAM和账户安全配置

  PAM(可插入认证模块)是UNIX系统上一个实现模块化的身份验证模块服务

当程序需要对用户进行身份验证时加载并执行的。PAM文件通常位于/etc/pam.d目录中。

 

配置文件#

/etc/pam.d/password-auth

/etc/pam.d/system-auth

/etc/security/pwquality.conf

配置密码创建要求#

编辑/etc/pam.d/password-auth和/etc/pam.d/system-auth,确定文件含有

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=

 

编辑密码强度配置文件/etc/security/pwquality.conf

minlen = 14
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1
  • minlen = 14 -  密码最小长度

  • ucredit = -1 - 必须包含一个大写字符

  • ocredit = -1 - 必须包含一个特殊字符

  • lcredit = -1 -必须包含一个小写字符

 

确保配置了失败密码尝试的锁定

在n次不成功的连续登录尝试后锁定用户ID可减轻暴力对系统的密码攻击

 

查看 ’/etc/pam.d/password-auth‘ 和 ’/etc/pam.d/system-auth‘文件

确认 pam_faillock.so 周围有 pam_unix.so    pam_unix.so 是 [success=1 default=bad]

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

 

限制密码重用次数#

编辑/etc/pam.d/password-auth 和 /etc/pam.d/system-auth

password required pam_pwhistory.so remember=5

 #

确定密码的加密算法 SHA-512#

编辑/etc/pam.d/password-auth 和 /etc/pam.d/system-auth

password    sufficient    pam_unix.so     sha512

 

确保对su命令的访问受到限制#

编辑/etc/pam.d/su

auth required pam_wheel.so use_uid

编辑/etc/group

将允许的用户加入wheel组,这里以root和redhat用户为例

wheel:x:10:root,redhat

 

账户安全设置#

配置文件#

  • /etc/login.defs

查看账户过期时间和其它信息

[root@frog ~]# chage -l redhat 
Last password change                    : Jun 11, 2020
Password expires                    : never
Password inactive                    : never
Account expires                        : never
Minimum number of days between password change        : 0
Maximum number of days between password change        : 99999
Number of days of warning before password expires    : 7

 

确保系统账户是non-login#

检测脚本

egrep -v "^\+" /etc/passwd | awk -F: '($1!="root" && $1!="sync" &&
$1!="shutdown" && $1!="halt" && $3<1000 && $7!="/sbin/nologin" &&
$7!="/bin/false") {print}'

修改为不允许登录

usermod -s /sbin/nologin <user>

 

脚本批量设定

uid的小于1000除开root用户,进行锁定,除开一些特殊用户,其它的都禁止登录。

复制代码
#!/bin/bash
for user in `awk -F: '($3 < 1000) {print $1 }' /etc/passwd` ; do
 if [ $user != "root" ]; then
     usermod -L $user
     if [ $user != "sync" ] && [ $user != "shutdown" ] && [ $user != "halt" ];then
        usermod -s /sbin/nologin $user
     fi
 fi
done
复制代码

 

posted @   头痛不头痛  阅读(2779)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2017-06-12 JavaWeb学习总结(十七)EL表达式
点击右上角即可分享
微信分享提示
主题色彩