Каждому тестировщику на проникновение нужна безопасная среда для оттачивания навыков без риска юридических проблем или нарушения производственных систем. Выделенная лаборатория на Proxmox дает вам полный контроль: изолированные сети, снимки для мгновенного отката и возможность вращать уязвимые цели по требованию. Это руководство создает полную лабораторию с нуля, с Kali Linux в качестве злоумышленника и преднамеренно уязвимой мишенью Rocky Linux.

Настройка включает в себя развертывание официального изображения Kali QEMU (не требуется ручная установка), поддержание целевой виртуальной машины, загруженной эксплуатируемыми службами, запуск DVWA в контейнере для тестирования веб-приложений и блокировку всего за изолированным мостом, чтобы ничего не просочилось в вашу реальную сеть. Proxmox делает это безболезненным, потому что снимки позволяют вам уничтожить цель и восстановить ее за считанные секунды.

Лаборатория архитектуры

Лаборатория состоит из хоста Proxmox, управляющего двумя виртуальными машинами на специальном внутреннем мосту. Злоумышленник Kali VM имеет доступ как к изолированной сети Pentest, так и (опционально) к Интернету для обновления инструментов. Целевая виртуальная машина находится исключительно в изолированной сети без выхода в интернет.

Позже вы можете добавить больше целевых виртуальных машин (Metasploitable, Juice Shop, VulnHub) на тот же мост vmbr1. Каждый из них получает статический IP в диапазоне 10.0.1.0/24.

Требования к оборудованию

Proxmox сам по себе является легким, но запуск нескольких виртуальных машин одновременно требует достойных ресурсов. Вот минимумы для двух-VM лабораторий:

  • CPU: минимум 4 ядра (требуется Intel VT-x или AMD-V). 8 ядер рекомендуется, если вы планируете запускать 3+ виртуальных машины.
  • RAM: минимум 16 ГБ. Kali нужно 4 ГБ, цели нужно 2 ГБ, сам Proxmox использует 2 ГБ. Это оставляет пространство для дополнительных целей.
  • Хранение: 100 ГБ SSD минимум. Изображение Kali QEMU расширяется примерно до 30 ГБ, Rocky Linux занимает 15 ГБ, а снимки быстро занимают пространство.
  • Сеть: достаточно одного физического NIC. Proxmox создает виртуальные мосты для VM-VM трафика.

Создайте атакующую виртуальную машину (Kali Linux)

Kali предоставляет предварительно построенное изображение QEMU, которое пропускает весь процесс установки. Загрузите его непосредственно на хост Proxmox, извлеките и импортируйте диск.

Возьмите последнее изображение QEMU с сайта kali.org:

1
2
cd /tmp
wget https://cdimage.kali.org/kali-2026.2/kali-linux-2026.2-qemu-amd64.7z

Загрузка составляет примерно 3,6 ГБ. После завершения, извлеките изображение диска .qcow2:

1
7z x kali-linux-2026.2-qemu-amd64.7z

Если 7z не установлен, добавьте его с соответствующей apt install -y p7zip-full. Изображение будет называться kali-linux-2026.2-qemu-amd64.qcow2.

Сначала создайте VM-оболочку, затем импортируйте диск:

1
qm create 200 --name kali-attacker --memory 4096 --cores 2 --scsihw virtio-scsi-single --net0 virtio,bridge=vmbr0 --ostype l26 --agent 1

Импорт диска qcow2 в хранилище Proxmox:

1
qm disk import 200 kali-linux-2026.2-qemu-amd64.qcow2 local-lvm

Это преобразует qcow2 в необработанный диск на LVM. Прикрепите его к VM и установите порядок загрузки:

1
qm set 200 --scsi0 local-lvm:vm-200-disk-0,discard=on --boot order=scsi0

Дополнительно добавьте дисплей VGA и серийную консоль для лучшей совместимости:

1
qm set 200 --vga qxl --serial0 socket

Запуск VM:

1
qm start 200

Откройте консоль из веб-интерфейса Proxmox. По умолчанию учетными данными для изображения QEMU являются kali / kali. Измените пароль сразу после первого входа в систему:

1
passwd

Включите SSH, чтобы вы могли работать с надлежащего терминала вместо консоли Proxmox:

1
sudo systemctl enable --now ssh

Убедитесь, что SSH слушает:

1
ss -tlnp | grep 22

Вы должны увидеть sshd, связанный с портом 22:

1
LISTEN  0  128  0.0.0.0:22  0.0.0.0:*  users:(("sshd",pid=1423,fd=3))

