目录
实例: 以普通用户cc登入,使用sudo命令会报错,显示cc用户未在sudoers文件中
系统的安全加固操作:
1、锁定用户
2、删除不需要的用户
4、下次立即修改密码
5、锁定重要文件:chattr +i
6、设置密码长度
7、密码有效期
8、禁止普通用户:touch /etc/nologin
9、sudo提权操作
10、修改shell类型,不让登录
11、禁止su切换用户
12、禁止终端登录
账号安全基本措施
系统账号清理:
-
将非登录用户的shell设为/sbin/nologin
-
锁定长期不使用的账号
-
删除无用的账号
-
锁定账号文件passwd、shadow
-
chattr +i /etc/passwd /etc/shadow(锁定与解锁)
-
lsattr /etc/passwd /etc/shadow(查看)
-
密码安全控制
-
设置密码有效期
-
要求用户下次登录时修改密码
-
新建用户:vi /etc/login.defs
PASS_MAX_DAYS 30
-
已有用户:chage -M 30 lisi
-
选项: chage[选项] [用户名] -m :密码可更改的最小天数。为零时代表任何时候都可以更改密码。 -M :密码保持有效的最大天数 (有效期) w: 用户密码到期前,提前收到警告信息的天数。 -E: 帐号到期的日期。过了这天,此帐号将不可用。 -d: 上一次更改的日期。 -i: 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用 -l: 例出当前的设置 (查看) vim /etc/login.defs (适合以后添加的用户)
命令历史限制
-
减少记录的命令条数
-
echo " " ~/.bsah_history
-
vim /etc/profile(对所有用户生效)
HISTSIZE=200(限制历史命令记录为200条)
export TMOUT=60(设置超时时间)
-
history -c(clear):临时清除历史命令
-
-
注销时自动清空命令历史
-
vim .bash_logout(退出时)
echo " " > ~/.bash_history
-
vim .bash_profile
-
终端自动注销
-
闲置600秒后自动注销
-
vi ~/.bash_profile
export TMOUT=600
export:愿意传给子进程
-
vi ~/.bash_logout
-
使用su命令切换用户
语法:
-
su 目标用户:
-
非登录式切换,不会读取目标用户的配置文件,不改变当前工作目录,不完全切换,子进程会接收父进程的一些配置
-
-
su -目标用户:
-
登录式切换,读取目标用户的配置文件,切换至自己的家目录,完全切换,子进程完全不接收父进程的配置
-
PAM安全认证(插件式的认证模块)
官网手册:GitHub - linux-pam/linux-pam: Linux PAM (Pluggable Authentication Modules for Linux) project
-
是高效且灵活便利的用户级别的认证方式
-
也是当前Linux服务器普遍使用的认证方式
认证原理:
-
一般遵循的顺序
-
Service(服务)——PAM(配置文件)——pam_*.so
-
-
首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
-
用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
-
不同的应用程序所对应的PAM模块是不同的
相关文件:
-
模块文件目录:/lib64/security/*.so
-
特定模块相关的设置文件:/etc/security/(功能较强大的模块,才有特定的配置文件)
-
man 8 模块名:查看帮助
-
应用程序调用PAM模块的配置文件
-
主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置
-
为每种应用模块提供一个专用的配置文件:/etc/pam.d/ APP_NAME
-
注意:如:/etc/pam.d存在,/etc/pam.conf将失效
-
专用配置文件/etc/pam.d/格式
-
application:
-
type:
-
control:PAM库该如何处理与服务相关的PAM模块的成功或失败情况,一个关键词实现
-
module-path:用来指明本模块对应的程序文件的路径名
-
Arguments:用来传递给该模块的参数
limit
功能:
在用户级别实现对其可使用的资源的限制,例如: 可打开的文件数量,可运行的进程数量,可用内存空
修改限制的实现方式:
ulimit命令ulimit是linux shel的内置命令,它具有一套参数集,用于对shel进程及其子进程进行资源限制。
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:设置管道缓冲区的最大值.单位:kbvtes
-s size:设置堆栈的最大值.单位:kbvtes
-t size:设置CPU使用时间的最大上限.单位:seconds
-u size:最大用户进程数
-v size:设置虚拟内存的最大值.单位:kbvtes
unlimited 是一个特殊值,用于表示不限制
提升执行权限 sudo
1、 sudo命令的用途及用法:
用途: 以其他用户身份 (如root) 执行授权命令
用法: sudo 授权命令
2、配置sudo授权
visudo 或者 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的密码才会执行