image

Bootcamps ilimitados e +750 cursos pra sempre

70
%OFF
Wandreson Silva
Wandreson Silva22/10/2026 00:44
Compartilhe

alerta_telegram_monitoramento

  • #Segurança, Autenticação, Autorização

alerta_telegram.sh, um script híbrido. Quando o PSAD chamar o script, ele envia o alerta de port scan; quando o sistema de autenticação do Linux (PAM) chamar o script, ele identifica se foi uma tentativa ou um acesso SSH bem-sucedido de um IP externo.

O script de instalação. Ele já configura o PSAD, as regras do iptables e injeta os gatilhos de monitoramento diretamente no ecossistema do SSH (/etc/pam.d/sshd).

Este script em Bash é uma solução leve e automatizada para Monitoramento e Resposta a Incidentes em servidores Linux (como o Kali Linux or Ubuntu). Ele atua como um "dedo-duro" em tempo real, integrando o detector de varredura de portas PSAD (Port Scan Attack Detector) e o sistema de autenticação nativo do Linux PAM (Pluggable Authentication Modules) para enviar alertas instantâneos diretamente para um bot do Telegram.

#!/bin/bash


# CONFIGURAÇÕES DO TELEGRAM
BOT_TOKEN="COLE_SEU_TOKEN_AQUI"
CHAT_ID="COLE_SEU_CHAT_ID_AQUI"


# Garantir que o script rode como root
if [ "$EUID" -ne 0 ]; then
echo "[-] Por favor, execute este script como root (sudo)."
exit 1
fi


# Atualiza pacotes e instala dependências
echo "[+] Instalando dependências..."
apt update && apt install -y psad iptables-persistent curl rsyslog


# Adiciona regras de log do iptables no TOPO
echo "[+] Configurando iptables para o PSAD..."
iptables -I INPUT 1 -p tcp --syn -j LOG --log-prefix "psad: "
iptables -I FORWARD 1 -p tcp --syn -j LOG --log-prefix "psad: "
iptables-save > /etc/iptables/rules.v4


# Cria o script de alerta híbrido (PSAD + SSH)
echo "[+] Criando script de alerta híbrido para Telegram..."
cat << 'EOF' > /usr/local/bin/alerta_telegram.sh
#!/bin/bash


# Caminhos absolutos indispensáveis para execução via daemons
CURL_BIN="/usr/bin/curl"
HOSTNAME_BIN="/usr/bin/hostname"
DATE_BIN="/usr/bin/date"


HOST=$($HOSTNAME_BIN)
DATA=$($DATE_BIN "+%Y-%m-%d %H:%M:%S")
TOKEN="TOKEN_REPLACE"
CHAT="CHAT_REPLACE"


# --- MÓDULO 1: SE FOR CHAMADO PELO SSH (PAM) ---
if [ -n "$PAM_TYPE" ]; then
  # Ignora conexões locais (localhost) e encerramento de sessões (logout)
  if [ "$PAM_TYPE" = "close_session" ] || [ "$PAM_RHOST" = "127.0.0.1" ] || [ "$PAM_RHOST" = "::1" ] || [ -z "$PAM_RHOST" ]; then
      exit 0
  fi


  # Cenário A: Tentativa de login (Autenticação em andamento)
  if [ "$PAM_TYPE" = "auth" ]; then
      MENSAGEM="🔑 *Tentativa de Conexão SSH* 🔑