Создание целевой виртуальной машины (Rocky Linux)

Rocky Linux предоставляет предварительно построенное изображение QEMU, которое пропускает весь процесс установки. Загрузите его непосредственно на хост Proxmox, извлеките и импортируйте диск.

Возьмите последнее изображение QEMU с сайта rockylinux.org:

1
2
cd /tmp
wget https://dl.rockylinux.org/pub/rocky/10/images/x86_64/Rocky-10-GenericCloud-Base.latest.x86_64.qcow2

Загрузка составляет примерно 520 Мб.

Сначала создайте VM-оболочку, затем импортируйте диск:

1
qm create 201 --name rocky-target --memory 2048 --cores 2 --scsihw virtio-scsi-single --net0 virtio,bridge=vmbr0 --ostype l26 --agent 1

Импорт диска qcow2 в хранилище Proxmox:

1
qm disk import 201 Rocky-10-GenericCloud-Base.latest.x86_64.qcow2 local-lvm

Это преобразует qcow2 в необработанный диск на LVM. Прикрепите его к VM и установите порядок загрузки:

1
qm set 201 --scsi0 local-lvm:vm-201-disk-0,discard=on --boot order=scsi0

Дополнительно добавьте дисплей VGA и серийную консоль для лучшей совместимости:

1
qm set 201 --vga qxl --serial0 socket

Запуск VM:

1
qm start 201

Целевая VM запускает реальные сервисы с известными слабостями. Rocky Linux 10 является хорошим выбором, потому что он отражает то, с чем вы сталкиваетесь в корпоративных средах (семейство RHEL, SELinux, брандмауэр).

Установите набор сервисов, представляющих реалистичную поверхность атаки:

1
sudo dnf install -y nginx mariadb-server vsftpd postfix

Включите и начните все:

1
sudo systemctl enable --now nginx mariadb vsftpd postfix

Откройте брандмауэр для этих сервисов. В Rocky Linux это означает брандмауэр:

1
2
3
sudo firewall-cmd --permanent --add-service={http,https,ftp,mysql,smtp}
sudo firewall-cmd --permanent --add-port=9090/tcp
sudo firewall-cmd --reload

Умышленное ослабление некоторых конфигураций для создания эксплуатируемых условий. Анонимный доступ к FTP:

1
2
sudo sed -i 's/anonymous_enable=NO/anonymous_enable=YES/' /etc/vsftpd/vsftpd.conf
sudo systemctl restart vsftpd

Установите слабый пароль root MariaDB:

1
sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'toor'; FLUSH PRIVILEGES;"

Для SELinux держите его в режиме принудительной работы. Частью реалистичного теста является контекст SELinux. Если vsftpd нуждается в обслуживании файлов из каталога без по умолчанию, вам нужно будет установить правильный контекст с помощью semanage fcontext и recoverycon, как и в производстве.

Проверьте, какие порты открыты:

1
ss -tlnp

Выход подтверждает поверхность атаки:

1
2
3
4
5
6
State   Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
LISTEN  0       128     0.0.0.0:22          0.0.0.0:*          users:(("sshd",pid=892,fd=3))
LISTEN  0       128     0.0.0.0:80          0.0.0.0:*          users:(("nginx",pid=4512,fd=6))
LISTEN  0       128     0.0.0.0:21          0.0.0.0:*          users:(("vsftpd",pid=4601,fd=3))
LISTEN  0       80      0.0.0.0:3306        0.0.0.0:*          users:(("mariadbd",pid=4234,fd=19))
LISTEN  0       128     0.0.0.0:9090        0.0.0.0:*          users:(("cockpit-ws",pid=4789,fd=5))

Пять служб прослушивания, каждая из которых является потенциальной точкой входа. Это именно та цель, которая делает практику ценной.

DVWA для тестирования веб-приложений

Damn Vulnerable Web Application (DVWA) специально разработан для практики веб-эксплойтов: SQL-инъекция, XSS, инъекция команд, включение файлов и многое другое. Запуск его в контейнере держит его изолированным от ОС хоста и делает очистку тривиальной.

Установите Podman на целевую VM:

1
sudo dnf install -y podman

Выберите и запустите контейнер DVWA:

1
2
sudo podman pull docker.io/vulnerables/web-dvwa
sudo podman run -d --name dvwa -p 8080:80 docker.io/vulnerables/web-dvwa

Подтвердите, что контейнер работает:

1
sudo podman ps

Вы должны увидеть DVWA на порту 8080:

