Servidores seguros: como configurá-los corretamente?
Configurar um servidor seguro é uma das tarefas mais importantes para os administradores. Isto aplica-se não só aos servidores autogeridos, mas também ao hardware alugado. Medidas como a proteção por senhas, configurações adequadas do SSH e atualizações regulares garantem um pacote de segurança abrangente.
Configurar um servidor seguro: quem é o responsável?
Alugar um servidor próprio é a melhor solução para desfrutar da máxima liberdade na sua configuração. Os servidores root ou servidores dedicados são uma alternativa conveniente, e muitos fornecedores disponibilizam-nos para conceder acesso à conta de utilizador root. Em ambos os casos, tarefas fundamentais como a instalação, a configuração e a manutenção do servidor são da exclusiva responsabilidade da pessoa que aluga o serviço.
Independentemente da solução escolhida, a segurança desempenha um papel essencial, pois um erro no ambiente root pode ter consequências graves. No entanto, se forem seguidas as práticas corretas, é possível estabelecer a base perfeita para obter um servidor estável, potente e seguro.
Como proteger o seu servidor: guia passo a passo
Quer pretenda proteger um servidor com Windows, Ubuntu ou Debian, existem medidas gerais que o ajudarão a estabelecer uma base sólida de segurança. Resumimos os passos mais importantes para que os possa implementar e desfrutar de um servidor seguro.
Passo 1: efetuar uma instalação mínima
Antes mesmo de tomar as precauções necessárias para configurar um servidor seguro, já podes influenciar o potencial de segurança futuro do teu projeto web. Independentemente de optares por um sistema Windows ou Linux, na instalação aplica-se o princípio de que um servidor só deve conter o software necessário para realizar as suas tarefas.
Isto deve-se ao facto de cada aplicação instalada representar um risco potencial para a segurança e poder afetar negativamente o desempenho. Para reduzir o número de ataques, devem ser instalados ou ativados apenas os componentes necessários do sistema ou deve recorrer-se apenas a software de terceiros devidamente verificado.
Passo 2: definir uma palavra-passe segura
Após a instalação, a primeira coisa que deve fazer é definir uma palavra-passe segura para o utilizador administrador (Windows) ou root (Linux). Por predefinição, não é definido qualquer valor e a conta de administrador permanece bloqueada até que seja definida uma palavra-passe. Normalmente, após a instalação, o sistema operativo solicita automaticamente a criação de uma conta de utilizador com uma palavra-passe que sirva de acesso de administrador ou root.
Se alugou um servidor Linux a um fornecedor e já tem um login de root predefinido, é importante que altere a palavra-passe imediatamente. Para tal, ligue-se ao seu servidor através de SSH e execute o seguinte comando no terminal correspondente:
passwdbashEm seguida, pode definir a sua palavra-passe segura, que deverá confirmar posteriormente. Certifique-se de que a palavra-passe é o mais longa possível e utilize uma combinação de letras, caracteres especiais e números. Recomenda-se também guardar a palavra-passe num gestor de palavras-passe, para a ter sempre disponível caso precise.
Passo 3: alterar a porta SSH
Para aceder ao servidor via SSH, utiliza-se por predefinição a porta TCP/UDP 22, que é a que aparece automaticamente aquando da instalação do sistema. Os cibercriminosos que procuram sistemas com falhas de segurança realizam os seus ataques, normalmente tentativas de registo automático, através desta porta; por isso, ao definir uma porta diferente para as ligações remotas encriptadas, é possível minimizar o risco de acessos indesejados.
Para tal, é necessário abrir o ficheiro de configuração SSH sshd_config com um editor de texto. O comando apresentado no exemplo de código seguinte abre o ficheiro com o editor padrão do Linux, ou seja, o nano:
nano /etc/ssh/sshd_configProcure a linha correspondente e substitua o número da porta 22 por um número à sua escolha. No entanto, não se esqueça de que existem outras portas padrão para outros serviços (por exemplo, a porta 80 para HTTP).
Antes de as alterações no ficheiro sshd_config entrarem em vigor, é necessário reiniciar o serviço SSH. No Debian, isto é feito com o comando /etc/init.d/ssh restart, enquanto os utilizadores do Ubuntu podem iniciar o serviço com o comando service ssh restart.
Passo 4: desativar o login via SSH para o administrador
Para garantir a segurança do servidor, recomenda-se desativar o acesso SSH para a conta root ou de administrador. Se esta conta permanecer ativada, um invasor que obtenha a palavra-passe poderá aceder ao servidor através de acesso remoto.
Antes de implementar esta medida, certifique-se de criar pelo menos mais uma conta que possa iniciar sessão no servidor. Caso contrário, poderá ficar completamente bloqueado fora do sistema. Em sistemas Linux, pode criar uma nova conta com o seguinte comando:
useradd -g users -d /home/usuario1 -m -s /bin/bash usuario1Desta forma, é criada a conta de utilizador «usuario1». Em seguida, define-se uma palavra-passe segura para esta nova conta de início de sessão:
passwd usuario1Verifique se o login com essa conta de utilizador funciona e prossiga com o passo para bloquear o acesso SSH à conta root. Para tal, será necessário aceder ao ficheiro de configuração SSH sshd_config, que pode abrir com o editor da sua escolha. Procure a entrada PermitRootLogin yes e substitua-a por PermitRootLogin no. Após reiniciar o serviço SSH, o acesso remoto à conta root estará desativado.
No ficheiro de configuração, também pode especificar quais os utilizadores que podem aceder ao servidor via SSH utilizando a diretiva AllowGroups. Para tal, crie um grupo (addgroup) e adicione os utilizadores pretendidos ao grupo (adduser). Em seguida, inclua o nome do grupo no ficheiro sshd_config (por exemplo, AllowGroups usuarios_ssh).
Passo 5: notificações por e-mail para mensagens de início de sessão via SSH
Independentemente da forma como se procede para proteger o acesso SSH, é necessário ter em conta todas as atividades remotas. Desta forma, é possível determinar se o serviço SSH do servidor em questão foi protegido corretamente. Ao mesmo tempo, uma boa monitorização das ligações estabelecidas irá alertá-lo em caso de acessos não autorizados, para que possa tomar as medidas necessárias. Para tal, basta um script de shell que envie automaticamente um e-mail de aviso para o seu endereço caso o registo remoto seja efetuado com sucesso no servidor.
Um script de exemplo para o Linux /opt/shell-login.sh, que podes criar facilmente, deve conter apenas o seguinte código:
#!/bin/bash
echo "Login en $(nombre del host) el $(date +%Y-%m-%d) a las $(date +%H:%M)"
echo "Usuario: $USER"
echo
fingerPara concluir a configuração, edite o ficheiro /etc/profile e adicione a seguinte linha:
/opt/shell-login.sh | mailx -s "Login SSH en TU-NOMBRE DEL HOST" direcciondecorreo@example.comtxtCom a seguinte configuração, garante-se que o script seja executado e que, caso o login seja bem-sucedido, seja enviado um e-mail de notificação para o endereço pretendido. A única condição é que ao script seja atribuída a permissão 755, que permite a leitura e a execução a todos os utilizadores, e a escrita apenas ao proprietário. Isto é conseguido com o seguinte comando:
chmod 755 /opt/shell-login.shbashPasso 6: bloquear as portas não utilizadas
Em geral, as portas abertas não costumam representar qualquer risco para a segurança. Uma vez que são necessárias para a comunicação com cada um dos serviços e aplicações, é mesmo essencial que determinadas portas sejam abertas, como é o caso das portas 80 e 443 para ligações HTTP ou HTTPS, ou da porta SSH selecionada. Se realizar uma instalação minimalista dos sistemas e recorrer a um número reduzido de aplicações de terceiros, o número de portas de que necessita não é excessivamente elevado. Estas interfaces abertas só representam um risco quando os programas que têm de responder apresentam falhas de segurança e os criminosos se aproveitam delas, perigo esse que aumenta se o número de aplicações for maior.
Se tiver feito uma instalação básica do sistema e tiver instalado apenas um número limitado de aplicações de terceiros, é provável que o número de portas necessárias seja reduzido.
Perante possíveis ataques, é fundamental dispor de um servidor seguro para bloquear as portas abertas que não sejam necessárias, através da configuração do seu firewall. Em geral, com o software de filtragem de pacotes iptables, todos os sistemas operativos já dispõem da ferramenta adequada para o efeito. Com a sua ajuda, é possível criar regras fixas para regular o tráfego de dados, onde também é possível, entre outros fatores, definir as portas desejadas e as indesejadas.
Passo 7: atualização periódica do software
Em geral, as vulnerabilidades de segurança conhecidas podem ser resolvidas rapidamente através da publicação de atualizações. Se se mantiver regularmente informado sobre as atualizações disponíveis para os sistemas operativos e os programas instalados e se as instalar, poderá proteger o seu servidor da melhor forma possível. Quase todos os sistemas de servidor permitem, além disso, descarregar e instalar atualizações de segurança em segundo plano.
Se pretender proteger um servidor Windows, a secção**«Windows Update»**permite-lhe definir diretrizes específicas para o processo de atualização. Assim, pode determinar quando e com que frequência devem ser procuradas atualizações, se as atualizações encontradas devem ser instaladas automaticamente ou o momento em que o sistema deve ser reiniciado. No caso dos sistemas Linux, existem scripts específicos, como o apt-listchanges ou o apticron, que informam diariamente sobre a existência de um novo pacote de software e também o descarregam. Outros scripts, como o unattended-upgrades, realizam por si próprios a instalação automática.
Certifique-se de que, durante um processo de atualização automatizado, mantém uma visão geral das atualizações realizadas, pois assim é possível detetar os erros que possam surgir durante o processo de atualização e reagir a eles.
Passo 8: proteger servidores Windows e Linux contra ataques de força bruta
Um dos ataques mais simples e mais comuns é o chamado método de força bruta. Com ele, o atacante utiliza uma ferramenta que efetua várias tentativas de início de sessão para descobrir as senhas. Quanto mais cuidado tiveres com as tuas senhas, menores serão as probabilidades de este método ser bem-sucedido.
Especialmente se ofereces um serviço com mecanismo de registo, deves ter em conta que nem todos os utilizadores são tão cuidadosos e prudentes como deveriam. Para te protegeres contra este tipo de ataques, podem ser úteis algumas ferramentas de análise, como o Fail2ban (para sistemas Linux e POSIX) ou o RdpGuard (para Windows). Estas soluções analisam os ficheiros de registo do servidor, identificam comportamentos invulgares e bloqueiam o endereço IP dos utilizadores suspeitos. Além disso, também é possível ajustar o número de tentativas falhadas necessárias para que o bloqueio ocorra ou o período de validade que este deve ter.
Passo 9: utilizar ferramentas de monitorização
Se pretende ter um servidor seguro, é igualmente importante garantir que a combinação entre hardware e software funcione da forma pretendida, não só após o arranque do ambiente do servidor, mas também a longo prazo. Uma vez que supervisionar os inúmeros processos do sistema pode ser complexo, é recomendável utilizar ferramentas de monitorização desde o início. Estas ferramentas supervisionam as atividades do servidor e emitem alertas em caso de qualquer anomalia.
Um programa simples e de configuração rápida é, por exemplo, o Monit, que pode ser facilmente instalado em muitas distribuições Linux através do sistema de gestão de pacotes. Após o arranque, a aplicação de código aberto (licença AGPL da GNU) monitoriza, de forma opcional , processos, ficheiros, nuvens, hosts, programas ou scripts, onde também entram em jogo recursos do sistema como CPU, memória ou consumo do sistema. Se forem necessárias mais informações, recomenda-se recorrer ao software de monitorização Nagios, outra solução de código aberto disponível para Linux e Windows, que pode ser ampliada através de plugins específicos para o Nagios.
Passo 10: configurar cópias de segurança
Embora as configurações recomendadas aumentem significativamente a segurança do servidor, nenhum sistema pode garantir uma proteção absoluta. Por isso, uma estratégia de cópias de segurança abrangente deve ser um pilar fundamental do seu sistema de segurança. Esta estratégia permitirá restaurar ficheiros em caso de perda ou falha do sistema.
Hoje em dia, existem ferramentas de alto desempenho que não só ajudam a criar cópias, como também a restaurá-las. Uma aplicação gratuita útil neste sentido é o programa de sincronização rsync, cujo nome deriva do protocolo homónimo e que está disponível em diferentes versões para quase todas as plataformas (macOS, Windows e Linux). Esta ferramenta mantém a cópia dos dados do servidor atualizada e, para tal, efetua alterações no ficheiro original em tempo real.
Além do backup geral do servidor, outra das tarefas mais importantes é a proteção das bases de dados.
Para proteger os backups de forma segura, recomenda-se que a pasta de backup seja guardada num suporte de armazenamento externo, como, por exemplo, um disco rígido portátil ou outro servidor, e não no próprio servidor que se pretende proteger.