目录
一、理论
1.账户安全控制
(1)基本安全措施
① 系统账户清理
表1 账号安全的基本措施
| 措施 | 命令 | 功能 |
| 将非登录用户的Shell设为nologin | usermod -s nologin 用户名 | 禁止登录 |
| 锁定长期不使用的账号(含解锁方式) | usermod -L 用户名 | 锁定账户 |
| usermod -U 用户名 | 锁定账户方 | |
| passwd -l 用户名 | 解锁账户 | |
| passwd -u 用户名 | 解锁账户 | |
| 删除无用的账号 | userdel 用户名 | 删除用户 |
| chattr锁定重要文件(如passwd、shadow、fstab等) | lsattr /etc/passwd /etc/shadow | 查看文件的状态 |
| chattr +i /etc/passwd /etc/shadow | 锁定文件 | |
| chattr -i /etc/passwd /etc/shadow | 解锁文件 |
② 密码安全控制
对于新建用户,可以进入/etc/login.defs进行修改属性,设置密码规则,使得在下次创建用户时密码信息生效,设置密码有效期,要求用户下次登录时修改密码:
表2 密码安全控制
| 措施 | 命令 | 功能 |
| 适用于新建用户 | vim /etc/login.defs | 修改配置文件 |
| 适用于已有用户 | chage -M 30 用户名 | 修改密码有效期 |
| 强制在下次登录成功时修改密码(/etc/shadow第三个字段被修改为0) | chage -d 0 用户名 | 设置下次登录强制修改密码 |
③ 命令历史、自动注销
表3 命令历史记录限制
| 措施 | 命令 | 功能 |
| 临时修改当前用户的历史命令条数 | export HISTSIZE=200 | 临时修改历史命令条数为200条 |
| 进入配置文件永久修改历史命令条数 | vim /etc/profile HISTSIZE=300 source /etc/profile | 进入配置文件; 将全局历史命令条数由1000改为300; 刷新配置文件,使文件立即生效 |
| 退出当前终端将命令清除 | vim .bash_logout echo " " > ~/.bash_history source .bash_logout | 每次登录都会清空历史记录 |
| 开机后当前终端将命令清除 | vim .bashrc echo " " > ~/.bash_history | 每次退出都会清空历史记录 |
| 设置登录超时时间 | vim /etc/profile TMOUT=600 source /etc/profile | 进入配置文件; 设置全局自动注销时间,声明600s没有操作就登出; 更新配置文件 |
(2)用户切换与提权
① 切换用户
【1】切换用户为su命令,可以切换用户身份,并且以指定用户的身份执行命令
表4 su命令
| 措施 | 命令 | 功能 |
| 非登录式切换 | su UserName | 不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换 |
| 登录式切换 | su - UserName | 会读取目标用户的配置文件,切换至自已的家目录,即完全切换 |
【2】密码验证
超级管理员切换普通用户,不需要密码;
普通用户切换普通用户,需要密码;
普通用户切换超级管理员,需要密码。
【3】限制使用su命令的用户
su命令的安全隐患,默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换:
表 限制使用su命令的用户。
wheel 组是一个特殊的组,它通常被用于控制系统管理员(root)权限的访问。
具体来说,wheel 组可以被用来授权一些非特权用户访问一些只有管理员才能访问的系统命令或文件,这些用户可以使用 sudo 命令以 root 用户身份执行这些命令或访问这些文件。
表5 许极个别用户使用su命令进行切换
| 措施 | 命令 | 功能 |
| 限制使用su命令的用户 | vim /etc/pam.d/su | 将允许使用su命令的用户加入wheel组。 启用pam_wheel认证模块。则只有wheel组内的用户可以使用su命令切换用户 |
| 查看su操作记录 | tail -f /var/log/secure | 查看安全日志 |
② 提升执行权限
用途:以其他用户身份(如root)执行授权的命令
用法:sudo 授权命令
表6 sudo命令授权
| 措施 | 命令 | 功能 |
| 配置文件使用户可以通过sudo命令使用ifconfig | vim /etc/sudoers #%wheel ALL=(ALL) ALL %wheel ALL=(ALL) NOPASSWD: ALL | 配置文件 99行和102行取消wheel组 |
| 用户名 ALL=(root) /sbin/ifconfig | 配置文件 | |
| 添加用户到wheel组 | su - 用户名 gpasswd -a dn wheel | 切换用户 添加用户到wheel组 |
| 新增虚拟网卡 | sudo ifconfig ens33:1 192.168.37.150/24 | 直接生效 |
(3)PAM安全认证
① PAM作用及原理
PAM (Pluggable Authentication Modules) 是一种 Linux 系统下的身份认证框架,
它提供了一种标准的身份认证接口,允许系统管理员定制化地配置各种认证方式和方法。
PAM 具有高度的灵活性和可扩展性,允许管理员在登录过程中通过调用各种不同的认证模块,
实现不同的认证方式,如本地密码、Kerberos、LDAP、双因素认证等。
② PAM认证原理
PAM认证一般遵循的顺序: Service (服务) 、 PAM (配置文件)、pam_*.so
③ PAM认证的构成
查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/中的配置文件。
PAM的配置文件中的每一行都是一个独立的认证过程,
它们按从上往下的顺序依次由PAM模块调用。
④ PAM认证类型
PAM 认证模块分为四个不同的类型:
表7 PAM认证模块
| 模块 | 功能 |
| 认证模块 | 认证模块 |
| 认证模块 | 用于控制用户对系统资源的访问权限,例如文件权限、进程权限等 |
| 账户管理模块 | 用于管理用户账户信息,例如密码过期策略、账户锁定策略等 |
| 用于管理用户账户信息,例如密码过期策略、账户锁定策略等 | 用于管理用户会话,例如记录用户会话信息、强制注销用户会话等 |
⑤ PAM控制类型

