Evite el craqueo de SSH por fuerza bruta a través del script de Shell

Introducción

       Cuando iniciamos sesión en un servidor con una IP de red externa, a menudo vemos que el servidor ha sido registrado maliciosamente muchas veces por el puerto de otra persona que se está escaneando.

There were 56 failed login attempts since the last successful login.

       ¿No es molesto? Aunque la contraseña es complicada y hay un firewall, es difícil garantizar que algunas personas lo intenten maliciosamente. Por lo tanto, la prueba más simple es escribir un script y recopilar un lote de listas negras de IP con regularidad. La operación es la siguiente

cat /usr/local/sbin/secure_ssh.sh
#! /bin/bash
#从secure文件中提取反复登录失败的IP名单作为黑名单列表并统计次数
#格式大概是这样  36.37.122.47=22   IP=次数
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/sbin/blackList.txt

#一旦当前IP超过20次尝试,就关小黑屋
for i in `cat  /usr/local/sbin/blackList.txt`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
   if [ $NUM -gt 20 ];then
      grep $IP /etc/hosts.deny > /dev/null
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
      echo "新增异常IP: $IP" >> /usr/local/sbin/secure_ssh.log
    fi
  fi
done

Ocasionalmente ejecutar una vez definitivamente no es sofocante, escriba un crontab para ejecutarlo regularmente

#Representa la ejecución cada cinco minutos

echo "*/5 * * * * root bash /usr/local/sbin/secure_ssh.sh" >> /etc/crontab

Finalmente, puede verificar el efecto en el archivo /etc/hosts.deny.

para resumir

Por supuesto, es mejor cambiar las contraseñas o los certificados con regularidad, los firewalls restringen puertos, restringen fuentes, etc.,
es una medida de una vez por todas.

Supongo que te gusta

Origin blog.51cto.com/14839701/2551984
Recomendado
Clasificación