VMware与CentOS安装指南¶
概述¶
搭建 Linux 实验环境是安全测试人员的基本技能。本文详细介绍了虚拟机技术、VMware 安装配置、三种网络模式的工作原理,以及 CentOS 系统的安装和基础配置。掌握这些知识,可以快速搭建用于渗透测试、漏洞研究和安全实验的隔离环境。
什么是虚拟机?¶
虚拟机的定义¶
虚拟机 (Virtual Machine):通过软件模拟出来的具有完整硬件系统功能的计算机系统。它运行在一个完全隔离的环境中,可以像真实计算机一样工作。
为什么需要虚拟机?¶
在一台物理电脑上安装多个操作系统的需求: 1. 运行特定版本的操作系统:如某些旧软件只支持Windows XP,或需要测试不同版本的Linux。 2. 隔离物理机,用于测试:在虚拟机中运行病毒、测试不稳定软件,不会影响物理机。 3. 提升资源利用率:一台服务器通过虚拟化技术运行多个虚拟机,各跑不同业务,提高硬件利用率。
常见虚拟机软件¶
| 软件 | 特点 | 适用平台 |
|---|---|---|
| VMware Workstation | 功能强大、性能优秀、业界标杆 | Windows、Linux |
| VirtualBox | 免费开源、Oracle出品、跨平台 | Windows、Linux、macOS |
| Virtual PC | 微软早期产品,已停止更新 | Windows |
| Citrix Xen Desktop | 企业级桌面虚拟化方案 | 企业环境 |
| Parallels Desktop | Mac上运行Windows的最佳选择 | macOS |
虚拟化技术¶
虚拟机软件底层依赖的虚拟化技术:
| 技术 | 说明 |
|---|---|
| Xen | 开源的半虚拟化技术,Amazon EC2早期使用 |
| OpenVZ | 基于容器的操作系统级虚拟化,性能高但灵活性差 |
| KVM | Kernel-based Virtual Machine,Linux内核原生支持的硬件虚拟化,现在最主流 |
| Hyper-V | 微软的虚拟化技术,Windows Server和Windows 10/11专业版内置 |
专业解读:KVM现在是Linux服务器虚拟化的标准方案,OpenStack、各大云平台底层都大量使用KVM。
容器技术 Docker¶
Docker架构¶
Docker是一种容器化技术,与虚拟机不同: - 虚拟机:虚拟出一套完整的硬件,在上面运行完整的操作系统,再运行应用。隔离性强,但资源占用大。 - 容器:共享宿主机的操作系统内核,只打包应用和其依赖库。轻量、快速、资源占用小。
Docker特点¶
| 特点 | 说明 |
|---|---|
| 开箱即用 | 一个镜像包含应用运行所需的一切环境,无需手动配置 |
| 快速部署 | 秒级启动,相比虚拟机的分钟级启动大幅提升效率 |
| 可移植性强 | 一次构建,到处运行(Build once, run anywhere) |
| 环境隔离 | 每个容器独立运行,互不影响 |
Docker实现原理(三大核心技术)¶
| 技术 | 作用 |
|---|---|
| Namespace | 实现系统环境的隔离(PID进程号、NET网络、MNT挂载点、IPC通信、UTS主机名、USER用户等命名空间) |
| Cgroup | 控制组,实现资源限制(CPU、内存、磁盘I/O、网络带宽等) |
| UnionFS | 联合文件系统,实现镜像分层和容器根目录的隔离 |
虚拟机 vs Docker 对比¶
| 特性 | 虚拟机 | Docker容器 |
|---|---|---|
| 启动速度 | 分钟级 | 秒级 |
| 部署创建速度 | 慢(需安装完整OS) | 快(只需拉取镜像) |
| 硬盘使用 | 一般为GB级别 | 一般为MB级别 |
| 性能 | 弱于原生(有虚拟化开销) | 接近原生(共享内核) |
| 资源利用率 | 单机一般几十个 | 单机支持上千个容器 |
| 隔离性 | 系统级隔离,更强 | 进程级隔离,较弱 |
| 安全性 | 强(内核独立) | 弱(共享宿主机内核) |
专业解读:Docker适合微服务架构、CI/CD持续集成部署、开发环境一致性保障。虚拟机适合需要强隔离、运行不同内核系统的场景。两者不是替代关系,而是互补关系(如Kubernetes可以在虚拟机集群上运行Docker容器)。
安装VMware Workstation¶
安装环境¶
- 物理机:Windows 10/11
- VMware版本:15或16(推荐使用较新版本,兼容性更好)
开启CPU虚拟化¶
安装虚拟机前,需要在BIOS中开启虚拟化支持:
- 根据自己的电脑型号/主板型号,搜索进入BIOS的方式(开机时按
F2/F8/F10/F12/Del等) - 在BIOS设置中找到 Intel VT-x 或 AMD-V 选项,设置为 Enabled
专业解读:Intel的虚拟化技术叫VT-x(Virtualization Technology),AMD的叫AMD-V(也叫SVM)。不开启此选项,VMware无法创建64位虚拟机,性能也会大打折扣。
常见问题:物理机蓝屏¶
虚拟机开机导致物理机蓝屏或重启,通常是因为: - Windows 10/11的Hyper-V与VMware冲突 - 虚拟化未开启或VMware版本过旧
解决方法:
1. 安装最新版VMware大概率可以解决
2. 关闭Windows的Hyper-V功能(控制面板→程序和功能→启用或关闭Windows功能)
3. 在命令提示符(管理员)执行:bcdedit /set hypervisorlaunchtype off
VMware常用操作¶
基本功能¶
| 功能 | 说明 |
|---|---|
| 打开现有虚拟机 | 直接打开.vmx配置文件 |
| 编辑网络 | 虚拟网络编辑器,配置VMnet0/VMnet1/VMnet8 |
| 克隆 | 完整克隆(独立副本)或链接克隆(依赖源虚拟机) |
| 快照 | 保存虚拟机某一时刻的状态,可随时恢复 |
| 文件传输 | 通过VMware Tools、共享文件夹、拖拽等方式 |
常见问题解决¶
虚拟机被锁定:
- 原因:启动了多个VMware程序窗口,或在多个地方打开了同一个虚拟机
- 解决办法:找到原来的窗口关闭,或删除虚拟机目录下所有的 .lck 文件和 .lck 目录
重启或合盖后虚拟机连不上网: - 原因:Windows的网络适配器状态异常 - 解决:在网络适配器中,禁用VMnet8,再启用即可恢复 - 进阶:可以做成批处理脚本,右键管理员运行:
netsh interface set interface "VMware Network Adapter VMnet8" disabled
netsh interface set interface "VMware Network Adapter VMnet8" enabled
VMware三种网络模式¶
VMware提供了三种网络连接模式,理解它们对配置虚拟机网络至关重要。
基础知识¶
| 组件 | 说明 |
|---|---|
| 网卡 | 计算机连接网络的硬件接口,有MAC地址和IP地址 |
| 路由器 | 连接不同网络,实现网络间数据包转发和NAT转换 |
| 交换机 | 在同一网络内连接多台设备,实现局域网通信 |
| 虚拟交换机 | VMware在软件层面模拟的交换机 |
| 虚拟网卡 | VMware在宿主机上创建的虚拟网络适配器 |
VMware虚拟网络组件:
| 虚拟交换机 | 用途 | 对应虚拟网卡 |
|---|---|---|
| VMnet0 | 桥接模式 | 无(直接使用物理网卡) |
| VMnet1 | 仅主机模式 | VMware Network Adapter VMnet1 |
| VMnet8 | NAT模式 | VMware Network Adapter VMnet8 |
桥接模式 (Bridge)¶
通信方式: 1. 虚拟机通过虚拟交换机VMnet0,利用虚拟网桥连接到主机的物理网卡 2. 不需要用到虚拟网卡,所以没有VMware Network Adapter VMnet0
特点: - 物理机和虚拟机地位平等,处于同一局域网 - 虚拟机占用一个独立IP(与主机同网段) - 直接使用物理机的网卡访问互联网
连通情况: - ✅ 主机和虚拟机可以互访 - ✅ 虚拟机之间可以互访 - ✅ 可以访问互联网 - ✅ 可以访问其他主机 - ✅ 其他主机可以访问本虚拟机
使用场景:创建一个虚拟服务器在内网提供网络服务(如搭建Web服务器给局域网其他机器访问)。
专业解读:桥接模式要求局域网内有足够的IP地址分配给虚拟机。如果IP资源紧张(如公司网络),应使用NAT模式。
NAT模式 (Network Address Translation)¶
通信方式: 1. 虚拟NAT设备(虚拟路由器)连接到VMnet8虚拟交换机 → 虚拟机联网用 2. 主机通过VMware Network Adapter VMnet8虚拟网卡连接到VMnet8虚拟交换机 → 主机和虚拟机连接用
特点: - 虚拟机在外部网络中没有自己的独立IP地址 - 虚拟NAT设备会把专用网络中的IP地址转换为主机系统的IP地址(网络地址转换) - 主机能联网,虚拟机就能联网
连通情况: - ✅ 主机和虚拟机可以互访 - ✅ 虚拟机之间可以互访 - ✅ 可以访问互联网 - ✅ 本机虚拟机可以访问其他主机 - ❌ 其他主机不能访问本机虚拟机(解决办法:端口映射或共享网络)
使用场景:大部分情况(默认推荐),尤其是IP地址紧张或仅需虚拟机访问外网的场景。
专业解读:NAT模式下,虚拟机IP通常由VMware的DHCP服务分配(如192.168.x.x网段),与物理机不在同一网段,但通过NAT共享物理机的IP上网。
仅主机模式 (Host-Only)¶
通信方式: - 主机使用VMware Network Adapter VMnet1虚拟网卡连接到VMnet1虚拟交换机
特点: - 没有了NAT设备(虚拟路由),所以不能上网 - 虚拟机与外部网络完全隔离
连通情况: - ✅ 主机和虚拟机可以互访 - ✅ 虚拟机之间可以互访 - ❌ 不能访问互联网 - ❌ 不能访问其他主机 - ❌ 其他主机不能访问本机虚拟机
使用场景:创建一个与其他机器隔离的网络,用于测试恶意软件、搭建封闭实验环境等。
三种模式对比总结¶
| 能力 | 桥接模式 | NAT模式 | 仅主机模式 |
|---|---|---|---|
| 访问互联网 | ✅ | ✅ | ❌ |
| 主机↔虚拟机 | ✅ | ✅ | ✅ |
| 虚拟机之间 | ✅ | ✅ | ✅ |
| 外机访问虚拟机 | ✅ | ❌(需端口映射) | ❌ |
| IP独立性 | 独立IP | 共享主机IP | 仅内网IP |
安装CentOS 7¶
准备工作¶
- 镜像来源:从CentOS官网或国内镜像站(阿里云、清华、中科大)下载ISO镜像
- 版本选择:CentOS 7(教程使用的版本)
- root密码:安装时设置强密码
- 语言选择:建议安装中文支持,但系统语言可保持英文(避免部分软件中文路径问题)
- 桌面系统:可选择GNOME桌面或最小安装(Minimal Install)
CentOS界面布局¶
| 组件 | 说明 |
|---|---|
| 终端 (Terminal) | 命令行操作界面,Linux最重要的交互方式 |
| 文件夹 (Places) | 图形化的文件管理器 |
| 设置 | 系统配置界面 |
VI编辑器基础¶
CentOS中默认的文本编辑器是VI/VIM:
| 模式 | 说明 |
|---|---|
| 命令模式 | 打开文件后的默认模式,只能输入命令,不能编辑文本 |
| 编辑模式(插入模式) | 按 i 进入,可以修改文本内容 |
| 底行模式 | 按 Esc 再按 : 进入,用于保存、退出、查找替换等 |
常见问题:
1. 只读权限:当前用户没有写入权限,需用 sudo 或切换root
2. 临时.swp文件:上次编辑未正常退出,产生交换文件。解决:保存退出后删除 .文件名.swp
配置yum源¶
CentOS默认的yum源在国外,速度慢。建议替换为阿里云yum源:
# 备份原有源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载阿里云源(以CentOS 7为例)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除缓存并生成新缓存
yum clean all
yum makecache
专业解读:由于CentOS 8已停止维护,官方源已失效。CentOS 7的源也可能在未来受限,建议考虑迁移到Rocky Linux或AlmaLinux。
配置静态IP¶
服务器通常需要固定IP,配置方法:
修改或添加:
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.2
DNS1=223.5.5.5
DNS2=114.114.114.114
重启网络:
XShell远程连接¶
常用SSH客户端¶
| 工具 | 特点 | 费用 |
|---|---|---|
| Xshell | 功能强大、稳定、支持标签页 | 商业软件(个人版免费) |
| FinalShell | 国产、免费、集成FTP、实时监控 | 免费 |
| MobaXterm | 功能全面、内置X Server、便携版 | 个人免费/专业版收费 |
| SecureCRT | 老牌专业工具、脚本支持强 | 商业收费 |
| PuTTY | 轻量开源、免费 | 完全免费 |
SSH连接基础¶
SSH(Secure Shell,安全外壳协议):加密的远程登录协议,默认端口22。
连接方式:
解决中文乱码¶
Xshell中若出现中文乱码:
1. 文件 → 属性 → 终端 → 编码 → 选择 UTF-8
2. 确保Linux系统的LANG设置为UTF-8:echo $LANG 应输出 en_US.UTF-8 或 zh_CN.UTF-8
SSH Key免密登录¶
SSH Key基于非对称加密实现免密登录:
- 客户端生成密钥对:
ssh-keygen(生成公钥id_rsa.pub和私钥id_rsa) - 客户端把公钥发给服务端:
ssh-copy-id user@server或手动追加到服务端的~/.ssh/authorized_keys - 客户端用私钥加密消息,发给服务端
- 服务端用公钥解密,解密成功则认证通过
- 客户端免密登录成功
核心原理:"你之前同意保存我的公钥,所以可以解密我的消息,所以认得我"。私钥永远留在客户端,绝不外传。
物理机和虚拟机文件传输¶
| 方式 | 方向 | 说明 |
|---|---|---|
| xftp / FileZilla / FlashFTP | 双向 | 图形化SFTP/FTP客户端,拖拽传输 |
| Xshell拖曳 | 上传 | 直接拖拽文件到Xshell窗口 |
| sz / rz | 下载/上传 | 通过Zmodem协议传输,需安装 lrzsz |
| VMware Tools拖动 | 传入 | 安装VMware Tools后,直接拖拽 |
| QQ / 微信 | 双向 | 通过聊天工具发送(适合小文件) |
| wget | 下载 | 命令行下载工具,从URL下载文件 |
| scp | 双向 | 基于SSH的安全复制命令 |
scp命令示例:
# 上传本地文件到远程
scp 1.txt root@192.168.1.66:/tmp
# 上传本地目录到远程(-r递归)
scp -r folder root@192.168.1.66:/tmp
# 从远程下载到本地
scp root@192.168.1.66:/tmp/1.txt ./
安全测试视角:虚拟化安全 虚拟机是安全测试和渗透测试的重要工具,但也存在安全考量: - 虚拟机逃逸 (VM Escape):攻击者利用 hypervisor 漏洞从虚拟机突破到宿主机,是最严重的虚拟化安全威胁。历史上 VMware、KVM、Xen 都曾出现过此类漏洞 - 快照安全:VMware 快照可能包含敏感信息(如内存中的密码、密钥),分享虚拟机镜像时应清理快照 - 网络隔离:测试恶意软件时,建议使用"仅主机模式"或自定义隔离网络,防止恶意流量外泄 - Docker 容器逃逸:容器共享宿主机内核,如果容器内获得 root 权限且存在内核漏洞,可能导致容器逃逸。生产环境中应避免以 root 身份运行容器
安全测试视角:最小化安装原则 在安全测试中,靶机或测试服务器的安装应遵循最小化原则: - 选择 Minimal Install,减少攻击面 - 关闭不必要的服务(
systemctl list-unit-files | grep enabled) - 及时更新系统和软件补丁 - 配置强密码策略和 SSH 密钥认证