SSH / SSHD - Як встановити максимум спроб входу?


17

Який найпростіший спосіб встановити максимум спроб входу в середовище LAMP (sshd, встановлений через yum)? Чи є пакет або просте правило брандмауера?



@Hyppy Дякую, я спробував шукати, але, на жаль, є багато погано названих питань / тем.
Джон Гіммельман

Відповіді:


11

Я використовую Fail2ban ; Раніше я використовував Denyhosts , і він також працює досить добре. Зараз я віддаю перевагу Fail2ban, оскільки він є більш налаштованим та більш здатним керувати моніторингом декількох різних служб - наприклад, вашої сторінки входу в систему sshd та веб-програми одночасно (за умови помилок входу в систему).

Інший метод, який ви можете розглянути, - це реалізація правила LIMIT в iptables; Я, на жаль, не можу вам допомогти у цьому, якщо ви не хочете встановити Shorewall , і тоді я просто вкажу вам на відмінну документацію на цьому веб-сайті, як налаштувати правило LIMIT, щоб обмежити можливість кого-небудь грубими. -сили вашого сервера.


Слід додати, що Fail2ban доступний у багатьох сховищах дистрибутивів, тому його встановлення є легким вітром; Я жодного разу не бачив Denyhosts, але це не означає, що він не є в деяких, або що він не доданий з останнього разу, коли я перевірив.
Кромей

Я стикався з проблемою, що fail2ban версії v0.8.14 не працював правильно з командою iptables-multiport. І це відома проблема з утилітою fail2ban, вирішена в нових версіях ... Ось опис: github.com/fail2ban/fail2ban/isissue/798 Тож я вірю лише в механізми безпеки, розроблені в серверному програмному забезпеченні, а також сторонніми утилітами ...
Джордж Гаал

44

Мені не подобається використовувати будь-які сторонні інструменти. Отже, я використовував комбінацію конфігурації ssh та налаштування брандмауера. Наступним рішенням зловмиснику дозволяється виробляти рівно 3 реєстрації помилок за 2 хвилини, інакше він буде заблокований протягом 120 секунд.

1) Додайте наступний рядок до /etc/ssh/sshd_config

MaxAuthTries 1

Це дозволить лише 1 спробу входу за з'єднання. Перезавантажте ssh-сервер.

2) Додайте наступні правила брандмауера

Створіть новий ланцюжок

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

Блокуйте кожну IP-адресу протягом 120 секунд, що встановлює більше трьох з'єднань протягом 120 секунд. У разі четвертої спроби з'єднання, запит делегується SSHATTACKланцюгу, який відповідає за реєстрацію можливої ​​ssh-атаки і, нарешті, скидає запит.

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3) Дивіться записи журналу можливих ssh-атак у /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

2
Дивовижно! але у мене є проблема, якийсь хлопець / бот у Франції не налаштував належним чином свої хакерські інструменти, тому він продовжує входити в систему, навіть якщо трафік його перестає. В результаті, мої журнали щосекунди заповнюються даними від цього хлопця. Як-небудь навколо цього?
Smarties89

2
Для менш досвідчених людей, таких як я: рядки iptables вводяться у рядку bash, а не вводяться десь у файл.
Ендрю Свіфт

4

Існує не специфічний пакет, пов'язаний з SSH, щоб налаштувати це. Однак ви можете встановити CSF, який є ConfigServer & Firewall.

КСФ

Дві зміни конфігурації, які я пропоную, будуть внесені у файл: / etc / ssh / sshd_config

Обмежте максимальну кількість несанкціонованих з'єднань, якими одночасно оброблятиме ssh-сервер. Чим це менше, тим складніше дітям сценарію робити паралельні, скоординовані спроби злому з декількома з'єднаннями. відредагуйте sshd_config та змініть MaxStartups зі стандартного значення "10" на "3:50:10". Значення, розділені двокрапкою, вказують на ssh-сервер: "дозволяють 3 користувачам одночасно намагатися входити в систему, а також випадково і все частіше відмовлятися від спроб з'єднання між 3 і максимум 10". Примітка: це слід збільшити на серверах із значним числом дійсних ssh користувачів, які входять у систему.

  • За замовчуванням : MaxStartups 10
  • MaxStartups 3:50:10

Скоротіть максимальну кількість часу для успішного входу до відключення. За замовчуванням 2 хвилини - це занадто багато часу, щоб відкрити неавторизовану спробу з'єднання (див. Вище); 30 секунд - це більш ніж достатньо часу для входу:

  • За замовчуванням : LoginGraceTime 2m
  • ВхідGraceTime 30

3

Для цього я використовую ці правила IPTables:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

Це дозволить лише 4 пакети TCP / SYN перенести 22 з IP-адреси за 5 хвилин. Якщо буде зроблено більше спроб, двері закриваються до закінчення 5 хвилин.


Для чого потрібне редагування?
timkofu

Практично те ж саме , як: -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Алікс Аксель

Я робив ці дві команди iptables в Debian Jessie, але все ще бачу спроби входу в SSH кожні 2 секунди з однієї і тієї ж IP адреси. Будь-які ідеї?
Олексій Озеров

1

є параметр, який можна помістити у файл sshd_config для сервера:

 MaxAuthTries
         Specifies the maximum number of authentication attempts permitted per
         connection.  Once the number of failures reaches half this value, additional 
         failures are logged.  The default is 6.

Корисно (особливо в поєднанні з іншими вже запропонованими пропозиціями), але насправді не вирішує проблему самостійно, оскільки для когось це тривіально, щоб просто продовжувати з'єднання.
Кромей
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.