目录
[1.1 系统账号清理](#1.1 系统账号清理)
[1.2 密码安全控制](#1.2 密码安全控制)
[1.3 历史记录控制](#1.3 历史记录控制)
[1.4 终端自动注销](#1.4 终端自动注销)
[2.1 限制su命令用户](#2.1 限制su命令用户)
[2.2 PAM安全认证](#2.2 PAM安全认证)
[示例一:通过pam 模块来防止暴力破解ssh](#示例一:通过pam 模块来防止暴力破解ssh)
[2.3 sudo机制提升权限](#2.3 sudo机制提升权限)
[2.3.1 sudo命令(root授权其他用户的命令权限)](#2.3.1 sudo命令(root授权其他用户的命令权限))
[2.3.2 配置sudo授权](#2.3.2 配置sudo授权)
[2.4 开关机安全控制](#2.4 开关机安全控制)
[2.4.1 调整BIOS引导设置](#2.4.1 调整BIOS引导设置)
[2.4.2 GRUB限制](#2.4.2 GRUB限制)
[2.4.3 终端登陆安全控制](#2.4.3 终端登陆安全控制)
[3.1 John the Ripper](#3.1 John the Ripper)
[4.1 NMAP](#4.1 NMAP)
[4.2 NMAP扫描](#4.2 NMAP扫描)
一、账号安全控制
1.1 系统账号清理
①将非登录用户的Shell设为/sbin/nologin
恢复
②锁定长期不使用的账号
③删除无用的账号
④锁定账号文件passwd、shadow
恢复
1.2 密码安全控制
①设置密码有效期
- 新用户:
第一个:30天之后要修改密码
第二个:距离上一次修改密码时间0天之内不可修改
第三个:密码最小长度不小于5位
第四个:密码到期前七天会提醒
- 老用户:
②要求用户下次登陆时修改密码
chage -d 0 用户名
1.3 历史记录控制
①减少记录的命令条数
在vi /etc/profile中
②注销时自动清理历史命令
1.4 终端自动注销
二、系统引导和登陆控制
2.1 限制su命令用户
注意:对这两行添加注释,表示是否启用
第一行:root用户是否有使用su命令的权限
第五行:wheel组中的用户是否有使用su命令的权限
(启用pam_wheel 认证以后,未加入到 wheel 组内的其他用户将无法使用 su 命令)
例:
2.2 PAM安全认证
- 定义:Linux-PAM,是linux可插拔认证模块,是一套可定制、 可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式
- 原理:
①PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_ *.so
②PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d 下),最后调用认证模块(位于/lib64/security/下)进行安全认证
③用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认 证。不同的应用程序所对应的PAM模块也是不同的
注:ls /etc/pam.d:查看某个程序是否支持PAM 认证
第一列代表PAM认证模块类型
auth: 对用户身份进行识别,如提示输入密码,判断是否为root
account:: 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最 大用户数等
password: 使用用户信息来更新数据,如修改用户密码。
session: 定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打 开和关闭,挂载文件系统。
第二列代表PAM控制标记
**required:**表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行 同类型的下一验证,所有此类型的模块都执行完成后,再返回失败
**requisite:**与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败
**sufficient:**如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响 这类型的返回值
optional:: 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),
include: 表示在验证过程中调用其他的PAM配置文件
比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)
来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块
(默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径)
同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数
这个需要根据所使用的模块来添加。传递给模块的参数。参数可以有多个,之间用空格分隔开
示例图演示:
|------|------------|-----|------|------|------|------|
| | | | 用户1 | 用户2 | 用户3 | 用户4 |
| auth | required | 模块1 | pass | fail | pass | pass |
| auth | sufficient | 模块2 | pass | pass | fail | pass |
| auth | required | 模块3 | pass | pass | pass | fail |
| | | 结果 | pass | fail | pass | pass |
示例一:通过pam 模块来防止暴力破解ssh
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200
说明:尝试登陆失败超过3次,普通用户600秒解锁,root用户1200秒解锁
注解:
- deny:指定最大几次认证错误,如果超出此错误,将执行后面的策略。如锁定N秒,如果后面没有其他策略指定时,默认永远锁定,除非手动解锁。
- lock_time:锁定多长时间,按秒为单位;
- unlock_time:指定认证被锁后,多长时间自动解锁用户;
- even_deny_root root:用户在认证出错时,一样被锁定
- root_unlock_time root:用户在登录失败时,锁定多长时间。该选项一般是配合even_deny_root 一起使用的
失败三次自动锁定
[root@fzx ~l# pam tally2 --user=root
Login Failures Latest failure From
root 6 07/01/24 18:46:39 192.17.20.66
[root@benet22 ~l# pam tally2 --user=root --reset
Login Failures Latest failure From
root 6 07/01/24 18:46:39 192.17.20.66
2.3 sudo机制提升权限
2.3.1 sudo命令(root授权其他用户的命令权限)
sudo [参数选项] 命令
- -l:列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来 查看和测试是不是配置正确的
- -v:验证用户的时间戳;如果用户运行sudo 后,输入用户的密码后,在短时间内可以不用输 入口令来直接进行sudo 操作;用-v 可以跟踪最新的时间戳;
- -u:指定以以某个用户执行特定操作;
- -k:删除时间戳,下一个sudo 命令要求用求提供密码
2.3.2 配置sudo授权
示例一:基础的普通用户的用户创建
操作方法:直接在最后一行添加
注意:在其它用户用root用户通过sudo命令给的权限时
命令形式为:sudo 绝对路径 命令 参数 目标
示例二:普通用户的建立网卡
示例三:alias用户别名***
用处:当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名
示例四:启用sudo操作日志
最后用tail -f 加路径 进行动态观察
或者直接
2.4 开关机安全控制
2.4.1 调整BIOS引导设置
- 将第一引导设备设为当前系统所在硬盘
- 禁止从其他设备(光盘、U盘、网络)引导系统
- 将安全级别设为setup,并设置管理员密码
2.4.2 GRUB限制
- 使用grub2-mkpasswd-pbkdf2生成密钥
- 修改/etc/grub.d/00 header文件中,添加密码记录
- 生成新的grub.cfg配置文件
方法一:
方法二:
2.4.3 终端登陆安全控制
- 限制root只在安全终端登录
安全终端配置:/etc/securetty
- 禁止普通用户登录
建立/etc/nologin文件
删除nologin文件或重启后即恢复正常
三、弱口令检测
3.1 John the Ripper
- 简称为 JR一款密码分析工具
- 支持字典式的暴力破解通过对shadow文件的口令分析,可以检测密码强度
- 官方双站:http://www.openwall.com/john/
示例一:无字典
- 首先先上传压缩包
示例二:有字典
四、端口扫描------NMAP
4.1 NMAP
- 一款强大的网络扫描、安全检测工具
- 官方网站:http://nmap.org
- CentOS 7.7光盘中安装包 nmap-6.40-7.el7.x86 64.rpm
4.2 NMAP扫描
nmap [扫描类型] [选项]
- -p:指定扫描的端口
- -n:禁用反向 DNS 解析(以加快扫描速度)
- -sS:TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包 就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放
- -sT:TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接, 如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放
- -sF:TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多 防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的 扫描可间接检测防火墙的健壮性
- -sU:UDP 扫描,探测目标主机提供哪些 UDP 服务,UDP 扫描的速度会比较慢
- -sP:ICMP 扫描,类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描
- -P0:跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时, 使用这种方式可以避免因无法 ping 通而放弃扫描
nmap -p 139,445 192.168.4.100-200
//检测 IP 地址位于 192.168.4.100~200 的主机是否开启文件共享服务
注:
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
Sequence number(顺序号码)
Acknowledge number(确认号码)
端口的取值范围是:0-65535
示例一
补充:
永久禁PING:vim /etc/sysctl.conf
禁止:net.ipv4.icmp_echo_ignore_all = 1
启用:net.ipv4.icmp_echo_ignore_all = 0