Sobre nós Guias Projetos Contactos
Админка
please wait

Introdução

A segurança de servidores não é uma tarefa pontual, mas sim uma prática contínua. Uma única configuração incorreta ou vulnerabilidade sem patch pode levar ao comprometimento total do sistema. Este guia aborda práticas essenciais de hardening de servidores Linux que constituem a base de uma infraestrutura segura.

Configuração Inicial do Servidor

Criar Utilizador Não-Root

# Criar utilizador
adduser deployer
# Adicionar ao grupo sudo
usermod -aG sudo deployer
# Ou, em CentOS/RHEL
usermod -aG wheel deployer
# Testar acesso sudo
su - deployer
sudo whoami

Configurar SSH

# Gerar chave SSH na máquina local
ssh-keygen -t ed25519 -C "[email protected]"
# Copiar a chave pública para o servidor
ssh-copy-id -i ~/.ssh/id_ed25519.pub deployer@server

Edite /etc/ssh/sshd_config:

# Desativar login do root
PermitRootLogin no
# Desativar autenticação por palavra-passe
PasswordAuthentication no
# Usar apenas chave SSH
PubkeyAuthentication yes
# Desativar palavras-passe vazias
PermitEmptyPasswords no
# Limitar utilizadores que podem usar SSH
AllowUsers deployer
# Alterar a porta predefinida (opcional)
Port 2222
# Definições de timeout
ClientAliveInterval 300
ClientAliveCountMax 2
# Desativar encaminhamento X11
X11Forwarding no

Reinicie o SSH:

sudo systemctl restart sshd

Configuração da Firewall

UFW (Ubuntu/Debian)

# Instalar
sudo apt install ufw
# Políticas predefinidas
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Permitir SSH (antes de ativar!)
sudo ufw allow 22/tcp
# Ou porta personalizada
sudo ufw allow 2222/tcp
# Permitir tráfego web
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Ativar firewall
sudo ufw enable
# Verificar estado
sudo ufw status verbose

firewalld (CentOS/RHEL)

# Iniciar e ativar
sudo systemctl start firewalld
sudo systemctl enable firewalld
# Adicionar serviços
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# Confiar na rede interna
sudo firewall-cmd --zone=trusted --add-source=10.0.0.0/8 --permanent
# Recarregar
sudo firewall-cmd --reload
# Verificar estado
sudo firewall-cmd --list-all

Manter o Sistema Atualizado

Atualizações Automáticas de Segurança

Ubuntu/Debian

# Instalar unattended-upgrades
sudo apt install unattended-upgrades
# Configurar
sudo dpkg-reconfigure -plow unattended-upgrades

Edite /etc/apt/apt.conf.d/50unattended-upgrades:

Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";

CentOS/RHEL

# Instalar
sudo dnf install dnf-automatic
# Configurar apenas para atualizações de segurança
sudo vi /etc/dnf/automatic.conf
# Definir: upgrade_type = security
# Ativar temporizador
sudo systemctl enable --now dnf-automatic.timer

Fail2ban — Proteção contra Força Bruta

# Instalar
sudo apt install fail2ban # Debian/Ubuntu
sudo dnf install fail2ban # CentOS/RHEL
# Configurar
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Edite /etc/fail2ban/jail.local:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
banaction = iptables-multiport
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
# Iniciar
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Verificar estado
sudo fail2ban-client status sshd

Segurança de Utilizadores e Permissões

Políticas de Palavras-passe

Edite /etc/login.defs:

PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14
PASS_MIN_LEN 12

Proteger Ficheiros Sensíveis

# Restringir o ficheiro shadow
sudo chmod 640 /etc/shadow
# Proteger o cron
sudo chmod 700 /etc/crontab
# Restringir o diretório SSH
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Monitorizar Acesso Privilegiado

# Registar comandos sudo
echo 'Defaults logfile="/var/log/sudo.log"' | sudo tee -a /etc/sudoers.d/logging

Hardening de Serviços

Desativar Serviços Desnecessários

