Установка EVE-NG на Google Cloud
Google Cloud подойдёт для студентов, он предоставляет бесплатные 300 долларов на 90 дней. Деньги тратятся на обслуживание сервера, затраты зависят от мощности сервера и частоты использования. Поэтому лучше выключать виртуальную машинку каждый раз, когда не используете её.
Плюсы Google Cloud в том, что не используются мощности вашего компьютера и получить полноценный доступ к Еве можно из любой точки с любого компьютера по айпи.
На главной странице выбираем список проектов и создаём новый проект.
Готовим изображение
Ева обычно настраивается на Убунте, поэтому нужно подготовить подходящее изображение Убунты.
Есть две версии Евы: Community и Pro. Вторая просит лицензионный ключ, первая бесплатная, обновляеся реже и в целом попроще. Для них нужны разные образы.
Переходим по ссылке Ubuntu Pro, нажимаем Launch и переходим к следующему разделу про виртуалку.
Можно тоже установить через Ubuntu Pro, но она более финансово затратная, поэтому переходим в консоль проекта:
И вставляем эту команду. Если просит авторизовать, разрешаем.
gcloud compute images create nested-ubuntu-bionic --source-image-family=ubuntu-1804-lts --source-image-project=ubuntu-os-cloud --licenses https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx
Виртуалка
Находясь в новом проекте, в поиске – находится наверху на любой странице – вбиваем VM Instances и переходим в раздел с виртуальными машинами. Создаём новую машину.
- Выбираем имя.
- Выбираем регион и зону. Нужен тот регион, который ближе к нам. Эта зона будет дальше часто использоваться, но запоминать её не надо, всегда можно посмотреть.
- Настраиваем железо. Нам подойдёт процессор типа N1 или N2, характеристики процессора и оперативной памяти на своё усмотрение в заивисмости от проекта. Справа можно увидеть цену, которая уйдёт на обслуживание, но если не держать сервер включённым всё время, то она будет значительно меньше.
- Выбирам загрузочный диск. Нажимаем изменить. Для Community Евы меняем размер диска на своё усмотрение, обычно 50-60 хватает. Для Pro Евы переходим в Custom images, выбираем свой проект, выбираем то изображение, которое создали, так же меняем размер диска.
- Ниже разрешаем HTTP траффик, потому что будем использовать Еву без SSL-сертификата. Настройка HTTPS – отдельная тема.
Машинка создастся и скоро станет доступна.
Установка самой Евы
Если машинка не включилась, включаем её.
Переходим в консоль Евы по SSH:
Заходим от рута sudo -i
, выполняем команды для установки евы и обновления:
wget -O - http://www.eve-ng.net/repo/install-eve.sh | bash -i apt update apt upgrade
Перезапускаем машинку через меню с тремя точками. Снова заходим по SSH, появится синий экран. Нажимаем Ctrl + c, вводим sudo -i
и настраиваем Еву.
На моменте с настройкой айпи адреса выбираем DHCP, дальше direct connection.
Вложенная виртуализация
Вложенная виртуализация нужна, чтоб можно было запускать виртуальные машинки внутри Евы (которая тоже является виртуальной машинкой). По умолчанию она не настроена.
Открываем внутреннюю консоль проекта. Прописываем три команды, где меняем EVE_NAME на имя своей виртуальной машинки, ZONE – на указанную зону этой машинки, её можно увидеть рядом с названием машинки, а PROJECT_ID – айди, которое можно узнать, нажав на имя проекта в левом верхнем углу страницы
Эта команда копирует конфиг машинки в файл YAML_FILE_PATH. Название файла можно изменить.
gcloud compute instances export EVE-NAME \ --project=PROJECT_ID \ --destination=YAML_FILE_PATH \ --zone=ZONE
Эта команда добавляет в скопированный конфиг две строки, которые включают вложенную виртуализацию.
cat <<EOT >> YAML_FILE_PATH advancedMachineFeatures: enableNestedVirtualization: true EOT
Эта команда заменяет конфиг Евы на отредактированный нами, который хранится в файле.
gcloud compute instances update-from-file EVE-NAME \ --project=PROJECT_ID \ --source=YAML_FILE_PATH \ --most-disruptive-allowed-action=RESTART \ --zone=ZONE
Файл YAML_FILE_PATH можно удалять.
Фаервол
По умолчанию многие порты блокируются виртуальной машинкой для внешнего доступа. Проблема в том, что доступ ко всем устройствам внутри лабораторных работ предоставляется по айпи Евы и порту устройства.
В поиске вбиваем Firewall, создаём правило для фаервола, придумываем ему имя. Разрешаем доступ по любому айпи к портам с 0 по 65535. Вот так:
И создаём ещё одно такое же правило, где вместо Ingress ставим Egress. Теперь трафик может ходить в обе стороны. Надо понимать, что теперь любой человек сможет подключиться к устройствам внутри вашей лабораторки, зная внешний айпи Евы и порт устройства.
Настройка интерфейсов
Машинка работает, но выхода в интернет у неё нет. Будем настраивать виртуальные интерфейсы таким образом, чтоб они передавали трафик на реальный интерфейс. Покажу на примере одного интерфейса. Всё делаем внутри Евы, чтоб зайти туда, используем кнопку SSH.
- Сразу заходим в рут
sudo -i
Переходим к файлу с конфигами интерфейсов редактором nano:nano /etc/network/interfaces
, здесь видим заголовок Cloud devices. Это всё интерфейсы. Настраиваем первый, чтоб он выглядел так:
iface eth1 inet manual auto pnet1 iface pnet1 inet static bridge_ports eth1 bridge_stp off address 10.199.199.1 netmask 255.255.255.0
Можно указать другой адрес, он станет адресом для Cloud 1 внутри лабораторки. Чтоб сохранить файл и выйти Ctrl + o, Enter, Ctrl + x.
- Перезагружаем сетевой сервис
systemctl restart networking
. Теперь проверим, после ввода командыip a
у pnet1 должен появится айпи, который мы указали. - Переходим к системному файлу:
nano /etc/sysctl.conf
, убираем решётку в строкеnet.ipv4.ip_forward=1
, чтоб пакеты перенаправлялись. Так же сохраняем и выходим. Вводим командуsysctl -p /etc/sysctl.conf
, чтоб применить настройки. - Настриваем правила для исходящего трафика командой
iptables -t nat -A POSTROUTING -s 10.199.199.0/24 -o pnet0 -j MASQUERADE
. Здесь айпишник – сеть, которая должна соответствовать айпишнику интерфейса (указывали ранее). - Командой
iptables -L -nv -t nat
можно проверить последнюю настройку, должны увидеть строку со знакомыми из прошлой команды словами. Чтоб сохранить изменения вводим несколько команд:
iptables-save > /etc/iptables.rules nano /etc/network/if-pre-up.d/iptables
#!/bin/sh iptables-restore < /etc/iptables.rules exit 0
– и сохраняем Ctrl + o, Enter, Ctrl + x.
- Вводим команду:
nano /etc/network/if-post-down.d/iptables
. Вставляем этот код, чтоб каждый раз правила сами сохранялись:
#!/bin/sh iptables-save -c > /etc/iptables.rules if [ -f /etc/iptables.rules ]; then iptables-restore < /etc/iptables.rules fi exit 0
sudo chmod +x /etc/network/if-post-down.d/iptables sudo chmod +x /etc/network/if-pre-up.d/iptables
Работа с Евой
В списке виртуальных машинок, нажав на имя машинки, можно увидеть и отредактировать её характеристики. Справа кнопка с тремя точками, чтоб запускать и выключать машинку.
External IP – адрес, по которому можно зайти в лабораторки Евы, Internal IP нужен для внутреннего использования, по нему тоже можно зайти в Еву, если натсроен SSH туннель, или из другой машинки.
Добавление образов в Еву
В машинке пока почти нет образов, например Cisco, Mikrotik и разных операционок. Как их добавить рассказываю по ссылке в заголовке.