=======================================
Configurações no sistema hospedeiro
=======================================
É necessário ter instalado o **Docker Engine** e `Docker Compose `_.
Segurança do servidor
=====================
Acesso remoto
-------------
O primeiro passo é criar uma chave ``ssh`` para acessar o servidor.
Vamos utilizar o padrão **ed25519**, o qual é um padrão de chaves públicas mais recente.
Para criar uma nova chave, no terminal, digite o seguinte:
.. note::
Substitua ``user`` por seu nome ou identificador único.
A chave será criada no seu diretório ``home`` dentro da pasta ``.ssh``.
.. code-block:: bash
ssh-keygen -t ed25519 -q -f ~/.ssh/_ed25519
Copie a sua chave para o servidor, para possibilitar fazer login sem a utilização de senhas:
.. code-block:: bash
ssh-copy-id -i ~/.ssh/_ed25519 usuário-no-servidor@ip-ou-nome-do-servidor
No servidor, verifique se a chave está configurada corretamente:
.. code-block:: bash
cat ~/.ssh/authorized_keys
A chave deve ser a mesma que foi criada com o comando ``ssh-keygen``:
.. important::
**Nota: apenas copie a chave pública para o servidor, a qual tem a extensão .pub**
No seu computador, verifique se a chave corresponde a que está no servidor:
.. code-block:: bash
cat ~/.ssh/_ed25519
Teste se está funcionando (não deve solicitar senha ao fazer login):
.. code-block:: bash
ssh -i ~/.ssh/_ed25519 usuário-no-servidor@ip-ou-nome-do-servidor
O próximo passo é fazer alteração no serviço do ``ssh`` no servidor para que aceite apenas login utilizando chave pública.
Ou seja, apenas quem tiver a sua chave pública no servidor poderá realizar o login no mesmo.
Serviço sshd no servidor
-------------------------
No arquivo ``/etc/ssh/sshd_config``, modifique as seguintes variáveis (ou descomente) para que tenham os seguintes valores:
.. code-block:: bash
PermitRootLogin prohibit-password
PubkeyAuthentication yes
PasswordAuthentication no
Dessa maneira, será possível acessar com o usuário ``root`` mas sem a utilização de senha, apenas com autenticação de chaves.
Considere alterar a porta que o serviço é executado e o número máximo de tentativas permitidas, nas variáveis `Port` e `MaxAuthTries` respectivamente:
.. code-block:: bash
Port 22003 # Porta aleatória
MaxAuthTries 3 # Número máximo de tentativas
Será necessário reiniciar o serviço para que as modificações tenham efeito.
Em sistemas debian like poderá ser realizado com o comando ``systemctl reload sshd``
Fail2Ban
--------
De maneira a bloquear tentativas de acessos não autorizados ao servidor, ou ataques de negação de serviço, é possível configurar o **Fail2Ban** para bloquear esses endereços.
Próximo passo
-------------
Realizar as configurações necessárias no registro de nomes (DNS).