Detecta e bloqueia tentativa de acesso ao SSH
Publicado por Fábio Flores 18/09/2006
[ Hits: 10.913 ]
Download detecta_bloqueia_ssh.sh
Este script detecta tentativas de acesso por força bruta no SSH e gera regras de IPTables bloqueando o IP do host que está efetuando a tentativa de ataque, verificando antes se o IP do host atacante já foi bloqueado. Esse script foi criado pelo Mastah e aprimorado e adapatado por mim para uso em no meu firewall.
Antes de utilizar o script, verifique se o seu sistema possui o pacote gawk, caso não possua podera baixar o pacote em: ftp://ftp.gnu.org/gnu/gawk/gawk-3.1.5.tar.gz
Define o arquivo do script como executável:
<b>:~$ su</b>
Como super usuário, utilize o comando:
<b>:~# chmod +x detecta_bloqueia_ssh.sh</b>
Caso queira deixar o script em modo automático, mova-o para
o diretório /etc/cron.hourly/,com o comando:
<b>:~# mv detecta_bloqueia_ssh.sh /etc/cron.hourly</b>
Lembre de deixar o arquivo como executável
Para alterar o tempo do crontab, edite o arquivo root que fica dentro de:
<b>:~# vi /var/spool/cron/crontabs/root </b>
e altere o tempo de acordo com o que achar mais conveniente
OBS: este script é utilizado na distribuição slackware, caso queira utilizar em outra distro, faça as alterações necessárias.
---------------------------------------------------------------------------------------------------------------
# Script para bloquear os corriqueiros bruteforce probes
# feitos para a porta do ssh. Pega as ultimas 60 tentativas ilegais na porta do ssh.
# Verifica se você ja bloqueou o "invasor" se voce quer adicionar na regra do iptables.
# Caso queira usar no crontab, e so mudar o valor da var $MODE pra "AUTO".
MODE="AUTO"
#MODE="MANUAL"
if [ -f /var/log/messages ] ; then
ips=$(cat -n /var/log/messages | tail -n 60 | grep -i Failed | grep -i sshd | awk -F" " {'print $14'})
attempts=1
for ip in $ips ; do
lastip=$ip
if [ "$lastip" == "$ip" ] ; then
attempts=$(expr $attempts + 1)
if [ $attempts -ge 5 ] ; then
echo "Ataque de Força Bruta SSHD detectada de $ip"
attempts=1
lastip=""
blocked=$(iptables -L INPUT | grep -i $ip | grep -i DROP)
if [ "$blocked" ] ; then
echo "> IP Ja Bloqueado. Continuando com scan"
echo " "
else
if [ $MODE == "MANUAL" ] ; then
echo "> Você quer adicionar este IP para INPUT DROP em IPTABLES regras? (s/n)"
read resp
if [ "$resp" == "s" ] ; then
iptables -A INPUT -s $ip -j DROP
echo "> IP $ip ADICIONADO PARA IPTABLES INPUT DROP ruleset"
echo " "
fi
else
iptables -A INPUT -s $ip -j DROP
echo "> IP $ip ADICIONADAO TO IPTABLES INPUT DROP ruleset"
echo " "
fi
fi
fi
fi
done
fi
#Fim do script
---------------------------------------------------------------------------------------------------------------
Bom uso
Abraços, colaboração de:
Fábio "Cyberwolf" Flores
duplex_record: mixando áudio do microfone e saída de áudio de um programa via P
Monitorando o serviço do Squid utilizando como Proxy Transparente
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático
Como impedir exclusão de arquivos por outros usuários no (Linux)
Alguém executou um rm e quase mata a Pixar! (6)
Formas seguras de instalar Debian Sid (9)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (12)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (5)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (6)









