• Narrow screen resolution
  • Wide screen resolution
  • Wide screen resolution
OOPS. Your Flash player is missing or outdated.Click here to update your player so you can see this content.
Главная Linux Организация Сетевой безопасности (iptables)
Организация Сетевой безопасности (iptables) Печать E-mail
Рейтинг пользователей: / 3
ХудшийЛучший 
Автор: Administrator   

5.2. Организация Сетевой безопасности (iptables)


Существует три разновидности межсетевой экран (МЭ) в зависимости от типа фильтрации:

  • МЭ, осуществляющие фильтрацию на уровне пакетов;
  • МЭ, осуществляющие фильтрацию на уровне сервисов;
  • МЭ, осуществляющие фильтрацию с учетом состояния сессии.

Ядро ОС Linux содержит важный компонент - netfilter. Доступ к данному компоненту, в пространстве пользователя осуществляется через утилиту IPTables, которое сообщает ядру, что нужно сделать с поступающими, транзитными и исходящими IP-пакетами. Наиболее часто используемыми возможностями IPTables является фильтрация пакетов и трансляция сетевых адресов (NAT). Но поскольку к ядру ОС Linux можно подключать дополнительные модули, то функционал IPTables можно существенно расширить, используя, например, возможности фильтрации пакетов на уровне L7.
Общая последовательность работы компонента netfilter следующая:

  • Пользователь сообщает ядру при помощи команд iptables каким образом необходимо управлять пакетами.
  • Ядро анализирует заголовки всех пакетов, которые проходят через сетевые интерфейсы.
  • В процессе анализа заголовков, ядро находит заданные соответствия, затем управление пакетом выполняется согласно правилу, заданному в команде iptables.

