FERRAMENTAS LINUX: Samba no Ubuntu: guia definitivo para verificar, corrigir e blindar seu servidor contra falhas de execução remota de código

quinta-feira, 28 de maio de 2026

Samba no Ubuntu: guia definitivo para verificar, corrigir e blindar seu servidor contra falhas de execução remota de código

 

Ubuntu


Guia prático e atemporal para proteger seu Samba no Ubuntu: comandos reais de verificação, script bash que aplica o patch sozinho e bloqueios alternativos para quando não dá para atualizar. Inclui indicação de livro especializado. 


Quando uma vulnerabilidade grave no Samba é descoberta, você vê as mesmas notícias em todo lugar. Passam semanas, meses, e aquele conteúdo perde completamente o valor — parece até um daqueles pôsteres de evento que ficam amarelados na parede.

A notícia original foi publicada em 26 de maio de 2026, revelando seis falhas críticas no Samba: três delas permitiam que um invasor remoto executasse código arbitrário no seu servidor sem autenticação. Isso, traduzindo: alguém podia tomar controle total da sua máquina pela rede.

Aqui você não vai ler apenas o que aconteceu. Você vai encontrar comandos, scripts e bloqueios alternativos que continuam funcionando daqui um, dois ou três anos — independentemente da data desta vulnerabilidade.


Como verificar se você está vulnerável

Antes de sair aplicando correção, você precisa saber se seu servidor realmente está exposto. Execute os comandos abaixo como root ou com sudo. Eles funcionam em qualquer Ubuntu 20.04 LTS, 22.04 LTS, 24.04 LTS e versões mais recentes.

Veja qual versão do Samba está rodando

O comando mais direto mostra a versão exata do seu smbd (o coração do Samba):
bash
smbd --version

Se o Samba estiver instalado, a saída será algo como Version 4.15.13-Ubuntu. Esse número é o que você vai comparar com as versões corrigidas.

Compare com as versões seguras

Use apt policy para ver exatamente qual pacote está instalado e quais atualizações estão disponíveis:
bash
apt policy samba



Se a versão que você tem é anterior a essas, você está vulnerável..

Verifique se o serviço está rodando e exposto externamente

Dois comandos rápidos dizem se o Samba está ativo e se tem porta aberta para o mundo:
bash
systemctl status smbd --no-pager
sudo netstat -tulpn | grep ":445\|:139"


Se a porta 445 (SMB principal) aparecer com endereço 0.0.0.0 ou ::, qualquer um na rede pode tentar explorar seu servidor.

 Script de automação para aplicar a correção

Este script bash verifica, atualiza e registra tudo em log. Ele funciona em Ubuntu 20.04 e superiores. Salve como fix-samba.sh, dê permissão de execução e rode como root.
bash
#!/bin/bash
# fix-samba.sh - Verifica e aplica correção de segurança do Samba
# Compatível com Ubuntu 20.04 LTS, 22.04 LTS, 24.04 LTS e superiores

LOG_FILE="/var/log/samba-security-fix.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

log() {
    echo "[$DATE] $1" | tee -a "$LOG_FILE"
}

log "Iniciando verificação de segurança do Samba..."

# Verifica se é Ubuntu
if ! grep -qi "ubuntu" /etc/os-release; then
    log "ERRO: Este script foi feito para Ubuntu. Abortando."
    exit 1
fi

# Obtém a versão atual do Samba
if ! command -v smbd &> /dev/null; then
    log "Samba não está instalado. Nada a fazer."
    exit 0
fi

CURRENT_VERSION=$(smbd --version | grep -oP 'Version \K[0-9.]+')
log "Versão atual do Samba: $CURRENT_VERSION"

# Tabela de versões mínimas seguras (UBUNTU SECURITY NOTICE USN-8306-1)
declare -A SAFE_VERSIONS=(
    ["22.04"]="4.15.13"
    ["24.04"]="4.19.5"
    ["25.10"]="4.22.3"
    ["26.04"]="4.23.6"
)

# Detecta release do Ubuntu
RELEASE=$(lsb_release -rs)
log "Ubuntu release detectada: $RELEASE"

# Verifica se a release tem versão segura definida
SAFE_VERSION=""
for release in "${!SAFE_VERSIONS[@]}"; do
    if [[ "$RELEASE" == "$release"* ]]; then
        SAFE_VERSION="${SAFE_VERSIONS[$release]}"
        break
    fi
done

if [[ -z "$SAFE_VERSION" ]]; then
    log "AVISO: Release $RELEASE não mapeada. Aplicando atualização padrão."
fi