- *Host:* $HOST
- *Data:* $DATA
- *Usuário Usado:* \`$PAM_USER\`
- *IP de Origem:* \`$PAM_RHOST\`
- *Status:* Credenciais enviadas (Aguardando validação)"


  # Cenário B: Login bem-sucedido (Sessão aberta)
  elif [ "$PAM_TYPE" = "open_session" ]; then
      MENSAGEM="🟢 *Acesso SSH Bem-Sucedido!* 🟢
- *Host:* $HOST
- *Data:* $DATA
- *Usuário Autenticado:* \`$PAM_USER\`
- *IP de Origem:* \`$PAM_RHOST\`
- *Status:* Usuário logado no sistema!"
  else
      exit 0
  fi


# --- MÓDULO 2: SE FOR CHAMADO PELO PSAD (PORT SCAN) ---
else
  MENSAGEM="⚠️ *Alerta de Segurança (PSAD)* ⚠️
- *Host:* $HOST
- *Data:* $DATA
- *Evento:* Possível varredura de portas (Port Scan) detectada!"
fi


# --- ENVIO COMPARTILHADO ---
$CURL_BIN -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
  -d chat_id="$CHAT" \
  -d parse_mode="Markdown" \
  -d text="$MENSAGEM"
EOF


# Injeta os tokens reais dentro do script gerado
sed -i "s/TOKEN_REPLACE/$BOT_TOKEN/g" /usr/local/bin/alerta_telegram.sh
sed -i "s/CHAT_REPLACE/$CHAT_ID/g" /usr/local/bin/alerta_telegram.sh
chmod +x /usr/local/bin/alerta_telegram.sh


# Configura psad (.conf)
echo "[+] Configurando psad.conf..."
sed -i "s/^EMAIL_ADDRESSES.*/EMAIL_ADDRESSES root@localhost;/g" /etc/psad/psad.conf
sed -i "s/^HOSTNAME.*/HOSTNAME $(hostname);/g" /etc/psad/psad.conf
sed -i "s|^ENABLE_EXT_SCRIPT_EXEC.*|ENABLE_EXT_SCRIPT_EXEC      Y;|g" /etc/psad/psad.conf
sed -i "s|^EXTERNAL_SCRIPT.*|EXTERNAL_SCRIPT             /usr/local/bin/alerta_telegram.sh;|g" /etc/psad/psad.conf


# Configura gatilhos no PAM do SSH (Evita duplicidade se rodar o script de novo)
echo "[+] Configurando gatilhos de segurança no PAM do SSH..."
if ! grep -q "alerta_telegram.sh" /etc/pam.d/sshd; then
  # Ativa o alerta no momento da tentativa de digitação da senha
  echo "auth optional pam_exec.so /usr/local/bin/alerta_telegram.sh" >> /etc/pam.d/sshd
  # Ativa o alerta no momento em que o login é aceito
  echo "session optional pam_exec.so /usr/local/bin/alerta_telegram.sh" >> /etc/pam.d/sshd
fi


# Reinicia os serviços e atualiza assinaturas
echo "[+] Reiniciando serviços e atualizando assinaturas..."
psad --sig-update
systemctl restart rsyslog psad ssh


echo "[✔] Instalação e configuração concluídas com sucesso!"
echo "[🛡️] Sistema protegido contra Port Scans e monitorando acessos SSH externos!"

Como a mágica do SSH funciona por baixo dos panos?

Quando alguém tenta se conectar via SSH, o serviço consulta o arquivo /etc/pam.d/sshd.O Linux usa o módulo pam_exec.so para rodar o script,injetando variáveis nativas do sistema nele:

* $PAM_RHOST: Contém o IP de quem está tentando conectar (o script filtra e ignora se for o seu próprio 127.0.0.1).

* $PAM_USER: O nome de usuário que a pessoa digitou.

* $PAM_TYPE: Diz a fase da conexão. Se for auth, a pessoa acabou de dar Enter no usuário e está testando uma senha. Se for open_session, a senha estava certa e ela acabou de ganhar acesso ao terminal do seu Kali.

Principais Recursos

1.Monitoramento Híbrido: O mesmo script atende a dois daemons diferentes (PSAD e PAM-SSH) sem conflito de código.


2.Detecção de Port Scan: Integra-se ao PSAD para alertar quando um atacante executa varreduras de portas invasivas (como nmap -sS ou nmap -A).


3.Inteligência em Conexões SSH: * Identifica tentativas de login (quando o atacante digita o usuário e está testando a senha).


4.Identifica sucessos de login (quando um acesso é estabelecido).


5.Filtro Anti-Spam Inteligente: Ignora automaticamente conexões originadas de localhost (127.0.0.1 e ::1) e eventos de encerramento de sessão (logout), evitando notificações redundantes.


6.Compatibilidade com Daemons: Desenvolvido utilizando caminhos absolutos de binários (/usr/bin/curl, etc.), garantindo execução perfeita em segundo plano, onde variáveis de ambiente de terminais interativos não estão disponíveis.


Como Funciona? (Arquitetura)

1. Fluxo do Módulo SSH (PAM)

O comportamento do script é determinado dinamicamente pelas variáveis de ambiente injetadas no momento da sua execução:


Quando alguém interage com a porta 22 (SSH), o arquivo /etc/pam.d/sshd invoca o script passando variáveis nativas do sistema. O script faz a seguinte triagem:


[Variável PAM]     [Valor Capturado]    [Ação do Script]
$PAM_TYPE -         auth -    Dispara o alerta de Tentativa de Conexão


$PAM_TYPE -         open_session -      Dispara o alerta de Acesso Bem-Sucedido


$PAM_TYPE -         close_session -     Encera silenciosamente (exit 0)


$PAM_RHOST -        127.0.0.1 / ::1 -   Encera silenciosamente (Ignora conexões locais)


2. Fluxo do Módulo Port Scan (PSAD)

Se o script for chamado e a variável $PAM_TYPE estiver vazia, significa que o gatilho não veio do SSH. O script assume que foi invocado pela diretiva EXTERNAL_SCRIPT do PSAD, gerando o alerta de varredura de portas do iptables.


Exemplo dos Alertas Gerados no Telegram:


⚠️ Alerta de Segurança (PSAD) ⚠️


Host: kali-server


Data: 2026-07-02 17:45:12


Evento: Possível varredura de portas (Port Scan) detectada!


🔑 Tentativa de Conexão SSH 🔑


Host: kali-server


Data: 2026-07-02 17:46:01


Usuário Usado: root


IP de Origem: 192.168.1.9


Status: Credenciais enviadas (Aguardando validação)


🟢 Acesso SSH Bem-Sucedido! 🟢


Host: kali-server


Data: 2026-07-02 17:46:05


Usuário Autenticado: kali


IP de Origem: 192.168.1.9


Status: Usuário logado no sistema!

3. Requisitos de Instalação

1. Regras de LOG no iptables no topo das chains de INPUT e FORWARD contendo o prefixo "psad: ".


2. PSAD configurado com as diretivas ENABLE_EXT_SCRIPT_EXEC Y; e apontando para este script em EXTERNAL_SCRIPT.


3. Módulo pam_exec.so configurado nas linhas de auth e session dentro de /etc/pam.d/sshd.
Nota: O instalador automatizado incluído neste repositório configura todas essas dependências de forma autônoma.

https://github.com/wandreson-silva/alerta_telegram_monitoramento/tree/main

Bot Telegram

image

Compartilhe
Recomendados para você
Neo4j - Certification
DXC - IA do Zero ao Primeiro Agente
Reclame AQUI - Dados e IA na Prática
Comentários (0)