Гид по технологиям

Как установить и настроить Advanced Policy Firewall (APF) на CentOS 5.3

• 6 min read • DevOps • Обновлено 20 Nov 2025
Установка APF на CentOS 5.3 — пошагово
Установка APF на CentOS 5.3 — пошагово

Автор: Leszek Taczkowski

Кратко

APF — лёгкий интерфейс к iptables для быстрого развёртывания полноценного брандмауэра на Linux. В этом руководстве подробно показано, как установить APF на CentOS 5.3 (пример на сервере с cPanel), настроить основные параметры, протестировать правила и подготовить систему к боевой эксплуатации. Если вы разворачиваете удалённый сервер, сначала держите режим разработки включённым (DEVEL_MODE).

Введение

Advanced Policy Firewall (APF) — это оболочка для iptables (netfilter), спроектированная для типичных нужд современных серверов Linux. Конфигурация читаема и комментирована, управление выполняется через команду apf. APF подходит для большинства дистрибутивов с iptables; в примерах использован CentOS 5.3, так как cPanel официально рекомендует CentOS.

Цель руководства: показать последовательные шаги установки, настройки и проверки APF, а также дать операционные чеклисты, критерии приёмки и тестовые сценарии.

Важно: все команды следует выполнять с правами root или через sudo.

Предпосылки

  • Дистрибутив с установленным iptables (в CentOS это стандарт). Если iptables встроен в ядро как модуль, убедитесь, что модуль доступен.
  • Доступ к консоли сервера (SSH). Для удалённых серверов включите DEVEL_MODE во время конфигурации.
  • Список портов и служб, которые должны быть доступны (особенно если используется cPanel).

Полезная ссылка о портах cPanel: http://docs.cpanel.net/twiki/bin/view/AllDocumentation/AllFAQ/LinuxFAQ#Which_ports_should_be_open_if_I

Установка

Сначала скачиваем архив с APF и распаковываем:

wget http://www.rfxn.com/downloads/apf-current.tar.gz

Распаковка и переход в каталог:

tar -zxvf apf-current.tar.gz
cd apf-9.7-1

Запуск инсталлятора:

sh ./install.sh

После установки APF выведет расположение исполняемых файлов и конфигурационных файлов, а также порты, обнаруженные на системе. Проверьте эти значения — ошибочные номера портов могут привести к блокировке нужных сервисов.

Основные файлы и команды

  • Конфигурация APF: /etc/apf/conf.apf
  • Исполняемый файл: /usr/local/sbin/apf (место установки может отличаться — смотрите вывод инсталлятора)
  • Полезные команды:
/usr/local/sbin/apf -s   # start APF
/usr/local/sbin/apf -r   # restart APF
/usr/local/sbin/apf -f   # stop APF
/usr/local/sbin/apf -l   # list statistics
/usr/local/sbin/apf -st  # status of APF
/usr/local/sbin/apf -a host  # allow connections from host
/usr/local/sbin/apf -d host  # deny connections from host

Конфигурация

Откройте основной файл конфигурации и отредактируйте под вашу среду:

nano -w /etc/apf/conf.apf

Файл хорошо комментирован; ниже — примечания по ключевым параметрам, приведённые с пояснениями и рекомендациями.

  • DEVEL_MODE=”1” — включите на время настройки. В этом режиме создаётся cron-задача, которая каждые 5 минут отключает APF, что позволяет восстановить доступ при ошибке конфигурации. После проверки переключите в 0.

  • SET_MONOKERN=”0” — укажите 1, если у вас монолитное ядро и iptables не собраны как модули. Если APF жалуется на невозможность загрузить модуль ip_tables, установите это значение в 1.

  • IFACE_IN и IFACE_OUT — сетевые интерфейсы, подключённые к внешней сети (обычно eth0 или другое имя интерфейса в новых ядрах). Пример:

IFACE_IN="eth0"
IFACE_OUT="eth0"
  • IG_TCP_CPORTS — список входных (inbound) TCP-портов, которые нужно открыть через брандмауэр. Пример для сервера с cPanel:
IG_TCP_CPORTS="20,21,22,25,26,37,43,53,80,110,113,143,443,465,873,993,995,2077,2078,2082,2083,2086,2087,2095,2096,3306,6666"
  • IG_UDP_CPORTS — входные UDP-порты, например:
IG_UDP_CPORTS="53,6277"
  • IG_ICMP_TYPES — типы ICMP, которые сервер будет принимать. По умолчанию в примере удалены 0 и 8 (ответы на ping) для снижения «видимости» в сети. Если ваша инфраструктура или мониторинг использует ping, оставьте стандартные типы.
IG_ICMP_TYPES="3,5,11,30"
  • EG_TCP_CPORTS и EG_UDP_CPORTS — исходящие порты. Контролируя исходящие соединения, вы уменьшаете риск компрометации системы, с которой атакующий попытается подключиться к внешним ресурсам.
EG_TCP_CPORTS="21,25,37,53,80,110,113,#123,443,43,873,953,2089,2703"
EG_UDP_CPORTS="20,21,53,873,953,6277"
  • TCP_STOP, UDP_STOP, ALL_STOP — реакция на нарушения правил: DROP, REJECT, RESET, PROHIBIT. Рекомендация для продакшена — DROP для большей скрытности, но REJECT может облегчить диагностику.
TCP_STOP="DROP"
UDP_STOP="DROP"
ALL_STOP="DROP"
  • BLK_PRVNET — блокировать ли приватные IPv4-адреса (RFC1918). Если сервер за NAT, установите 0, иначе 1 для дополнительной защиты.
BLK_PRVNET="1"

Важно: перед применением правил дважды проверьте порты доступа (SSH, панель управления хостингом, система мониторинга).

