Установка и настройка ConfigServer Security and Firewall

ConfigServer Security and Firewall (CSF) – это свободное программное обеспечение с открытым кодом, являющееся фаерволом и имеющее достаточно широкие функциональные возможности по сравнению с другими подобными решениями. Список поддерживаемых ОС можно посмотреть на официальном сайте разработчика configserver.com.

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

yum install perl-libwww-perl
yum install perl-Time-HiRes


Debian/Ubuntu

apt-get install libtime-hires-perl



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

wget https://download.configserver.com/csf.tgz
tar xvfz csf.tgz
tar xvfz csf.tgz
cd csf
cd csf
sh install.sh
sh install.sh

 

Проверка необходимых модулей 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



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

sh /usr/local/csf/bin/remove_apf_bfd.sh



Настройка 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 секунд после последнего пакета, отправленного клиентом к этому порту

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

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

LF_ALERT_TO = <[email protected]>

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

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

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

csf -s — Запуск файерволла(csf)
csf -f — Остановка файерволла
csf -r — Перезапуск файерволла
csf -l — Просмотр правил файерволла для IPv4-адресов
csf -l6 — Просмотр правил файерволла для IPv6-адресов
csf -a <IP-adress> — Добавить IP адрес в белый список /etc/csf/csf.allow
csf -ar <IP_adress> — Убрать IP из белого списка /etc/csf/csf.allow и удалить правило
csf -d <IP-adress> — Добавить IP адрес в черный список /etc/csf/csf.deny
csf -dr <IP-adress> — Убрать IP из черного списка /etc/csf/csf.deny и удалить правило
csf -t – просмотр списка IP-адресов, ВРЕМЕННО заблокированных
csf -ta <IP-adress> ttl [-p port] [-d direction] [comment] (по умолчанию разрешается input/output)– добавление адреса на время ttl(в секундах)в разрешенные(по умолчанию 3600 секунд)
csf -td ttl [-p port] [-d direction] [comment] (по умолчанию разрешается input/output)– добавление адреса на время ttl(в секундах)в запрещенные(по умолчанию 3600 секунд)
csf -tr <IP-adress> — удаление адреса из списка временно заблокированных
csf -tf – удалить все адреса с обоих списков- заблокированных и разрешенных
csf -df — Удалить и разблокировать все записи из файла /etc/csf/csf.deny
csf -g <IP-adress>/<CIDR> — Поиск существующих IPv4 и IPv6 правил по IP, CIDR или номеру порта
csf -c — Проверить наличие обновлений для csf, но не устанавливать их
csf -u — Проверить наличие обновлений и если есть – установить
csf -x – Отключить csf и lfd
csf -e — Включить csf и lfd
csf -v — Показать версию CSF
csf -h — Показать справочную информацию

Блокировать определенные страны

Для блокировки подключений с разных стран нужно добавить символьные коды стран в параметр
CC_DENY

 

CC_DENY = "SO,NA,CN"
CC_ALLOW = ""

Данной командой мы заблокировали все IP Сомали, Намибии и Китая.

 

 

 

  • 2 Пользователи нашли это полезным
Помог ли вам данный ответ?

Связанные статьи

Установка и настройка Apache, PHP, MySQL на CentOS

Если Вы заказали VPS/VDS сервер и не знаете как корректно его настроить для работы с сайтами то...

SSH подключение к серверу

Для установки SSH-соединения из-под Windows скачайте и запустите программу-клиент PuTTYЗапустите...

Настройка сети на CentOS

В этой статье вы ознакомитесь с информацией о настройке подключения к локальной сети на CentOS,...

Что такое VPS/VDS хостинг?

VPS (англ. Virtual Private Server) или VDS (англ. Virtual Dedicated Server) — услуга, в рамках...

CentOS - Как добавить дополнительный IP адрес

Для того что бы добавить дополнительный IP адрес на Ваш сервер под управлением ОС CentOS нам...