Detecta e bloqueia tentativa de acesso ao SSH
Publicado por Fábio Flores 18/09/2006
[ Hits: 10.586 ]
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
WallpaperID - papel de parede com IP e kernel do usuário
Substituir strings em arquivos ascII
pptd - Simples daemon para controle de conexões pptp.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (6)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta