| ||
Безопасность в Linux. Фильтрация пакетовX-Stranger Продолжаем тему безопасной работы с сетью в Linux. Сегодня я расскажу про фильтрацию пакетов. Что это такое, для чего нужно, как это работает — все это вы узнаете в данной заметке.
В Linux фильтр пакетов встроен в ядро (как модуль, или как неотъемлемая часть ядра), и мы можем делать с пакетами множество хитроумных вещей, но основной принцип в просмотре заголовков пакетов и решении их дальнейшей судьбы сохраняется.
Почему вы должны использовать фильтр пакетов? Ответ можно дать в виде трех аксиом: Как же можно сделать фильтрование пакетов в Linux? Ядра Linux имеют способность отфильтровывать пакеты еще с версии 1.1. Первое поколение фильтров, основанное на ipfw от BSD, было спортированно Аланом Коксом в конце 1994 года. Оно было улучшено Джо Возом и другими в версии ядра 2.0; пользовательская утилита ipfwadm контролировала правила фильтра в ядре. В середине 1998, для Linux 2.2, ядро было переработано достаточно основательно, на всеобщее обозрение была представлена новая утилита для управления фильтром — ipchains. Наконец, в середине 1999, код ядра был снова полностью переписан для версии 2.4, появилась утилита четвертого поколения "iptables". Это именно та утилита, про которую ниже пойдет речь. Вам необходимо ядро, которое имеет netfilter-инфраструктуру: netfilter — это основа внутри Linux ядра, в которую могут встраиваться другие компоненты (такие как модуль iptables). Это означает, что вам необходимо ядро 2.3.15 или выше, и вам необходимо включить (ответить 'Y') на опцию CONFIG_NETFILTER при конфигурировании ядра. Утилита iptables взаимодействует с ядром и указывает ему, какие пакеты фильтровать. Именно с помощью этой программы вы будете управлять фильтром пакетов. Iptables — это замена для ipfwadm и ipchains. Утилита iptables вставляет и удаляет правила из таблицы фильтра пакетов ядра. Это означает, что, что бы вы ни устанавливали или настраивали, это будет потеряно при перезагрузке. Что исправить для того, чтобы гарантировать, что правила восстановятся после перезагрузки машины? Для этого были написаны утилиты iptables-save и iptables-restore, которые занимаются тем, что сохраняют и восстанавливают правила фильтрации. Как пакеты проходят фильтры? Ядро запускается с тремя списками правил в таблице фильтра пакетов; эти списки называются firewall chains или просто chains (цепочки). Три цепочки называются INPUT, OUTPUT и FORWARD. Цепочки устроены примерно так (см. рис. 1).
Три овала представляют три цепочки. Когда пакет приходит в определенный овал, цепочка исследуется для того, чтобы определить, что делать с пакетом в дальнейшем. Если цепь говорит, что надо сбросить (DROP) пакет, пакет разрушается; если цепь разрешает прохождение пакета (ACCEPT), пакет проходит к следующему шагу по схеме. Цепочка — это набор определенных правил. Каждое правило говорит "если заголовок пакета выглядит так, значит надо делать с пакетом то-то". Если правило не совпадает с пакетом, пакет переходит к следующему правилу в данной цепочке. Наконец, если в цепочке не осталось больше правил, ядро проверяет установленный policy (правило, действующее по умолчанию для всей цепочки) для данной цепочки, чтобы решить, что делать с пакетом дальше. В защищенных системах policy обычно говорит ядру — разрушить пакет (DROP). Применение iptables. Iptables имеет достаточно хорошо написанную и подробную manual-страницу (man iptables), там вы можете найти все интересующие вас моменты.
Есть несколько различных вещей, которые вы можете сделать с помощью iptables. Вы начинаете работу с тремя встроенными цепочками INPUT, OUTPUT и FORWARD, которые вы не можете удалить. Давайте посмотрим, что мы можем делать с цепочками: Продолжение следует... Материал подготовлен с использованием "Linux 2.4 Packet Filtering HOWTO by Rusty Russell". Источник: http://www.nestor.minsk.by/kg
| ||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |