Ubuntu下LAMP环境搭建与Metasploitable靶机部署:渗透测试实验环境完整指南
1. 实验环境搭建的整体思路与方案选型搞安全学习最怕的就是把时间和精力浪费在环境配置上。我见过太多人兴致勃勃地准备研究某个漏洞结果光装环境就折腾了一整天最后热情耗尽直接放弃。所以这次搭建实验环境我的核心原则就一条能复用就复用能隔离就隔离能快照就快照。为什么选Ubuntu作为宿主机而不是直接在物理机上装Kali这个问题我踩过坑。早期我图省事直接把Kali装在物理机上当日常系统用结果有次测试一个破坏性脚本差点把整个硬盘的数据搞没了。从那以后我就学乖了——Kali只做攻击机跑在虚拟机里宿主机用Ubuntu做底层支撑。Ubuntu的软件源稳定、社区支持好LAMP环境搭建起来也顺手适合作为长期运行的基础设施。整个实验环境的架构其实不复杂我画个简单的逻辑关系你就明白了宿主机层Ubuntu系统负责跑虚拟化平台同时提供LAMP服务作为靶场的一部分攻击机层Kali Linux虚拟机所有渗透测试工具都在这上面跑靶机层Metasploitable虚拟机故意留了一堆漏洞等着你去打网络隔离层防火墙规则控制三台机器之间的流量走向模拟真实网络边界这个架构的好处在于你可以在宿主机上直接抓包分析流量不用在虚拟机里绕来绕去。而且LAMP环境跑在宿主机上靶机访问Web服务的时候走的是虚拟网卡速度比嵌套虚拟机快得多。关于虚拟化平台的选择我用的是VirtualBox原因很实在免费、跨平台、快照功能好用。VMware Workstation虽然性能更好但收费。如果你手头有授权用VMware也没问题操作逻辑大同小异。我下面所有的操作都基于VirtualBox来写用其他平台的读者自行对应调整即可。网络模式这块要重点说一下。很多人搭建实验环境时网络配不对导致攻击机ping不通靶机或者靶机访问不了宿主机的Web服务。我的建议是攻击机和靶机都用Host-Only模式这样它们在一个独立的内部网络里跟外网完全隔离随便你怎么折腾都不会影响到真实网络。宿主机同时接入Host-Only网络和NAT网络NAT用来上网更新软件Host-Only用来跟虚拟机通信。注意Host-Only模式下虚拟机的IP地址是VirtualBox的DHCP服务分配的默认网段是192.168.56.0/24。如果你之前改过这个设置记得在VirtualBox的“管理→主机网络管理器”里确认一下。2. Ubuntu下LAMP环境的完整搭建过程LAMP这四个字母拆开就是Linux、Apache、MySQL、PHP。Ubuntu本身就是Linux所以实际上你只需要装后面三个。我用的Ubuntu版本是18.04 LTS这个版本在当时2020年初是长期支持版软件源里的包版本比较稳定适合做实验环境。如果你用的是20.04或者更新的版本命令基本一样但个别包的默认配置可能有细微差别遇到问题可以对照官方文档调整。2.1 Apache的安装与基础配置装Apache就一条命令的事sudo apt update sudo apt install apache2 -y装完之后Apache会自动启动你在浏览器里访问http://localhost应该能看到Apache的默认欢迎页面。如果看不到先检查服务状态sudo systemctl status apache2我遇到过一种情况Apache显示active但浏览器就是打不开。排查下来发现是Ubuntu自带的防火墙ufw把80端口拦了。这里有个坑要注意ufw默认是关闭的但如果你之前手动开过它就会一直生效。检查命令是sudo ufw status如果显示active放行80端口sudo ufw allow 80/tcp sudo ufw allow 443/tcpApache的默认网站根目录在/var/www/html配置文件在/etc/apache2/下面。我习惯把网站文件放在/var/www/html里权限设置成www-data用户可读写sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html为什么要设755而不是777因为777意味着任何用户都能写入这在实验环境里虽然方便但养成习惯不好。755保证目录可执行、文件可读Web服务能正常访问同时避免权限过大的安全隐患。2.2 MySQL的安装与安全初始化MySQL在Ubuntu 18.04的源里默认是5.7版本够用了sudo apt install mysql-server -y装完之后第一件事是运行安全初始化脚本sudo mysql_secure_installation这个脚本会问你几个问题我的回答策略是这样的是否设置VALIDATE PASSWORD插件选N实验环境不需要太复杂的密码策略设置root密码设一个你记得住的比如test123反正是内网环境是否删除匿名用户选Y是否禁止root远程登录选Y需要的时候再单独开是否删除test数据库选Y是否重新加载权限表选Y这里有个细节要提醒Ubuntu下MySQL的root用户默认使用auth_socket认证插件意思是只有系统root用户才能通过socket登录MySQL。如果你直接用mysql -u root -p会报错。解决办法是先sudo mysql进去然后改认证方式ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY test123; FLUSH PRIVILEGES;改完之后就可以用密码正常登录了。这个坑我踩过好几次每次重装系统都要重新回忆一遍。2.3 PHP的安装与Apache集成PHP要装的不只是php本身还要装Apache的PHP模块和MySQL的连接扩展sudo apt install php libapache2-mod-php php-mysql -y装完之后重启Apache让模块生效sudo systemctl restart apache2验证PHP是否正常工作在/var/www/html下建一个info.php?php phpinfo(); ?浏览器访问http://localhost/info.php如果能看到PHP的配置信息页面说明LAMP环境基本通了。测试完记得把这个文件删掉因为它会暴露服务器的大量敏感信息虽然是实验环境但养成好习惯很重要。2.4 部署一个简单的靶场应用光有LAMP还不够得有个Web应用让靶机来打。我一般会部署一个简单的留言板或者登录页面故意留几个SQL注入和XSS的点。这里我用一个自己写的简易登录页面举例?php $conn new mysqli(localhost, root, test123, testdb); if ($conn-connect_error) { die(连接失败: . $conn-connect_error); } $username $_POST[username]; $password $_POST[password]; $sql SELECT * FROM users WHERE username$username AND password$password; $result $conn-query($sql); if ($result-num_rows 0) { echo 登录成功; } else { echo 登录失败; } ?这段代码有明显的SQL注入漏洞因为直接把用户输入拼接到SQL语句里了。在实验环境里这是故意的方便你用sqlmap之类的工具去测试。但千万注意这种代码绝对不能放到公网服务器上。对应的数据库表结构CREATE DATABASE testdb; USE testdb; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50), password VARCHAR(50) ); INSERT INTO users (username, password) VALUES (admin, admin123);3. Metasploitable靶机的部署与网络配置Metasploitable是安全圈里最经典的靶机之一它故意留了大量高危漏洞从弱口令到远程代码执行应有尽有。我用的版本是Metasploitable 2虽然老但胜在稳定、漏洞覆盖面广适合新手入门。3.1 导入虚拟机与初始配置Metasploitable 2官方提供的是VMware格式的虚拟磁盘如果你用VirtualBox需要先转换格式。我一般用VBoxManage命令来转VBoxManage clonehd Metasploitable.vmdk Metasploitable.vdi --format VDI然后在VirtualBox里新建一个Linux虚拟机选择“使用已有的虚拟硬盘文件”指向转换后的vdi文件。内存给512MB就够了这系统本身很轻量。网络适配器设置成Host-Only模式跟Kali在同一个网段。启动之后默认的登录凭证是msfadmin/msfadmin进去之后第一件事是确认IP地址ifconfig正常情况下应该拿到192.168.56.x的地址。如果没拿到检查VirtualBox的Host-Only网络DHCP是否开启。3.2 开放的服务与端口梳理Metasploitable 2默认开了很多服务我整理了一个常用端口对照表端口服务漏洞类型21vsftpd 2.3.4笑脸漏洞后门22OpenSSH弱口令23Telnet明文传输25Postfix邮件服务80ApacheWeb漏洞139/445Samba远程代码执行3306MySQL弱口令5432PostgreSQL弱口令8180Tomcat弱口令部署漏洞这张表建议你保存下来做测试的时候按端口逐个排查效率会高很多。我刚开始学的时候就是对着这张表一个个试每打通一个就记录下用的工具和命令积累下来就是自己的知识库。3.3 网络连通性验证在Kali里ping一下Metasploitable的IPping 192.168.56.101能通说明网络没问题。如果不通排查顺序是这样的确认两台虚拟机的网络模式都是Host-Only确认它们在同一个网段都是192.168.56.x检查VirtualBox的Host-Only网卡是否启用在Metasploitable里ifconfig看网卡是否拿到了IP我遇到过一种情况Metasploitable的网卡配置是静态IP但跟VirtualBox的Host-Only网段对不上。解决办法是编辑/etc/network/interfaces把地址改成DHCP或者手动设成同网段的静态IP。4. 防火墙配置与流量控制防火墙这块很多人会忽略觉得实验环境不需要。但我的经验是加了防火墙之后你才能模拟真实的网络边界比如只开放80端口让靶机访问Web服务其他端口全部拒绝。这样你在测试的时候就能体会到“从外网打进来”的感觉而不是在内网里随便扫。4.1 ufw的基础规则配置Ubuntu自带的ufw用起来很简单但规则顺序有讲究。我一般先设默认策略再逐条加规则sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow from 192.168.56.0/24 to any port 80 sudo ufw allow from 192.168.56.0/24 to any port 3306 sudo ufw enable这几条规则的意思是拒绝所有入站流量允许所有出站流量但放行来自192.168.56.0/24网段对80和3306端口的访问。这样Metasploitable可以访问宿主机的Web服务和数据库但其他端口一律不通。注意ufw enable之后如果你是通过SSH远程连接的会立刻断线。所以在启用之前一定要先放行SSH端口或者直接在本地终端操作。4.2 用iptables做更精细的控制ufw底层调用的还是iptables如果你需要更复杂的规则可以直接写iptables。比如限制Metasploitable对宿主机的访问频率防止它扫描得太快sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT这条规则的意思是每分钟最多允许25个新连接突发允许100个。超过限制的包会被丢弃。这在模拟DDoS防护的时候很有用。查看当前规则sudo iptables -L -n -v清空所有规则慎用sudo iptables -F我建议在实验过程中把iptables规则保存下来下次直接恢复sudo iptables-save ~/iptables-rules.txt sudo iptables-restore ~/iptables-rules.txt4.3 防火墙规则验证方法配好规则之后一定要验证不然你以为配对了其实没生效。验证方法是从Metasploitable上发起访问# 在Metasploitable上执行 curl http://192.168.56.1/info.php如果返回PHP信息页面说明80端口放行成功。再试一个没放行的端口telnet 192.168.56.1 22如果连接被拒绝或者超时说明防火墙规则生效了。我踩过的一个坑是ufw的规则优先级跟iptables不一样。ufw是按规则添加的顺序匹配的第一条匹配的规则生效。所以如果你先加了allow 80又加了deny from 192.168.56.101那么来自192.168.56.101的80端口访问还是会被允许因为allow规则在前面。解决办法是把deny规则放在allow前面或者用ufw insert命令指定插入位置。5. 常见问题与排查技巧实录环境搭建过程中遇到的问题五花八门我挑几个最典型的整理成速查表方便你遇到问题时快速定位。问题现象可能原因排查命令解决方法Apache启动失败80端口被占用sudo netstat -tlnp | grep 80杀掉占用进程或改Apache端口MySQL无法登录auth_socket认证sudo mysql改认证插件为mysql_native_passwordPHP页面显示源码PHP模块未加载apache2ctl -M | grep php安装libapache2-mod-php并重启虚拟机ping不通网络模式不对ifconfig改为Host-Only模式Metasploitable拿不到IPDHCP未开启VBoxManage list dhcpservers在VirtualBox里启用Host-Only DHCP防火墙规则不生效规则顺序错误sudo ufw status numbered调整规则顺序或删除重建Kali工具无法连接靶机靶机服务未启动nmap -p- 靶机IP在靶机上启动对应服务除了这些具体问题我再分享几个通用的排查思路。第一个思路从底层往上查。网络不通先pingping通了再telnet端口端口通了再试应用层协议。不要一上来就怀疑应用配置很多时候就是网线没插好虚拟网卡没启用的问题。第二个思路看日志。Apache的错误日志在/var/log/apache2/error.logMySQL的日志在/var/log/mysql/error.log。遇到问题先看日志里面通常有明确的错误信息比瞎猜高效得多。第三个思路最小化复现。如果某个功能不正常先把它剥离出来单独测试。比如PHP连不上MySQL先写一个最简单的连接脚本排除代码逻辑的干扰。还有一个我经常用的技巧给虚拟机打快照。在环境刚配好、还没开始测试的时候打一个干净快照之后不管怎么折腾随时可以回滚到这个状态。VirtualBox的快照功能在“机器→快照”菜单里点一下“生成”就行。这个习惯帮我省了无数次重装系统的时间。最后说一个关于实验环境隔离的经验。虽然Host-Only模式已经跟外网隔离了但如果你在实验过程中需要下载工具或者更新软件还是得让虚拟机临时接入NAT网络。我的做法是给Kali加两块网卡一块Host-Only用来打靶一块NAT用来上网。需要下载东西的时候启用NAT网卡下载完就禁用这样既方便又安全。Metasploitable就不需要NAT了它作为靶机不需要主动上网减少不必要的暴露面。这套环境我从2020年初用到现在中间换过几次硬件但配置思路一直没变。Ubuntu做宿主机、Kali做攻击机、Metasploitable做靶机、防火墙做边界控制这个组合足够覆盖大部分入门到中级的渗透测试练习场景。你把这套环境搭起来之后就可以专注于漏洞原理和利用技巧的学习不用再为环境问题分心了。

相关新闻

淘宝爬虫SDK架构设计与登录态管理实战:从Cookie池到异步采集

淘宝爬虫SDK架构设计与登录态管理实战:从Cookie池到异步采集

简介:这份淘宝爬虫SDK面向需要对接淘宝开放平台或采集淘宝、天猫、阿里巴巴数据的开发者,提供自动化登录与商品信息抓取能力,可用于价格监控、竞品分析、市场趋势研究与用户行为挖掘等场景,适合具备一定Python与HTTP基础的中级开发…

2026/10/13 21:01:53 阅读更多 →
TrajectoryPlanner源码解析:从轨迹采样到评分函数的局部规划器

TrajectoryPlanner源码解析:从轨迹采样到评分函数的局部规划器

从一张异常轨迹图说开去:为什么我第一眼就盯上了TrajectoryPlanner在调试某辆差速底盘的自主导航时,我遇到过一个经典症状:全局路径规划得笔直漂亮,可小车一上路就“画龙”——贴着障碍物反复试探、原地转圈、甚至有两次差点怼上墙…

2026/10/13 21:01:53 阅读更多 →
KTV数据库设计实战:ER图与数据流程图协同建模

KTV数据库设计实战:ER图与数据流程图协同建模

简介:本资源是一份面向高校计算机专业学生及数据库初学者的课程设计实践材料,聚焦量贩式KTV管理信息系统的数据库分析与建模全过程。内容涵盖系统需求背景、总体目标、四大核心功能模块(客户管理、房间管理、订单管理、系统管理)&…

2026/10/13 21:01:53 阅读更多 →

最新新闻

PS5进阶玩家手册:系统设置、SSD扩容、网络调优与串流实战

PS5进阶玩家手册:系统设置、SSD扩容、网络调优与串流实战

接手的这台“AnyPS5”时,我第一反应是:这名字起得挺大。光是PS5相关的外设、存储、网络、串流、保养,随便列一列就够写好几篇长文。后来想明白了,所谓“Any PS5”,并不是什么第三方工具或改装固件,而是玩家…

2026/10/14 6:03:23 阅读更多 →
context-mode 上下文模式:从设计到落地的工程实践指南

context-mode 上下文模式:从设计到落地的工程实践指南

1. 从“context-mode”说起:一个被低估的工程概念第一次看到“context-mode”这个词,很多人会下意识地把它归到某个具体框架的配置项里,比如某个前端状态管理库的开关,或者某个后端中间件的运行模式。但如果你在一线写过几年代码&…

2026/10/14 6:03:23 阅读更多 →
大模型在工控领域的落地路径:从辅助决策到工业智能体

大模型在工控领域的落地路径:从辅助决策到工业智能体

1. 论文核心内容拆解:大模型在工控领域到底解决了什么问题1.1 数据孤岛与知识沉淀的“最后一公里”工业控制系统(ICS)这几十年攒下来的家底,大家心里都有数:现场控制器、传感器、执行机构、历史数据库、组态画面。数据…

2026/10/14 6:03:23 阅读更多 →
高性能计算集群部署实战:从硬件选型到Slurm调度全解析

高性能计算集群部署实战:从硬件选型到Slurm调度全解析

作为一个常年折腾服务器、帮人搭过各种计算环境的老运维,今天想认真聊聊高性能计算集群(HPC Cluster)部署这件事。很多朋友一听到“高性能计算”就觉得是超算中心、国家级实验室才玩的东西,离自己很远。其实这几年,随着…

2026/10/14 6:03:23 阅读更多 →
永洪科技Megrez的企业ChatBI能力与实现条件

永洪科技Megrez的企业ChatBI能力与实现条件

企业ChatBI以自然语言交互开展业务数据分析。永洪科技vividime Megrez天权支持智能问数与企业知识引导,实际应用需要准备数据范围、指标定义和访问权限,使问题具备可计算的含义。企业客户需要关注的,是产品能否理解本企业的指标定义、使用正确…

2026/10/14 6:03:23 阅读更多 →
计及需求侧响应的配电网供电能力综合评估Matlab实现

计及需求侧响应的配电网供电能力综合评估Matlab实现

供电能力评估这个方向,做配电网规划的人都不陌生。传统做法很简单:把负荷当成一个给定的“硬条件”,算主变、算线路、算N-1通过率,能带多少就是多少。但问题是,现在的负荷已经不再“硬”了——分时电价、可中断负荷、车…

2026/10/14 6:02:23 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →