Configuração inicial de servidor com o CentOS 8

Introdução

Ao criar um novo servidor com CentOS 8 pela primeira vez, há alguns passos de configuração que você deve seguir logo no início – como parte da configuração básica. Isso aumentará a segurança e usabilidade do seu servidor e dará a você uma base sólida para as ações subsequentes.

Passo 1 — Fazendo login como root

Para fazer login no seu servidor, você precisará saber o endereço IP público do seu servidor. Também precisará da senha ou, caso tenha instalado uma chave SSH para autenticação, da chave privada para a conta do usuário root. Se ainda não estiver conectado ao seu servidor, talvez você queira seguir nosso guia de início rápido sobre como se conectar ao seu Droplet com o SSH, o qual trata desse processo em detalhes.

Se ainda não estiver conectado ao seu servidor, faça login como usuário root, só que, desta vez, usando o seguinte comando (substitua a parte destacada do comando pelo endereço IP público do seu servidor):

Aceite o aviso sobre a autenticidade do host, se ele for exibido. Se estiver usando autenticação por senha, insira sua senha root para fazer login. Se estiver usando uma chave SSH, protegida por frase secreta, você pode ser solicitado a digitar a frase secreta na primeira vez que usar a chave a cada sessão. Se esta for a primeira vez que você se conecta ao servidor com com uma senha, pode ser que também seja solicitado a alterar a senha root.

Sobre o usuário root

O usuário root é o usuário administrativo em um ambiente Linux e tem privilégios bastante amplos. Por conta dos privilégios elevados da conta root, desencorajamos sua utilização de maneira regular. Isto se dá porque parte da autoridade inerente à conta root é a capacidade de fazer alterações muito destrutivas, mesmo por acidente.

Como tal, o próximo passo é configurar uma conta de usuário alternativa com um escopo menor de influência para o trabalho do dia a dia. Essa conta ainda poderá obter privilégios maiores quando necessário.

Passo 2 — Criando um novo usuário

Assim que estiver conectado como usuário root, crie uma nova conta de usuário que usaremos para fazer login a partir de agora.

Este exemplo cria um novo usuário chamado sammy, mas você deve substituí-lo por qualquer nome de usuário que preferir:

  • adduser sammy

Em seguida, defina uma senha forte para o usuário sammy:

  • passwd sammy

Será solicitado que você digite a senha duas vezes. Após fazer isso, seu usuário estará pronto para ser usado, mas primeiro, vamos dar a esse usuário privilégios para usar o comando sudo. Isso nos permitirá executar os comandos como usuário root, quando necessário.

Passo 3 — Concedendo privilégios administrativos

Agora, temos uma nova conta de usuário com privilégios de conta regular. No entanto, às vezes, pode ser que precisemos realizar tarefas administrativas.

Para evitar ter que sair do nosso usuário normal e fazer login com a conta root, podemos configurar o que é conhecido como “superusuário”, ou privilégios root para nossa conta normal. Isso permitirá que nosso usuário normal execute comandos com privilégios administrativos, ao colocar a palavra sudo antes de cada comando.

Para adicionar esses privilégios ao nosso novo usuário, precisamos adicionar o novo usuário ao grupo wheel. Por padrão, no CentOS 8, os usuários que pertencem ao grupo wheel têm permissão para usar o comando sudo.

Como root, execute este comando para adicionar seu novo usuário ao grupo wheel (substitua a palavra destacada pelo seu novo nome de usuário):

  • usermod -aG wheel sammy

Agora, quando conectado com o usuário regular, você pode digitar sudo antes dos comandos para executar ações com privilégios de superusuário.

Passo 4 — Configurando um firewall básico

Os firewalls fornecem um nível básico de segurança para o seu servidor. Esses aplicativos são responsáveis por negar tráfego para cada porta do seu servidor, exceto para as portas/serviços que você tenha aprovado explicitamente. O CentOS tem um serviço chamado firewalld para realizar essa função. Uma ferramenta chamada firewall-cmd é usada para configurar as políticas de firewall do firewalld.

Nota: se os seus servidores estiverem em execução na plataforma da DigitalOcean, você pode utilizar, de maneira opcional, os Firewalls da DigitalOcean em nuvem, em vez do firewall UFW. Recomendamos que use apenas um firewall de cada vez para evitar regras conflitantes que podem ser difíceis de difícil depuração.

Primeiro, instale o firewalld:

  • dnf install firewalld -y

A configuração padrão do firewalld permite conexões ssh, logo, podemos ativar o firewall imediatamente:

  • systemctl start firewalld

Verifique o status do serviço para garantir que ele foi iniciado.

  • systemctl status firewalld
Output● firewalld.service - firewalld - dynamic firewall daemon    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)    Active: active (running) since Thu 2020-02-06 16:39:40 UTC; 3s ago      Docs: man:firewalld(1)  Main PID: 13180 (firewalld)     Tasks: 2 (limit: 5059)    Memory: 22.4M    CGroup: /system.slice/firewalld.service            └─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid 

