Защита ssh и ftp от брутфорса

Linux
Настраивал одной конторе сервер на ubuntu 10.04 tls2, через несколько дней ребята позвонили и сказали что после публикации ssh(22) и ftp(21) в мир для своих нужд в логах посыпался перебор паролей. Ковырять port-knokking на linux было неохота, потому набрав команду
sudo apt-cache search ssh | less
бегло пробежался по тому что предлагалось. Одна утилитка меня заинтересовала —
sshguard - Protects from brute force attacks against ssh
пробежавшись в google по применению нашел простой вариант.
Делаем следующее:
sudo apt-get install sshguard
поправим наш файерволл:
iptables -N sshguard
iptables -A INPUT -p tcp --dport 22 -j sshguard
iptables -A INPUT -p tcp --dport 21 -j sshguard
, теперь нам надо подключить анализ логов, делаем:
tail -n0 -F /var/log/auth.log | /usr/local/sbin/sshguard &
так как сервер рано или поздно будет перезагружен — то пропишем данную команду в /etc/rc.local

Прибавим прав программе sshguard, она должна менять динамически правила файервола, делаем:
chmod +s /usr/sbin/sshguard

Осталось передернуть процессы:
sudo /etc/init.d/sshd restart
sudo /etc/init.d/proftpd restart

Ну вот и все, теперь после 4-х неправильных попыток залогиниться ip-адрес атакующего узла будет залочен правилом в файере. Кстати понаблюдав откуда приходят атаки, тупо зарезал эти зоны с маской 16 в файере — теперь оттуда только «чих» и долетает.

Совет: «а вы поменяйте порт ssh и ftp на другие» довольно глуп, поясню почему: Во-первых, nmap и ему подобные утилиты быстро вычислят что за сервис на порту. Во-вторых, это вызовет нездоровый интерес со стороны неумных людишек — и они озаботятся вопросом «А что там спрятано так? И зачем так сделано?» В-третьих, когда вам приходиться обслуживать несколько компаний по ssh — приходиться помнить у кого какой порт — неудобно это.

3 комментария

avatar
а denyhost не пробовали? :)
avatar
что первое под руку подвернулось, мне вообще больше нравился PortSentry во FreeBSD
avatar
Не совсем согласен с выводами. Решил отписать своё но. Для этого даже зарегался ))))

1) «а вы поменяйте порт ssh и ftp на другие» довольно глуп — не глупо, необходимо.
Ну 1 порт стандартный. Что получаем — всё просто сор и много в auth.log. Ответ почему — многочисленные сетевые сканеры постоянно пытаются соединиться с 22-м портом и как минимум получить доступ путем перебора логинов/паролей из своей базы.
Ну у тебя и правило со временем в iptables будет на 20 страниц, блокировать под сети и все эти боты, нудное и никому не нужное дело.
2) nmap и ему подобные утилиты быстро вычислят что за сервис на порту. Ну уж если тк страшен nmap и иже с ним. Создай ловушки в виде открытых портов, и повешать блокировку при попадании на этот порт этим сканером. Всё тут и конец nmapa настал.
3) вызовет нездоровый интерес со стороны неумных людишек… И… Волка бояться в лес не ходить. Что то из этого разряда.
4) В-третьих, когда вам приходиться обслуживать несколько компаний по ssh — приходиться помнить у кого какой порт. Зачем. Где ум и логика. Можно для себя составить логику по который точно можно знать на каком порту и какая из компаний висит. Всё. Логику знаешь только ты. Записывать нигде ничего не надо, ну разве шпаргалка (в виде подсказки, которую поймёт только её автор) от амнезии.
5) мне вообще больше нравился PortSentry во FreeBSD, угу и fail2ban и ешё куча всего. Согласен.
6) В остальном да такого рода утилиты необходимы для того чтоб спать более спокойно. Но… Если это ваш домашний сервер, то подумайте, намудрить с безопасностью и дальше на себе рвать волосы, вот блин яж тут эту фигню настроил и т.д. А у меня в практике уже такое было, потом ехал до сервера чтоб напрямую с консоли поснимать ненужные блоки от самого себя ))) Вот так. Всё хорошо в разумных пределах.

Фух ну вроде всё
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.