目录
vim /etc/login.defs (适合以后添加的用户)
实例:以普通用户cc登入,使用sudo命令会报错,显示cc用户未在sudoers文件中。
一、账号安全基本措施
1、系统账号清理
1.1 禁止用户登录
usermod -s /sbin/nologin 用户名
1.2 锁定账户
passwd -l 用户名 (或usermod -L 用户名 ):(锁定)
passwd -u 用户名(或usermod -U 用户名) :(解锁)
1.3 删除账户
userdel -r 用户名
1.4 锁定配置文件 passwd、shadow
chattr +i /etc/passwd /etc/shadow (锁定)
lsattr /etc/passwd /etc/shadow (查看)
chattr -i /etc/passwd /etc/shadow (解锁)
2、密码安全控制
2.1 设置密码有效期:
chage -M 30 用户名 (适合已存在的用户)
选项:chage [选项] [用户名]
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数(有效期)
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置(查看)
vim /etc/login.defs (适合以后添加的用户)
新建用户验证一下 有效期设置是否生效:
2.2要求用户下次登录时改密码:
chage -d 0 用户名 (强制要求用户下次登陆时修改密码)
3、命令历史限制
3.1减少记录的命令条数
export HISTSIZE=200 (适用于当前用户)
source /etc/profile (刷新配置文件,使文件立即生效)
vim /etc/profile (适合新用户)
source /etc/profile (刷新配置文件,使文件立即生效)
3.2登录时自动清空命令历史
echo"" > ~/.bash_history (永久清除)
vim ~/.bash_logout (临时清除)
history -c
clear
二、切换用户 su
1、用途及用法
用途:su 用户名 (切换用户,root用户切换至其他用户无须密码)
格式:su - 目标用户(横杠“ - ”代表切换到目标用户的家目录)
三、PAM安全认证
1、su的命令的安全隐患
1.默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险;
2.为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
2、什么是PAM
1.PAM(Pluggable Authentication Modules)可插拔式认证模块
2.是一种高效而且灵活便利的用户级别的认证方式
3.也是当前Linux服务器普遍使用的认证方式
4.PAM提供了对所有服务进行认证的中央机制,适用于login,远程登陆,su等应用5.系统管理员通过PAM配置文件来制定不同的应用程序的不同认证策略
3、PAM认证原理
1.PAM认证一般遵循的顺序: Service (服务) --> PAM(配置文件) --> pam *.so;
2.PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认模块(位于/lib64/security/下) 进行安全认证。
3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程席所对应的PAM模块也是不同的。
4.如果想查看某个程序是否支持PAM认证,可以用Is命令进行查看/etc/pam.d/.ls /etc/pam.d/ | grep su
5.PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。
4、PAM安全认证流程
1.required验证失败时仍然继续,但是返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.suficient验证成功则立即返回,不再继续,否则忽略结果并继续
4.optional不用于验证,只显示信息
5、limit
功能:
在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间
修改限制的实现方式:ulimit命令
。ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。
。ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。
。ulimit只影响shell进程及其子进程,用户登出后失效。可以在profile中加入ulimit的设置,变相的做到永久生效
选项:
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-u size:最大用户进程数
-v size:设置虚拟内存的最大值.单位:kbytes
unlimited 是一个特殊值,用于表示不限制
四、提升执行权限 sudo
1、 sudo命令的用途及用法:
用途:以其他用户身份(如root)执行授权命令
用法:sudo 授权命令
2、 配置sudo授权
visudo 或者 vim /etc/sudoers 找到如下内容
1、visudo
2、vim /etc/sudoers
以上标记处每一列的含义如下:
第一列:用户名,如root、test;
第二列:等号左边的ALL表示允许从任何主机登录当前的用户账户;等号右边的ALL表示第一列的用户可以切换成系统中任何一个其它用户(如:su test)。
第三列:第一列的用户能下达的命令,ALL表示可以下达任何命令。也可以指定特定命令,如/sbin/useradd,/sbin/userdel
实例:以普通用户cc登入,使用sudo命令会报错,显示cc用户未在sudoers文件中。
1、下面我们将cc用户添加到sudoers文件中:
下一步切换到cc用户,使用命令:sudo useradd cc1,这里首次运行sudo需要输入cc的密码才会执行。
2、也可配置免密运行sudo命令
总结:
sudo给运维带来很大便利,如果有很多人需要有root用户权限去执行命令,不用sudo方式,而是告诉他们root密码,对于安全需要会非常的不便。