# Listar serviços ativados
sudo systemctl list-unit-files --type=service --state=enabled
# Desativar serviços desnecessários
sudo systemctl disable bluetooth
sudo systemctl disable cups
sudo systemctl disable avahi-daemon

Remover Pacotes Não Utilizados

# Debian/Ubuntu
sudo apt autoremove
# CentOS/RHEL
sudo dnf autoremove

Deteção de Intrusões

AIDE (Advanced Intrusion Detection Environment)

# Instalar
sudo apt install aide # Debian/Ubuntu
# Inicializar a base de dados
sudo aideinit
# Verificar alterações
sudo aide --check

Monitorizar Logs

# Instalar logwatch
sudo apt install logwatch
# Configurar e-mails diários
sudo vi /etc/cron.daily/00logwatch
# Adicionar: /usr/sbin/logwatch --output mail --mailto [email protected] --detail high

Segurança do Kernel

Hardening com sysctl

Crie /etc/sysctl.d/99-security.conf:

# Desativar encaminhamento de IP (a menos que seja router/VPN)
net.ipv4.ip_forward = 0
# Ignorar redirecionamentos ICMP
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Desativar source routing
net.ipv4.conf.all.accept_source_route = 0
# Ativar proteção contra SYN flood
net.ipv4.tcp_syncookies = 1
# Ignorar broadcasts de ping
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Registar pacotes martian
net.ipv4.conf.all.log_martians = 1
# Desativar IPv6 (se não for necessário)
net.ipv6.conf.all.disable_ipv6 = 1

Aplicar:

sudo sysctl -p /etc/sysctl.d/99-security.conf

AppArmor/SELinux

AppArmor (Ubuntu)

# Verificar estado
sudo aa-status
# Aplicar perfis
sudo aa-enforce /etc/apparmor.d/*

SELinux (CentOS/RHEL)

# Verificar estado
getenforce
# Definir como enforcing (editar /etc/selinux/config)
SELINUX=enforcing
# Verificar denials
sudo ausearch -m avc -ts today

Auditoria e Monitorização

auditd

# Instalar
sudo apt install auditd # Debian/Ubuntu
# Monitorizar ficheiros sensíveis
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/shadow -p wa -k shadow_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
# Tornar regras persistentes
# Adicionar a /etc/audit/rules.d/audit.rules
# Ver logs de auditoria
sudo ausearch -k passwd_changes

Verificação de Backups

# Criar script de backup
cat << 'EOF' > /usr/local/bin/backup-verify.sh
#!/bin/bash
BACKUP_DIR=/backup
DATE=$(date +%Y%m%d)
# Criar backup
tar -czf $BACKUP_DIR/etc-$DATE.tar.gz /etc
# Verificar backup
tar -tzf $BACKUP_DIR/etc-$DATE.tar.gz > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Backup verified successfully"
else
echo "Backup verification FAILED" | mail -s "Backup Alert" [email protected]
fi
EOF
chmod +x /usr/local/bin/backup-verify.sh

Checklist de Segurança

Configuração Inicial

  • [ ] Criar utilizador não-root com sudo
  • [ ] Desativar login SSH do root
  • [ ] Ativar apenas autenticação por chave SSH
  • [ ] Configurar firewall (negar por predefinição)
  • [ ] Instalar e configurar fail2ban

Contínuo

  • [ ] Ativar atualizações automáticas de segurança
  • [ ] Rever logs regularmente
  • [ ] Monitorizar alterações não autorizadas
  • [ ] Testar backups mensalmente
  • [ ] Auditar contas de utilizador trimestralmente
  • [ ] Atualizar e rodar chaves SSH anualmente

Conclusão

A segurança de servidores requer múltiplas camadas de defesa. Comece pelo hardening do SSH e pela configuração da firewall, adicione proteção contra força bruta com fail2ban e implemente deteção de intrusões. Atualizações e monitorização regulares garantem que a postura de segurança se mantém robusta ao longo do tempo.

 
 
 
Языки
Темы
Copyright © 1999 — 2026
ZK Interactive