Nobody about something

Защита сервера от брутфорса с помощью ipfw

Написано 7 июня 2008 в 23:22 - Рубрики: *nix

Небольшая запись по поводу секурности сервера. Почему-то многие часто забывают об элементарных вещах и платятся за это.
Рассмотрим VDS основанную на системе виртуализации VSDmanager и с панелью управления ISPmanager.
В прнципе описанное относится к любому серверу на FreeBSD
В ISPmanager`в разделе возможности включаем файрвол. Далее настройку производить надо ручной правкой конфигов — ISPmanager в этом не помошник. Хотя, в нём всё это можно точно также сделать, но как-то руками ближе к сердцу 🙂

Правим файл /etc/firewall.conf (или тот, который у вас прописан в /etc/rc.conf в строке firewall_type= )
Вот мой файл (порты и адреса заменены условными знаками):

add allow ip from work_ip to me dst-port 443
add allow ip from home_ip to me dst-port 443
add deny ip from any to me dst-port 443
add allow ip from work_ip to me dst-port 22
add allow ip from home_ip to me dst-port 22
add deny ip from any to me dst-port 22
add allow ip from me to me dst-port 8080
add deny ip from any to me dst-port 8080
add allow tcp from me to me dst-port fcgi_port
add deny tcp from any to me dst-port fcgi_port
add allow ip from work_ip to me dst-port proxy_port
add allow ip from home_ip to me dst-port proxy_port
add deny ip from any to me dst-port proxy_port

А затем, чтобы изменения вступили в силу перезупскаем ipfw:

/etc/rc.d/ipfw restart

Расшифровка:
Как, я уже писал, я использую nginx+fastCGI. Но апач я оставил.
Апач слушает 8080 и 443 порт. Разрешаем доступ к 8080 только с самого сервера, то есть с nginx`а

add allow ip from me to me dst-port 8080
add deny ip from any to me dst-port 8080

Аналогично поступаем с портом, на котором слушает FastCGI ( fcsgi_port ). Пусть в настройках php-fpm и оговаривается с какого ip он может принимать соединения, но «бережённого бог бережёт»:

add allow tcp from me to me dst-port fcgi_port
add deny tcp from any to me dst-port fcgi_port

В то же время разрешаем доступ к 443-му порту, на котором висят ISPmanager и phpMyAdmin с WebMail`ом( они временно. Скоро тоже переедут на fastCGI) с рабочего ip — work_ip и домашнего ip — home_ip:

add allow ip from work_ip to me dst-port 443
add allow ip from home_ip to me dst-port 443
add deny ip from any to me dst-port 443

Аналогично поступаем с ssh портом

add allow ip from work_ip to me dst-port 22
add allow ip from home_ip to me dst-port 22
add deny ip from any to me dst-port 22

и с портом, на котором висит прокси ( proxy_port )

add allow ip from work_ip to me dst-port proxy_port
add allow ip from home_ip to me dst-port proxy_port
add deny ip from any to me dst-port proxy_port

Спросите почему у меня не закрыт FTP порт (21)?
Отвечу: FTP у меня отключён, так как я им не пользуюсь. В рамках VDS ftp запускается через inet.d. Для его отключения, закомментируем строку про ftp в файле /etc/inetd.conf и перезапустим inet.d:

/etc/rc.d/inetd restart

Вот и всё. От ДДОСа это конечно не защитит, но от тупого брутфорса (а достаточно много серверов ломают именно брутфорсом) это спасёт гарантировано. Если у вас не статический домашний IP, а динамический, то можно внести всю сеть своего провайдера.
Также, при желании, можно закрыть и 110 порт (pop3) для защиты почты. Закрывать тем же методом, что и ssh.

Ещё раз повторюсь: это всё элементарные азы, но про них часто забывают. Но стоит глянуть в логи ( /var/log/messages ), то можно ужаснуться от попыток брутфорса.

Метки: ,

Комментирование закрыто.