Как мы можем ограничить воздействие SSH-зондов?


13

Мой веб-сервер постоянно атакован различными IP-адресами. Они пробуют пять паролей, а затем меняют IP-адрес.

Я сделал различные блокировки, такие как использование ssh-ключей, запрет паролей и запрет удаленного входа в систему root.

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


1
Пометка для перехода на security.se, где это немного более актуально
Рори Олсоп,

1
@Rory Есть разница между «немного больше по теме кто-то еще» и «не по теме здесь» - здесь это кажется довольно ясно по теме
Майкл Мрозек

Не беспокойся @ Майкл. Пришёл пинг от Жиля, чтобы приехать и посмотреть на это, возможно, здесь был оффтоп.
Рори Олсоп

@ Рори Хорошо, я спрошу его об этом; он обычно довольно хорошо убеждает меня в том, что, я думаю, тема {off, on} фактически является {on, off} theme
Майкл Мрозек

1
Кажется, мой вопрос изменился до неузнаваемости. В своем первоначальном вопросе я действительно пытался выяснить, было ли обычным делом каждый сайт подвергаться атакам грубой силы - то есть это факт жизни. На это Маттео ответил: «Это действительно факт жизни». Вторая часть вопроса была о том, что я могу сделать, чтобы активно остановить эти атаки, кроме защиты . Это было бы актуальным второстепенным вопросом, если бы только некоторые сайты пострадали от атак методом перебора. На это Брюс ответил своей идеей тарпита. Я действительно не просил защитных советов.
JW01

Ответы:


14

Это действительно факт жизни. Вы можете установить инструменты для фильтрации хостов, которые атакуют вас после нескольких неудачных попыток.

DenyHosts анализирует ваши файлы журнала и автоматически добавляет злоумышленников в ваш /etc/hosts.denyфайл.

Проверьте документацию о том, как настроить его для ваших нужд.

Обновление : некоторые важные моменты, предложенные в комментариях

  • не забудьте правильно настроить инструменты как DenyHosts, так как вы можете заблокировать себя (например, вы можете настроить машину или сеть, которая никогда не фильтруется)

  • DenyHosts не повышает безопасность вашей системы: он фильтрует атаки только на уровне IP (это может снизить нагрузку на небольшие машины и уменьшить размер файлов журнала, но не более того)


1
Ааа. Я начинал думать, что я особенный. Спасибо, что поправил меня.
JW01

Если говорить о Маттео, то на ваш вопрос почти точно refs Q1.3 дан
whoami,

@whoami Спасибо за ссылку, хорошее резюме. Хотя одна вещь, которая всегда приходит в голову, когда я вижу использование другого совета о порте, это « откуда вы знаете, что выбранный вами альтернативный порт уже не используется кем-то другим? '
JW01

1
Будьте осторожны с DenyHosts и подобными инструментами, поскольку они вносят дополнительную сложность, то есть сами могут создавать проблемы безопасности, ср. 2-й комментарий на unix.stackexchange.com/questions/2942/…
maxschlepzig

1
Также будьте осторожны с DenyHosts, потому что вы можете заблокировать себя из своей машины. Простое apt-get install denyhostsвывело меня из машины.
Нафтули Кей

15

Я следовал этим инструкциям, чтобы добавить 7-секундную задержку к каждой попытке входа по SSH с неверным паролем. Я превратил свой sshd в «брезент» для сканеров грубой силы.

Я также должен добавить, что у меня есть измененный логин tarpit sshd с ошибочными паролями. Это может быть не совсем этично, так как дает пользователю root возможность взглянуть на то, что обычные пользователи неправильно вводят в качестве своих собственных паролей, но, поскольку я единственный «настоящий» пользователь, я думаю, что все в порядке.

Я не запускаю его на нестандартном порте, так как аспект «тарпит» не будет терять никого время.


Также используйте нестандартный порт и используйте ключи вместо паролей. Тогда у них почти нет надежды (при условии, что они не завладеют ключами, которые все равно должны быть обозначены паролем).
Каллум Роджерс

Это хороший ответ, потому что у него немного «оскорбительный» подход, а не чисто «оборонительный», который, я думаю, добавляет морали.
JW01

9

Если SSH к системе требуется небольшое количество людей, рассмотрите возможность переноса SSH на нестандартный порт (например, 6422, 8080 и т. Д.). Это само по себе значительно сократит количество попыток входа в систему (и, возможно, защитит вас от некоторых непатентованных подключений). Например, червь, основанный на эксплойтах SSH).


3
+1 Скорее полезно, поскольку оно ограничивает раздражение, но не принимайте это за меру безопасности - это более близкий эквивалент защитной двери от комаров, чем защитного замка.
Писквор покинул здание

1
+1 Это также экономит ресурсы сервера.
Xeoncross

6

Согласен с ответом @ Matteo; то, что вы видите, - это, по сути, тысячи зомби-систем, выполняющих распределенную атаку грубой силой на ваш сервер, потому что на нем запущен веб-сайт, а это значит, что могут быть пользователи, у которых может быть учетная запись для входа, о которой можно догадаться минимальные усилия со стороны сценария, детка - у него есть программа, которая приказывает тысячам зомби делать попытки грубого обращения на нескольких сотнях хостов за раз и просто составляет список успешных возвратов.

Точно так же вы можете иногда видеть много вариантов "http://your.web.host/phpmyadmin/" в ваших /var/log/apache2/access.logфайлах; Это автоматическое сканирование для наиболее распространенных способов настройки PHPMyAdmin, и оно попытается выполнить ряд известных эксплойтов, если таковой будет найден (поэтому я и стал рекомендовать клиентам использовать сайт PMA, который я лично настроил и будьте в курсе, а не устанавливайте свою собственную версию и забывайте постоянно обновлять ее, но теперь мы находимся на касательной).

Помимо отправки оригинальной команды, это даже не стоит ему времени или пропускной способности; это огонь и забудь.

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


4

Попробуй настроить Fail2ban . Он предоставляет очень гибкий способ поиска неудачных попыток и имеет шаблоны для SSH, HTTP и общих служб.

Fail2ban обновит iptables в соответствии с вашими действиями. Мне это нравится.


3

Вы можете использовать IPTABLES для остановки трафика без запуска демона, такого как Fail2Ban или DenyHosts.

#  Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest to prevent SSH attacks)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

2

Если вы можете справиться с этим, я считаю, что лучший способ справиться с подобными вещами - это использовать VPN. Таким образом, единственное, на что они могут ориентироваться - это VPN. Не должно быть никаких сервисов, открытых для всего мира, кроме тех, которые необходимы для доступа «всех», таких как ваш веб-сервер. Все остальное должно быть заблокировано брандмауэром. Теперь единственное, что вам действительно нужно беспокоиться о безопасности, это ваш VPN. Если вы можете, получите статический IP-адрес для компьютеров, с которых вы управляете своими серверами, и заблокируйте VPN на этом конкретном IP-адресе. Это действительно единственный способ помешать людям пытаться взломать пароли.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.