2.系统引导和登录控制
(1)开关机安全控制
① 调整BIOS引导
将第一引导设备设为当前系统所在硬盘,禁止从其他设备(光盘、U盘、网络)引导系统
将安全级别设为setup,并设置管理员密码
② 限制更改GRUB引导参数
按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。
可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
表8 限制更改GRUB引导参数
| 步骤 | 命令或操作 |
| 按e键查看未设置之前的状态 | 重启之后按e,查看配置,不建议修改 |
| 设置GRUB密码并重启 | grub2-setpassword Enter password: |
| 在重启界面按e,输入账号密码才可以登录 | reboot |
(2)终端及登录控制
表9 限制更改GRUB引导参数
| 措施 | 命令 | 功能 |
| 减少登录的tty终端个数 | vim /etc/securetty #tty2 #tty3 | 更改安全终端配置文件; 注释,禁止root在tty2和tty3终端登录 |
| 禁止普通用户登录 | vim /etc/nologin touch /etc/nologin rm -rf /etc/nologin | 建立配置文件; 禁止普通用户登录,只对图形化界面生效; 取消上述登录限制,删除后即可恢复 |
3.弱口令检测、端口扫描
(1)弱口令检测
① 下载并安装John the Ripper
表10 安装John the Ripper
| 措施 | 命令 | 功能 |
| 解压 | tar -zxvf john-1.8.0.tar.gz | 解压工具包 |
| 编译安装 | yum -y install gcc gcc-c++ make | 安装软件编译工具 |
② 检测弱口令账号
表11 John the Ripper破解过程
| 措施 | 命令 | 功能 |
| 编译安装 | d /opt/john-1.8.0/src make clean linux-x86-64 | 切换到src子目录,进行编译安装 |
| 破解文件 | cp /etc/shadow /opt/shadow.txt | 准备待破解的密码文件 |
| 破解 | cd /opt/john-1.8.0/run ./john /opt/shadow.txt | 切换到run子目录,执行暴力破解 |
| 查看 | ./john --show /opt/shadow.txt | 查看已破解出的账户列表 |
(2)网络扫描
NMAP是一款强大的网络扫描、安全检测工具,官方网站:Nmap: the Network Mapper - Free Security Scanner,CentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm。
① 安装NMAP软件包
表12 安装NMAP软件包
| 措施 | 命令 | 功能 |
| 安装nmap | rpm -q nmap | 检测是否安装 |
| yum -y install nmap | 安装 | |
| nmap -p 端口 网段 | nmap -p 80 192.168.37.0/24 | 指定扫描的端口 |
| nmap -n -sP | nmap -n -sP 192.168.37.0/24 | 查看网段有哪些存活主机 |
| 查看本机开放的端口 | nmap -sT 127.0.0.1 | 查看本机开放的TCP端口 |
| nmap -sU 127.0.0.1 | 查看本机开放的UDP端口 |
② 扫描语法及类型
表13 nmap常用选项
| 选项 | 功能 |
| -p | 指定扫描的端口。 |
| -n | 禁用反向DNS解析(以加快扫描速度) ip转换成 域名 |
| -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通而放弃扫描 |
4.总结安全加固的措施
表14 安全加固的措施
| 序号 | 措施 |
| 1 | 将非登录用户shell设置为nologin |
| 2 | 将非登录用户shell设置为nologin |
| 3 | 删除无用账号 |
| 4 | chattr锁定配置文件(重要文件passwd、shadow、fstab等加 i 权限,不让删除) |
| 5 | 设置密码复杂性规则(长度、特殊字符、失效时间等)密码策略 |
| 6 | 修改history,记录历史命令,尽量缩短记录历史命令的条数 |
| 7 | 禁止su root,切换超级管理员 |
| 8 | 设置sudo权限,禁用不安全命令 |
| 9 | 给GRUB设置密码 |
| 10 | 只允许BIOS从硬盘启动,关闭除了硬盘启动外的(光驱、udisk 、网络) |
| 11 | 给BIOS设置密码 |
| 12 | 限制root只在安全终端登录 |
| 13 | 禁止普通用户登录 |
| 14 | 改掉大家都知道的服务端口 |
| 15 | 做好日志权限管理 |
| 16 | 内核参数调整 |
二、实验
1.账户安全的基本措施
(1)账号安全的基本措施
① chattr锁定重要文件
lsattr查看文件

