Простая установка APF.
(Advanced Policy Firewall)

Как известно, в любом современном дистрибутиве linux присутствует такое мощное средство как фильтр пакетов netfilter. Что это такое?. Смысл прост. Каждый ip пакет проходит через цепочку правил. Там с этими пакетами в зависимости от правил могут происходить разные интересные вещи. Они могут отбрасываться, приниматься, модифицироваться и т.д. Для управления этим фильтром пакетов для версий ядра от 2.4 и выше существует утилита iptables. Про эту утилиту написана масса материалов, но в этой заметке мы рассмотрим настройку скрипта, который используя iptables, значительно упрощает настройку фаервола (на базе netfilter) для нашего выделенного сервера.

Страница разработчиков APF находится по адресу http://rfxnetworks.com/apf.php . Идем туда и качаем последнюю свежую версию пакета:
cd /usr/src
wget http://www.r-fx.ca/downloads/apf-current.tar.gz
tar zxvf apf-current.tar.gz

Переходим в папку apf-0.9.6-1 и запускаем инсталляцию скрипта:
cd apf-0.9.6-1
./install.sh

Теперь переходим в каталог /etc/apf/ и открываем на редактирование файл conf.apf
cd /etc/apf
vi conf.apf

Ищем строку
# Common ingress (inbound) TCP ports
IG_TCP_CPORTS=”22″
Здесь нужно перечислить все входящие TCP порты, которые должны быть открыты для доступа из сети. Обычно для дедика достаточно таких правил:
IG_TCP_CPORTS=”21,22,25,53,80,443,110,143″

Дальше ищем:
# Common ingress (inbound) UDP ports
IG_UDP_CPORTS=”53,1194″
Здесь прописываем входящие UDP порты. В нашем случае – разрешаем порт ДНС и порт OpenVPN.

Теперь обратите внимание на строки:
# Egress filtering [0 = Disabled / 1 = Enabled]
EGF=”0″
Это значит что фильтр на исходящие TCP и UDP пакеты по умолчанию отключен. В общем-то, можно оставить все как есть и на этом закончить нашу правку, а можно исправить EGF=”0″ на EGF=”1″ и продолжить:
# Common egress (outbound) TCP ports
EG_TCP_CPORTS=”22″
Меняем на:
EG_TCP_CPORTS=”21,22,25,53,80,443,110,143″
Это у нас разрешенные исходящие порты TCP

# Common egress (outbound) UDP ports
EG_UDP_CPORTS=”20,21,53,1194″ – исходящие UDP порты.

Все остальное оставляем так, как было. Сохраняемся.

Теперь пара слов о других файлах в каталоге /etc/apf.
postroute.rules В нем можно прописать правила пекетного фильтра для цепочки POSTROUTE.
Например для предыдущей заметки по установке OpenVPN в этом файле можно приписать следующее правило:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
deny_hosts.rules – в этот файл можно вставить ip адреса – которые нам надо забанить.
allow_hosts.rules – Тут мы безусловно разрешаем определенные ip адреса. Например тот ip от которого мы заходим на сервер.
Ну и так далее по аналогии. Вообще-то сам файл conf.apf очень грамотно документирован и в нем все это описано.

Запускаем наш скрипт.
service apf start и в течение пяти минут проверяем, как что работает. Если доступ к серверу потерян, либо произошли еще какие-нибудь неполадки связанные с фаерволом, то отчаиваться не нужно. Дело в том, что если в нашем конфигурационном файле прописана строка
DEVEL_MODE=”1″ (а она по умолчанию прописана именно так), то это значит, что скрипт отключится через пять минут, и мы вновь вернемся к состоянию сервера без фаервола.
Таким образом, когда мы проверим работоспособность фаервола, то строку DEVEL_MODE=”1″ нужно подредактировать в
DEVEL_MODE=”0″. Сохраняемся и перезапускаем наш скрипт:
service apf restart

Вот и все. Теперь наш выделенный сервер более защищен от вторжений.

P.S. Пару слов о файлах allow_hosts.rules и deny_hosts.rules. В эти файлы можно добавлять не только ip адреса, но и конструкции вида:

# proto:flow:[s/d]=port:[s/d]=ip(/mask)
где s – ip адрес(порт) источника , d – ip адрес (порт) приемника , flow – направление входящий/исходящий
Например если нам нужно разрешить все входящие tcp пакеты, которые идут на порт 22 нашего сервера и имеют адрес приемника 192.168.2.1 то пишем:
tcp:in:d=22:s=192.168.2.1
Или например:
Разрешить все исходящие на порт 23 и на адрес 192.168.2.1
out:d=23:d=192.168.2.1
Или разрешить все входящие (если не указано in или out то используется in)пакеты которые приходят на порт 3306 из подсети 192.168.5.0/24.
d=3306:s=192.168.5.0/24

Рейтинг@Mail.ru

Создай постер из своего фото - тут штендеры, плоттерная резка.; Красивые штендеры. Вывески световые короба штендеры.; су 155 кризис: предоставил су 155 кризис недвижимость.; Прямой контакт с исполнителями. Ювелирные изделия на заказ.; Комплекс «Мирекс» - сниму склад, аренда склада

5 Comments


  1. А если еще BFD поставить то он будет банить бутфорсеров ;)

    Quote | Posted September 6, 2006, 7:49 am

  2. Совершенно с Вами согласен. И об этом и будет одна из следующих заметок. :-)

    Quote | Posted September 6, 2006, 8:22 am

  3. Отличная статья.
    респект.
    Даешь статью про BFD!

    Quote | Posted September 25, 2006, 11:45 pm

  4. распакованная папка apf-9.6-5 d в каталоге /usr/src

    ./install.sh: Command not found.
    sh ./install.sh
    Installing APF 9.6-5: source: not found
    [: unexpected operator
    vnetgen.def not found, aborting.
    Completed.

    Installation Details:
    Install path: /etc/apf/
    Config path: /etc/apf/conf.apf
    Executable path: /usr/local/sbin/apf

    Other Details:
    ./install.sh: ./importconf: not found
    Note: Please review /etc/apf/conf.apf for consistency, install default backed up to /etc/apf/conf.apf.orig

    подскажите пожалуйста где копать..
    спасибо!

    Quote | Posted December 3, 2008, 12:36 am

  5. Ссылка не работает. Где копать?

    Quote | Posted April 15, 2009, 4:21 pm

Leave a reply