账号安全基本措施
系统账号清理
将非登录用户的Shell设为/sbin/nologin
usermod -s /sbin/nologin用户名
例如:很多程序用户只要存在即可,就需要将其设置为不可登录
锁定长期不使用的账号
锁定:
usermod -L用户名
passwd -l用户名
解锁:
usermod -U
passwd -u
查看锁定用户:
passwd -S 用户名
删除无用的账号
userdel [-r]用户名
锁定账号文件passwd、shadow
锁定文件:chattr +i /etc/passwd /etc/shadow
查看状态:lsattr /etc/passwd /etc/shadow
解锁文件:chattr -i /etc/passwd /etc/shadow
密码安全控制
设置密码有效期
新建用户密码有效期
-
进入/etc/login.defs
-
PASS_MAX_DAYS改成30
-
更改后新建用户,密码有效期都为30天
已有用户密码有效期
chage -M 天数 用户名
要求用户下次登录时修改密码
chage -d 0 用户名
-
用该命令对abc用户进行设置
-
abc用户下次登录时,输入完密码后就会被强制要求改密码
-
先输入原密码,然后输入新密码即可
-
如果密码过短,或者密码与原来太相似,无法修改成功
命令历史限制
减少记录的命令条数
-
进入/etc/profile
-
将HISTSIZE的数值进行更改
-
使用source /etc/profile刷新后,显示历史命令数量改变
登录时自动清空命令历史
临时清空记录
history -c:临时清空记录,重启后又能看到,不能永久清除
登录时清空记录
进入~/.bashrc,添加echo " " > ~/.bash_history
终端自动注销
-
进入/etc/profile
-
添入export TIMEOUT=600,保存退出
-
闲置600秒后会自动注销
su 切换用户命令
在当前目录进行切换:su 用户名
切换到指定用户家目录:su - 用户名
密码验证
- root → 任意用户,不验证密码
- 普通用户 → 其他用户,验证目标用户的密码
限制使用su命令的用户
- 将允许使用su命令的用户加入wheel组
- 启用pam_wheel认证模块
-
进入/etc/pam.d/su,解除第六行注释
该行取消注释,只有加入到wheel组中才能使用su命令 -
此时abc已经不能切换用户
- 将abc加入到wheel组中,现在abc可执行切换用户命令
PAM安全认证
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
PAM可插拔式认证模块
- 是一种高效而且灵活便利的用户级别的认证方式
- 也是当前Linux服务器普遍使用的认证方式
PAM认证原理
- 一般遵循的顺序:Service (服务) → PAM(配置文件) → pam_* .so
- 首先要确定哪一项服务:然后加载相应的PAM的配置文件(位于letc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
- 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
- 不同的应用程序所对应的PAM模块是不同的
PAM认证的构成
-
查看某个程序是否支持PAM认证,可以用ls命令
例:查看su是否支持PRM模块认证 -
查看su的PAM配置文件:cat /etc/pam.d/su
- 每一行都是一个独立的认证过程
- 每一行可以区分为三个字段
- 认证类型
- 控制类型
- PAM模块及其参数
PAM安全认证流程
- required验证失败时仍然继续,但返回Fail
- requisite验证失败则立即结束整个验证过程,返回Fail
- sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
- optional不用于验证,只显示信息(通常用于session类型)
sudo机制提升权限
用途:以其他用户身份执行授权的命令
用法:sudo 授权命令
但使用前需要超级管理员授权
sudo -l查看当前用户获得哪些sudo权限
配置sudo授权
visudo 或者 vi /etc/sudoers 用法:
- 用户 主机名=命令程序列表
- 用户 主机名=(用户)命令程序列表
各部分意义
- 用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)
- 主机名:使用此规则的主机名,没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
- (用户):用户能够以何种身份来执行命令。此项可有略,缺省时以root用户的身份来运行命令
- 命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号","进行分隔。ALL则代表系统中的所有命令
将几个用户加入到一个别名组中,对多用户操作直接用别名即可。主机名,命令也可设置别名。(别名必须是大写)
终端登录安全控制
限制root只在安全终端登录
安全终端配置:/etc/securetty
禁用的终端,root用户将无法再登入。
禁止普通用户登录
禁止普通用户登录:touch /etc/nologin
取消上述登录限制:rm -rf /etc/nologin
注意:/etc/nologin文件时临时的,重启后就没有了
-
创建/etc/nologin,禁止普通用户登录
-
普通用户无法登录
-
删除/etc/nologin,取消登录限制
-
普通用户恢复可登录
网络端口扫描
netstat和ss
常用选项
| 选项 | 作用 |
|---|---|
| -a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
| -l | 显示处于监听状态的网络连接及端口信息 |
| -n | 以数字的形式显示相关的主机地址、端口等信息 |
| -t | 查看TCP相关的信息 |
| -u | 显手UDP协议相关的信息 |
| -p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要 root权限) |
ss和netstat相比,显示的内容差不多,只是显示的形式不同。
nmap
用于网络扫描和安全检测的工具
需要CentOS 7.3光盘中安装包:nmap-6.40-7.el7.x86_64.rpm
nmap常用选项
-
-p:扫描指定的端口
-
-n:禁用反向NDS解析,以加快扫描速度
-
-sP:ICMP扫描,快速判断目标主机是否存活,不做其他扫描
(查看哪些主机开放了80端口 ) -
-sT:TCP连接扫描,这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
-
-sU:UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