前言
一,账号安全基本措施
(一)、系统账号清理
1、将非登录用户的 Shell 设为 /sbin/nologin
usermod -s /sbin/nologin 用户名 -------禁止用户登陆系统
2、锁定长期不使用的账号
usermod -L 用户名 --------锁定用户账号
passwd -l 用户名 --------锁定用户密码
passwd -S 用户名 -------查看用户账号是否被锁定
3、删除无用的账号
userdel -r 用户名 -------添加 -r 选项时,表示连用户的宿主目录一并删除
4、锁定账号文件passwd、 shadow
chattr +i /etc/passwd /etc/shadow -----锁定文件
Isattr /etc/passwd /etc/shadow -----查看文件状态
chattr -i /etc/passwd /etc/shadow -----解锁文件
当将passwd 和 shadow 锁定以后,就不能再创建用户和更改原有用户的密码了
当使用 chattr -i /etc/passwd /etc/shadow 命令解锁以后就可以正常操作了
(二)、密码安全控制
1、设置密码有效期
(1)、修改已有用户的密码有效期:chage -M 30 wxb
(2)、修改新用户的密码有效期:vim /etc/login.defs (3)、设置用户的密码失效日期:usermod -e 日期[yyyy-mm-dd格式] 用户 或 useradd -e 日期[yyyy-mm-dd格式] 用户 2、要求用户下次登录时修改密码:chage -d 0 用户
chage -M 是用来设置密码最大有效期的 使用chage -M wxb 命令将wxb 用户的密码有效期设置为30天,然后使用cat shadow 命令查看,发现设置成功。该命令是设置已经存在的用户的密码有效期的。
如果想要设置还未创建,但是将会创建的新的用户的密码有效期,就需要使用 vim /etc/login.defs 命令,然后更改 PASS_MAK_DAYS 的有效天数,默认是99999 使用 chage -d 0 baiabi 设置用户下次登陆系统时需要修改密码
(三)、命令历史限制
1、减少记录的命令条数
[root@localhost -]# vim /etc/profile
export HISSIZE=200 #在最后加上该句命令,意思是限制最多看200条历史命令记录
[root@localhost ~]# source /etc/profile #重新加载
2、登录时自动清空命令历史
~/.bashrc 文件中的命令会在每次打开新的 bash shell 时(也包括登录系统)被执行
vim ~/.bashrc #编辑~/。bashrc文件
echo " " > ~/.bash_history #在最后一行输入该命令。该命令意思是在每次登录时将" "重新定义到~/.bashrc文件中
(四)、终端自动注销
1、闲置600秒后自动注销
[root@localhost ~]# vim /etc/profile
export TMOUT=600
[root@localhost ~]# source /etc/profile (永久生效)
[root@localhost ~]#export TMOUT=600 (临时生效)
二、使用su命令切换用户
(一)、用途及用法
1、用途: Substitute User,切换用户 2、格式: su - 目标用户
(二)、密码验证
1、root→任意用户,不验证密码 2、普通用户→其他用户,验证目标用户的密码
su - root #带 - 选项表示将使用目标用户的登录Shell环境,登录shell环境之后就可以使用该用户的~/.bashrc配置文件
口令:
whoami
root
(三)、限制使用su命令的用户
1、将允许使用su命令的用户加入wheel组 gpasswd -a wangwu wheel 2、启用pam_wheel认证模块
vim /etc/pam.d/su #pam.d是个认证模块
......
#auth required pam_wheel.so use_uid
3、查看加入wheel 组的用户有哪些 grep wheel /etc/group 创建新用户wanger ,将wanger 加入到wheel 组中,然后编辑 /etc/pam.d/su 这个文件 进入之后将方框中的“#”去掉 保存退出 设置完以后发现只有加入了wheel 之后的用户才可以进入root用户 使用 grep wheel /etc/group 来查看加入到wheel 组的用户有哪些
(四)、查看su操作记录
1、查看安全日志文件: cat /var/log/secure
三、Linux中的PAM安全认证
(一)、su命令的安全隐患
1、默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。 2、为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
(二)、PAM(Pluggable Authentication Modules)可插拔式认证模块
1、是一种高效而且灵活便利的用户级别的认证方式 2、也是当前Linux服务器普遍使用的认证方式
详细解释:Linux-PAM,是linux可插拔认证模块,是一套可定制、可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式。PAM使用 /etc/pam.d/ 下的配置文件来管理对程序的认证方式。应用程序调用相应的PAM配置文件,从而调用本地的认证模块,模块放置在 /lib64/security 下,以加载动态库的形式进行认证。比如使用su命令时,系统会提示输入root用户的密码,这就是su命令通过调用PAM模块实现的。
(三)、在 /etc/pam.d/su 文件里设置禁止用户使用su命令
vim /etc/pam.d/su
auth sufficient pam_rootok. so
#auth required pam_wheel.so use_uid
启用 pam_wheel 认证以后,未加入到wheel组内的其他用户将无法使用su命令。 1、以上两行是默认状态(即开启第一行,注释第二行) ,这种状态下是允许所有用户间使用su命令进行切换的。 2、两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则 root 使用 su 切换普通用户就不需要输入密码(pam_rootok.so 模块的主要作用是使 uid为0的用户,即root用户能够直接通过认证而不用输入密码。) 3、如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令。 4、如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。
第一列代表PAM认证模块类型
auth:对用户身份进行识别,如提示输入密码,判断是否为root。 account:对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。 password:使用用户信息来更新数据,如修改用户密码。 session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。
第二列代表PAM控制标记 required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。(起到密码保护的作用) requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。 sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。 optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型)。 include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用 /etc/pam.d/system-auth (主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。 同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。 传递给模块的参数。参数可以有多个,之间用空格分隔开
(四)、PAM认证原理
1、一般遵循的顺序 Service (服务) →PAM (配置文件) →pam_*.so(认证模块)
2、首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证 3、用户访问服务器时,服务器的某一个服务程序把用户的青求发送到PAM模块进行认证 4、不同的应用程序所对应的PAM模块是不同的 5、PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用
(五)、PAM认证的构成
1、查看某个程序是否支持PAM认证,可以用 Is 命令 示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
2、查看su的PAM配置文件:cat /etc/pam.d/su 每一行都是一个独立的认证过程 每一行可以区分为三个字段
- 认证类型auth
- 控制类型sufficient
- РAM模块及其参数pam_rootk.so
(六)、PAM安全认证流程
1、控制类型也称做Control Flags,用于PAM验证类型的返回结果 1)、required 验证失败时仍然继续,但返回Fail 2)、requisite验证失败则立即结束整个验证过程,返回Fai 3)、sufficient验证成功则立即返回,不再继续,否则忽略结果并继续 4)、optional 不用于验证,只显示信息 (通常用于session类型)
|