Хакер №024. Спецвыпуск
ПОСТРОЙ СЕБЕ САМ: БЫСТРЫЙ СПОСОБ ПОЗНАКОМИТЬСЯ С IPTABLES
ViTLS (vitls@beshtau.ru)
Спецвыпуск Xakep, номер #024, стр. 024-062-2
Так как ты защищаешь только свой компьютер, можно обойтись первыми двумя.
Пакетный фильтр iptables может работать с тремя таблицами правил. Таблица для фильтрации filter (она ставится по умолчанию, если явно ничего не указано), таблица для nat-маскарадинга и трансляции адресов (очень полезно для вывода локалки в Инет). И, наконец, таблица mangle для редактирования пакетов.
В каждую таблицу заносятся цепочки правил фильтрации. Они последовательно просматриваются и исполняются фильтром. Цепочки ты либо заносишь сам из командной строки (рис. 3), либо пишешь сценарий на shell.
Хочу сказать, что скриптовые языки вроде perl и php для такого дела не подходят, хотя на них и можно написать системы, облегчающие составление правил и цепочек. Зайди на www.freshmeat.net и поищи по слову firewall или по слову iptables - увидишь массу ссылок на программы для быстрого и удобного составления правил фильтрации пакетов.
ПРАВИЛА ПО КОСТОЧКАМ
Правило состоит из нескольких элементов - команды, опции, критерия отбора и действия. Элементы могут в принципе располагаться как угодно, но лучше придерживаться указанного порядка - так будет потом понятнее самому.
Команды предназначены для того, чтобы сказать фильтру, что мы будем делать. Например, добавить правило в цепочку, удалить правило, очистить цепочку, вывести список правил в цепочке и тому подобное.
Опции нужны, чтобы определенным образом модифицировать выводимую на экран информацию или выполнять добавочные, не присущие самому фильтру действия (например, округлять числовые показатели или подгружать модуль ядра).
Критерий отбора. Это самая важная часть правила. Пакетный фильтр при разборках с пакетом смотрит именно на них. В качестве критериев отбора может выступать интерфейс, с которого пришел пакет, адрес отправителя или адрес получателя, порт отправителя или порт получателя, тип протокола.
Действие. Действие определяет, что именно нам делать с пакетом, который удовлетворяет заданному тобой критерию.
Самый полный список команд, опций, критериев и действий ты найдешь в доке Iptables-tutorial. Там все по-русски, поэтому тебе много не придется ломать голову. К тому же там есть просто шикарные примеры.
РАЗБЕРЕМ ПРАВИЛО:
iptables -A INPUT -i eth0 -p tcp -s 0/0 -d 192.168.1.1 --dport 53 -j DROP
Вот его части:
* iptables - системная программа для вызова утилиты управления пакетным фильтром;
* -A INPUT - команда iptables, означающая "добавить (-A) новое правило в цепочку INPUT";
* критерий -i eth0 говорит, что нам нужен пакет, приходящий с интерфейса (-i) eth0 (сетевуха); если у тебя диал-ап, то интерфейс, скорее всего, будет ppp0;
* критерий -p говорит, что нам нужен пакет протокола (-p) tcp;
* критерий -s 0/0 говорит, что нам нужен пакет с адресом отправителя (-s) любым, то есть 0.0.0.0 с маской подсети 0.0.0.0 или в краткой записи 0/0;
* критерий -d 192.168.1.1 говорит, что нам нужен пакет, который получает (-d) машина с адресом 192.168.1.1;
* критерий --dport 53 говорит, что номер порта принимающей (--dport) машины должен быть равен 53;
* действие -j DROP означает, что если пакет удовлетворяет ВСЕМ перечисленным критериям, то есть если все критерии присутствуют, то этот пакет прыгнет (-j) на цепочку DROP. Проще говоря, он будет уничтожен.
Назад на стр. 024-062-1 Содержание Вперед на стр. 024-062-3