Наша взаимовыгодная связь https://banwar.org/
Варто сьогодні засвітитися сервісу в загальнодоступній мережі, так практично він відразу стає об'єктом для атаки. Однією з проблем є спроба отримання доступу за допомогою перебору паролів. І SSH є популярною метою.
Аналіз /var/log/auth.log або аналогів, показує що спроба підбору пароля як правило проводиться відразу з декількох IP і розтягнута в часі. Піти можна двома шляхами: використовуючи можливості настройки демона SSH, використання пакетного фільтра і Port knocking.
Перебір пароля в логах /var/log/auth.log
Найпростіший і найдієвіший спосіб це змінити 22 порт буде використовуватися під, наприклад на 2002. Якщо це не перешкоджає іншим завданням:
В / etc / ssh / sshd_config
Port 2002
Після цього спроби перебору паролів практично припиняються. Хоча бувають випадки коли змінити порт не можна.
Як варіант можна обмежити доступ по ssh певним користувачам (зокрема root) або групі. У sshd_config за це відповідає цілий ряд параметрів: AllowUsers, AllowGroups, DenyUsers і DenyGroups. Зручно то відразу з логіном можна вказати IP або підмережа. Наприклад, дозволимо доступ користувачеві admin і user, останньому стільки з певного IP.
sshd_config: AllowUsers admin [email protected]
Ще один дієвий варіант захисту від перебору використання для аутентифікації сертифікатів. Причому за допомогою спеціального параметра match, можна створити умовний блок, в якому перевизначити параметри в глобальній секції конфігураційного файлу. Наприклад, заборонимо вхід по SSH по паролю для користувача root, дозволивши всім іншим:
PasswordAuthentication yes # всім дозволяємо доступ по паролю # користувач root буде використовувати тільки сертифікат match user root PasswordAuthentication no KbdInteractiveAuthentication no
Використовуючи TCP Wrapper також можемо обмежити доступ до будь-якого сервісу (демона) тільки з певних IP, для цього слід лише прописати в файл /etc/hosts.allow або /etc/hosts.deny потрібне правило. Дозволимо в /etc/hosts.allow доступ тільки з потрібною підмережі:
sshd: 192.168.1.0/24: allow
Або в /etc/hosts.deny:
sshd: ALL: deny sshd: ALL EXCEPT 192.168.1.0/24: allow
Пакетний фільтр дозволяє дуже точно задавати параметри з'єднань, відкидаючи всі непотрібні пакети. З його допомогою легко обмежити доступ до 22 порту тільки певними адресами.
iptables -A INPUT -s! 192.168.0.1 -p tcp -m tcp --dport 22 -j REJECT --reject-with icmp-port-unreachable
Проста фільтрація пакетів по портам і IP-адресами в такому разі не дуже ефективна, особливо якщо системний адміністратор нe пріязан до певного робочого місця. У цьому випадку допоможуть спеціальні утиліти. Один з них Fail2ban fail2ban.org), який спочатку Fail2ban якраз і розроблявся для захисту SSH. Хоча сьогодні це вже фреймворк який можна легко налаштувати під будь-які програми та події, в тому числі і прописати свої методи блокування IP. Принцип роботи дуже просто. Демон періодично перевіряє журнали за допомогою на наявність записів про будь-які підозрілі дії. Потім підозрілий IP блокується засобами iptables або TCP Wrapper. Через зазначений в настройках час блокування зазвичай знімається, щоб випадково не заблокувати легальний вузол. При спрацьовуванні правила записується подія в журнал /var/log/fail2ban.log і може бути відправлений email.
Один процес може контролювати відразу кілька сервісів, а в пакеті поставляються готові настройки для популярних додатків Linux. В налаштуваннях за замовчуванням захищається тільки SSH.
В Ubuntu і Debian встановлюється командою:
$ Sudo apt-get install fail2ban
Всі настройки проводяться в декількох файлах розміщених в каталозі / etc / fail2ban. У fail2ban.conf зберігаються параметри запуску самого демона, в jail.conf описуються контрольовані сервіси (всередині секції ssh).
[Ssh] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3
Фільтри і дії прописуються в файлах, розміщених в підкаталогах filter.d і action.d. За замовчуванням всі файли мають розширення .conf, їх краще не чіпати (в т.ч. і jail.conf). Всі зміни слід вносити в файл з розширенням .local (наприклад jail.local), параметри якого заміщають установки з першого. А при оновлення не будуть втрачені. Для перевірки роботи фільтра можна використовувати утиліту fail2ban-regex.
Альтернативою fail2ban можна назвати Sshguard (sshguard.net).