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):
- ssh [email protected]_server_ip
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:
- ssh [email protected]_server_ip
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:
- ssh [email protected]_server_ip
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 su
do 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.