Как остановить / предотвратить брутфорс SSH [закрыто]

Я новичок в сетевом администрировании, поэтому учтите, что я еще не настолько опытен.

У меня есть корневой сервер Ubuntu с панелью plesk.

Вчера мы с друзьями заметили, что качество речи на нашем TS3 стало очень плохим. Я отправил эхо-запросы на сервер, и произошла очень большая потеря пакетов. После этого я немного погуглил и обнаружил, что существует auth.log . Я загрузил его и немного прокрутил, а затем обнаружил следующее:

May 13 10:01:27 rs204941 sshd[9351]: input_userauth_request: invalid user student [preauth]
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): check pass; user unknown
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.220.198.102 
May 13 10:01:29 rs204941 sshd[9351]: Failed password for invalid user student from 112.220.198.102 port 39806 ssh2
May 13 10:01:29 rs204941 sshd[9351]: Received disconnect from 112.220.198.102: 11: Bye Bye [preauth]
May 13 10:01:31 rs204941 sshd[9353]: Invalid user student from 112.220.198.102

Похоже, кто-то много раз пытался войти в систему через SSH.Я прокрутил немного и увидел, что этот кто-то пытается использовать много разных имен пользователей: студент, технический специалист, psi, новости, ...

Сотни этих логинов были отображены в файле.

Я просмотрел статистику трафика на сайте моего центра обработки данных. Было всего 17 МБ в час. У меня 100-мегабитная магистраль, поэтому проблема с передачей данных не возникает.

На данный момент я никак не могу получить доступ к серверу.

Мой вопрос: как мне снова получить доступ, как подавить эту атаку и предотвратить последующие атаки?

22
задан 13 May 2014 в 14:02
5 ответов

Как получить доступ?

Не понятно, почему вы не можете получить доступ к своей учетной записи.

Если ваша машина подвергается атаке или высокой нагрузке, вам следует поговорить со своим провайдером об ограничении доступа (IP-ограничения) или отключении сервера от сети (отключение от сети Интернет).

Также может потребоваться доступ вне диапазона, с которым может помочь провайдер.

Если кто-то взломал ваш сервер, возможно, потребуется восстановить его из резервной копии или использовать образ восстановления.

Как предотвратить атаки на ваш сервер, в частности SSH

лучший способ предотвратить входы грубой силы?

Не позволяйте им попасть на ваш компьютер в первую очередь! Есть много способов остановить попытки грубой силы до того, как они доберутся до вашего хоста, или даже на уровне SSH.

Сказав это, защита вашей операционной системы с помощью чего-то вроде fail2ban - отличная идея. http://en.wikipedia.org/wiki/Fail2ban

Fail2ban похож на DenyHosts ... но в отличие от DenyHosts, которые фокусируется на SSH, fail2ban может быть настроен на мониторинг любой службы, которая записывает попытки входа в лог-файл, и вместо того, чтобы использовать /etc/hosts.deny только для того, чтобы блокировать IP адреса/хозяева, fail2ban может использовать Netfilter/iptables и TCP-обертки /etc/hosts.deny.

Есть ряд важных методов безопасности, которые вы должны учитывать, чтобы предотвратить использование грубой силы при входе в систему:

SSH:

  • Don't allow root to login
  • Don't allow ssh passwords (use private key authentication)
  • Don't listen on every interface
  • Create a network interface for SSH (e. g eth1), который отличается от интерфейса, с которого вы обслуживаете запросы (например, eth0)
  • Не используйте общие имена пользователей
  • Используйте список разрешений, и разрешайте только пользователям, которым требуется доступ по SSH
  • Если вам нужен доступ в Интернет...Ограничьте доступ к конечному набору IP-адресов. Один статический IP идеально подходит, однако, блокируя его до x.x.0. .0/16 лучше, чем 0.0.0.0/0
  • Если возможно найти способ соединения без доступа к Интернету, то таким образом вы можете запретить весь интернет-трафик для SSH (e. g с помощью AWS вы можете получить прямое соединение в обход Интернета, оно называется Direct Connect (прямое соединение)
  • Используйте такие программы, как fail2ban для перехвата любых атак грубой силы
  • Убедитесь, что операционная система всегда актуальна, в частности, пакеты безопасности и ssh

Приложение:

  • Убедитесь, что ваше приложение всегда актуально, в частности, пакеты безопасности
  • Блокируйте страницы 'admin' вашего приложения. Многие из вышеприведенных советов применимы и к области администрирования вашего приложения.
  • Password Protect your admin area, something like htpasswd for web console will project any underlying application vulnerabilities и create a additional barrier to entry
  • Lockdown file permissions. Папки загрузки" известны тем, что они являются точками входа для всякого рода неприятных вещей.
  • Рассмотрим вопрос о том, чтобы поместить ваше приложение за закрытую сеть, и только разоблачить ваш внешний компенсатор нагрузки и jumpbox (это типичная установка в AWS с использованием VPC)
37
ответ дан 28 November 2019 в 20:22

Это моя альтернатива решение для SSH-атак. Идея состоит в том, чтобы закрыть демон SSH, если он не используется. Нет открытого порта, нет атаки. Можешь попробовать. Это открытый исходный код https://github.com/indy99/nnet_port_guard

0
ответ дан 28 November 2019 в 20:22

как я могу подавить эту атаку и предотвратить последующие атаки

Обычно я меняю порт ssh по умолчанию с 22 на другой, например, 1122. Это предотвращает многие автоматические атаки от bot, но простое сканирование портов может обнаружить его. В любом случае:

vi /etc/ssh/sshd_config

и отредактируйте Порт 22 на Порт 1122 , но этого недостаточно.

Автоматические правила IPTables для bruteforce

Я использую log2iptables https://github.com/theMiddleBlue/log2iptables вместо Fail2ban, потому что это простой сценарий Bash, который анализирует любой файл журнала с помощью регулярного выражения и выполняет iptables. Например, когда происходит 5 совпадений, log2iptables удаляет конкретный IP-адрес. Это круто, потому что использует Telegram API и может отправить мне сообщение на телефон, когда обнаружит проблему :)

надеюсь, это поможет!

4
ответ дан 28 November 2019 в 20:22

Я только что собрал это вместе, запускал каждые 15 минут как задание cron и т. Д .:

for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
  count1=`grep $z /etc/hosts.deny | wc -l`
  count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
  if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
    current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
    sudo cp /etc/hosts.deny.bak /etc/hosts.deny
    sudo chmod 666 /etc/hosts.deny
    if [ $current ] ; then
      echo "sshd : $current , $z" >> /etc/hosts.deny
    else
      echo "sshd : $z" >> /etc/hosts.deny
    fi
    sudo chmod 644 /etc/hosts.deny
  fi
done
1
ответ дан 28 November 2019 в 20:22

Автоматизированное решение для Centos / RHEL для блокировки злоумышленников

Вот сценарий для Centos, который проверяет неудачные попытки входа по ssh для недействительных учетных записей пользователей и неверных паролей для действующих учетных записей. Если исходный IP-адрес попадал в нас более трех раз и еще не был в запрещенном списке, он добавляется в запрещенный список. Я запускаю это каждые 15 минут из crontab root. Я также запретил вход в систему с правами суперпользователя через ssh, поэтому эта комбинация сохраняет довольно тихую работу.

     #/bin/bash
     # Save a copy of the existing hosts.deny file for safety
     cp /etc/hosts.deny /etc/hosts.deny.bak
     # Get a list of the offending IP addresses and process them
     for z in `grep "Invalid\|Failed" /var/log/secure | awk '{ print $NF }' | sort | uniq`
     do
     # Get the number of times this IP hit us
     hits=`grep "Invalid\|Failed" /var/log/secure* | grep $z | wc -l`
     # Check whether this IP is already blocked
     blocked=`grep $z /etc/hosts.deny | wc -l`
     # If they hit us more than 3 times and are not already on the deny list
     # add them to the deny list
     if [ $hits -gt 3 -a $blocked -eq 0 ]
     then
          echo "sshd : $z" >> /etc/hosts.deny
     fi
     done
0
ответ дан 28 November 2019 в 20:22

Теги

Похожие вопросы