14.5. IPTables

14.5. IPTables

Пакетный фильтр IPChains использовался в ядрах Linux до версии 2.4. В новых версиях ядра (начиная с 2.4) вместо IPChains используется пакетный фильтр IPTables. Практически все основные опции остаются прежними. Только, естественно, в командной строке вместо ipchains следует писать iptables.

В этом пункте будут рассмотрены некоторые новые опции ядра, связанные непосредственно с IPTables. Эти опции для большей наглядности я представил в табл. 14.3. Если вы еще не знакомы с компилированием ядра, то эта информация вам пригодится после прочтения гл. 18.

Опции ядра Таблица 14.3

Опция Описание
CONFIG_PACKET Позволяет использовать программы, которые работают непосредственно с сетевым устройством. Примером такой программы может послужить tcpdump
CONFIG_NETFILTER Включите данную опцию, если вы собираетесь использовать ваш компьютер в качестве шлюза
CONFIG_IP_NF_CONNTRACK Позволяет отслеживать соединения. Данная опция необходима для работы функций NAT или IP-маскарадинга. В случае со шлюзом включите данную опцию
CONFIG_IP_NF_FTP Прослеживает FTP-соединения. Включите эту опцию, если на вашем компьютере установлен FTP-сервер. Из-за большого количества FTP-запросов модуль IP_NF_CONNTRACK не в состоянии проследить все FTP-соединения, поэтому в помощь ему добавлена опция CONFIG_IP_NF_FTP
CONFIG_IP_NF_IPTABLES Необходимая для работы IPTables опция. Без ее включения вы не сможете использовать IPTables
CONFIG_IP_NF_MATCH_LIMIT Необязательная опция. Позволяет ограничить количество пакетов передаваемых/принимаемых за промежуток времени
CONFIG_IP_NF_MATCH_MAC Позволяет блокировать пакеты, используя МАС-адрес (а не IP-адрес)

Все остальные опции, связанные с IPTables, содержат в своем названии слово MATCH, например, CONFIG_IP_NF_MATCH_MARK. Эти опции разрешают выполнять определенные действия над пакетами. Действия над пакетами, как вы уже знаете, задаются с помощью опции -j. Использование этой опции аналогично как для IPChains, так и для IPTables. Назначение всех возможных действий вы можете узнать из документации по IPTables. Ранее, на примере IPChains, мы рассмотрели два основных действия — ACCEPT и DENY. В IPTables вместо действия DENY нужно использовать аналогичное ему действие DROP. А вместо MASQ (см. п. 14.4) — MASQUERADE.

Я не буду рассматривать различия таблиц (tables) и цепочек (chains), не усложняя тем самым вам жизнь избытком лишней информации, остановлюсь лишь на рассмотрении некоторых полезных примеров.

Представим, что вам нужно что-либо сделать с пакетами, приходящими от узла с МАС-адресом 11:12:13:14:15:16. Выделить данный пакет можно с помощью правила iptables –A INPUT —mac-source 11:12:13:14:15:16.

Дальнейшие операции над пакетом вы уже определите сами, с помощью опции –j. Если же вам нужно выделить все пакеты, кроме тех, которые присылает вам узел с МАС-адресом 11:12:13:14:15:16, то нужно использовать отрицание — !

Допустим, что теперь вам нужно ограничить число пакетов, присылаемым узлом с МАС-адресом 11:12:13:14:15:16, например, не более 10 пакетов в минуту. Делается это следующим образом: iptables –A INPUT –ra limit —limit 10/minute. Промежуток времени можно указать в секундах (second), минутах (minute) и часах (hour).

IPTables позволяет выделять (а потом производить с ними операции) пакеты одновременно, указав несколько портов, например:

iptables -A INPUT –p tcp -m multiport -source-port 22,53,80,110

Порты указываются через запятую. Вы можете указать максимум 15 портов. Вместо портов источника вы можете указать порты назначения, используя опцию —destination-port. Если вы хотите одновременно указать как порты источника, так и порты назначения, используйте опцию —port:

iptables -A INPUT –p tcp -m multiport -port 22,53,80,110

Теперь уже перейдем на более высокий уровень. Если раньше мы могли отфильтровывать пакеты, исходящие от определенного компьютера, то теперь мы можем выделять пакеты отдельных пользователей. Например, вам нужно выделить все исходящие от пользователя с UID 500 пакеты. Это можно сделать с помощью команды:

iptables -A OUTPUT -m owner -uid-owner 500

Естественно, вы сможете это сделать только для исходящих пакетов, поскольку вы не знаете, какой UID имеет пользователь другой системы, тем более, что информация об этом не передается по протоколу TCP.

Аналогично вы можете ограничивать исходящие пакеты группы или процесса:

iptables -A OUTPUT -m owner -gid-owner 0

