Установка и настройка Config Server Firewall на Centos/Debian

Установка и настройка Config Server Firewall на Centos/Debian

1.Установка необходимых зависимостей Config Server Firewall

Centos

yum install perl-libwww-perl

yum install perl-Time-HiRes

Debian

apt-get install libwww-perl

apt-get install Time-HiRes

2.Установка Config Server Firewall

wget http://www.configserver.com/free/csf.tgz

tar xvfz csf.tgz

cd csf

sh install.sh

3.Проверка необходимых модулей iptables

perl /usr/local/csf/bin/csftest.pl либо perl /etc/csf/csftest.pl

Testing ip_tables/iptable_filter…OK

Testing ipt_LOG…OK

Testing ipt_multiport/xt_multiport…OK

Testing ipt_REJECT…OK

Testing ipt_state/xt_state…OK

Testing ipt_limit/xt_limit…OK

Testing ipt_recent…OK

Testing xt_connlimit…OK

Testing ipt_owner/xt_owner…OK

Testing iptable_nat/ipt_REDIRECT…OK

Testing iptable_nat/ipt_DNAT…OK

RESULT: csf should function on this server

4.Удаление,если уже были установлены другие firewall, с которыми конфликтует CSF(APF/BFD)

sh /usr/local/csf/bin/remove_apf_bfd.sh либо sh /etc/csf/remove_apf_bfd.sh

5.Настройка Config Server Firewall

/etc/csf – каталог,содеражащий все конфигураионные файлы

csf.conf – основной конфигурационный файл

csf.allow – список IP-адресов и сетей в формате CIDR, доступ для которых/ые всегда разрешен («белый список»)

csf.deny – список IP-адресов и сетей в формате CIDR, доступ для которых/ые всегда запрещен («черный список»)

csf.ignore — список IP-адресов и диапазонов CIDR, которые не подлежат проверке и не будут блокироваться файерволом.(т.е встроенный в CSF инструмент lfd – login failure detection не будет проверять эти адреса/сети при чтении лог-файлов)

Однако несмотря на наличие адресов/сетей в этом файле, их можно заблокировать добавив вручную в файл csf.deny

Если один и тот же адрес/диапазон сети находит одновременно и в csf.deny и в csf.allow, то приоритет имеет файл csf.allow.(т.е доступ блокироваться не будет)

Если адрес/сеть находится в файле csf.allow, такой адрес/сеть все еще может быть заблокирован средствами lfd(для исключения этого такой адрес/сеть нужно поместить в файл csf.ignore)

По умолчанию CSF запускается в тестовом режиме ( в этом режиме lfd не запускается и правила очищаются, каждые N-минут, выставленные в параметре TESTING_INTERVAL (по умолчанию каждые 5 минут)

################ Первоначальные настройки

TESTING = «0» – отключение тестового режима

RESTRICT_UI = «1» – ограничение доступа к настройкам CSF через пользовательский интерфейс(Cpanel,DirectAdmin,Webmin etc)

AUTO_UPDATES = «1» – включение проверки доступности обновлений и автоматическое обновление в случае его обнаружения(при установке CSF создается cron-задание /etc/cron.d/csf_update)

################## настройки для Ipv4-протокола

# Фильтрация входящих/исходящих портов для протоколов tcp/udp, а также фильтрация icmp-протокола

#Разрешить входящие подключения на TCP-порты

TCP_IN = «20,21,22,25,53,80,110,143,443,465,587,993,995»

# Разрешить исходящие подключения на TCP-порты

TCP_OUT = «20,21,22,25,53,80,110,113,443,587,993,995»

#Разрешить входящие подключения на UDP-порты

UDP_IN = «20,21,53»

# Разрешить исходящие подключения на UDP-порты

UDP_OUT = «20,21,53,113,123»

# Разрешить входящий ICMP-запрос(разрешить Ping-овать наш сервер)

ICMP_IN = «1»

# Ограничить кол-во входящих ICMP-запросов с одного IP-адреса в единицу времени

ICMP_IN_RATE = «1/s»

# Разрешить исходящий ICMP-запрос(разрешить Ping-овать с нашего IP-адреса другие сервера)

ICMP_OUT = «1»

# Ограничить кол-во входящих ICMP-запросов с нашего IP-адреса другие сервера)

#0 – отсутствие ограничений

ICMP_OUT_RATE = «0»

################## настройки для IPv6-протокола

# Отключение поддержки IPv6

IPV6 = «0»

################## Общие настройки

#По умолчанию csf будет фильтровать весь трафик на всех сетевых интерфейсах,за #исключением loopback.Если необходимо фильтровать трафик ТОЛЬКО на конкретных #сет.интерфейсах,тогда указываем ихи здесь

ETH_DEVICE = «»

#Если не нужно фильтровать трафик на конкретном интерфейсе,указываем его здесь.

ETH_DEVICE_SKIP = «»

#Устанавливает количество заблокированных IP-адресов которые CSF отслеживает. Рекомендуется ограничить число запрещенных IP-адресов, как имеющие слишком много

блоков может замедлить производительность сервера.

DENY_IP_LIMIT = «200»

#Аналогично, но для временной блокировки IP-адресов

DENY_TEMP_IP_LIMIT = «100»

#Включение lfd-службы

LF_DAEMON = «1»

################## Защита от Syn-flood-атак

# Включать при наличии/подозрении на Syn-flood-атаку

SYNFLOOD = «0»

SYNFLOOD_RATE = «100/s»

SYNFLOOD_BURST = «150»

#Ограничивает число одновременных НОВЫХ (new syn packet)соединений на порт c одного IP-адреса

CONNLIMIT = «»

#Например

#CONNLIMIT = «22;5,80;20″

#Разрешается не более одновременно НОВЫХ 5 соединений на 22 порт и 20 #одновременных НОВЫХ соединений на 80 порт

#Ограничивает количество соединений в интервале времени, которые подключаются на #указанные порты

PORTFLOOD = «»

Синтаксис

port;protocol;hit count*;interval seconds

Например

22;tcp;5;300,80;tcp;20;5

Блокировку IP-адреса, если имеется более 5 подключений на порт 22 по протоколу TCP за 300 секунд. Блокировка удаляется после 300 секунд после последнего пакета, отправленного клиентом к этому порту

Блокировку IP-адреса, если имеется более 20 подключений на порт 80 по протоколу TCP за 50 секунд. Блокировка удаляется после 5 секунд после последнего пакета, отправленного клиентом к этому порту

#Включается для отладки

WATCH_MODE = «0»

################## Натсройки отчетов

# E-mail, на который отпрвалять уведомления от lfd-службы

LF_ALERT_TO =

################## Настройка блокировок и оповещения

LF_TRIGGER = «0»

# Включение оповещения, если IP-адрес блокируется одним из триггеров(условий для #блокировки)

LF_EMAIL_ALERT = «1»

#Защита SSH(за 5 неудачных попыток аутентификации постоянная блокировка #LF_SSHD_PERM = «1»).

#Если #нужно блокировать не навсегда, а на определенное время, тогда указываем кол-во #секунд в параметре LF_SSHD_PERM.

#Например, блокировка на час LF_SSHD_PERM = «3600»

LF_SSHD = «5»

LF_SSHD_PERM = «1»

#Защита FTP

LF_FTPD = «10»

LF_FTPD_PERM = «1»

#Защита SMTP-аутентификации

LF_SMTPAUTH = «5»

LF_SMTPAUTH_PERM = «1»

и т.д.

# каждые 300 секунд lfd-служба будет проверять наличие подозрительных файлов

в /tmp and /dev/shm

LF_DIRWATCH = «300»

Форматы файлов csf.allow, csf.deny

Простой

192.168.1.5

192.168.2.0/24

Более углубленный

tcp/udp|in/out|s/d=port|s/d=ip| u=uid

tcp/udp : tcp,udp или icmp протокол

in/out : входящие/исходящие соедиения

s/d=port : порт источника или назначения (илиICMP тип)

(нижнее подчеркивание используется для диапазона портов, например 2000_3000)

s/d=ip : IP-адрес источника или назначения

u=uid — UID or GID of source packet, implies outgoing connections,

s/d=IP value is ignored

Например

# TCP входящее соединение на порт 3306 с адреса 11.22.33.44

tcp|in|d=3306|s=11.22.33.44

После любого изменения конфигурационных файлов необходимо перезапустить csf командной csf -r

Если используются коамнда csf для добавления/удаления адресов, то она автоматически перезапускает csf

6.Работа с Config Server Firewall

Команды для работы с CSF

csf -s — Запуск файерволла(csf)

csf -f — Остановка файерволла

csf -r — Перезапуск файерволла

csf -l — Просмотр правил файерволла для IPv4-адресов

csf -l6 — Просмотр правил файерволла для IPv6-адресов

csf -a — Добавить IP адрес в белый список /etc/csf/csf.allow

csf -ar Убрать IP из белого списка /etc/csf/csf.allow и удалить правило

csf -d Добавить IP адрес в черный список /etc/csf/csf.deny

csf -dr Убрать IP из черного списка /etc/csf/csf.deny и удалить правило

csf -t – просмотр списка IP-адресов, ВРЕМЕННО заблокированных

csf -ta ttl [-p port] [-d direction] [comment] (по умолчанию разрешается input/output)– добавление адреса на время ttl(в секундах)в разрешенные(по умолчанию 3600 секунд)

csf -td ttl [-p port] [-d direction] [comment] (по умолчанию разрешается input/output)– добавление адреса на время ttl(в секундах)в запрещенные(по умолчанию 3600 секунд)

csf -tr — удаление адреса из списка временно заблокированных

csf -tf – удалить все адреса с обоих списков- заблокированных и разрешенных

csf -f — Удалить и разблокировать все записи из файла /etc/csf/csf.deny

csf -g / — Поиск существующих IPv4 и IPv6 правил по IP, CIDR или номеру порта

csf -c — Проверить наличие обновлений для csf, но не устанавливать их

csf -u — Проверить наличие обновлений и если есть – установить

Для этого потребуется доставить пакеты

Centos

yum install perl-Crypt-SSLeay perl-Net-SSLeay

csf -x – Отключить csf и lfd

csf -e — Включить csf и lfd

csf -v — Показать версию CSF

csf -h — Показать справочную информацию

7.Добавление в автозагрузку CSF

Centos

chkconfig —level 2345 csf on

Debian

update-rc.d csf defaults

8.Работа в режиме Watch

Если необходимо отследить блокировку/разрешение определенных адресов

Включаем режим Watch

nano /etc/csf/csf.conf

WATCH_MODE = «1»

service csf restart

service lfd restart

csf -r

nano /etc/rsyslog.conf

kern.* /var/log/messages

service rsyslog restart

Запускаем команду для отслеживания конкретного адреса

csf -w 192.168.1.5

После чего в логах /var/log/messages появляется вся информацию по подключению адреса 192.168.1.5

После окончанию отладки

nano /etc/csf/csf.conf

WATCH_MODE = «0»

service csf restart

service lfd restart

csf -r

9.Удаление Config Server Firewall

Если необходимо удалить CSF с сервера используем штатный скрипт

sh /etc/csf/uninstall.sh

Залишити відповідь