linux系统安全与应用
一、账号安全控制
1.1 系统账号清理
1.将非登录用户的shell设为不可登陆
1)usermod -s /sbin/nologin 用户名 禁止用户登录
2)usermod -s /bin/false 用户名 禁止用户登录
2.锁定长期不使用的账号
1)usermod -L 用户名 锁定用户账户
2)passwd -l 用户名 锁定用户账户
3.删除无用的账号
userdel [-r] 用户名
4.锁定账号文件
1)chattr +i /etc/passwd /etc/shadow 锁定账号文件
2)lsattr /etc/passwd /etc/shadow 查看账号文件
3)chattr -i /etc/passwd /etc/shadow 解锁账号文件

1.2 密码安全控制
1.2.1 设置密码有效期
| 第一种方式:vi etc/login.defs (新建用户) |

| 第二种方式:chage -M 30 test (已有用户) |

1.2.2 要求用户下次登陆时更改密码
| 命令格式:chage -d 0 test |


1.2.3 命令历史限制
| 减少记录的命令条数的第一种方法:history -c (暂时删除,重启又恢复了) |

| 减少记录的命令条数的第二种方法:vi /etc/profile |

| 登录时自动清空历史命令:vi ~/.bashrc |


1.2.4 终端自动注销
| 修改配置文件 vi /etc/profile |


1.3 su命令切换用户
1.3.1 用途及用法
1.用途:切换用户
2.格式:
1)su -目标用户 切换到目标用户的家目录
2)su 目标用户 还是本用户的家目录
1.3.2 密码验证
1.root→任意用户,不验证密码
2.普通用户→其他用户,验证目标用户的密码
1.3.3 限制使用su命令切换用户
| 步骤:1.将允许使用su命令的用户加入wheel组 2.启用pam_wheel认证模块 |



1.3.4 查看日志文件

1.4 PAM安全认证
1.4.1 su命令的安全隐患
1.默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
2.为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
1.4.2 PAM可插拔式认证模块
是一种高效而且灵活便利的用户级别的认证方式 也是当前Linux服务器普遍使用的认证方式
1.4.3 PAM认证原理
1.一般遵循的规律: Service(服务)→ PAM(配置文件)→ pam_*.so 2.首先要确定哪一项服务,然后加载相应的 PAM 的配置文件(位于 /etc/pam.d 下),最后调用认证文件(位于 /lib64/security 下)进行安全认证
3.用户访问服务器时,服务器的某一个服务程序把用户的请求发送到 PAM 模块进行认证
4.不同的应用程序所对应的 PAM 模块是不同的
5.如果想要查看某个程序是否支持 PAM 认证,可以使用 ls 命令,进行查看 /etc/pam.d/
1.4.4 每列解释(cat /etc/pam.d/su)

| 第一列代表PAM认证模块类型 |
| 内容 | 解释 |
|---|---|
| auth | 对用户身份进行识别,如提示输入密码,判断是否为root |
| account | 对账号各项属性进行检查,如是否允许登录系统,账号是否已经过期,是否到达最大用户数等 |
| password | 使用用户信息来更新数据,如修改用户密码 |
| session定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统 |
| 第二列代表PAM控制标记 |
| 内容 | 解释 |
|---|---|
| required | 表示需要返回一个成功值,如果返回失败,不会立即将失败结果返回,而是继续进行同类型的下一步验证,所有此类型的模块都执行完成后,再返回失败 |
| requisite | 与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败 |
| sufficient | 如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值 |
| optional | 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型) |
| include | 表示在验证过程中调用其他的 PAM 配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth (主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项 |
| 第三列代表PAM模块 |
1.默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径
2.同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数
| 第四列代表PAM模块的参数 |
1.根据所使用的模块进行添加,默认为空
2.传递给模块的参数,参数可以有多个,之间用空格分隔开
1.4.5 PAM安全认证流程

1.required验证失败时仍然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
4.optional不用于验证,只显示信息(通常用于session类型)
1.5 使用sudo机制提升权限
1.5.1 su命令的缺点
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
1.5.2 sudo的用途和用法
1.用途:以其他用户身份(如root)执行授权的命令
2.用法:sudo 授权命令
1.5.3 配置sudo授权(visudo或者vi /etc/sudoers)
| 1.记录格式 |
用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表
注:记录格式可使用通配符
1)* 代表表示所有
2)!代表取反符号,表示排除
| 2.记录说明 |
| 记录组成部分 | 说明 |
|---|---|
| 用户 | 直接授权指定的用户名,或采用“组名"的形式(权一个组的所有用户) |
| 主机名 | 使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机 |
| (用户) | 用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令 |
| 命令程序列表 | 允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号 "," 进行分隔。ALL则代表系统中的所有命令 |
| 3.具体操作 |




