Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Установка Firewall в Linux

Чтобы запустить Linux IP firewall, нужно построить ядро с поддержкой IP firewall и соответствующие конфигурационные утилиты. В ядрах до серии 2.2, нужно использовать утилиту ipfwadm. Ядра 2.2.x имеют третье поколение IP firewall для Linux, называемое IP Chains. IP chains использует программу ipchains. Ядра Linux 2.3.15 и старше поддерживают четвертое поколение Linux IP firewall: netfilter. Код пакета netfilter результат больших изменений потока обработки пакетов в Linux. netfilter обеспечивает обратную совместимость с ipfwadm и ipchains. Настраивается эта версия командой iptables. В следующих разделах я подробно рассмотрю отличия этих трех реализаций.

Настройка ядра для IP Firewall

Ядро Linux надо настроить на поддержку IP firewall. Для этого нужно просто указать параметры при настройке ядра, например, командой make menuconfig. Подробно настройка ядра описана в главе 3. В ядрах 2.2 надо выбрать следующие опции:
Networking options  --->
        [*] Network firewalls
        [*] TCP/IP networking
        [*] IP: firewalling
        [*] IP: firewall packet logging
В ядрах серий 2.4.0 и старше надо выбрать гораздо больше опций:
   Networking options  --->
     [*] Network packet filtering (replaces ipchains)
         IP: Netfilter Configuration  --->
              .
             <M> Userspace queueing via NETLINK (EXPERIMENTAL)
             <M> IP tables support (required for filtering/masq/NAT)
             <M>   limit match support
             <M>   MAC address match support
             <M>   netfilter MARK match support
             <M>   Multiple port match support
             <M>   TOS match support
             <M>   Connection state match support
             <M>   Unclean match support (EXPERIMENTAL)
             <M>   Owner match support (EXPERIMENTAL)
             <M>   Packet filtering
             <M>     REJECT target support
             <M>     MIRROR target support (EXPERIMENTAL)
             <M>   Packet mangling
             <M>     TOS target support
             <M>     MARK target support
             <M>   LOG target support
             <M> ipchains (2.2-style) support
             <M> ipfwadm (2.0-style) support

Утилита ipfwadm

Утилита ipfwadm (IP Firewall Administration) нужна для управления правилами в ядрах до версии 2.2.0. Ее синтаксис очень сложен, но я приведу несколько наиболее простых примеров.

Утилита ipfwadm есть во всех современных дистрибутивах Linux, но, возможно, не ставится по умолчанию. Может иметься специальный сетевой пакет, который надо поставить отдельно. Найти исходный код можно на ftp.xos.nl в каталоге /pub/linux/ipfwadm.

Утилита ipchains

Аналогично ipfwadm, утилита ipchains может несколько сбивать с толку, пока к ней не привыкнешь. Она обеспечивает всю гибкость ipfwadm с упрощенным синтаксисом и дополнительно обеспечивает механизм наборов или цепочек (“chaining”), который позволяет Вам управлять множеством правил и связывать их друг с другом. Я рассмотрю формирование цепочки правил в отдельном разделе чуть позже.

Команда ipchains появилась в дистрибутивах Linux на ядрах серии 2.2. Исходники можно взять на http://www.rustcorp.com/linux/ipchains. В этот пакет исходников входит скрипт ipfwadm-wrapper, который имитирует работу ipfwadm, используя возможности ipchains. Это существенно упрощает к новой версии firewall.

Утилита iptables

Синтаксис iptables очень похож на синтаксис ipchains. Разница в поддержке модулей расширения и ряде новшеств в фильтрации пакетов. Разумеется, я приведу пример и для iptables, так что Вы сможете сравнить эти две утилиты.

Утилита iptables входит в пакет netfilter, исходники которого можно скачать с http://www.samba.org/netfilter. Она также входит в дистрибутивы Linux на ядре 2.4. Правда, поскольку это ядро еще находится на стадии тестирования, я пока не встречал дистрибутивов на нем.

Мы будем говорить относительно огромного шага вперед, сделанного netfilter, в соответствующем разделе этой главы чуть позже.