Компонент netfilter имеет несколько таблиц, в каждой из которых по умолчанию находится некоторый набор правил, который называется цепочкой. Каждое правило определяет условие, которому должны удовлетворять пакеты, чтобы их можно было обработать данным правилом и действие, которое надо выполнить над пакетами, которые совпали с заданным условием.
В iptables по умолчанию доступны следующие таблицы:

  • Filter. Используется для фильтрации пакетов.
  • Nat. Используется для управления IP-адресами отправителя и получателя пакета.
  • Mangle. Используется для модификации заголовков IP-пакета.
  • Raw. Используется для управления пакетами при отслеживании сетевых соединений. По умолчанию в ядро загружается таблица фильтрации (filter), которая содержит три цепочки:
    1. -А(--append) <цепочка>. Добавление правила в указанную цепочку.
    2. -I(--insert) <цепочка> <N>. Вставка правила в указанную цепочку в позицию <N>.
    3. -R(--replace) <цепочка> <N>. Замена правила в позиции <N> в указанной цепочке.
    4. -D(--delete) <цепочка> <N>. Удаление правила в позиции <N> в указанной цепочке.
    1. Для начала создадим новую цепочку правил, с именем SSH: iptables -n ssh
    2. Затем следует указать ядру, что все входящие пакеты необходимо обрабатывать с учетом созданной цепочки:
      iptables -A input -р tcp --dport 22 -j ssh
    3. Теперь необходимо определить хосты, которым будет разрешен доступ по протоколу
      SSH, добавив в цепочку SSH следующие правила:
      iptables -a ssh -s 172.16.0.100 -j accept iptables -a ssh -s 172.16.0.101 -j accept
    4. Затем, для проверки результатов, можно добавить правило, которое будет записывать в
      syslog события удовлетворяющих созданным правилам:
      iptables -a ssh -m limit --limit 5/s -j log

       

    5. Далее следует закрыть доступ по протоколу SSH для всех остальных хостов: iptables -a ssh -j drop
    6. Для того, чтобы просмотреть содержимое цепочки правил SSH, необходимо выполнить следующую команду:
      iptables -l ssh
    • INPUT. Данная цепочка содержит правила для пакетов, в заголовке назначения которых указан данный хост, на котором настроена фильтрация пакетов.
    • FORWARD. Данная цепочка содержит правила для пакетов, которые маршрутизируются на другие хосты, отличные от того, где настроена фильтрация пакетов.
    • OUTPUT. В данной цепочке содержатся правила, предназначенные для управления пакетами, созданными данным хостом, на котором выполняется фильтрация, и отправленных на удаленные хосты.
    • PREROUTING. В данной цепочке правил ядро выполняет анализ пакетов, прежде чем произвести маршрутизацию пакетов. В основном данная цепочка используется для изменения IP-адреса места назначения пакета (DNAT).
    • POSTROUTING. В данной цепочке правил ядро выполняет анализ пакетов, после того, как произведена их маршрутизация. В основном данная цепочка используется для изменения IP-адреса источник, пославшего пакеты (SNAT).
    • OUTPUT. Данная цепочка применяется для пакетов, которые генерируются локальным хостом, фильтруются и направляются на удаленные хосты.
    • PREROUTING.
    • INPUT.
    • FORWARD.
    • OUTPUT.
    • POSTROUTING.
    • -L (--list) <цепочка>. Отображение всех правил в указанной цепочке.
    • -Р(--policy) <цепочка> <политика>. Задает политику по умолчанию для указанной цепочки. В качестве аргумента <политика> указывается одно из стандартных действий: ACCEPT, REJECT, DROP.
    • -N (--new) <цепочка>. Создание новой цепочки правил.
    • -F (--flush) <цепочка>. Удаление всех текущих правил в указанной цепочке.
    • -X (--delete-chain) <цепочка>. Удаление указанной цепочки правил.
    • -Z (--zero) <цепочка>. Сброс счетчика совпадения пакетов в указанной цепочке.
    • L2. На данном уровне указываются сетевые интерфейсы, использующиеся для приема и передачи пакетов. Все пакеты условно можно разделить на принятые интерфейсом (-i) и посланных с интерфейса (-о). Например, запись -i eth0 определяет все пакеты, приходящие на сетевой интерфейс eth0. Помимо прямого указания названия сетевого интерфейса, можно использовать символ «+», например, запись -i eth+ определяет все пакеты, приходящие на все сетевые интерфейсы начинающиеся с имени eth. Кроме того, возможно указывать логическое отрицание в виде символа «!», например, запись вида -о ! eth0 определяет пакеты, которые не будут использовать данное правило, если они были отправлены с интерфейса eth0.
    • L3. На данном уровне указываются такие параметры пакетов, как IP-адрес источника и получателя, IP-адреса подсетей в формате X.X.X.X/NN, а также DNS имена хостов отправителя и получателя. Например, запись -s 172.16.0/24 определяет все пакеты, в заголовке SOURCE которых содержится IP-адрес из указанной подсети.
    • L4. На данном уровне выполняется поиск соответствий пакетов условиям, созданным на основе протоколов и портов, причем, для протоколов существует возможность указывать дополнительные параметры заголовков, например, такие как --tcp-flags. Для портов возможно также указывать порт отправителя (--sport <порт>) и получателя (--dport <порт>). Для того, чтобы просмотреть возможные варианты опция для протоколов можно использовать команду iptables -р <протокол> --help.
    • L7. На данном уровне возможно искать соответствие пакетов, принадлежащих конкретному приложению. Данный механизм по умолчанию отсутствует в IPTables. Для его использования необходимо установить в ОС Linux дополнительные модули
      ядра .
    • ACCEPT. Если указанно данное действие, то пакет будет принят и дальнейшие правила учитываться не будут.
    • DROP. Если указанно данное действие, то пакет будет удален, без отправки причины хосту, который послал данный пакет. Дальнейшие правила учитываться не будут.
    • REJECT. Данное действие аналогично предыдущему с той лишь разницей, что удаленному хосту будет отправляться уведомление ICMP «port unreachable». Тип посылаемого уведомления может быть изменен при помощи аргумента --reject-with.
    • <цепочка>. Данное действие направляет пакет для анализа в указанную цепочку. Это используется, если администратор создал дополнительные цепочки правил.
    • LOG. Данное действие используется для записи информации о найденных соответствиях в журнальные файлы. Данное действие полезно использовать для диагностики проблем в работе МЭ на основе IPTables.
  1. Если загружены дополнительные модули, такие как NAT и MANGLE, то загружаются дополнительные таблицы nat и mangle. Таблица nat используется для подмены IP-адресов отправителя и получателя и содержит три цепочки:

    Таблица mangle используется для модификации заголовков пакетов, например, таких как TOS и TTL, до начала процесса маршрутизации или после него. Также существует возможность помечать пакеты с целью дальнейшего управления ими. Данная таблица имеет следующие цепочки:

    Для построения МЭ на основе IPTables в системе необходимо установить пакет iptables. Команда iptables имеет следующий синтаксис:
    iptables -t <таблица> <операция> <условие> -j <действие>

    В аргументе -t <таблица> указывается таблица, в которой необходимо выполнить определенную операцию. В следующем аргументе <операция> указывается одна из следующих операций над цепочками:

    В случае использования аргументов -L, -F, -D и -Z, если название цепочки не указано, то выполняется для всей таблицы.
    Помимо операций над цепочками в качестве аргумента <операция> могут указываться операции над правилами в цепочке при помощи следующих аргументов:

    Если порядковый номер правила, заданный в параметре <N> не указан, то при добавлении правила оно помещается в конец цепочки, при вставке правила оно помещается в начало цепочки. Если порядковый номер не указан в аргументе -D, то необходимо указать полный вид правила, которое необходимо удалить.
    После аргумента <операция> в общем синтаксисе команды iptables указываются аргументы <условие>, которые определяют соответствие пакетов. В качестве условия может использоваться большое множество образцов, которые условно можно разделить на следующие основные уровни:

    ОС Linux имеет почти неограниченные возможности по фильтрации IP-пакетов. Помимо указанных уровней соответствия может использоваться масса других условий, например, таких как поиск текстовых данных в пакете. Более того, существует возможность разрабатывать свои
    то
    собственные   условия соответствия пакетов.
    Все описанные выше условия можно группировать в единую последовательность. После того, как в команде iptables будут указаны все условия соответствия, в аргументе -j <действие> необходимо указать одно из следующих действия, которое необходимо выполнить над пакетом: Указанный выше список действий является далеко не полным, в частности в нем не указаны действия MARK (используется для пометки пакетов) и BALANCE (используется для организации простого распределения соединений между несколькими хостами).
    Для просмотра всех возможных действий необходимо воспользоваться страницами руководства man для команды iptables.
    В качестве примера использования таблиц iptables рассмотрим создание пользовательской цепочки правил, которые разрешают доступ по протоколу SSH только определенным хостам.


    После того, как будут созданы и настроены все необходимые цепочки правил IPTables необходимо сохранить сделанные изменения, чтобы после перезагрузки системы их можно было использовать. Это делается при помощи команды service iptables save, в результате выполнения которой все текущие настройки будут сохранены в файле /etc/sysconfig/iptables. Для активации таблиц IPTables на этапе загрузки системы необходимо включить сервис iptables на соответствующем уровне выполнения, используя команды chkconfig. Для менее гибкой настройки МЭ можно использовать графическую программу Red Hat Enterprise Linux firewall запустив команду system-config-securitylevel в графической оболочке.

     

 

Добавить комментарий


Защитный код
Обновить


Авторизация

Перевод


Новости с OpenNet

Проект OpenNET


Яндекс.Метрика
Карта сайтаПартнеры