Поговорим о безопасности: cPHulkd
Написал: dralex в категорию Интернет, tags: cPanel, hosting, iptables, безопасностьПродолжаю серию заметок о хостинге. Сегодня речь пойдет о cPHulkd (аддон для панели управления хостингом cPanel).
Рано или поздно любой вебмастер сталкивается с тем, что на его сервер начинают кидаться всякие уроды, которым очень хочется получить к нему доступ. Как правило, к серверу подключаются по SSH, пытаются брутфорсить рутовский аккаунт, реже pop3 аккаунты, аккаунты других юзеров и т.д.
Буквально несколько дней назад, сам столкнулся с такой проблемой: более 8 тысяч неудачных подключений в день, попытки брутфорсить root-а. Хорошо, что cPanel ведет логи и раз в сутки оповещает о всех попытках неверных подключений. Разумеется, поднялся вопрос о том, как обезопасить сервер и как бороться с брутфорсом.
Как оказалось, в cPanel-и, начиная с 10ой версии уже встроен модуль защиты, называется cPHulkd.

Суть модуля такова: выбирается допустимое кол-во неверных логинов и штрафное время для тех ip адресов и юзеров, которые неверно подключаются. Спалившийся логин/ip отключается на указанное время. Кроме того есть возможность получать оповещения о нарушениях по мылу.
Воспользовавшись этим модулем, кол-во новых попыток подключений снизилось с 8 тысяч до сотни. Что есть большой плюс.
Но у cPHulkd есть и два минуса, о которых я хочу рассказать. Рассмотрим по порядку обе проблемы и методы их решения.
Минус №1.
К большому сожалению, этот модуль не умеет добавлять запрещенные IP адреса в системный фаирволл iptables, таким образом, через указанное в настройках время, злоумышленники снова смогут брутфорсить с этих IP адресов. Разработчики обещают, что в следующих версиях эта возможность будет реализована.
Решить эту проблему можно несколькими способами:
Во-первых, можно изменить порт SSH соединения со стандартного 22го на какой то другой, т.е. подойдет любой порт от 1024 и до 65537 неиспользуемый системой.
Чтобы изменить порт SSH, надо отредактировать конфигурационный файл. Как правило он находится в / etc/ ssh или / usr/ local/ etc/ ssh, ну или типа в похожей директории. Все что нужно сделать, это найти строчку, в которой написано #Port 22, раскомментить ее и изменить номер порта, на желаемый. После этого нужно перезапустить демона SSH.
Во-вторых, у нас есть возможность самим банить IP адреса злоумышленников. Делается это достаточно просто: заходим рутом на сервер, и пишем в командной строке
iptables -A INPUT -s блокируемый адрес -j DROP
после это надо сохранить изменения
service iptables save
И, наконец, третий способ, на мой взгляд лучший, это программка CFS (Config Server Security). Она работает напрямую с iptables, и что самое привлекательное для пользователей cPanel-и – имеет с ней интеграцию. Работает на большинстве x-системах, поддерживает виртуальные сервера.
Минус №2.
В процессе тестирования cPHulkd, я уменьшил кол-во неверных логинов до 3х и увеличил штрафное время на IP и на юзера до 2000 минут. Разумеется, cPHulkd запретил логин в рута на это время, причем запретил логин именно в cPanel, но законнектиться рутом через SSH – возможность осталась.
Решение.
Заходим рутом на сервер и пишем в командной строке
/usr/local/cpanel/bin/cphulk_pam_ctl --disable
по идее, эта строчка должна отключить cPHulkd. Затем заходим в cPanel и проверяем настройки cPHulkd еще раз.
у меня, правда, не получилось
поэтому пришлось хитрить и действовать иначе:
mysql> use cphulkd;
mysql> DELETE FROM brutes WHERE IP='Ваш IP адрес';
mysql> DELETE FROM logins WHERE user='root';
mysql> quit
т.е. заходим в mysql, выбираем базу cphulkd и удаляем из штрафной базы свой IP адрес и юзернейм root, после этого уже точно можем зайти в cPanel и продолжить играть с настройками
Надеюсь эти знания пригодятся, если возникли вопросы – обращайтесь.

Записи (RSS)