一、账号安全控制
1. 账号安全基本措施
(1)系统账号清理
:将非登录用户的Shell设为/sbin/nologin
:锁定长期不使用的账号
:删除无用的账号
:锁定账号文件passwd、shadow(passwd放用户的参数、shadow是密码的)
[root@zyf ~]# chattr +i /etc/passwd /etc/shadow
[root@zyf ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd
----i----------- /etc/shadow
示例一:将非用户的shell设为/sbin/nologin
(1)首先创建一个用户,用usermod -s 设置用户不能登录shell
设置完不允许登录后可以看到输入用户密码会自动重启登录不了该账号
(2)tail -1 查看刚刚创建的用户账号信息
示例二:锁定长期不使用的账户
(1)创建一个用户设置为可登录shell并查看
(2)usermod -L 账户名 :锁定账户
示例三:删除无用账号
使用userdel -r zhang命令删除zhang这个用户显示该用户正在被13948这个进程占用,我们可以使用kill -9 +进程号 关闭此进程这样就可以再次使用删除命令
示例四:锁定账号文件passwd、shadow
(1)先lsattr /etc/passwd /etc/shadow #查看 passwd 和shadow的状态
(2)chattr +i /etc/passwd #锁定passwd 在次查看状态
可以看到etc/passwd此文件锁定后变为只读文件无法修改
(3)尝试删除以存在用户的账号是不可行的,但是可以修改密码因为密码在shadow文件中。
(4)chattr -i /etc/passwd 解锁并查看passwd状态,就可以执行删除用户的操作了。
2、密码安全控制
(1)设置密码有效日期
:要求用户下次登录时修改密码
[root@zyf ~]# vim /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 9
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 1000
UID_MAX 60000
# System accounts
SYS_UID_MIN 201
SYS_UID_MAX 999
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
示例一:
(1)vim /etc/login.defs #进入编辑用户修改密码的时间只设用于新建的用户。设置为9天
PASS_MIN_DAYS:两次修改密码间隔时间
PASS_MIN_LEN :密码最小长度
PASS_WARN_AGE:密码到期前多少天警告
(2)查看我设置之前的用户的修改密码的时间。
(3)新建一个用户,并查看两次改变密码之间相距的最大天数
示例二:强制用户在下次登录时更改密码
(1)设置用户的下次登录必须修改密码,并查看。
(2)用创建的用户登录系统,提示修改密码。
3、命令历史限制
(1) :减少记录的命令条数
vim /etc/profile
.......
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
.......
(2) : 注销时自动清空命令历史
[root@zyf ~]#vi ~/.bash_logout
history -c
clear
示例:登出以后清除命令
(3) : 终端自动注销
闲置50秒自动注销
vi /etc/profile
###进入写入 export TMOUT=600
wq保存退出
source /.bash_logout 刷新
或者
. /etc/profile ###刷新
二、su命令
1、su命令切换用户
(1)用途及用法
用途:Substitute User,切换用户
格式:su - 目标用户
(2)密码验证
root -->任意用户,不验证密码
普通用户-->其他用户,验证目标用户的密码
2.限制使用su命令的用户
:将允许使用su命令的用户加入wheel组
:启用pam_wheel认证模块
示例:创建一个用户加入组wheel中 ,启用pam_wheel认证模块
(1)vim进入/etc/pam.d/su 编辑文本
(2)开启认证模块只有组中的成员才能使用su命令
(3)将创建的用户加入组中并确认
(4)切换到zhang用户下在使用su命令切换是zz用户下可以看到是可以使用的因为zhang用户在wheel组中
(5)切换到zz目录下在切换到zhang目录下 su命令是不可用的因为zz用户不在wheel组中,没有使用权限。
3、查看su操作记录
:安全日志文件:/var/log/secure
三、Linux中的PAM安全认证
1.su命令的安全隐患:
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险为了加强su命令的使用控制,可借助于PAM认证模块只允许极个别用户使用su命令进行切换
2.PAM认证原理:
(1).PAM认证一般遵循的顺序:Service(服务)-->PAM(配置文件)-->pam *.so;
(2).PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于/lib64/securitv/下)进行安全认证。
(3)用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
总结:PAM(Pluggable Authentication Modules)可插拔式认证模块:是一种高效而且灵活便利的用户级别的认证方式,也是当前Linux服务器普遍使用的认证方式.
3.PAM认证的构成
(1)查看某个程序是否支持PAM认证,可以用ls命令
示例:查看su是否支持PAM模块认证
(2) 查看su的PAM配置文件:cat /etc/pam.d/su
每一行都有一个独立的认证过程
每一行可以区分为三个字段:认证类型
:控制类型
:PAM模块及其参数
4.PAM安全认证流程
(1)控制类型也称做Control Flags,用于PAM验证类型的返回类型的返回结果
1.required验证失败时任然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.sufficient验证成功则立即返回,不再继续。否则忽略结果并继续
4.optional不用于验证,只显示信息。(通常用于session类型)
四、sudo机制提升权限
su命令的缺点
sudo命令的用途及用法:用途以其他用户身份(如root)(执行授权的命令)
:用法 sudo 授权命令
visudo
vi /etc/sudoers (此文件的默认权限为440,保存退出时必须执行“:wq!”命令来强制操作!)
1、配置sudo授权
:visudo或者vi /etc/sudoers (此文件的默认权限为440,保存退出时必须执行“:wq!”命令来强制操作)
sudo参数:-l :列出用户在主机上可用的和被静止的命令
-v:验证用户的时间戳
-u:指定以某个用户执行特定的操作
-k:删除时间戳
语法格式:用户 主机名列表=命令程序列表
用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)
主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配置过则使用实际主机名,ALL代表所有主机。
(用户):用户能够以何种身份来执行命令。可以省略,缺省时以root用户的身份来运行命令。
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径
多个命令之间以逗号""进行分隔。ALL则代表系统中的所有命令。
示例:
列题一:给用户zz用sudo授权一个useradd权限
(1)创建用户 切换到zz系统下用useradd创建用户,系统会提示权限不够
(2)visudo进入编辑按在文本最后一行输入用户 主机名=要添加给用户的权限保存并退出
(3) 切换到zz用户下 用sudo useradd 创建的用户名 系统提示输入密码这里输入zz的密码。用户创建成功。可以用id查看创建用户的信息
命令前输入NOPASSWD 用户执行命令时不要输入密码。加PSSWD则表示要输入密码。
例题二:创建一个组在组中加入组成员并给组提升权限
(1)创建一个组并向组中添加成员
(2)给组提升ifconfig权限
(3)进入组成员的系统验证一下
2、用户别名配置sudo授权
2.1作用当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_ Alias、Host Alias、Cmnd Alias来进行设置。
2.2用户别名的语法格式:
(1)User_Alias
用户别名:包含用户、用户组(%组名(使用%引导))、还可以包含其他其他已经用户的别名
列:User Alids OPERATORS=zhangsan,tom,lisi
(2)Host Alias
主机别名:主机名、IP、网络地址、其他主机别名!取反
列:Host_ Alias MAILSVRS=smtp,pop
(3)Cmnd_Alias
命令路劲、目录(此目录内的所有命令)、其他事先定义过的命令别名
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum
2.3案列一:用户别名使用关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置别名(别名必须为大写)
(1)visudo进入编辑
(2)切换用户下验证