Como Evitar que Seu Servidor se Torne uma Vitima Fácil com os Scripts de Fortalecimento do konstruktoid
Imagine que você acabou de fazer o deploy de uma instância Ubuntu nova. Tudo está rodando, o SSH está aberto, os pacotes estão atualizados. Você se sente seguro—até verificar os logs e ver tentativas infinitas de login por força bruta vindas de todo o mundo. As configurações padrão das distribuições Linux priorizam conveniência em vez de segurança, então fortalecer um sistema exige horas de ajustes em configurações de SSH, configuração de firewalls e restrição de permissões de serviços.
O autor do repositório com o handle konstruktoid decidiu simplificar essa rotina e montou scripts para fortalecimento automático do Ubuntu. Isso não é apenas um conjunto de comandos—é uma estratégia inteira para transformar um SO comum em uma fortaleza digital, com controle através do systemd como pilar central.
O que exatamente este script faz
A ideia central do projeto é minimizar a superfície de ataque o máximo possível. Se um serviço não é necessário, ele deve ser desativado. Se um serviço está rodando, ele deve ter exatamente as permissões necessárias para realizar sua tarefa.
O script verifica o sistema contra uma lista abrangente de critérios, muitos dos quais são tirados das recomendações do CIS (Center for Internet Security). Aqui estão algumas áreas onde ele traz ordem:
- Configuração de parâmetros do kernel via sysctl. Isso inclui bloqueio de encaminhamento de pacotes (IP forwarding), proteção contra spoofing e restrição de acesso às funções de depuração do kernel.
- Fortalecimento de permissões de arquivos em arquivos do sistema. O script verifica permissões em
/etc/shadow,/etc/gshadowe outras configurações críticas para que usuários comuns ou aplicações web comprometidas não consigam lê-los. - Restrição de serviços systemd. Talvez esta seja a parte mais interessante. O script usa recursos modernos de isolamento do systemd, como
PrivateTmp,NoNewPrivilegeseProtectSystem. - Gerenciamento de módulos do kernel. Protocolos raramente usados (como DCCP ou SCTP) e sistemas de arquivos que frequentemente se tornam fontes de vulnerabilidades são desativados.
Como funciona na prática
O projeto é escrito em Shell, o que o torna transparente para auditoria. Você pode simplesmente ler o código antes de executá-lo e entender exatamente o que será alterado no seu sistema. Para começar, basta clonar o repositório e executar o script principal como root.
git clone https://github.com/konstruktoid/hardening.git
cd hardening
sudo bash ubuntu.sh
A propósito, o autor tem uma versão separada para Debian, mas este repositório é focado especificamente no Ubuntu (versões 20.04, 22.04 e 24.04). Curiosamente, o script não apenas modifica configurações—ele também instala ferramentas adicionais de segurança, por exemplo, auditd para log profundo de chamadas de sistema.
Ajuste fino para suas necessidades
Executar o script diretamente em um sistema de produção ativo é uma empreitada arriscada. O fortalecimento é sempre um equilíbrio entre segurança e funcionalidade. Se você desativar a capacidade de carregar certos módulos do kernel, o Docker ou hardware de rede específico podem parar de funcionar.
O projeto inclui um arquivo de configuração onde você pode sobrescrever variáveis. Por exemplo, se você absolutamente precisa de IPv6 (que o script tenta restringir por padrão), você pode ajustar isso nas configurações. Eu recomendaria executar o script primeiro em uma VM de teste que replique completamente sua stack de produção.
Por que você deveria prestar atenção à edição systemd
Muitos guias antigos de segurança Linux ainda recomendam editar dezenas de arquivos em /etc/. A abordagem do konstruktoid é mais moderna: ela usa ativamente a modularidade do systemd. Em vez de reescrever o arquivo principal da unit de serviço, arquivos drop-in são criados. Isso permite atualizar pacotes via apt sem conflitos de configuração, enquanto suas personalizações de segurança permanecem em efeito.
O script também verifica pacotes comprometidos e sugere a remoção de software que frequentemente se torna uma falha de segurança, como implementações antigas de rsh ou telnet.
Quem achará este projeto útil
Se você administra alguns servidores para projetos pessoais, este repositório se tornará uma ótima lista de verificação. Você não precisa executar o script inteiro—você pode borrowed boas soluções para configurar parâmetros de ufw ou sysctl.
Para administradores de sistemas em empresas, esta é uma base pronta para criar sua própria golden image corporativa. Em vez de reinventar a roda, você pode pegar o trabalho do konstruktoid e adaptá-lo aos seus requisitos de conformidade.
No entanto, lembre-se: segurança é um processo. Executar o script hoje não garante proteção contra uma vulnerabilidade que surge amanhã. Mas definitivamente eleva o nível para um atacante potencial a um ponto tal que eles provavelmente vão procurar presas mais fáceis.
Por onde começar a estudar
- Dê uma olhada no arquivo
ubuntu.sh. Este é o ponto de entrada a partir do qual os outros módulos são chamados. - Explore a pasta
scripts/. A lógica é dividida por categoria: rede, sistema de arquivos, permissões. - Certifique-se de ler a seção sobre variáveis de ambiente no README para entender como controlar o comportamento do script sem editar seu código.
O projeto está vivo e é regularmente atualizado para novas versões do Ubuntu e incorpora as últimas recomendações de segurança. Este é um ótimo exemplo de como a automação transforma horas de trabalho rotineiro em uma tarefa que leva minutos.
Projetos relacionados