mkdir $HOME/.msf4
mkdir $HOME/.msf4/database
Настройка сети
docker network create --subnet=172.19.0.0/16 msf
Запуск сервера postgres
docker run --ip 172.19.0.2 --network msf --rm --name db-msf -v "${HOME}/.msf4/database:/var/lib/postgresql/data" -e POSTGRES_PASSWORD=Load2000 -e POSTGRES_USER=postgres -e POSTGRES_DB=msf -d postgres:11-alpine
* Запуск сервера БД postgres:11-alpine + назначение его в сеть msf
* Монтирование тома под БД
* Присваивание Логина/Пароля/Имя-БД
docker run --rm -it --network msf --name msf --ip 172.19.0.3 -e DATABASE_URL='postgres://postgres:Load2000@172.19.0.2:5432/msf' -v "${HOME}/.msf4:/home/msf/.msf4" -p 8443-8500:8443-8500 metasploitframework/metasploit-framework
* Запуск metasploit-framework внутри сети msf
* Присваивание URL БД
* Монтирование тома под MSF
* Определение диапазона портов для работы MSF
Сохранение настроек БД в консоли metasploit
msf5 > db_save
Теперь запуск metasploit можно производить без установки URL БД
docker run --rm -it -u 0 --network msf --name msf --ip 172.19.0.3 -v "${HOME}/.msf4:/home/msf/.msf4" -p 8443-8500:8443-8500 metasploitframework/metasploit-framework
vim .bashrc
function msf-start() {
if [ ! "$(docker network ls | grep -w msf)" ];
then
docker network create --subnet=172.19.0.0/16 msf
fi
if [ ! "$(docker ps -a | grep -w postgres:11-alpine)" ];
then
docker run --ip 172.19.0.2 --network msf --rm --name db-msf -v "${HOME}/.msf4/database:/var/lib/postgresql/data" -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -e POSTGRES_DB=msf -d postgres:11-alpine
fi
docker run --rm -it -u 0 --network msf --name msf --ip 172.19.0.3 -v "${HOME}/.msf4:/home/msf/.msf4" -p 8443-8500:8443-8500 metasploitframework/metasploit-framework
}
export -f msf-start
* Проверка: существует ли сеть msf, если нет, создать сеть
* Проверка: работает ли postgres:11-alpine, если нет, запустить postgres:11-alpine
* Запустить metasploit-framework
* Экспорт функции (+ возможность обращения к функции по имени в bash скриптах)
Теперь можно запускать metasploit+postgres Docker контейнеры одной командой:
msf-start
Запустить metasploit, узнать версию и выйти:
msf-start
msf6 > version
Framework: 6.0.2-dev
Console : 6.0.2-dev
msf5 > exit
Перейти на официальный github репозиторий проекта в папку - /lib/metasploit
Сравнить вашу версию с версией указанной в описании файла version.rb
в github репозитории:
Пример:
Bump version of framework to 6.0.2
Если версия в описании выше вашей, то необходимо провести обновление:
Для обновления необходимо остановить и удалить образы metasploit-framework
, postgres
и запустить msf-start
vim msf.run-update.sh
#!/bin/bash
docker stop db-msf
docker rmi -f postgres:11-alpine
docker rmi -f metasploitframework/metasploit-framework
msf-docker
Проверяем версию и выходим из MSF:
msf6 > version
Framework: 6.0.2-dev
Console : 6.0.2-dev
msf6 > exit
Останавливаем контейнеры metasploit-framework
, postgres
vim msf.stop.sh
#!/bin/bash
docker stop db-msf
docker ps -q --filter "name=msf" | grep -q . && docker stop msf