Esse é um artigo que é fruto da experiência para que novos erros não sejam cometidos. Aqui estão algumas das coisas mais comuns que acontecem com servidores e como esses erros são mitigados.
Esquecer de colocar máscaras para novos usuários
Este é um erro clássico dentro de alguns sistemas onde é necessário ter mais privacidade.
✅ Correção
Para isso edite o arquivo /etc/login.defs
unmask 027
Adendo
Talvez você precise criar usuários sem permissão de login na máquina. Para isso execute o comando abaixo na criação do usuário:
sudo useradd -s /sbin/nologin -M nome_do_usuario
a opção -s /sbin/nologin: Garante que se ele tentar logar por SSH ou terminal, o sistema recusará o acesso imediatamente.
a opção -M: Não cria o diretório /home/nome_do_usuario (opcional, mude para -m se quiser que ele tenha uma pasta home compartilhada).
Se você já cadastrou o usuário no sistema e ele possui permissões de login, rode o comando abaixo para retirar:
sudo usermod -s /sbin/nologin nome_do_usuario
Rodar serviços como root
Quando você está desenvolvendo qualquer "simplificação" é considerada válida. Imagine um pequeno bug no seu software que compromete o sistema inteiro. Pois é... vamos corrigir isso.
✅ Correção
Criando um usuário específico para o serviço:
sudo useradd -r -s /bin/false appuser
Não obrigar a complexidade de senhas
Eu, particularmente, não sou muito fã deste tipo de coisa. Sou inclinado a utilizar MFA, FIDO, etc. É mais seguro e mais prático. Mas é uma alternativa válida:
✅ Correção
sudo dnf install libpwquality
sudo nano /etc/security/pwquality.conf
Edite os seguintes parâmetros:
minlen = 12
ucredit = - 1
lcredit = - 1
dcredit = - 1
💡 As alterações serão aplicadas no próximo login. Verifique se há alguma linha conflitante antes de ativar.
Permitir scripts graváveis em /usr/local/bin
Caso algum script seja gravável por qualquer um nesta pasta, qualquer alteração do script para fazer tarefas indesejadas (sim, estou sendo generoso!) é um pulo.
✅ Correção
chmod o-w /usr/local/bin/*
Validar se não existe nenhum herói da resistência:
find /usr/local/bin -perm -0002
Deixar serviços não utilizados rodando
Bom... isso dispensa comentários. Vamos as correções:
✅ Correção
sudo systemctl list-units --type =service --state=running
sudo systemctl disable <serviço>
sudo systemctl stop <serviço>
Eu ainda sou a favor de utilizar umask. Mas é para casos extremos.
Com esses comandos você colocará mais proteção no seu servidor.