锁定文件并查看
![]()

解锁文件并查看

(2)密码安全控制
① 适用于新建用户

② 适用于已有用户,修改密码有效期30天
![]()
③ 强制在下次登录成功时修改密码(/etc/shadow第三个字段被修改为0)
![]()
(3) 命令历史记录限制
① 进入配置文件永久修改当前用户的历史命令条数

进入文件

临时修改历史命令条数为2条

立即生效
![]()
进行3次ls命令

结果显示2条

② 开机设置清空历史命令


③ 关机设置情况历史命令


④ 设置闲置超时
时间为60秒

立即生效

超时自动登出

2.账户安全的基本措施
(1) 限制使用su命令的用户
进入编辑 vim /etc/pam.d/su

取消注释,启用
![]()
添加授权用户并查询

新增用户

尝试切换为root ,拒绝权限

登出

查看su命令切换用户的操作

3.使用sudo机制提升权限
要求:控制用户进行sudo操作时无法使用重启(reboot)、关机(poweroff)、切换init和无法删除
(1)配置文件使用户可以通过sudo命令使用ifconfig
目前wheel组生效

注释取消wheel
![]()
新增虚拟网卡失败

新增sudo配置,允许用户在主机执行新增虚拟网卡命令
![]()
切换用户
![]()
新增虚拟网卡

查询网卡

(2)使用关键字来进行设置别名,批量控制用户
控制用户进行sudo操作时无法使用重启(reboot)、关机(poweroff)、切换init和无法删除
编辑

底行模式对用户进行限制操作

切换用户测试重启

4.开关机安全控制
(1)grub加密方法(为GRUB菜单设置密码)
设置GRUB密码并重启

重启

在重启界面按e,输入账号密码才可以登录

(2)终端登录安全控制,限制root只在安全终端登录
编辑进入安全终端配置:

查看,tty1~ 6是文本型控制台,tty7 是X Window图形显示管理器。
可以通过CtrI+Alt+F1 (F1-F7键) 切换到对应的登录控制台。

禁止root在tty2和tty3终端登录
更改安全终端配置文件,把tty2和tty3注释掉

禁止普通用户登录
![]()
5.系统弱口令检测工具破解密码
(1)使用john the Ripper 密码破解工具
切换opt目录,rz -E这个命令会在shell命令窗口弹出一个文件输入窗口,找到传输的压缩包


查看

解压工具包
![]()
安装软件编译工具

更新完毕

另一种安装方法:
本地yum源安装



查看

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

![]()
准备待破解的密码文件
![]()
查看

切换到run子目录,执行暴力破解

执行破解

查看已破解出的账户列表

本文详细介绍了Linux系统安全加固的理论与实验,包括账户安全控制,如清理无用账户、密码安全策略、命令历史限制;用户切换与提权,利用sudo机制和PAM认证增强权限管理;系统引导和登录控制,如GRUB密码设置和终端登录限制;以及弱口令检测与网络扫描,使用JohntheRipper和NMAP工具进行安全检测。

被折叠的 条评论
为什么被折叠?