1.5.4 查看sudo操作记录
第一步visudo进入配置文件
第二步提添加默认日志文件

第三步:查看(cat)

1.5.5 查询授权的sudo操作
| sudo -l |

二、开关机安全机制
2.1 调整BIOS引导设置
1.将第一引导设备设为当前系统所在盘
2.禁止从其他设备(光盘、U盘、网络)引导系统
3.将安全级别设为setup,并设置管理员密码
2.2 GRUB限制
2.2.1 概述
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB参数,这对服务器是一个极大的威胁。这样我们可以为GRUB菜单设置一个密码,就能提高安全性了
2.2.2 简要操作
1.使用 grub2-mkpasswd-pbkdf2 密钥
2.修改 /etc/grub.d/00_header 件中,添加密码记录
3.生成新的 grub.cfg 配置文
2.2.3 具体操作







三、终端登录安全控制
3.1 限制root只在安全终端登录(/etc/securetty)



3.2 限制普通用户登录
1.建立/etc/nologin文件
2.删除nologin文件或重启即可恢复





四、系统弱口令检测
4.1 Joth the Ripper ,简称JR
1.一款密码分析工具,支持字典式的暴力破解
2.通过对 shadow 文件的口令分析,可以检测密码强度
3.官网网站:http://www.openwall.com/john/
4.2 安装JR工具
1.安装方法:make clean 系统类型
2.主程序文件为 john
4.3 检测弱口令账号
1.获得Linux/Unix服务器的shadow文件
2.执行john程序,将shadow文件作为参数
4.4 密码文件的暴力破解
1.准备好密码字典文件,默认为password.lst
2.执行john程序,结合–wordlist=字典文件
4.5 具体步骤
4.5.1 导入安装包

4.5.2 解压安装包,并安装编译工具



4.5.3 切换到src目录进行编译安装

4.5.4 准备好待破解的文件,进行暴力破解



五、网络扫描:NMAP
5.1 NMAP
1.NMAP是一个强大的端口扫描类安全评测工具,支持ping扫描、多端口检测等多种技术
2.安装NMAP软件包:
1)rpm -qa |grep nmap
2)yum install -y nmap
5.2 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通而放弃扫描 |
5.3 举例
5.3.1 查看本机开放的端口


5.3.2 检测主机
1.检测192.168.10.0/24网段有哪些主机提供http服务
nmap -p 80 192.168.10.0/24
2.检测192.168.10.0/24网段有哪些存活主机
nmap -n -sP 192.168.10.0/24
六、控制台命令:netstat
6.1 常用格式
1.netstat -natp 查看正在运行的使用TCP协议的网络状态信息
2.netstat -naup 查看正在运行的使用UDP协议的网络状态信息
6.2 常用选项
| 选项 | 说明 |
|---|---|
| -a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
| -n | 以数字的形式显示相关的主机地址、端口等信息 |
| -t | 查看TCP协议相关的信息-u显示UDP协议相关的信息 |
| -p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限) |
| -r | 显示路由表信息 |
| -l | 显示处于监听状态的网络连接及端口信息 |

浙公网安备 33010602011771号