Який найпростіший спосіб встановити максимум спроб входу в середовище LAMP (sshd, встановлений через yum)? Чи є пакет або просте правило брандмауера?
Який найпростіший спосіб встановити максимум спроб входу в середовище LAMP (sshd, встановлений через yum)? Чи є пакет або просте правило брандмауера?
Відповіді:
Я використовую Fail2ban ; Раніше я використовував Denyhosts , і він також працює досить добре. Зараз я віддаю перевагу Fail2ban, оскільки він є більш налаштованим та більш здатним керувати моніторингом декількох різних служб - наприклад, вашої сторінки входу в систему sshd та веб-програми одночасно (за умови помилок входу в систему).
Інший метод, який ви можете розглянути, - це реалізація правила LIMIT в iptables
; Я, на жаль, не можу вам допомогти у цьому, якщо ви не хочете встановити Shorewall , і тоді я просто вкажу вам на відмінну документацію на цьому веб-сайті, як налаштувати правило LIMIT, щоб обмежити можливість кого-небудь грубими. -сили вашого сервера.
Мені не подобається використовувати будь-які сторонні інструменти. Отже, я використовував комбінацію конфігурації 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
Існує не специфічний пакет, пов'язаний з SSH, щоб налаштувати це. Однак ви можете встановити CSF, який є ConfigServer & Firewall.
Дві зміни конфігурації, які я пропоную, будуть внесені у файл: / etc / ssh / sshd_config
Обмежте максимальну кількість несанкціонованих з'єднань, якими одночасно оброблятиме ssh-сервер. Чим це менше, тим складніше дітям сценарію робити паралельні, скоординовані спроби злому з декількома з'єднаннями. відредагуйте sshd_config та змініть MaxStartups зі стандартного значення "10" на "3:50:10". Значення, розділені двокрапкою, вказують на ssh-сервер: "дозволяють 3 користувачам одночасно намагатися входити в систему, а також випадково і все частіше відмовлятися від спроб з'єднання між 3 і максимум 10". Примітка: це слід збільшити на серверах із значним числом дійсних ssh користувачів, які входять у систему.
Скоротіть максимальну кількість часу для успішного входу до відключення. За замовчуванням 2 хвилини - це занадто багато часу, щоб відкрити неавторизовану спробу з'єднання (див. Вище); 30 секунд - це більш ніж достатньо часу для входу:
Для цього я використовую ці правила 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 хвилин.
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
.
є параметр, який можна помістити у файл 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.