一、账号安全基本措施
1.1 系统账号清理
将用户设置为无法登陆
锁定账户
删除账户
锁定账户密码 本地锁定
1.1.1 将用户设置为无法登陆
方法1:chsh -s修改
方法2:usermod -s
1.1.2 锁定用户
usermod -L lisi #锁定账户
usermod -U lisi #解锁账户
passwd -l lisi #锁定账户方
passwd -u lisi #解锁账户
1.1.3 删除账户
userdel 用户名 #删除用户
1.1.4 chattr 锁定重要配置文件(passwd 、shadow、fstab等)
lsattr /etc/passwd /etc/shadow #查看文件的状态
chattr +i /etc/passwd /etc/shadow #锁定文件
chattr -i /etc/passwd /etc/shadow #解锁文件
1.2 密码安全控制
1.2.1 设置密码规则
1.适用于新建用户
vim /etc/login.defs #修改配置文件
-----此处省略部分注释及配置-------
PASS_MAX_DAYS 30 #修改密码有效期为30天
2.适用于已有用户
chage -M 30 zhangsan #修改密码有效期
3.强制在下次登录成功时修改密码(/etc/shadow第三个字段被修改为0)
chage -d 0 zhangsan #设置下次登录强制修改密码
1.3 命令历史
export HISTSIZE=200
#临时修改历史命令条数为200条
二、切换和限制用户、pam
2.1 su:切换用户
可以切换用户身份,并且以指定用户的身份执行命令
su 不加- 不安全的切换,继承上个用户
su 加- 安全的切换
2.2 PAM 安全认证
pam 插件式的验证模块
当用户来访问某一程序的时候如果这个时候启用了pam模块。会先去读取配置文件。然后按照配置文件调用模块进行操作。
service ——> PAM(配置文件)——>pam_*.so(配置)
/usr/lib64/security 存放功能模块
/etc/security 复杂的配置文件
type 类型
- auth 用户身份认证
- account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)
- password 用户修改密码时密码复杂度检查机制等功能
- session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
- -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
Control: ( 控制位)
required (渣男) 一票否决,如果失败最后一定失败,但会继续验证
requisite 一票否决,如果失败会立即结束验证,反馈失败
sufficient:验证成功则立即返回,不再继续,否则忽略结果并继续
三、limit 限制使用资源
功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间
修改限制的实现方式:
(1) 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 是一个特殊值,用于表示不限制
[root@localhost pam.d]#ulimit -a
#可以看到系统的相关 资源限制 设置
#使用压力测试工具进行测试 打开的文件数
ab -c1025 -n 2000 http://192.168.91.100/
#必须这样写, 包括url 后面的 斜杠/
[root@localhost pam.d]#ulimit -n 10000
#修改最大值 临时修改
[root@localhost security]#vim /etc/security/limits.conf
#永久修改不用重启 软硬一起设置可以直接使用 -
zhangsan - nproc 5
su - zhangsan
#切换时 注意要完全切换
pgrep -lu zhangsan
limits 生产中的 建议设置
* soft core unlimited
* hard core unlimited
* soft nproc 1000000
* hard nproc 1000000
* soft nofile 1000000
* hard nofile 1000000
* soft memlock 32000
* hard memlock 32000
* soft msgqueue 8192000
* hard msgqueue 8192000
四、sudo
4.1 sudo 命令的用途及格式
sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具
不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。
sudo特性:
sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440
用户 主机名=命令程序列表
用户 主机名=(用户)命令程序列表
zhu1 ALL=(root) /sbin/ifconfig #举例
root ALL=(ALL) ALL
root:那个用户要使用命令 lisi @192.168.91.100 zhangsan@192.168.91.100
ALL:那台主机 192.168.91.100 192.168.91.10
(ALL):以谁的身份运行 root
ALL :所有命令
4.2 查看当前sudo配置文件,启用sudo操作日志
启用sudo操作日志
- 需启用Defaults logfile配置
- 默认日志文件:/var/log/sudo
- 操作:在
/etc/sudoers
末尾添加Defaults logfile="/var/log/sudo"
查询授权的sudo操作
- sudo -l
版权归原作者 mikechen1 所有, 如有侵权,请联系我们删除。