Возможный дубликат:
Стоит ли блокировать неудачные попытки входа в систему
Это нормально - получать сотни попыток взлома в день?
Я управляю несколькими совершенно разными корневыми серверами в разных центрах обработки данных, и я замечаю довольно большое количество неудачных попыток входа в систему по SSH на большинстве из них. Вот снимок за последние три дня:
Нет регулярного шаблона, но обычно я регистрирую несколько сотен попыток в день. Мне кажется, что ботнеты случайно пытаются проникнуть на чужие серверы. Я использую довольно безопасные пароли, но все же: стоит ли мне беспокоиться или что-то делать с этим?
Лучше всего было бы изменить порт SSH, но это возможно не во всех случаях.
Тем не мение, это нормально?
NB: логины PublicKey соответствуют ожиданиям.
Что вы можете сделать:
Можно настроить правила 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.1 sshdfilter: использует iptables для блокировки (т.е. динамически добавляет настраиваемые правила брандмауэра для блокировки конкретного злоумышленника).
2.2 Fail2Ban: сценарий Python, который добавляет настраиваемые правила брандмауэра для блокировки злоумышленника.
2.3 DenyHosts : не использует правила брандмауэра для блокировки атаки. Вместо этого он записывает правила блокировки в /etc/hosts.deny.
Использовать блокировку портов (например, стук)
Лучшее решение - использовать АУТЕНТИФИКАЦИЮ RSA:
Если вы не используете пароли, а только ключи RSA для аутентификации, поиск действительного пароля методом перебора будет бесполезен.
Примечание: вы можете комбинировать некоторые из этих советов, но простой Rsa auth + выбивание порта - надежное решение.
Вы должны быть обеспокоены и предпринять шаги, чтобы укрепить свои серверы.
Следуя ответу cop1152:
Отличный способ остановить эти попытки - настроить Стук порта.
Некоторые инструменты для этого: стук (С), fwknop (С), Тук-тук (Python) и KnockKnockServer (Java) и многие другие.
Блокировка порта может держать ваш SSH-порт закрытым снаружи до тех пор, пока не будет получен "секретный удар" или авторизация одиночного пакета.
После того, как ваш сервер получает секретный удар, брандмауэр разрешает новые SSH-соединения на пару секунд, позволяя вам установить соединение.
Это может вызвать неудобства, но у вас больше не будет неудачных попыток входа в систему из ботнетов.
Изображение предоставлено: cipherdyne.org
Измените порт, но также установите правило, которое запрещает IP-адреса, которые пытаются войти в систему и терпят неудачу несколько раз. Кроме того, рассмотрите возможность входа в систему только с определенных IP-адресов и не разрешайте вход в систему с правами root. Убедитесь, что пользователю нужно повысить уровень до администратора, чтобы что-то делать.
И вы, вероятно, можете сделать лучше, чем "весьма безопасные пароли". Поиск в Google покажет вам несколько довольно простых способов сделать ваши SSH-соединения более безопасными.
Без обид, но если вы отвечаете за управление этими серверами, вы уже должны знать эти вещи. Я не упомянул какие-либо конкретные пакеты для загрузки, но их легко найти.
Работает на порту ssh по умолчанию и на общедоступном IP-адресе и, вероятно, открыт для всех подключений. Да, это обычное дело. Если вы используете безопасные и надежные пароли, вы можете быть в некоторой степени в безопасности, но опять же, вы никогда не узнаете.
Вот несколько вещей, которые нужно сделать:
Несколько вещей, которые вы могли / должны сделать:
Если у вас есть сервер, доступный в Интернете, вы столкнетесь с этим. Большинство из них - это просто сценарии, пытающиеся выполнить несколько комбо. Я поместил эту команду в свой MOTD, чтобы отслеживать ее.
echo -ne "Total failed attempts: $(grep 'Failed password' /var/log/auth.log* | wc -l) failed attempts"