# Compara versões (simples)
if [[ -n "$SAFE_VERSION" ]] && [[ "$(printf '%s\n' "$SAFE_VERSION" "$CURRENT_VERSION" | sort -V | head -n1)" != "$CURRENT_VERSION" ]]; then
    log "⚠️  VERSÃO VULNERÁVEL detectada! Aplicando correção..."

    # Atualiza lista de pacotes
    apt update >> "$LOG_FILE" 2>&1

    # Aplica upgrade específico do Samba (sem interação)
    DEBIAN_FRONTEND=noninteractive apt install -y --only-upgrade samba >> "$LOG_FILE" 2>&1

    if [ $? -eq 0 ]; then
        NEW_VERSION=$(smbd --version | grep -oP 'Version \K[0-9.]+')
        log "✅ CORREÇÃO APLICADA! Nova versão: $NEW_VERSION"

        # Reinicia o serviço
        systemctl restart smbd
        log "Serviço smbd reiniciado."
    else
        log "❌ ERRO na atualização. Verifique manualmente."
        exit 1
    fi
else
    log "✅ Versão $CURRENT_VERSION já é segura ou superior. Nada a fazer."
fi

log "Script finalizado. Log salvo em $LOG_FILE"

Como usar:
bash
chmod +x fix-samba.sh
sudo ./fix-samba.sh






Este livro, disponível na Amazon Brasil, é um guia prático e direto que mostra como implementar um Active Directory (AD) completo e funcional com Samba 4.

Por que ele ajuda a resolver o problema? A vulnerabilidade que abordamos envolve execução remota de código e injeção via subsistema de impressão. Este livro ensina:

   ✅ Configuração segura do firewall – Para evitar exposição desnecessária e bloquear ataques de rede.

   ✅ Práticas de hardening – Restrições de permissão e isolamento de processos que impedem a exploração de falhas como as CVE-2026-4408 e CVE-2026-4480.

   ✅ Compilação personalizada do Samba – Para gerar pacotes (DEB e RPM) com flags de segurança adicionais.


 Mitigação alternativa caso não possa atualizar agora



Nem sempre dá para atualizar na hora — talvez você esteja em um ambiente com políticas rígidas de mudança, com um servidor legado que quebra com a versão mais nova do Samba, ou simplesmente precisa de uma solução imediata enquanto aguarda a janela de manutenção.

Aqui vão três bloqueios que funcionam mesmo sem aplicar o patch.

Opção 1 — Bloqueio por iptables (mais rápida e eficaz)

Se você não precisa expor o Samba para a internet inteira, simplesmente bloqueie o acesso externo e libere apenas sua rede local confiável:
bash
# Bloqueia todo acesso externo às portas do Samba
sudo iptables -A INPUT -p tcp --dport 445 -j DROP
sudo iptables -A INPUT -p tcp --dport 139 -j DROP
sudo iptables -A INPUT -p udp --dport 137:138 -j DROP

# Libera apenas para sua rede local (exemplo: 192.168.1.0/24)
sudo iptables -I INPUT -p tcp --dport 445 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 139 -s 192.168.1.0/24 -j ACCEPT

Para salvar as regras e mantê-las após reboot:
bash
sudo apt install iptables-persistent -y
sudo netfilter-persistent save


Opção 2 — Reforço com AppArmor (restrição de processo)

O AppArmor pode limitar severamente o que o Samba pode fazer no sistema, mesmo que o código vulnerável seja executado. Ative o perfil de confinamento do Samba:
bash
# Verifica se o AppArmor está ativo
sudo aa-status | grep samba

# Coloca o perfil do smbd em modo enforce (restrição ativa)
sudo aa-enforce /etc/apparmor.d/usr.sbin.smbd
sudo systemctl restart apparmor

Com o AppArmor ativo, mesmo que um invasor execute código arbitrário via Samba, ele não conseguirá acessar diretórios críticos como /etc, /root ou /home fora do que foi explicitamente liberado


Opção 3 — Proxy reverso com restrição (para ambientes corporativos)

Se o Samba é usado como Domain Controller ou serviço essencial, você pode colocar um proxy reverso na frente (como o próprio Nginx ou um balanceador) e restringir requisições suspeitas por padrões conhecidos de ataque.

Exemplo de bloqueio no nginx para requisições maliciosas ao SMB sobre HTTP (CVE-2026-3012):
nginx
location / {
    # Bloqueia padrões suspeitos de exploração
    if ($http_user_agent ~* "nmap|Nikto|sqlmap") {
        return 403;
    }
    proxy_pass http://backend_samba;
}
⚠️ Atenção: Essas mitigações são paliativas. O ideal é aplicar a correção assim que possível. Mas, se você não pode atualizar agora, qualquer uma dessas opções reduz drasticamente sua superfície de exposição.

Conclusão


Você agora tem:

✅ Comandos para verificar se seu servidor está vulnerável — e sabe qual versão deve ter.

✅ Um script de automação que aplica a correção e mantém log de tudo.

✅ Três mitigações alternativas para quando a atualização não é imediata.

✅ Um recurso confiável para se aprofundar de vez na administração segura do Samba.




Nenhum comentário:

Postar um comentário