Note que ele está active (ativo) e enabled (habilitado), o que significa que ele iniciará por padrão caso o servidor for reiniciado.

Agora que o serviço está em funcionamento, podemos usar o utilitário firewall-cmd para obter e definir informações de política para o firewall.

Primeiro, vamos listar quais serviços já foram autorizados:

  • firewall-cmd --permanent --list-all
Outputpublic (active)   target: default   icmp-block-inversion: no   interfaces: eth0 eth1   sources:   services: cockpit dhcpv6-client ssh   ports:   protocols:   masquerade: no   forward-ports:   source-ports:   icmp-blocks:   rich rules: 

Para ver os serviços adicionais que você pode habilitar pelo nome, digite:

  • firewall-cmd --get-services

Para adicionar um serviço que deve ser permitido, use o sinalizador --add-service:

  • firewall-cmd --permanent --add-service=http

Isso adicionaria o serviço http e permitiria o tráfego TCP de entrada na porta 80. A configuração será atualizada depois que você recarregar o firewall:

  • firewall-cmd --reload

Lembre-se de que você precisa abrir explicitamente o firewall (com serviços ou portas) para quaisquer serviços adicionais que possa configurar mais tarde.

Passo 5 — Habilitando o acesso externo ao seu usuário regular

Agora que temos um usuário não root regular para o uso diário, precisamos garantir que possamos usá-lo para conexão via SSH no nosso servidor.

Nota: até verificar se você pode fazer login e usar o sudo com seu novo usuário, recomendamos que fique conectado como root. Desta forma, caso tenha problemas, pode solucioná-los e fazer as alterações necessárias como root. Se estiver usando um Droplet da DigitalOcean e tiver problemas com sua conexão root via SSH root, você pode fazer login no Droplet usando o console da DigitalOcean.

O processo para configurar o acesso via SSH para seu novo usuário depende de se a conta root do seu servidor usa uma senha ou chaves SSH para autenticação.

Se a conta root utiliza autenticação por senha

Se você fez login na sua conta root usando uma senha, então a autenticação por senha está habilitada para o SSH. Você pode conectar-se via SSH à sua nova conta de usuário, abrindo uma nova sessão no terminal e usando o SSH com seu novo nome de usuário:

Após digitar a senha do seu usuário regular, você estará conectado. Lembre-se, caso precise executar um comando com privilégios administrativos, digite sudo antes dele, desta forma:

  • sudo command_to_run

Será solicitado que você digite a senha do seu usuário regular ao usar o sudo pela primeira vez em cada sessão (e periodicamente após isso).

Para melhorar a segurança do seu servidor, recomendamos fortemente que configure chaves SSH, em vez de usar autenticação por senha. Siga nosso guia sobre como configurar as chaves SSH no CentOS 8 para aprender como configurar autenticação baseada em chaves.

Se a conta root utiliza autenticação por chave SSH

Se você fez login na sua conta root usando chaves SSH, então a autenticação por senha está desabilitada para SSH. Você precisará adicionar uma cópia da sua chave pública ao arquivo ~/.ssh/authorized_keys do novo usuário para fazer login com sucesso.

Como sua chave pública já está no arquivo ~/.ssh/authorized_keys da conta root no servidor, podemos copiar aquele arquivo e a estrutura do diretório para nossa nova conta de usuário.

A maneira mais simples de copiar os arquivos com a propriedade e permissões corretas é com o comando rsync. Isso irá copiar o diretório .ssh do usuário root, preservar as permissões e modificar os proprietários dos arquivos, tudo em um único comando. Certifique-se de alterar as partes destacadas do comando abaixo para corresponder ao nome do seu usuário regular:

Nota: o comando rsync trata as fontes e os destinos que terminam com uma barra à direita de maneira diferente daqueles sem uma barra. Ao usar o rsync abaixo, certifique-se de que o diretório fonte (~/.ssh) não inclui uma barra à direita (verifique para garantir que não está usando ~/.ssh/).

Se adicionar uma barra à direita acidentalmente no comando, o rsync copiará o conteúdo do diretório ~/.ssh da conta root para o diretório home do usuário sudo, em vez copiar toda a estrutura do diretório ~/.ssh. Os arquivos ficarão no local errado e o SSH não conseguirá encontrar e usar esses arquivos.

  • rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

Agora, de volta em um novo terminal em sua máquina local, abra uma nova sessão SSH com seu usuário não root:

Você deve estar conectado com a conta do novo usuário, sem usar uma senha. Lembre-se, caso precise executar um comando com privilégios administrativos, digite sudo antes dele, desta forma:

  • sudo command_to_run

Será solicitado que você digite a senha do seu usuário regular ao usar o sudo pela primeira vez em cada sessão (e periodicamente após isso).

Conclusão

Neste ponto, você possui uma base sólida para seu servidor. Agora, você já pode instalar qualquer software que precisar em seu servidor.