// INICIALIZANDO SISTEMA...
Falar no WhatsApp

Utilizamos cookies essenciais para o funcionamento do site. Ao continuar, você concorda com nossa Política de Privacidade e com a LGPD.

CyberZ
Fale Conosco
CyberWiki / Defesa & Hardening / Hardening de Servidores Linux
● Intermediário 30 min de leitura Hardening Linux SSH Firewall SELinux AppArmor CIS Benchmark Auditoria

Hardening de Servidores Linux

Hardening é o processo de reduzir a superfície de ataque de um servidor eliminando o desnecessário e endurecendo o que resta. Um servidor Linux mal configurado é porta aberta. Este guia cobre hardening completo seguindo CIS Benchmarks e boas práticas de segurança ofensiva.

Atualização e Patch Management

# Atualizar tudo imediatamente após instalação
apt update && apt upgrade -y          # Debian/Ubuntu
yum update -y                          # RHEL/CentOS
dnf upgrade -y                         # Fedora/RHEL 8+

# Atualizações automáticas de segurança
apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades

# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Mail "[email protected]";

# Verificar vulnerabilidades conhecidas no kernel
lynis audit system
grype / trivy  # scan de pacotes instalados

Hardening de SSH

# /etc/ssh/sshd_config — configurações de segurança

Port 2222                          # mudar porta padrão
Protocol 2                         # apenas SSHv2
PermitRootLogin no                 # nunca root direto
PasswordAuthentication no          # apenas chaves
PubkeyAuthentication yes
PermitEmptyPasswords no
MaxAuthTries 3                     # tentativas antes de bloquear
LoginGraceTime 20                  # timeout de login
X11Forwarding no
AllowTcpForwarding no
GatewayPorts no
PermitUserEnvironment no
UsePAM yes
ClientAliveInterval 300            # desconectar sessão ociosa após 5min
ClientAliveCountMax 2
AllowUsers deploy admin webmaster  # whitelist de usuários
AllowGroups sshusers               # whitelist por grupo
Banner /etc/ssh/banner.txt         # banner legal

# Reiniciar SSH
systemctl restart sshd

# Gerar chave Ed25519 (mais segura que RSA)
ssh-keygen -t ed25519 -C "[email protected]"

# Fail2Ban — bloquear IPs com muitas tentativas
apt install fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600

Firewall — UFW e iptables

# UFW (Uncomplicated Firewall) — Debian/Ubuntu
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp                 # SSH na porta customizada
ufw allow 80/tcp
ufw allow 443/tcp
ufw limit 2222/tcp                 # rate limit no SSH
ufw enable
ufw status verbose

# Regras avançadas com iptables
# Bloquear port scan
iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Rate limit de conexões
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 100 -j DROP

# Bloquear IPs suspeitos (blacklist)
iptables -A INPUT -s IP_SUSPEITO -j DROP

# Salvar regras
netfilter-persistent save
iptables-save > /etc/iptables/rules.v4

Controle de Acesso e Usuários

# Política de senhas — /etc/security/pwquality.conf
minlen = 14
minclass = 3          # letras, números, símbolos
maxrepeat = 2
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1

# Expiração de senhas — /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 1
PASS_WARN_AGE 14

# Sudoers — menor privilégio
visudo
# Dar sudo apenas para comandos necessários
deploy ALL=(ALL) NOPASSWD:/usr/bin/systemctl restart nginx
deploy ALL=(ALL) NOPASSWD:/usr/bin/systemctl reload nginx

# Remover usuários e grupos desnecessários
userdel games
userdel news
userdel ftp
groupdel games

# Bloquear contas de sistema sem shell
passwd -l nobody
passwd -l daemon

# Verificar contas com UID 0 (root)
awk -F: '$3 == 0 {print}' /etc/passwd
# Deve retornar APENAS root

# Verificar contas sem senha
awk -F: '$2 == "" {print $1}' /etc/shadow

Permissões de Arquivos

# Permissões críticas
chmod 600 /etc/shadow
chmod 644 /etc/passwd
chmod 700 /root
chmod 600 /root/.ssh/authorized_keys
chmod 700 /root/.ssh

# Encontrar arquivos SUID/SGID (vetores de escalação)
find / -perm /4000 -type f 2>/dev/null    # SUID
find / -perm /2000 -type f 2>/dev/null    # SGID
# Comparar com lista de binários SUID esperados

# Encontrar arquivos world-writable
find / -perm -0002 -not -path "/proc/*" -type f 2>/dev/null

# Imutabilidade de arquivos críticos
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/sudoers
# Para modificar: chattr -i arquivo

Kernel e Parâmetros de Sistema

# /etc/sysctl.conf — hardening de rede e kernel

# Prevenir IP spoofing
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Desabilitar ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# Prevenir SYN flood
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048

# Desabilitar IP forwarding (se não for roteador)
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 0

# Proteger contra ataques de timing
net.ipv4.tcp_timestamps = 0

# Desabilitar magic SysRq
kernel.sysrq = 0

# Prevenir core dumps
fs.suid_dumpable = 0

# ASLR — randomização de endereços
kernel.randomize_va_space = 2

# Aplicar imediatamente
sysctl -p

Auditoria e Monitoramento

# auditd — sistema de auditoria do kernel Linux
apt install auditd
systemctl enable auditd

# /etc/audit/rules.d/hardening.rules
# Monitorar mudanças em arquivos críticos
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k privilege
-w /etc/ssh/sshd_config -p wa -k sshd

# Monitorar comandos de admin
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands

# Monitorar acesso a arquivos sensíveis
-w /var/log/auth.log -p r -k auth_access

# Consultar eventos de auditoria
auditctl -l           # regras ativas
ausearch -k identity  # eventos por chave
aureport --auth       # relatório de autenticação

# Logs centralizados
# /etc/rsyslog.conf — enviar logs para servidor central
*.* @@siem-server:514   # TCP
*.* @siem-server:514    # UDP

SELinux e AppArmor

# SELinux (RHEL/CentOS/Fedora)
getenforce          # Enforcing / Permissive / Disabled
setenforce 1        # ativar Enforcing

# /etc/selinux/config
SELINUX=enforcing

# AppArmor (Ubuntu/Debian)
apt install apparmor apparmor-utils
aa-status
aa-enforce /etc/apparmor.d/*  # colocar todos em enforce mode

# Benefício: mesmo que haja RCE, processo fica confinado
# Não pode acessar arquivos fora do perfil permitido

Verificação — CIS Benchmark

# Lynis — auditoria automatizada de segurança
apt install lynis
lynis audit system
# Gera score e lista de melhorias priorizadas

# OpenSCAP — conformidade com CIS Benchmark oficial
apt install openscap-scanner scap-security-guide
oscap xccdf eval \
  --profile xccdf_org.ssgproject.content_profile_cis \
  --results scan.xml \
  /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml
Quer testar isso na prática?
A CyberZ realiza testes autorizados de segurança usando as técnicas descritas neste artigo — e muito mais. Identifique suas vulnerabilidades antes que os invasores o façam.
Falar com Especialista