Назад | Перейти на главную страницу

много неудачных попыток входа в систему по SSH - стоит ли мне беспокоиться?

Возможный дубликат:
Стоит ли блокировать неудачные попытки входа в систему
Это нормально - получать сотни попыток взлома в день?

Я управляю несколькими совершенно разными корневыми серверами в разных центрах обработки данных, и я замечаю довольно большое количество неудачных попыток входа в систему по SSH на большинстве из них. Вот снимок за последние три дня:

Нет регулярного шаблона, но обычно я регистрирую несколько сотен попыток в день. Мне кажется, что ботнеты случайно пытаются проникнуть на чужие серверы. Я использую довольно безопасные пароли, но все же: стоит ли мне беспокоиться или что-то делать с этим?

Лучше всего было бы изменить порт SSH, но это возможно не во всех случаях.

Тем не мение, это нормально?

NB: логины PublicKey соответствуют ожиданиям.

Что вы можете сделать:

  1. Можно настроить правила iptables для блокировки ssh-атак, эти правила разрешат не более 3 соединений в минуту с любого хоста и будут блокировать хост еще на минуту, если эта скорость будет превышена.

    iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m latest --set --name SSH -j ACCEPT iptables -A INPUT -p tcp --dport 22 -m latest --update - секунд 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH_brute_force" iptables -A INPUT -p tcp --dport 22 -m недавний --update --seconds 60 --hitcount 4 - -rttl --name SSH -j DROP

  2. Блокировать через системные журналы

    2.1 sshdfilter: использует iptables для блокировки (т.е. динамически добавляет настраиваемые правила брандмауэра для блокировки конкретного злоумышленника).

    2.2 Fail2Ban: сценарий Python, который добавляет настраиваемые правила брандмауэра для блокировки злоумышленника.

    2.3 DenyHosts : не использует правила брандмауэра для блокировки атаки. Вместо этого он записывает правила блокировки в /etc/hosts.deny.

  3. Использовать блокировку портов (например, стук)

  4. Лучшее решение - использовать АУТЕНТИФИКАЦИЮ RSA:

    Если вы не используете пароли, а только ключи RSA для аутентификации, поиск действительного пароля методом перебора будет бесполезен.

Примечание: вы можете комбинировать некоторые из этих советов, но простой Rsa auth + выбивание порта - надежное решение.

Вы должны быть обеспокоены и предпринять шаги, чтобы укрепить свои серверы.

Следуя ответу cop1152:

  1. Вы могли изменить порт. Однако, если у вас есть клиенты, которые регулярно используют ssh и ожидают порт по умолчанию, это не вариант.
  2. Вы можете использовать такой пакет, как fail2ban (http://www.fail2ban.org/), чтобы временно заблокировать IP-адреса, которые делают несколько неудачных попыток входа в систему за короткий промежуток времени.
  3. Если вы знаете IP-адреса, с которых ваши клиенты входят в систему, вы можете использовать fail2ban для блокировки всех IP-адресов, кроме IP-адресов с известных IP-адресов (белый список AKA: http://www.fail2ban.org/wiki/index.php/Whitelist).

Отличный способ остановить эти попытки - настроить Стук порта.
Некоторые инструменты для этого: стук (С), fwknop (С), Тук-тук (Python) и KnockKnockServer (Java) и многие другие.

Блокировка порта может держать ваш SSH-порт закрытым снаружи до тех пор, пока не будет получен "секретный удар" или авторизация одиночного пакета.

После того, как ваш сервер получает секретный удар, брандмауэр разрешает новые SSH-соединения на пару секунд, позволяя вам установить соединение.

Это может вызвать неудобства, но у вас больше не будет неудачных попыток входа в систему из ботнетов.

Изображение предоставлено: cipherdyne.org

Измените порт, но также установите правило, которое запрещает IP-адреса, которые пытаются войти в систему и терпят неудачу несколько раз. Кроме того, рассмотрите возможность входа в систему только с определенных IP-адресов и не разрешайте вход в систему с правами root. Убедитесь, что пользователю нужно повысить уровень до администратора, чтобы что-то делать.

И вы, вероятно, можете сделать лучше, чем "весьма безопасные пароли". Поиск в Google покажет вам несколько довольно простых способов сделать ваши SSH-соединения более безопасными.

Без обид, но если вы отвечаете за управление этими серверами, вы уже должны знать эти вещи. Я не упомянул какие-либо конкретные пакеты для загрузки, но их легко найти.

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

Вот несколько вещей, которые нужно сделать:

  1. используйте аутентификацию на основе открытого ключа и, если возможно, отключите аутентификацию на основе пароля.
  2. Отключить вход root.
  3. измените порт ssh на какой-то случайный, если меняете его на всех серверах, есть какой-то механизм, чтобы их запомнить.
  4. использовать автоматическую блокировку таких вторгающихся IP-адресов с помощью fail2ban или других подобных пакетов.
  5. Разверните сервер удаленного доступа (OpenVPN) и разрешите только ssh с этого сервера удаленного доступа к этим серверам. Это не всегда выполнимо, но снижает ваши шансы на зондирование.

Несколько вещей, которые вы могли / должны сделать:

  • Сменить порт
  • Tigthen iptables (максимальное количество подключений / мин, выбранные IP-адреса, ...)
  • Отключить root ssh-login
  • Отключить пароли в виде открытого текста
  • Использовать аутентификацию по ключу
  • Используйте Port Knocking (возможно, немного чрезмерно)

Если у вас есть сервер, доступный в Интернете, вы столкнетесь с этим. Большинство из них - это просто сценарии, пытающиеся выполнить несколько комбо. Я поместил эту команду в свой MOTD, чтобы отслеживать ее.

echo -ne "Total failed attempts: $(grep 'Failed password' /var/log/auth.log* | wc -l) failed attempts"