CSF — защищаем свой сервер или VDS
Небольшая предыстория — на одном из нагруженных подшефных сайтов приключилась неприятность. Одна из систем управления контентом не была вовремя обновлена и произошел взлом. К счастью, обошлось без серьезных последствий — вовремя была замечена попытка рассылки спама, найдены загруженные руткиты. Мы также провели небольшое исследование и определили, что управление зараженной машинкой производилось через нестандартные TCP и UDP порты. В этом нет ничего необычного, но нужно было достаточно быстро разрешить ситуацию и далее спокойно делать аудит.
Мы решили в очередной раз попробовать пакет, который называется csf. Собственно, csf состоит из двух основных модулей — lfd (Login Failure Daemon) и csf (ConfigServer Firewall). Первый модуль работает в журнальными файлами сервера и определяет попытки подбора паролей. Собственно csf — утилита, позволяющая более удобно работать с iptables, блокировать неиспользуемые порты, протоколировать попытки подключения ним, добавлять в автоматическом режиме блокировки попытки взлома.
По-умолчанию csf устанавливается в так называемом режиме «тестирования» — устанавливаются основные правила и блокировки, однако автоматически опасные IP не блокируются. Рассмотрим, как производится установка и начальная настройка csf. Официальная документация доступна по адресу download.configserver.com/csf/install.txt, мы же рассмотрим несколько упрощенный вариант.
Итак, загружаем пакет и запускаем инсталлятор:
1 2 3 |
wget -O - http://www.configserver.com/free/csf.tgz | tar xvzf - cd csf sh ./install.sh |
Как правило, в современных ОС уже в стандартной поставке есть дополнительные модули, поэтому установка каких-либо дополнительных пакетов не требуется.
Запускаем csf в конфигурации по-умолчанию:
1 |
service csf start |
Перейдем к небольшой настройке. Конфигурационные файлы csf расположены в директории /etc/csf. Обратите внимание на следующие настройки:
csf.allow — укажите в этом файле IP-адреса из «белого списка». Даже при подозрительной активности данные адреса не будут заблокированы. Как правило, в данный файл стоит внести рабочие/домашние IP, адрес VPN-сервера (если используется) и проч.
csf.deny — сюда можно внести IP-адреса, которые следует однозначно и безусловно заблокировать. Если есть такой список — самое место указать его в этом файле. Обратите внимание — csf автоматически удаляет через время адрес из списка блокировки. Чтобы тот или иной адрес был блокирован постоянно, нужно в комментарии указать «do not delete», например:
1 |
1.2.3.4 # do not delete |
csf.conf — общая конфигурация. Это достаточно объемный конфигурационный файл, но хорошо документированный. Стоит обратить внимание на следующие параметры:
- TCP_IN, TCP_OUT, UDP_IN, UDP_OUT — список разрешенных портов для входящего и исходящего трафика. Как правило, значения по-умолчанию адекватны.
- TESTING — по-умолчанию включен режим тестировния. После настройки может быть смысл выключить этот режим, что подключит lfd и автоматическую блокировку IP-адресов, производящих подбор паролей.
После изменения конфигурации необходимо перезапустить csf. Это следует делать командой
1 |
csf -r |
Теперь, когда csf запущен и работает, можно наблюдать протоколирование всех подозрительных событий в журнальном файле /var/log/messages. А если необходимо заблокировать какой-либо IP-адрес вручную, то это можно сделать командой
1 |
csf -d 1.2.3.4 |
В том случае, если адрес нужно убрать из списка заблокированных, используется ключ -dr:
1 |
csf -dr 1.2.3.4 |
Больше примеров и сценариев использования csf есть в официальной документации.
В заключении заметим, что csf и подобные инструменты — это не замена установке обновлений операционной системы и используемых CMS. Следите за своими ресурсами и не забывайте делать резервные копии.