目录
一 账号安全控制
1 基本安全措施
(1)系统账号清理
- 定期删除 / 禁用闲置账号,避免僵尸账号被利用。
- 核查账号权限,遵循 “最小权限原则”,仅保留必要访问权限。
grep "/sbin/nologin$" /etc/passwd
usermod -L lisi //锁定账号
passwd -S lisi //查看帐号状态
usermod -U lisi //解锁账号
chattr +i /etc/passwd /etc/shadow //锁定文件
lsattr /etc/passwd /etc/shadow //查看为锁定的状态
chattr -i /etc/passwd /etc/shadow //解锁文件
useradd billgate //查看是否锁定
(2)密码安全控制
- 强制设置复杂密码(如长度≥8 位,包含大小写字母、数字、特殊符号)。
- 配置密码有效期(如 90 天强制修改)、错误登录锁定(如 5 次错误锁定账号)。
vim /etc/login.defs //适用于新建的用户
chage -M 30 lisi //适用于已有的lisi用户
chage -d 0 lisi //强制用户下次登录时重设密码
(3)命令历史,自动注销
- 限制或清理用户命令历史(如清空
~/.bash_history
),防止敏感操作泄露。 - 设置会话超时自动注销(如
TMOUT=600
,10 分钟无操作自动退出)。
vim /etc/profile //适用于新建的用户
export HISTSIZE=200 //适用于当前用户
2 用户切换与提权
(1)su命令的用法
- 功能:切换用户身份(如
su - username
切换至指定用户,su -
切换至 root)。 - 安全要点:
- 仅授权可信用户使用
su
,避免普通用户直接获取 root 权限。 - 使用时需验证目标用户密码(如切换至 root 需输入 root 密码)。
- 仅授权可信用户使用
su [选项] [目标用户]
su # 直接输入su,默认切换到root用户
su - # 或 su - root //完全切换到 root 用户环境
su user1 //切换到普通用户(如 user1)
su -c "命令" 目标用户 //以目标用户身份执行单次命令
su -m user1 # 或 su -p user1 //保留当前环境变量切换用户
(2)PAM认证
基本概念:
**PAM(Pluggable Authentication Modules,可插拔认证模块)** 是 Linux/Unix 系统中用于实现灵活认证逻辑的框架。
- 核心目标:将系统服务的认证功能与服务本身解耦,通过配置不同的认证模块(Module),实现对用户登录、权限提升(如 su/sudo)、远程连接(如 SSH)等场景的认证方式灵活定制(如密码认证、指纹识别、LDAP 认证等)。
- 应用场景:常见于需要认证的服务,如
login
、sshd
、su
、sudo
、ftp
等。
-
配置文件
- 路径:位于
/etc/pam.d/
目录下,每个服务对应一个同名配置文件(如/etc/pam.d/sshd
对应 SSH 服务的认证规则)。 - 格式:每行定义一个认证模块,格式为:
plaintext
<控制标志> <模块路径> <模块参数>
- 控制标志:定义模块的执行结果对整体认证的影响(如必须通过、可选通过等)。
- 模块路径:认证模块的二进制文件路径(通常位于
/lib64/security/
或/usr/lib64/security/
)。 - 模块参数:传递给模块的参数(如是否开启调试、允许尝试次数等)。
- 路径:位于
2. 控制标志(关键分类)
以su
命令的 PAM 配置文件/etc/pam.d/su
为例:
# 验证用户是否允许执行su(需属于wheel组)
auth required pam_wheel.so use_uid
# 验证目标用户的密码(如切换到root,需输入root密码)
auth required pam_unix.so likeauth nullok
# 记录su操作日志
account required pam_access.so
session required pam_loginuid.so
控制标志 | 说明 |
---|---|
required | 模块必须成功,否则认证失败(但会先执行后续模块,再返回失败结果)。 |
requisite | 模块必须成功,否则立即终止认证并返回失败(不再执行后续模块)。 |
sufficient | 模块成功则直接认证通过(不再执行后续模块);失败则忽略,继续执行。 |
optional | 模块成功与否不影响整体认证结果(常用于记录日志等辅助功能)。 |
3. 常用认证模块
- 密码认证模块:
pam_unix.so
:基于本地用户密码文件(/etc/shadow
)进行认证。pam_pwhistory.so
:限制用户重复使用旧密码(需配合pam_unix.so
)。
- 会话管理模块:
pam_limits.so
:限制用户会话资源(如最大进程数、文件打开数)。pam_motd.so
:在用户登录时显示消息(如/etc/motd
内容)。
- 其他认证方式模块:
pam_ldap.so
:通过 LDAP 服务器进行认证。pam_tally2.so
:限制密码错误尝试次数(防暴力破解)。pam_google_authenticator.so
:集成 Google 动态令牌二次认证。
3 sudo命令——提升执行权限
(1)在配置文件/etc/sudoers中添加授权
- 在配置文件
/etc/sudoers
中添加授权- 编辑工具:使用
visudo
(避免多用户同时修改导致文件损坏)。 - 授权格式:
# 语法:用户名 主机=(运行身份) [选项] 命令列表 user1 ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdel # 允许user1在任意主机以任意身份执行useradd/userdel user2 ALL=(root) NOPASSWD: /usr/bin/apt-get # 允许user2免密以root身份执行apt-get
- 安全原则:按 “最小权限” 分配命令,避免使用
ALL
通配符。
- 编辑工具:使用
授权配置主要包括用户,主机,命令三个部分,概括三个部分的具体含义:
用户 | 指被授权执行操作的主体,可以是单个用户、用户组或特殊身份(如超级用户 root )。 |
主机 | 指允许用户执行操作的客户端主机或网络来源,用于限制用户的访问范围。 |
命令 | 指用户被授权执行的具体系统命令或脚本,需指定命令的完整路径以确保唯一性。 |
(2)通过sudo执行特权命令
- 执行方式:普通用户通过
sudo + 命令
触发特权操作(如sudo apt update
)。 - 认证逻辑:
- 首次执行需输入当前用户密码(除非配置
NOPASSWD
)。 - 密码有效期内(默认 15 分钟)可免密执行其他授权命令。
- 首次执行需输入当前用户密码(除非配置
- 日志记录:操作记录存于
/var/log/auth.log
,便于审计(如user1 sudo: 用户执行了rm -rf
)。
二 系统引导和登陆控制
1 开关机安全控制
(1)调整BIOS引导设置
- 核心目的:防止未授权用户通过修改引导顺序(如从 U 盘启动)绕过系统安全机制。
- 操作要点:
- 进入 BIOS 界面,设置管理员密码,禁止未授权访问 BIOS 配置。
- 锁定引导顺序(如仅允许从硬盘启动),关闭 USB 设备启动权限。
- 启用 “安全启动”(Secure Boot)功能,验证引导加载程序的签名合法性。
(2)限制更改GRUB引导参数
- GRUB 安全风险:未授权用户可通过修改 GRUB 参数(如单用户模式)绕过密码认证获取 root 权限。
- 加固措施:
- 设置 GRUB 密码:
- 执行
grub-mkpasswd-pbkdf2
生成密码哈希,写入/etc/grub.d/00_header
或/etc/grub.conf
。 - 示例配置:
bash
set superusers="admin" password_pbkdf2 admin grub.pbkdf2.sha512.10000.XXXXXXXX... # 哈希值
- 执行
- 禁用编辑模式:在
/etc/default/grub
中设置GRUB_DISABLE_RECOVERY="true"
,禁止通过按键进入引导参数编辑界面。 - 重新生成 GRUB 配置:修改后执行
update-grub
或grub2-mkconfig -o /boot/grub2/grub.cfg
使配置生效。
- 设置 GRUB 密码:
2 终端及登录控制
(1)禁止root用户登录
- 场景与目的:
- 禁止 root 通过 SSH、本地终端等直接登录,降低暴力破解风险。
- 强制通过普通用户登录后,使用
sudo
执行特权操作,实现操作审计。
- 实现方式:
- SSH 禁止 root 登录:
- 编辑
/etc/ssh/sshd_config
,设置PermitRootLogin no
,重启 SSH 服务:systemctl restart sshd
。
- 编辑
- 本地终端限制:
- 在
/etc/pam.d/login
中添加auth required pam_securetty.so
,仅允许 root 从安全终端(如/dev/tty1
)登录。 - 或修改
/etc/securetty
,删除允许 root 登录的终端列表(如pts/*
代表远程终端)。
- 在
- SSH 禁止 root 登录:
(2)禁止普通用户登录
-
- 适用场景:维护期间临时禁止用户登录,或锁定违规账号。
- 实现方法:
- 全局禁止登录:
- 创建空文件
/etc/nologin
,普通用户登录时会显示指定提示(内容写入该文件),root 仍可登录。 - 示例:
echo "系统维护中,请稍后再试" > /etc/nologin
。
- 创建空文件
- 锁定单个用户:
- 使用
passwd -l username
锁定账号(添加!
到密码字段),用户无法登录但进程仍可运行。 - 解锁命令:
passwd -u username
。
- 使用
- 限制登录时间段:
- 通过 PAM 模块
pam_time.so
配置,如在/etc/pam.d/login
中添加:bash
session required pam_time.so times=login_time.conf # 引用配置文件
- 在
/etc/time.conf
中定义规则:LOGIN_TIME;*;*;09:00-18:00
(仅允许工作日 9:00-18:00 登录)。
- 通过 PAM 模块
- 全局禁止登录:
三 弱口令检测,端口扫描
1 弱口令检测——John the Ripper
概念:
John the Ripper(简称 John)是一款开源密码破解工具,通过字典攻击、规则攻击等方式检测系统中存在的弱口令,支持 Linux、Windows 等多平台,常用于渗透测试和安全审计。
(1)下载并安装John the Ripper
- Linux:
sudo apt update sudo apt install john # 安装稳定版 sudo apt install john-the-ripper # 或安装完整版本
- 源码编译安装:
wget http://www.openwall.com/john/g/john-1.9.0.tar.gz tar -zxvf john-1.9.0.tar.gz cd john-1.9.0/src make clean && make linux-x86-64 # 根据系统架构选择编译参数
(2)检测弱口令账号
- 步骤 1:获取密码哈希
- 从
/etc/passwd
(明文用户名)和/etc/shadow
(哈希密码)获取账号数据:bash
sudo unshadow /etc/passwd /etc/shadow > unshadowed.txt
- 从
- 步骤 2:使用 John 进行破解
bash
john --format=sha512crypt unshadowed.txt # 指定哈希格式(默认自动识别)
- 破解结果显示在终端,使用
john --show unshadowed.txt
查看明文密码。
- 破解结果显示在终端,使用
(3)使用密码字典文件
- 指定字典路径:
bash
john --wordlist=/usr/share/john/password.lst unshadowed.txt # 使用内置字典 john --wordlist=/path/to/custom.dict unshadowed.txt # 使用自定义字典
- 组合攻击(字典 + 规则):
bash
john --wordlist=dictionary.txt --rules unshadowed.txt # 通过规则扩展字典(如首字母大
2 网络扫描——NMAP
概念:
NMAP(Network Mapper)是一款开源网络探测和安全审计工具,用于扫描目标主机的开放端口、运行的服务及操作系统类型,支持 TCP/UDP 扫描、隐蔽扫描等多种模式,是渗透测试和网络管理的核心工具。
(1)安装NMAP软件包
Linux:
sudo yum install nmap # CentOS
sudo apt install nmap # Ubuntu
(2)扫描语法及类型
- 基础语法:
nmap [扫描选项] [目标IP/域名/网段]
- 常见扫描类型:
选项 描述 -sS
TCP SYN 扫描(半开放扫描,隐蔽性强,需 root 权限) -sU
UDP 扫描(检测 UDP 端口开放情况,速度较慢) -sT
TCP 全连接扫描(适合无防火墙环境,结果准确但易被日志记录) -sL
列表扫描(仅列出目标,不发送探测包) -p <端口范围>
指定扫描端口(如 -p 80,443
或-p 1-1000
)-O
操作系统指纹识别(识别目标主机的操作系统类型) -A
综合扫描(启用操作系统识别、服务版本检测、脚本扫描等) -v
显示详细扫描过程
(3)扫描操作示例一
扫描单个主机的常用端口
(4)扫描示例二
扫描网段内所有开放主机
(5)扫描示例三
扫描网段中存活的主机
(6)扫描示例四
扫描网段中是否开放文件共享服务