Detecta e bloqueia tentativa de acesso ao SSH
Publicado por Fábio Flores 18/09/2006
[ Hits: 10.979 ]
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
Sincronizar arquivos com rsync
Gera estatísticas de tráfego de pacotes nas interfaces de um servidor linux via SNMPv3.
O que fazer após instalar o Debian 8 - versão em Shell Script
Impedir duas ou mais conexões por usuário
Script para criação de pacotes auto extrator.
Como criar um make.conf no Gentoo (para iniciantes)
Como instalar o Open WebUI para Ollama no Gentoo (com systemd)
INSTALAR (e jogar) COUNTER STRIKE 1.6 (install cs 1.6) NO LINUX
A tragédia silenciosa das distribuições baseadas (ou “agregadas”)
Removendo o bloqueio por erros de senha no Gentoo (systemd)
Papel de Parede Animado no KDE Plasma 6 (Com dicas para Gentoo)
Homebrew: o gerenciador de pacotes que faltava para o Linux!
Removendo a trava de versão do Project Brutality para GZDoom/UZDoom
Acelere a compilação no Gentoo com distcc (guia para Systemd)
ATUALIZAÇÃO DO KERNEL LINUX (2)
[Matemática] o que seria algo mais poderoso do que uma função? [RESOLV... (5)









