Предотвращение взлома SSH методом грубой силы через сценарий Shell

Введение

       Когда мы обычно авторизуемся на сервере с внешним сетевым IP, мы часто видим, что сервер был злонамеренно авторизован много раз из-за сканирования чужого порта.

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

       Разве это не раздражает? Хотя пароль сложен и есть брандмауэр, трудно гарантировать, что некоторые люди попытаются злонамеренно. Поэтому самый простой тест - написать сценарий и регулярно собирать пакет черных списков IP-адресов. Операция заключается в следующем.

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

Иногда запускать один раз определенно не душно, напишите crontab для регулярного выполнения

# Представляет выполнение каждые пять минут

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

Наконец, вы можете проверить эффект в файле /etc/hosts.deny.

подводить итоги

Конечно, лучше регулярно менять пароли или сертификаты, брандмауэры ограничивают порты, ограничивают источники и т. Д.
- это однозначное решение.

рекомендация

отblog.51cto.com/14839701/2551984
рекомендация