Відповіді:
Ось хороший пост з цього приводу Райнера Віхмана.
Він пояснює плюси та мінуси методів тези:
Я використовую fail2ban, який заблокує IP-адресу після декількох невдалих спроб протягом певного часу.
Поєднайте це з тестуванням на захист паролем (використовуючи john (John the Ripper)), щоб переконатися, що атаки жорстокої сили не матимуть успіху.
TARPIT
цілі, якщо ви відчуваєте себе неприємно (від xtables-addons).
Ви можете зробити щось на зразок DenyHosts:
http://denyhosts.sourceforge.net/
Він використовує вбудований hosts.allow / hosts.deny для блокування зловмисників SSH.
Один з найпростіших способів уникнути цих атак - це змінити порт, який слухає sshd
Як зазначає Кріс, використовуйте ключі шифрування замість паролів.
Додайте до цього:
Скільки людей або локацій (з плаваючими загальнодоступними IP-адресами) вам дійсно потрібні для доступу до ваших загальнодоступних ssh-з'єднань?
Залежно від кількості загальнодоступних хостів ssh, які ви підтримуєте, і від того, чи можете ви звузити загальні критерії підключення, можливо, це буде простіша конфігурація, що підтримується, щоб обмежити доступ до кількох зовнішніх хостів.
Якщо це працює для вас, це може справді спростити адміністративні витрати.
Окрім інших хороших пропозицій, одна дійсно проста річ - це обмеження швидкості вхідних з'єднань. Обмежте до 3 підключень в хвилину за IP:
iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Використовуйте параметр "Дозволити користувачі" в sshd_config, щоб гарантувати, що лише невеликий набір користувачів може взагалі увійти. Усі інші будуть відхилені, навіть якщо їх ім’я користувача та пароль правильні.
Ви навіть можете обмежити користувачів входами з певного хоста.
наприклад,
AllowUsers user1 user2@host.example.com
Це зменшить простір пошуку та уникне тих старих користувачів, які випадково залишилися прокладеними або включеними (хоча їх, звичайно, слід відключити, це простий спосіб зупинити їх використання для запису на основі SSH).
Це не повністю зупиняє жорстокі напади, але допомагає зменшити ризик.
Використовуйте щось подібне з PF:
Таблиця <ssh-brute> зберігає
блок у швидкому журналі з мітки ssh_brute
передавати на $ ext_if proto tcp до ($ ext_if) порт ssh модулювати стан \
(max-src-conn-швидкість 3/10, перевантажувати флеш глобальним)
Вибивання портів - досить солідний спосіб уникнути подібних речей. Трохи химерно, іноді дратує, але це, безумовно, змушує проблему згасати.
Контекст важливий, але я б рекомендував щось подібне:
Крім пропозиції щодо обмеження швидкості Шербанга, важлива тривалість затримки. Зі збільшенням затримки між групами з 3 спроб входу з 2 хвилин до 20 хвилин кількість різних IP-адрес, які зробили більше трьох спроб входу, зменшилась, порівнявши два тижні на одній моїй машині, з 44 спроб до 3 Жодна з цих трьох адрес не намагалася пробувати довше 11 годин.
Дуже анекдотично, але auth.log став для мене набагато більш читабельним ...
Мене просто не хвилює. Нехай вони причепляться до порту, вони не збираються грубо змушувати ключів.
встановити OSSEC. він не тільки стежить за повторними входами, але вводить тимчасовий блок з iptables для ip-порушника. І наприкінці він надішле вам звіт із зазначенням деталей. він записує все, що приємно. Колись Somone спробував понад 8000 імен для входу, щоб увійти. я розібрав журнали та отримав приємний список користувачів поза угодами;)