Тестирование

При включённом DEVEL_MODE запускайте APF так:

/usr/local/sbin/apf -s

Проверяйте статус и текущие правила:

/usr/local/sbin/apf -st
/usr/local/sbin/apf -l

Тестирование сетевых портов можно выполнять с помощью nmap или эквивалентных инструментов с удалённого хоста:

nmap -sS -p 1-65535 your.server.ip

Если вы потеряли доступ, cron, созданный DEVEL_MODE, снимет правила через 5 минут, позволяя восстановить доступ и исправить конфигурацию.

Финальная подготовка

  1. После успешного тестирования в /etc/apf/conf.apf поменяйте DEVEL_MODE=”1” на DEVEL_MODE=”0”.
  2. Перезапустите APF:
/usr/local/sbin/apf -r
  1. Включите автозапуск APF при загрузке системы. В CentOS используйте инструмент setup или chkconfig:
chkconfig --add apf
chkconfig apf on

В cPanel можно через System Services отметить APF.

Важно: сделайте резервную копию /etc/apf/conf.apf перед изменениями.

Когда APF не подходит и альтернативы

  • APF полезен для простых и средних по сложности конфигураций. Для динамических правил на современных дистрибутивах рассматривайте firewalld (RHEL/CentOS 7+) или nftables.
  • Если вам нужна интеграция с systemd, zone-based management или rich language GUI, firewalld удобнее.
  • Для минималистичных систем и быстрых пробелов подойдёт ufw (Ubuntu) или прямое управление iptables для полного контроля.

Альтернативы:

  • firewalld (RHEL/CentOS 7+, динамические зоны)
  • nftables (новое поколение фильтрации пакетов)
  • iptables напрямую (максимальная гибкость)

Методология развёртывания (мини-SOP)

  1. Подготовка: собрать список всех сервисов и портов; создать SSH-пользователя с несколькими способами доступа (ключ, резервный порт).
  2. Тестовая конфигурация: включить DEVELMODE, установить базовые IG и EG_ порты.
  3. Применение и проверка: запустить APF, протестировать доступность сервисов и мониторинг.
  4. Ревью: проверить логи, убедиться в отсутствии неожиданных блокировок.
  5. Заключительный шаг: выключить DEVEL_MODE, включить автозапуск, документировать конфигурацию.

Критерии приёмки

  • APF запускается при загрузке и возвращает статус active.
  • Доступ к SSH и панели управления подтверждён с всех согласованных адресов/сетей.
  • Входящие и исходящие порты соответствуют списку требований.
  • Логи не содержат повторяющихся ошибок загрузки модулей iptables.

Тестовые сценарии и критерии

  1. Тест доступности SSH: подключение по стандартному порту должно быть успешным с управляющего хоста.
  2. Тест веб-сервиса: запрос к порту 80/443 снаружи должен возвращать корректный ответ.
  3. Сканирование портов: nmap снаружи должен показывать только открытые и ожидаемые порты.
  4. Симуляция ошибки: временно удалить порт SSH из IG_TCP_CPORTS и убедиться, что cron DEVEL_MODE (если включён) снимает правила и доступ восстанавливается.

Рольовые чеклисты

Системный администратор:

  • Подготовить список открытых портов и адресов управления
  • Настроить DEVEL_MODE и убедиться в корректности cron
  • Сделать резервную копию конфигурации

DevOps-инженер:

  • Автоматизировать развёртывание конфигурации (скрипт/ansible)
  • Добавить мониторинг доступности ключевых портов

Техподдержка:

  • Иметь инструкции по откату (как остановить apf)
  • Иметь список авторизованных IP для экстренного доступа

Плейбук инцидента и откат

  1. Потеря доступа по SSH:
    • Подождать 5 минут (если DEVEL_MODE=1) или обратиться к консоли провайдера.
    • Если доступ есть через панель хостинга, откатить /etc/apf/conf.apf из бэкапа и перезапустить apf.
  2. Ошибочные блокировки:
    • Выполнить /usr/local/sbin/apf -f чтобы остановить APF временно.
    • Восстановить конфигурацию и провести тесты в безопасной сети.

Ментальные модели и эвристики

  • Принцип минимальных привилегий: открывайте только те порты, которые действительно нужны.
  • Защита в глубину: комбинируйте блокировки портов с контролем исходящих соединений.
  • Фазовый rollout: сначала тестовая среда → staging → production.

Диаграмма выбора (Mermaid)

graph TD
  A[Нужна защита сервера?] -->|Да| B{Система современная?}
  B -->|Да 'systemd, CentOS7+'| C[Рассмотреть firewalld]
  B -->|Нет 'старый дистрибутив'| D[Рассмотреть APF или iptables]
  C --> E[Использовать firewalld]
  D --> F[Использовать APF]
  D --> G[Использовать ручной iptables]
  A -->|Нет| H[Не настраивать брандмауэр]

Глоссарий (одно предложение на термин)

  • APF: оболочка для iptables, упрощающая задачу настройки брандмауэра.
  • iptables: подсистема ядра Linux для фильтрации сетевых пакетов.
  • DEVEL_MODE: режим разработки APF, автоматически снимающий правила по cron.

Итог

APF остаётся полезным инструментом для администраторов, которые хотят получить управляемый и комментированный интерфейс к iptables без перехода на более новые системы. Следуйте методологии: включите DEVEL_MODE, протестируйте правила изолированно, зафиксируйте конфигурацию и только потом переводите в боевой режим.

Ссылки

Краткое резюме

APF — надёжный выбор для CentOS 5.3 и похожих систем, где требуется явная и статическая конфигурация правил iptables. Используйте DEVEL_MODE для безопасной настройки, тестируйте каждый порт и документируйте изменения.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро