系统安全及应用
目录- 系统安全及应用
一、账号安全基本措施
1、系统账号清理
1.1 将非登录用户的Shell设为/sbin/nologin
1.2 锁定长期不使用的账号
1.3 删除无用的账号
1.4 锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shadow
#锁定文件
lsattr /etc/passwd /etc/shadow
#查看状态
chattr -i /etc/passwd /etc/shadow
#解锁文件
实例:
2、密码安全控制
2.1 方法一:修改密码配置文件 (密码配置文件为/etc/login.defs)——针对新用户,已有用户不能更改
2.2 方法二:修改已有用户的密码有效期——chage命令
2.2.1 格式
change [选项] 用户名
2.2.2 常用选项
选项 | 功能 |
---|---|
-m | 密码可更改的最小天数。为零时代表任何时候都可以更改密码 |
-M | 密码保持有效的最大天数。 |
-w | 用户密码到期前,提前收到警告信息的天数。 |
-E | 帐号到期的日期。过了这天,此帐号将不可用。 |
-d | 上一次更改的日期。 |
-i | 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。 |
-l | 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。 |
3、命令历史记录限制
以下有几个方法:
- 减少记录的命令条数;
- 登录时自动清空命令历史 ;
- 系统默认保存1000条历史命令记录;
- history -c 命令只可以临时清除记录(其实所有的文件都还保存在.bash_history ),重启后记录还在。
3.1 对历史命令的数量进行限制
3.2 设置登陆时,退出时自动清空命令历史
#退出
vim .bash_logout
#在里面写
echo " " >~/.bash_history
#登录
vim .bashrc
echo " " >~/.bash_history
4、使用su命令切换用户
4.1 格式
su 目标用户 #切换用户
su - 目标用户 #用目标用户登录,记得-两边都有空格
exit #回至旧的用户
4.2 密码验证
- root:任意用户,不验证密码
- 普通用户:其他用户,验证目标用户的密码
- 带 “-” 表示将使用目标用户登录Shell环境
实例
5、PAM安全认证
PAM:Pluggable Authentication Modules,插件式的验证模块,Sun公司于1995 年开发的一种与认证相关的通用框架机制。PAM 只关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统一的API 接口,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证。
5.1专用配置文件/etc/pam.d/格式
类别 | 作用 |
---|---|
type | 指模块类型,即功能 |
control | PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现 |
module-path | 用来指明本模块对应的程序文件的路径名 |
Arguments | 用来传递给该模块的参数 |
模块类型(type) | 作用 |
---|---|
Auth | 账号的认证和授权 |
Account | 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录) |
password | 用户修改密码时密码复杂度检查机制等功能 |
session | 用户会话期间的控制,如:最多打开的文件数,最多的进程数等 |
-type | 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用 |
控制位(control) | 作用 |
---|---|
required | 表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应用程序,即为必要条件 |
requisite | 一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件 |
sufficient | 一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的 |
equired和requisiteoptional | 表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略include: 调用其他的配置文件中定义的配置 |
optional | 可选项 |
5.2 shell模块
功能:检查有效shell
实例:
5.3 pam_nologin.so 模块
功能:如果/etc/nologin文件存在,将导致非root用户不能登陆,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆
默认此模块可以对ssh等登录有效,但不影响su登录
5.4 limit
功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间
5.4.1ulimit
ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。
ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。
ulimit只影响shell进程及其子进程,用户登出后失效。
可以在profile中加入ulimit的设置,变相的做到永久生效
5.4.1.1 常用选项
命令 | 作用 |
---|---|
-H | 设置硬件资源限制 |
-S | 设置软件资源限制 |
-a | 显示当前所有的资源限制 |
-c | 设置core文件的最大值.单位:blocks |
-d | 设置数据段的最大值.单位:kbytes |
-f | 设置创建文件的最大值.单位:blocks |
-l | 设置在内存中锁定进程的最大值.单位:kbytes |
-m | 设置可以使用的常驻内存的最大值.单位:kbytes |
-n | 设置内核可以同时打开的文件描述符的最大值.单位:n |
-p | 设置管道缓冲区的最大值.单位:kbytes |
-s | 设置堆栈的最大值.单位:kbytes |
-t | 设置CPU使用时间的最大上限.单位:seconds |
-u | 最大用户进程数 |
-v | 设置虚拟内存的最大值.单位:kbytes |
unlimited | 是一个特殊值,用于表示不限制 |
实例:
临时:
永久:
6、使用sudo机制提升权限
sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。
6.1 sudo的特性
- sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
- sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
- sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
- sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440
6.2 sudo组成
- 包:sudo
- 配置文件:/etc/sudo.conf
- 执行授权命令:/usr/bin/sudo
- 时间戳文件:/var/db/sudo
- 日志文件:/var/log/secure
6.3 编辑配置文件
两种方法:
vim /etc/sudoers ,但需要visudo -c来检查语法
visudo:自动检查语法错误
6.4 字段解析
字段 | 作用 |
---|---|
root/zhangsan/%wheel(wheel组) | 运行命令者的身份 |
ALL | 通过哪些主机 |
(ALL)/(root) | 以哪个用户的身份 |
All/user/bin/mount /dev/sr0 /mnt | 运行哪些命令 |
实例:
6.5 别名
sudo别名有四种类型:
- User_Alias(用户)
- Runas_Alias(代表用户)
- Host_Alias(登录主机)
- Cmnd_Alias(命令)
实例:
6.6 子目录
只需要在/etc/sudoers.d文件夹下创一个文件写下配置,就跟在visudo下面写配置文件一样。
实例:
二 、系统引导
1、开关机安全控制
1.1 调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘;
禁止从其他设备(光盘、 U盘、网络)引导系统;
将安全级别设为setup,并设置管理员密码。
1.2.GRUB限制
使用grub2-mkpasswd-pbkdf2生成密钥;
修改/etc/grub.d/00_ header文件中, 添加密码记录;
生成新的grub.cfg配置文件。
1.3 限制更改GRUB引导参数
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。可以使用grub2-setpassword直接设置密码。
实例:
标签:系统安全,配置文件,etc,sudo,用户,密码,模块,应用 From: https://www.cnblogs.com/shijunan2/p/18160561