iptables -A OUTPUT -m owner -pid-owner 78

Пакетный фильтр IPTables обладает значительно большими возможностями по сравнению с IPChains, но на практике вы вряд ли будете их использовать: в основном используются возможности IPChains, описанные в п. 14.1…14.4.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2.1. Где взять iptables

Из книги Iptables Tutorial 1.1.19 автора Andreasson Oskar

2.1. Где взять iptables Пакеты iptables могут быть загружены с домашней страницы проекта Netfilter. Кроме того, для работы iptables соответствующим образом должно быть сконфигурировано ядро вашей Linux-системы. Настройка ядра будет обсуждаться


5.3. iptables-save

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

5.3. iptables-save Утилита iptables-save, как я уже упоминал, предназначена для сохранения текущего набора правил в файл, который затем может быть использован утилитой iptables-restore. Эта команда очень проста в использовании и имеет всего два аргумента.iptables-save [-c] [-t table]Первый аргумент -c


5.4. iptables-restore

Из книги Сетевые средства Linux автора Смит Родерик В.

5.4. iptables-restore Утилита iptables-restore используется для восстановления (загрузки) набора правил, который ранее был сохранен утилитой iptables-save. Набор правил утилита получает со стандартного ввода и не может загружать его из файла напрямую. Команда имеет следующий


8.6. rc.test-iptables.txt

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

8.6. rc.test-iptables.txt Сценарий rc.test-iptables.txt предназначен для проверки различных цепочек но может потребовать дополнительных настроек, в зависимости от вашей конфигурации, например, включения ip_forwarding или настройки masquerading и т.п. Тем не менее в большинстве случаев с базовыми


8.7. rc.flush-iptables.txt

Из книги автора

8.7. rc.flush-iptables.txt Сценарий rc.flush-iptables.txt в действительности не имеет самостоятельной ценности поскольку он сбрасывает все ваши таблицы и цепочки. В начале сценария, устанавливаются политики по-умолчанию ACCEPT для цепочек INPUT, OUTPUT и FORWARD в таблице filter. После этого сбрасываются в


8.12. Iptables-save ruleset

Из книги автора

8.12. Iptables-save ruleset Небольшой пример iptsave-saved.txt,, о котором говорилось в главе Сохранение и восстановление больших наборов правил, иллюстрирующий работу команды iptables-save. Не является исполняемым сценарием и предназначен лишь для демонстрации результата работы


14.5. IPTables

Из книги автора

14.5. IPTables Пакетный фильтр IPChains использовался в ядрах Linux до версии 2.4. В новых версиях ядра (начиная с 2.4) вместо IPChains используется пакетный фильтр IPTables. Практически все основные опции остаются прежними. Только, естественно, в командной строке вместо ipchains следует писать


Что такое iptables

Из книги автора

Что такое iptables Для обработки сетевых пакетов ядро 2.4.x использует процедуру, подобную той, которая условно изображена на рис. 25.1. В начале обработки ядро выясняет, предназначен ли пакет для локального компьютера или должен быть перенаправлен на другой узел сети. В


Конфигурация ядра для работы с iptables

Из книги автора

Конфигурация ядра для работы с iptables Для того чтобы использовать iptables, необходимо активизировать соответствующие средства ядра. В версии ядра 2.4 все необходимые для этого опции сосредоточены в меню Networking Options и некоторых его подменю. Опции, которые необходимо


Проверка текущей конфигурации iptables

Из книги автора

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


Создание брандмауэра средствами iptables

Из книги автора

Создание брандмауэра средствами iptables Утилита iptables может решать различные задачи. Одной из таких задач является создание брандмауэров. Брандмауэр можно реализовать как на компьютере, выполняющем функции маршрутизатора, так и на рабочих станциях или серверах. При


Опции iptables для перенаправления портов

Из книги автора

Опции iptables для перенаправления портов Обеспечить перенаправление портов на компьютере под управлением Linux, поддерживающем NAT, можно различными способами. Один из них состоит в использовании iptables. Соответствующая команда имеет следующий вид:# iptables -t nat -A PREROUTING -p tcp -i


4.12.1. Основные возможности iptables

Из книги автора

4.12.1. Основные возможности iptables Сходство между ipchains и iptables прослеживается уже при взгляде на параметры:? -A цепочка правило — добавить правило в конец цепочки. В качестве параметра указывается имя цепочки INPUT, OUTPUT или FORWARD;? -D цепочка номер — удалить правило с указанным


4.12.3. Примеры конфигурирования iptables

Из книги автора

4.12.3. Примеры конфигурирования iptables Я не буду подробно останавливаться на описании различных запретов, потому что мы о них говорили при рассмотрении программы ipchains. Мы очень коротко рассмотрим создание различных правил.Запрет любых обращений будет выглядеть следующим