Предыстория этой статьи такая: оставил как-то домашний комп, на котором мирно приютилась Ubuntu, на несколько суток - торренты покачать. Проснулся с утра, решил посмотреть логи и обнаружил: $ cat /var/log/auth.log | grep invalid Dec 8 02:05:01 monster sshd[20083]: Failed password for invalid user username from 190.8.192.66 port 44223 ssh2 Dec 8 02:05:07 monster sshd[20087]: Failed password for invalid user administrator from 190.8.192.66 port 46516 ssh2 Dec 8 02:05:20 monster sshd[20095]: Failed password for invalid user test from 190.8.192.66 port 50891 ssh2 Dec 8 02:05:26 monster sshd[20099]: Failed password for invalid user root from 190.8.192.66 port 52630 ssh2 Dec 8 02:05:31 monster sshd[20103]: Failed password for invalid user admin from 190.8.192.66 port 55130 ssh2 Dec 8 02:05:38 monster sshd[20107]: Failed password for invalid user guest from 190.8.192.66 port 56862 ssh2 Dec 8 02:05:44 monster sshd[20111]: Failed password for invalid user master from 190.8.192.66 port 59278 ssh2 Какой-то чукча ломился по SSH почти сутки. Мой 50-символьный пароль, конечно, ему подобрать слабо, но вдруг что-нибудь еще угадает. Нужно защититься. Начал с простого анализа: какие порты открыты. Оказалось, кроме ssh я, в общем, ничего и не открывал. К тому же я сижу за wifi-точкой доступа, и фаервол крутится на ней. Соответственно, только 22-ой порт прокидывается на мою машину. Значит, проверим ssh. Сначала, конечно, родной конфиг: /etc/ssh/sshd_config. Туда добавляем строчки: # Рекомендуется для секьюрити UsePrivilegeSeparation yes # Плохая привычка - заходить по root-ом PermitRootLogin no # Пустые пароли - нельзя! PermitEmptyPasswords no # "Жесткий" режим - ON StrictModes yes # Кому вообще можно заходить AllowUsers artix Обязательно сделать рестарт: $ sudo /etc/init.d/ssh restart Но этих мероприятий недостаточно для защиты от "brute force" атак, или проще говоря, от простого подбора пароля. Тем более, что программа-автомат может подбирать пароли быстро и эффективно. Поэтому ставим специальное средство, которое позволит блокировать IP-адреса всех подбиральщиков на некоторое время, и тем самым, убить всю производительность автоматических роботов. Сначала я попробовал в данном контексте использовать sshguard, но он имеет жесткую связку с iptables или ipfw и отказывается корректно работать под ufw. Поэтому взял fail2ban $ sudo apt-get install fail2ban Программа fail2ban работает в связке с firewall: iptables, pf или ipfw - т.к. блокирование IP происходит именно через firewall. Включаем фаервол, если он не включен. ufw status Firewall not loaded # ufw enable Firewall started and enabled on system startup # ufw status Firewall loaded # ufw default allow Default policy changed to 'allow' (be sure to update your rules accordingly) Обратите внимание - последняя команда пропускает "всё", т.е. превращает ваш компьютер в одну сплошную дыру. В моем случае это не критично, т.к. локальных машин нет, а от глобальных я защищен файерволом, встроенным в железку - роутер. Поэтому мне важно просто запустить фаервол. Далее нужно обязательно посмотреть в файл /etc/fail2ban/jail.conf - основной файл настройки fail2ban. Здесь регулируются время блокировки и еще много ценных параметров, которые могут оказаться весьма полезны. Дальше - достаточно просто запустить fail2ban как сервис: # /etc/init.d/fail2ban restart Желательно так же сделать старт fail2ban автоматическим. Для этого лично мне удобно пользоваться утилитой sysv-rc-conf. По-моему, наглядней некуда. Вот и все. На защиту ушло 10 минут. Теперь можно спать спокойно.
Linux/Windows Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor