Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Основные понятия IPTables

Рубрика: Безопасность -> Брандмауэр
Метки: | | | |
Среда, 11 февраля 2009 г.
Просмотров: 8410

IPTables входит в состав практически всех современных дистрибутивов Linux и устанавливается по умолчанию. Ядро Linux в таких дистрибутивах обычно скомпилировано с поддержкой IPTables. Если в дистрибутиве нет IPTables, его можно загрузить с сайта www.netfilter.org.

     IPTables непрерывно развивается, следовательно, немало новых функций не включено в состав обычного ядра Linux, так как они еще не протестированы на надежность. Такие расширения дают админис­тратору много полезных функций. Эти функции IPTables распространяются в виде серии патчей ядра, которая называется Patch-O-Matic (pOm).


     Установка pOm.

     Установка pOm состоит из следующих этапов:

     Распаковка pOm в каталог с исходными кодами ядра (как правило /usг/src/linux) и запуск программы runme: # КЕRNЕL_DIR=<каталог ядра> ./runme pending

     Компиляция ядра заново, с включением новых функций.

     Компиляция дополнительных утилит (сценарий ./configure не нужен):

$ make KERNEL_DIR=<каталог ядра>

$ make install KERNEL_DIR=<каталог ядра>

     Таблицы IPTables.

     IPTables по сути - это набор таблиц с правилами, каждая таблица которого содержит определенные правила. К примеру, таблица filter содержит правила для фильтрации пакетов, NAT - для трансляции сетевых адресов. За каждую таблицу отвечает некоторый модуль ядра, который загружается по мере необходимости - при первом использовании таблицы.

     Описание таблицы NAT. Модули таблицы NAT выполняют следующие функции:

  • SNAT
  • DNAT

  • MASQUERADE - маскарадинг.
  • REDIRECT - перенаправление.
     SNAT и DNAT - это трансляция адреса отправителя и адреса получателя. REDIRECT - это обычное перенаправ­ление на какой-нибудь узел сети. На вид, это бесполезная функ­ция, но используется она практически везде.

     В ядре 2.2 термин «маскарадинг» был почти что синонимом NAT - его общей формой. Но в IPTables у него другое значение: маскарадинг предназначен для реализации SNAT или DNAT при использовании динамических IP-адресов (ISP назначает клиенту IP-адрес при каждом подключении его к модемному пулу).

     Маскарадинг крайне полезен для коммутируемых соединений. Также его можно использовать для полудинамических соединений, где IP-адрес представлен как динамический, но при подключении одного и того же пользователя ему назначается один и тот же IP-адрес.

     Таблицы IPTables делятся на три встроенные цепочки, обрабатывающие пакеты при их прохождении через ядро:

  • PREROUTING - цепочка принимает пакеты, проходящие через устройство, перед принятием решения о маршрутизации относи­тельно этого пакета. Эта цепочка направляет пакеты на вход в брандмауэр.

  • OUTPUT - позволяет управлять локальными пакетами, поступающими от приложений «внутри» брандмауэра (перед принятием решения о маршрутизации).
  • POSTROUTING - позволяет управлять пакетами после принятия решения о маршрутизации, как правило, используется для SNAT.
     Также можно задать пользовательские цепочки, определенные администратором. Выполнение правил в цепочке происходит сверху вниз, следовательно, важен порядок определения правил. Если пакет соответствует пра­вилу в цепочке, над ним выполняется какое-то действие (в частности, DROP - пакет разрушается или ACCEPT - пакет передается следующей цепоч­ке).

     Если пакет не соответствует определенному правилу, он передается следующему за ним правилу и так, пока не будет достигнут конец цепочки. В конце цепочки выполняется правило по умолчанию.

     NAT и продвижение портов тесно связаны и в ipchains были объеди­нены в одно правило. В IPTables для NAT и для продвижения (форвардинга) портов появились отдельные таблицы - таблица NAT для трансляции адресов и цепочка FORWARD таблицы filter для форвардинга портов.

     Продвижение (форвардинг) портов - это форвардинг входящих соедине­ний к некоторым узлам локальной сети по номерам портов (к примеру, если порт получателя равен 80/tcp, пакет будет перенаправлен Web-серве­ру сети, который находится в нейтральной зоне). Это частный случай NAT, но для удобства выведенный в отдельную таблицу.