Як ми можемо обмежити вплив ssh-зондів?


13

Мій веб-сервер постійно атакується різними IP-адресами. Вони намагаються п'ять паролів, а потім змінюють IP-адресу.

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

Чи можу я щось зробити, щоб позбутися цих спроб нападу? Якщо цього не встановлено, чи існують конкретні засоби захисту?


1
Позначення для міграції до security.se, де це трохи більше на тему
Rory Alsop

1
@Rory Існує різниця між "трохи більше на тему хтось інший" та "тут, що не входить до теми" - це, очевидно, є тематичним тут
Майкл Мрозек

Не хвилюйтесь @Michael. Був пінг від Жилла, щоб приїхати і подивитися на це, як це, можливо, тут поза межею.
Rory Alsop

@ Рорі Добре, я запитаю його про це; він, як правило, досить добре переконує мене в чомусь, що я думаю, що це {off, on} тема - насправді тема {on, off}
Michael Mrozek

1
Моє питання, здається, було змінено невпізнанно. У своєму первісному запитанні я справді намагався з'ясувати, чи було спільним для кожного сайту напади грубої сили - тобто це факт життя. На це Маттео відповів «Це справді факт життя». У другій частині питання було запитати, що я можу зробити, щоб активно зупинити ці атаки, крім того, щоб виставляти оборону . Це було б важливим вторинним питанням, якби лише певні сайти страждали від грубої атаки. На це відповів Брюс зі своєю ідеєю для tarpit. Я не дуже просив оборонних порад.
JW01

Відповіді:


14

Це справді факт життя. Ви можете встановити інструменти для фільтрації хостів, які атакують вас після пари невдалих спроб.

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

Перегляньте документацію, як налаштувати її під свої потреби.

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

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

  • DenyHosts не підвищує безпеку вашої системи: вона фільтрує атаки лише на рівні IP (це може зменшити навантаження на невеликі машини та зменшити розмір файлів журналу, але нічого більше)


1
Ааа. Я починав думати, що я особливий. Дякую за те, що ви поставили мене прямо.
JW01,

Поширюючись на Маттео, на ваше питання майже відповіли точно refs Q1.3 denyhosts.sourceforge.net/faq.html#1_0
whoami

@whoami Дякую за посилання, приємне резюме. Хоча одна річ, яка завжди іде на думку, коли я бачу використання іншого підказка порту, - це " як ти знаєш, що альтернативний порт, який ти обираєш, вже не використовується іншим? '
JW01

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

1
Також будьте обережні з DenyHosts, оскільки ви можете заблокувати себе з машини. Простий apt-get install denyhostsмене заблокував із машини.
Naftuli Kay

15

Я дотримувався цих інструкцій, щоб додати 7-секундну затримку до кожної спроби входу в SSH з помилковим паролем. Я зробив свій sshd в "tarpit" для грубих сканерів.

Я також повинен додати, що у мене модифікований tarpit sshd журнал невдалих паролів. Це може бути не цілком етично, оскільки це дає кореневому користувачеві зрозуміти, що постійні користувачі неправильно вводять як власні паролі, але оскільки я єдиний "справжній" користувач, я вважаю, що це нормально.

У мене він не працює на нестандартному порту, оскільки аспект "tarpit" нікому не витрачає часу.


Також використовуйте нестандартний порт і використовуйте ключі замість паролів. Тоді вони майже не сподіваються (за умови, що вони не знайдуть ключі, які все-таки повинні бути парольовані).
Callum Rogers

Це хороша відповідь, оскільки він має трохи «образливий» підхід, а не суто «оборонний», що, на мою думку, додає моралі.
JW01,

9

Якщо лише невелика кількість людей потребує SSH до системи, тоді слід подумати про переміщення SSH до нестандартного порту (наприклад, 6422, 8080 тощо). Це лише значно зменшить кількість спроб входу (і, можливо, захистить вас від деяких незавершених Наприклад, глист на основі SSH).


3
+1 Це скоріше корисно, оскільки це обмежує роздратування, але не помиляйтеся на це з метою безпеки - це ближчий еквівалент дверцята екрану проти комарів, ніж замок безпеки.
Пісквор вийшов з будівлі

1
+1 Це також економія ресурсів сервера.
Xeoncross

6

Погоджуйтеся з відповіддю @ Маттео; те, що ви бачите, це фактично тисячі систем зомбі, які здійснюють розподілену грубу атаку на ваш сервер, оскільки на ньому працює веб-сайт, а це означає, що можуть бути користувачі, які можуть мати обліковий запис для входу, про який, можливо, можна було б вгадати мінімальні зусилля з боку сценарію kiddie - у нього є програма, яка наказує тисячам зомбі зробити спроби грубої сили на кількох сотнях хостів веб-сайтів одночасно і просто скласти список успішних повернень.

Так само іноді ви можете бачити безліч перестановок "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.