Архив метки: VirtualBox

Хакатон MaxPatrol VM, часть 1: Linux стенд и Ansible

Хакатон MaxPatrol VM, часть 1: Linux стенд и Ansible

Хакатон MaxPatrol VM, часть 1: Linux стенд и Ansible. Как и обещал, делюсь впечатлениями от хакатона. Первым заданием у меня была автоматизации установки софта из TAR-архива на Debian 12 с помощью Ansible. Раньше я с Ansible толком не работал, поэтому появился повод немного разобраться.

Ansible - система управления конфигурациями, написанная на Python. Главное отличие Ansible от аналогов - не нужна установка агента или клиента на управляемые хосты. Обычно используется для управления Linux-хостами, но Windows также поддерживается. Взаимодействие происходит по модели push: сам Ansible запускается на "центральном" управляющем хосте, ходит на управляемые хосты и что-то делает. На управляемом хосте должен быть установлен Python версии 2.4 и выше, соединение выполняется по SSH или WinRM.

Управляющим хостом для Ansible будет мой десктоп на Ubuntu 23.10, а управляемым хостом будет виртуалка в VirtualBox.

Я завёл виртуалку в VirtualBox с Debian 12, добавил интерфейс Host-only adapter, чтобы можно было подключаться к ней по SSH. Я проверил, что подключение работает с помощью:

$ ssh vmuser@192.168.56.104

Для работы Ansible должна быть настроена аутентификация по ключам. Я сгенерировал ключ с помощью:

$ ssh-keygen -t ed25519 -C "alexander@avleonov.com"

Затем я закинул его на target-host:

$ ssh-copy-id vmuser@192.168.56.104

После этого команда уже не требовала пароль.

На десктоп с Ubuntu 23.10 я поставил Ansible при помощи утилиты pipx

$ sudo apt-get install pipx
$ pipx install --include-deps ansible

Обновлять можно с помощью:

$ pipx upgrade --include-injected ansible

Проверить версию ansible можно с помощью:

$ ansible --version
ansible [core 2.16.7]
...

Далее описываю управляемый хост (виртуалку) в yaml файле:

$ cat hosts.yaml 
myhosts:
hosts:
debian12:
ansible_host: 192.168.56.104

Валидирую файл hosts.yaml:

$ ansible-inventory -i hosts.yaml --list
{
"_meta": {
"hostvars": {
"debian12": {
"ansible_host": "192.168.56.104"
}
}
},
"all": {
"children": [
"ungrouped",
"myhosts"
]
},
"myhosts": {
"hosts": [
"debian12"
]
}
}

Проверяю соединение:

$ ansible myhosts -m ping -i hosts.yaml -u vmuser
debian12 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}

Всё работает, связь есть. Теперь можно попробовать выполнить какие-то команды на хосте с помощью Ansible. Делаю тестовый плейбук для вывода hostname и версии дистрибутива:

- name: Print Hostname and OS Version
hosts: all
tasks:
- name: Get Hostname
command: hostname
register: hostname_output

- name: Get OS Version
ansible.builtin.shell: lsb_release -a | grep "Description:" | awk -F"\t" '{print $2}'
register: os_version_output

- name: Display Outputs
debug:
msg: "Hostname is {{ hostname_output.stdout }} and OS Version is {{ os_version_output.stdout }}"

Запускаю его:

$ ansible-playbook -i hosts.yaml -u 'vmuser' playbook.yaml
...

TASK [Display Outputs] *********************************************************
ok: [debian12] => {
"msg": "Hostname is debian and OS Version is Debian GNU/Linux 12 (bookworm)"
}

Работает! В следующей части рассмотрим как описать в плейбуке установку софта из TAR-архива.

11 ноября стартует ещё один онлайн-курс по Управлению Уязвимостями, на этот раз от компании Инсека

11 ноября стартует ещё один онлайн-курс по Управлению Уязвимостями, на этот раз от компании Инсека11 ноября стартует ещё один онлайн-курс по Управлению Уязвимостями, на этот раз от компании Инсека11 ноября стартует ещё один онлайн-курс по Управлению Уязвимостями, на этот раз от компании Инсека11 ноября стартует ещё один онлайн-курс по Управлению Уязвимостями, на этот раз от компании Инсека

11 ноября стартует ещё один онлайн-курс по Управлению Уязвимостями, на этот раз от компании Инсека. Продлится он 6 недель. Обещают 30 часов теории, 30 часов практики, стоимость удовольствия 64 800 ₽.

Судя по общему описанию модулей, из практики будет подробно про CVSS, эксплуатацию EternalBlue, сканирование инфры с помощью Nessus Essentials, сканирование веб-приложения с помощью Acunetix, сканирование периметра с помощью Metascan, экспорт данных из Vulners API для приоритизации уязвимостей. По теории вроде все основные темы заявлены. Про ФСТЭК-овские методики аж 1,5 модуля. 👍 На мой вкус было бы неплохо побольше добавить про Asset Management (про критичность активов вижу только в 5.1) и согласование безусловных регулярных обновлений.

Бесплатно дают доступ к 4 урокам: про публичные источники данных об уязвимостях (увидел там скриншот с моим телеграмм-каналом - приятно 😊), различные виды сканирований (внешнее, внутреннее, в режиме белого и чёрного ящика), лаба на сканирование уязвимостей (образы для VirtualBox c Nessus Essentials и Windows-таргетом дают готовые; по итогам нужно скинуть результаты детекта), особенности сканирования внешнего периметра и веб-приложений.

В целом, выглядит как вполне неплохой начальный курс для вкатывания в тему Vulnerability Management-а. Без особой жести и нагрузки. И вендерно-нейтральный. Почитать, потыкать лабы, понять нравится таким заниматься или не особо. Ну или как повод освежить знания и получить сертификат тоже почему бы и нет. 😉 Говорят, что самое эффективное обучение, когда большая часть материала вам уже знакома. Nessus Essentials с ограничением на 16 IP-адресов и без комплаенс-сканов это, конечно, совсем не для реальной жизни. Да и все продукты Tenable и Acunetix сейчас в России не особо актуальны. Но для учебных целей, в качестве первого опыта, почему бы и нет. А Metascan и Vulners это вполне себе практически полезные инструменты.

Если дадут доступ курсу, то тоже пройду и поделюсь впечатлениями. Мне это в первую очередь интересно со стороны "как люди учат VM-у", но вполне возможно почерпну там что-то такое, с чем раньше не сталкивался. 🙂

Больше курсов по Vulnerability Management-у хороших и разных!