Ir para o conteúdo

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:

Vamos adicionar os dados abaixo e escolher uma nova senha segura.