1
2
CONTAINER ID  IMAGE                                  COMMAND               STATUS         PORTS                 NAMES
a3b7c9d1e2f4  docker.io/vulnerables/web-dvwa:latest  /main.sh              Up 2 minutes   0.0.0.0:8080->80/tcp  dvwa

Откройте порт брандмауэра для DVWA:

1
2
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

От Kali, просмотрите http://10.0.1.50:8080. Войдите с учетными данными по умолчанию: admin / password. Нажмите «Создать / Сбросить базу данных» на странице настройки, а затем установите уровень безопасности на низкий в разделе «Безопасность DVWA», чтобы начать практиковать основные эксплойты, прежде чем работать до среднего и высокого уровня.

Для автоматического запуска контейнера после перезагрузки создайте системный блок:

1
2
sudo podman generate systemd --new --name dvwa | sudo tee /etc/systemd/system/container-dvwa.service
sudo systemctl enable container-dvwa.service

Добавьте больше целей

Одна цель быстро становится скучной. Реальная ценность лаборатории Proxmox заключается в том, что вы можете раскрутить десятки уязвимых машин в одной изолированной сети. Некоторые из них стоит изучить:

  • Metasploitable 3 — намеренно уязвимая Windows/Linux VM, созданная Rapid7. Хорошо сочетается с Metasploit Framework.
  • OWASP Juice Shop — современное уязвимое веб-приложение, созданное с помощью Node.js. Охватывает OWASP Top 10 категорий. Запустите его как контейнер: podman run -d -p 3000:3000 bkimminich/juice-shop.
  • VulnHub images — созданные сообществом уязвимые виртуальные машины в формате OVA/VMDK. Преобразовать в qcow2 с преобразованием qemu-img convert и импортировать в Proxmox так же, как мы импортировали Kali.
  • HackTheBox и TryHackMe — онлайн-платформы с кураторскими задачами. Не размещаются самостоятельно, а дополняют вашу местную лабораторию новыми целями и путями обучения.
  • Настраиваемые уязвимые виртуальные машины — установите старую версию WordPress с известными CVE или неправильно настроенным Samba. Создание собственных целей учит вас больше о защите, чем об использовании готовых.

Изоляция сети

Это самый важный раздел. Пентест-лаборатория, использующая эксплойты в той же сети, что и ваши производственные машины, — это катастрофа, которая ждет своего часа. Виртуальные мосты Proxmox делают изоляцию простой.

Создайте специальный мост без физического интерфейса. На хосте Proxmox отредактируйте конфигурацию сети:

1
sudo nano /etc/network/interfaces

Добавить определение изолированного моста:

1
2
3
4
5
6
7
8
9
auto vmbr1
iface vmbr1 inet static
    address 10.0.1.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up   iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s 10.0.1.0/24 -o vmbr0 -j MASQUERADE

Применять изменения:

1
sudo ifreload -a

Ни одна директива не означает, что этот мост не имеет связи с каким-либо физическим NIC. VM на vmbr1 могут разговаривать только друг с другом и с хостом Proxmox. Правило MASQUERADE предоставляет Kali VM доступ в Интернет (через хост) для обновления инструментов, в то время как цели на том же мосту остаются доступными только из лаборатории.

Для максимальной изоляции (нет интернета вообще, даже для Kali) удалите линии MASQUERADE. Kali VM все еще может достигать целей на 10.0.1.0/24, но ничего не покидает мост.

Обновите обе виртуальные машины, чтобы использовать vmbr1 в качестве сетевого моста:

1
2
qm set 200 --net0 virtio,bridge=vmbr1
qm set 201 --net0 virtio,bridge=vmbr1

Назначение статических IP-адресов внутри каждой виртуальной машины. На Kali (/etc/network/interfaces или NetworkManager) устанавливается 10.0.1.10/24. На Rocky Linux установлен 10.0.1.50/24 с шлюзом 10.0.1.1.

Если вы хотите, чтобы у Kali был как доступ в Интернет, так и доступ в лабораторию, дайте ему два NIC: один на vmbr0 (интернет) и один на vmbr1 (лаборатория):

1
qm set 200 --net0 virtio,bridge=vmbr0 --net1 virtio,bridge=vmbr1

Снимок до и после

Снимки являются причиной того, что Proxmox бьет голые металлические лабораторные установки. Сделайте чистый снимок каждой виртуальной машины, прежде чем начать эксплуатировать, а затем вернитесь в нетронутое состояние в считанные секунды.

Создайте базовый снимок целевой VM:

1
qm snapshot 201 clean-baseline --description "All services running, DVWA deployed, before any exploitation"

Сделайте то же самое с Kali:

1
qm snapshot 200 kali-clean --description "Fresh Kali with SSH enabled, tools updated"

После того, как эксплуатация уничтожит цель, откатите ее назад:

1
qm rollback 201 clean-baseline

VM возвращается в то состояние, в котором он был, когда вы сделали снимок. Все файлы, измененные эксплойтами, все бэкдоры, все сгенерированные журналы: исчезли. Это неоценимо для повторения упражнений или позволить нескольким людям практиковаться на одной цели.

Перечислите существующие снимки для VM:

1
qm listsnapshot 201

Снимок дерева показывает ваши точки отката:

1
2
`- clean-baseline       All services running, DVWA deployed, before any exploitation
 `- current             You are here!

Держите имена снимков описательными. После выполнения определенного упражнения (скажем, эскалация привилегий через эксплойт ядра), сделайте еще один снимок, чтобы вы могли вернуться к этому состоянию после эксплуатации позже для документации или демонстрации.

Проверить лабораторию

Все развернуто. Время подтвердить, что все работает с точки зрения злоумышленника. Введите SSH в Kali VM и запустите сканирование версии службы против цели.

1
nmap -sV 10.0.1.50

Сканирование показывает полную поверхность атаки:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Starting Nmap 7.95 ( https://nmap.org ) at 2026-07-04 14:32 UTC
Nmap scan report for 10.0.1.50
Host is up (0.00045s latency).
Not shown: 994 filtered tcp ports (no-response)
PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 3.0.5
22/tcp   open  ssh         OpenSSH 9.9 (protocol 2.0)
80/tcp   open  http        nginx 1.26.3
3306/tcp open  mysql       MariaDB (unauthorized)
8080/tcp open  http-proxy  Apache httpd 2.4.25 (DVWA)
9090/tcp open  zeus-admin?

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.34 seconds

Шесть открытых портов, каждый из которых представляет отдельный вектор атаки. Служба vsftpd с анонимным доступом является легкой первой целью. MariaDB со слабым корневым паролем - еще один быстрый выигрыш. DVWA на порту 8080 открывает весь OWASP Top 10 для практики.

Тест, на который DVWA отвечает от Kali:

1
curl -s -o /dev/null -w "%{http_code}" http://10.0.1.50:8080/login.php

Ответ 200 подтверждает, что DVWA доступен и обслуживает страницу входа.

Проверка работы анонимных FTP:

1
2
3
4
5
ftp -n 10.0.1.50 <<FTP_END
user anonymous anonymous@
ls
bye
FTP_END

Если вы получаете список каталогов, работает анонимный FTP. Лаборатория готова.

Что практиковать первым

С работой лаборатории, вот практические упражнения, чтобы работать в порядке сложности:

  • Сетевая разведка - Используйте nmap для отображения служб цели, ОС с отпечатками пальцев с помощью nmap -O и сканирование сценариев с помощью nmap -script vuln.
  • Перечисление FTP - Подключайтесь анонимно, ищите конфиденциальные файлы, попробуйте грубую силу с Hydra против реальных учетных записей.
  • Атаки веб-приложений - используйте DVWA для практики SQL-инъекций, сохраненных / отраженных XSS, инъекций команд и эксплойтов загрузки файлов. Burp Suite (предустановленный на Kali) здесь очень важен.
  • Атаки паролей — Brute-force SSH и MariaDB с Hydra или Medusa. Тестирование слабых учетных данных на все открытые услуги.
  • После эксплуатации – Как только вы получите оболочку, практикуйте эскалацию привилегий с помощью LinPEAS, эксплойтов ядра и неправильно настроенных двоичных файлов SUID.
  • Metasploit workflows - используйте msfconsole для сканирования, использования и поворота.

Завершение

В этой статье мы смогли установить Kali Linux / Rocky Linux в виртуальной среде Proxmox VE. После того, как мы создали виртуальные машины, мы можем начать, практиковать основные эксплойты. Чтобы получить доступ к экземпляру, используйте удаленную консоль, такую ​​как SSH, VNC или веб-консоль. Мы надеемся, что эта статья была информативной.

Если вам понравился этот пост о том, как создать лаборатории Kali Linux / Rocky Linux в виртуальной среде Proxmox VE, пожалуйста, поделитесь им со своими друзьями в социальных сетях, которым может быть интересна эта статья или оставьте комментарий ниже.