3. Install MISP Docker
Antes de começar¶
Para seguir os próximos passos precisamos ter realizado os seguintes passos:
- Criar servidor
- Criar usuário
- Adicionar chave pública
- Validar acesso
Em seguida vamos realizar a conexão via SSH usando a chave pública criada anteriormente.
Clonando repositorio do MISP Docker¶
Vamos ir até o diretório em que queremos realizar o clone(baixar o projeto), vai da sua preferência, mas irei usar o local.
Vou criar um diretório chamado LABS e vou clonar o projeto nesse diretório.
Vamos instalar o git, caso já tenha instalado não tem problemas.
$ sudo apt update
$ sudo apt install git -y
Vamos agora clonar o MISP Docker.
git clone https://github.com/MISP/misp-docker
Já temos nosso código necessário para dar início ao nosso MISP.
Configurações iniciais¶
Já dentro do diretório clonado do MISP vamos realizar algumas configurações necessárias, nesse caso vamos alterar o arquivo template.env e criar um arquivo chamado .env.
cp template.env .env
Vamos ver como é esse arquivo completo por padrão:
MYSQL_HOST=misp_db
MYSQL_DATABASE=misp
MYSQL_USER=misp
MYSQL_PASSWORD=misp
MYSQL_ROOT_PASSWORD=misp
MISP_ADMIN_EMAIL=[email protected]
MISP_ADMIN_PASSPHRASE=admin
MISP_BASEURL=localhost
POSTFIX_RELAY_HOST=relay.fqdn
TIMEZONE=Europe/Brussels
DATA_DIR=./data
Nesse arquivo vamos realizar configurações usadas em nossa infraestrutura.
Informações do Banco de Dados:¶
MYSQL_HOST¶
Servidor Mysql usado como banco de dados, pelo docker trabalhar com nomes, iremos deixar com esse mesmo nome.
MYSQL_HOST=misp_db
Caso desejar usar outro servidor Mysql, será necessario colocar o nome ou IP.
MYSQL_DATABASE¶
Nome da Base de Dados que vamos usar no MISP, por padrão irei deixar como misp.
MYSQL_DATABASE=misp
Caso prefira outro nome fique a vontade para alterar.
MYSQL_USER¶
Usuário usado no Banco de Dados vem por padrão como misp, mas irei deixar com esse nome.
MYSQL_USER=misp
Caso prefira outro nome fique a vontade para alterar.
MYSQL_PASSWORD¶
O MYSQL_PASSWORD é a senha usada pelo usuário usado no Banco de Dados, eu recomendo a criação aleatória dessa senha e assim evitando problemas futuros.
Vamos gerar usando gpg.
gpg --gen-random --armor 1 32
O resultado vai ser algo como:
dW04q/VaYxPLkyLKQSBkI5uJu3lhAHBE7twNkMUVN3g=
O resultado ficaria dessa forma:
MYSQL_PASSWORD="dW04q/VaYxPLkyLKQSBkI5uJu3lhAHBE7twNkMUVN3g="
MYSQL_ROOT_PASSWORD¶
A MYSQL_ROOT_PASSWORD é a senha do usuário root, tome cuidado com essa senha pois com ela pode ter acesso total ao seu banco de dados.
gpg --gen-random --armor 1 32
O resultado vai ser algo como:
3rbLJJseE+KJE7fkjiJT7qe6dUlaKc63pIHgCE+XeAo=
O resultado ficaria dessa forma:
MYSQL_ROOT_PASSWORD="3rbLJJseE+KJE7fkjiJT7qe6dUlaKc63pIHgCE+XeAo="
Informações do Usuário Admin¶
Vamos configurar com os valores abaixo os valores default do usuário admin do MISP.
MISP_ADMIN_EMAIL¶
Esse é o email usado pelo administrador do MISP.
Por padrão ele vem dessa forma, podemos deixar assim e alterar posteriormente.
MISP_ADMIN_EMAIL=[email protected]
Você pode alterar esse por um email de sua escolha.
MISP_ADMIN_PASSPHRASE¶
Essa é a senha usada para o usuário acima que irá administrar o banco de dados. Independente da senha que for adicionada, vamos alterar no primeiro login.
Dessa forma não temos problema em deixar a senha admin, já que vamos alterar quando entrar na primeira vez no MISP.
MISP_ADMIN_PASSPHRASE=admin
Caso prefira alterar o valor padrão, sem problemas.
Informações da Base URL¶
MISP_BASEURL¶
Essa é a URL usada pelo MISP, vamos deixar assim devido ao uso de Docker, mas vamos alterar no sistema posteriormente.
MISP_BASEURL=localhost
Informações para Envio de Email¶
POSTFIX_RELAY_HOST¶
Responsavel pelo envio de emails, por ser um relay podemos enviar email do gmail por exemplo.
POSTFIX_RELAY_HOST=relay.fqdn
Posteriormente iremos configurar o envio de email e a criação de um servidor usando Docker.
Informações do Horário usado no MISP¶
TIMEZONE¶
Timezone usado pelo seu MISP, por padrão ele tem o valor:
TIMEZONE=Europe/Brussels
Vamos alterar para o valor abaixo:
TIMEZONE=America/Sao_Paulo
Usei como exemplo o site abaixo: - https://www.zeitverschiebung.net/en/timezone/america--sao_paulo
Criando diretório para armazenamento de volumes¶
DATA_DIR¶
Local onde será armazenado os arquivos do MISP, isso acontece devido ao Docker trabalhar de forma isolada e assim caso o container seja reiniciado os dados continuam salvos.
Aviso: O uso de volumes é muito importante caso queira a persistência de dados, como avisei acima, caso não seja feita essa configuração será perdido os dados.
Irei criar um diretório no meu servidor HOST no local /srv/LABS/MISP:
$ mkdir /srv/LABS/MISP
Realizando as configurações necessárias - .env¶
Irei usar o editor nano para realizar a edição do arquivo via linha de comando, veja um exemplo de como ficou meu arquivo de configuração.
MYSQL_HOST=misp_db
MYSQL_DATABASE=misp
MYSQL_USER=misp
MYSQL_PASSWORD=h9BSaYB5pfvnQQPTWsgQFU4oTYwsVp9vVoMv0vy4kCc=
MYSQL_ROOT_PASSWORD=3rbLJJseE+KJE7fkjiJT7qe6dUlaKc63pIHgCE+XeAo=
MISP_ADMIN_EMAIL=[email protected]
MISP_ADMIN_PASSPHRASE=+5r0sYdPAVOXwrxCpdDZrBc6YxvnIjHY6oGkKcMwcy4=
MISP_BASEURL=localhost
POSTFIX_RELAY_HOST=relay.fqdn
TIMEZONE=America/Sao_Paulo
DATA_DIR=/srv/LABS/MISP
Configurações necessárias - docker-compose.yml¶
Por padrão esse é o arquivo docker-compose.yml que temos no repositório do projeto.
version: '3'
services:
web:
build: web
depends_on:
- db
container_name: misp_web
image: misp:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./web/wait-for-it.sh:/usr/local/bin/wait-for-it.sh:ro
- /dev/urandom:/dev/random
- ${DATA_DIR}/web:/var/www/MISP
environment:
- MYSQL_HOST=${MYSQL_HOST}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MISP_ADMIN_EMAIL=${MISP_ADMIN_EMAIL}
- MISP_ADMIN_PASSPHRASE=${MISP_ADMIN_PASSPHRASE}
- MISP_BASEURL=${MISP_BASEURL}
- POSTFIX_RELAY_HOST=${POSTFIX_RELAY_HOST}
- TIMEZONE=${TIMEZONE}
entrypoint: "wait-for-it.sh -t 0 -h db -p 3306 -- /run.sh"
db:
container_name: misp_db
image: mysql/mysql-server:5.7
restart: unless-stopped
volumes:
- ${DATA_DIR}/db:/var/lib/mysql
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
Vamos alterar apenas 2 pontos, que são:
ports:
- "80:80"
- "443:443"
Posteriormente iremos instalar o nginx, por padrão ele vai usar essa as portas 80 e 443.
Devido a isso vamos alterar as portas de saída do nosso misp e alterar invés de usar a 80 e 443 para 8080 e 4433.
ports:
- "8080:80"
- "4433:443"
Build da imagem Docker¶
Depois de realizar as configurações necessárias, vamos realizar o build da imagem e podemos realizar isso da seguinte forma:
$ docker-compose build --no-cache
Podemos ver as imagens disponíveis usando o comando:
$ docker images
Subindo MISP¶
Vamos agora subir nosso ambiente MISP usando o docker-compose e assim ver finalmente nosso MISP online.
$ docker-compose up -d
Podemos ver quais container estão rodando usando o comando:
$ docker ps
No caso meu IP do servidor é o 134.122.126.167 e como não tem regra de firewall por enquanto está acessível na porta 8080 e 4433.
Configurações básicas¶
Por mais que seja alterada as configurações de email de administrador e senha do administrador, para o primeiro acesso será usado as credenciais:
- admin@admin.test
- admin
Vamos adicionar os dados abaixo e escolher uma nova senha segura.
- admin@admin.test
- admin