WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Вы можете столкнуться с несколькими проблемами при попытке
загрузить тот или иной модуль. Например, может быть выдано
сообщение об отсутствии запрашиваемого модуля: Пока еще нет причин для беспокойства. Вполне возможно, что
запрашиваемый модуль (или модули) был связан с ядром статически.
Это первое, что Вы должны проверить. В примере, приведенном выше,
произошла ошибка при загрузке таблицы filter.
Чтобы проверить наличие этой таблицы, просто запустите команду: Если все нормально, то эта команда выведет список всех
цепочек из таблицы filter. Вывод должен выглядеть примерно так: Если таблица filter отсутствует, то вывод будет примерно следующим: Это уже серьезнее, так как это сообщение указывает на то,
что либо Вы забыли установить модули, либо Вы забыли выполнить
depmod -a, либо Вы вообще не
скомпилировали необходимые модули. Для решения первой проблемы
запустите команду make modules_install в
каталоге с исходными текстами ядра. Вторая проблема решается запуском
команды depmod -a.
Разрешение третьей проблемы уже выходит за рамки данного руководства,
и в этом случае рекомендую посетить домашнюю страничку
The Linux Documentation Project
. Взгляните еще раз в начало документа, где описывается
процесс установки iptables. Другие ошибки, которые Вы можете получить при запуске iptables: Эта ошибка сообщает, что нет такой цепочки, действия или критерия.
Это может зависеть от огромного числа факторов,
наиболее вероятно, что Вы пытаетесь использовать
несуществующую (или еще не определенную) цепочку,
несуществующее действие или критерий. Либо потому, что не
загружен необходимый модуль. Это свойство iptables недостаточно хорошо
задокументировано, а поэтому многие могут уделить ему
недостаточное внимание (включая и меня). Если Вы используете правила,
определяющие статус пакета NEW,
но не проверяете состояние бита SYN,
то пакеты со сброшенным битом SYN
смогут просочиться через защиту. Хотя, в случае, когда мы используем
несколько брандмауэров, такой пакет может оказаться частью
ESTABLISHED-соединения,
установленного через другой брандмауэр. Пропуская подобные пакеты,
мы делаем возможным совместную работу двух или более брандмауэров,
при этом мы можем любой из них остановить,
не боясь разорвать установленные соединения, Поскольку функции по передаче
данных тут же возьмет на себя другой брандмауэр. Однако, это позволит
устанавливать практически любое TCP-соединение. Во избежание этого следует
добавить следующие правила в цепочки INPUT,
OUTPUT и FORWARD:
Вышеприведенные правила позаботятся об этой проблеме.
Будьте чрезвычайно внимательны при построении правил,
принимающих решение на основе статуса пакета. Обратите внимание, что имеются некоторые неприятности с
вышеприведенными правилами и плохой реализацией TCP/IP от Microsoft.
Дело в том, что при некоторых условиях пакеты, сгенерированные программами
от Microsoft, маркируются как NEW и согласно
этим правилам будут сброшены. Это, однако, не приводит к разрушению
соединений, насколько я знаю. Происходит это потому, что, когда соединение
закрывается, и посылается завершающий пакет FIN/ACK,
то netfilter закрывает это соединение и
удаляет его из таблицы conntrack.
В этот момент дефектный код Microsoft посылает другой пакет,
которому присваивается статус NEW,
но в этом пакете не установлен бит SYN и,
следовательно, он соответствует вышеупомянутым правилам. Короче говоря, особо
не переживайте по поводу этих правил. В случае чего Вы сможете просмотреть
системный журнал, куда логгируются отбрасываемые пакеты
(см. правила выше) и разобраться с ними. Имеется еще одна известная проблема с этими правилами.
Если кто-то в настоящее время связан с брандмауэром, например из
LAN, и активирует
PPP, то в этом случае соединение будет уничтожено.
Это происходит в момент, когда загружаются или выгружаются модули
conntrack и nat.
Другой способ получить эту проблему состоит в том, чтобы выполнить скрипт
rc.firewall.txt из сеанса
telnet с другого компьютера. Для этого Вы
соединяетесь по telnet с брандмауэром.
Запускаете rc.firewall.txt в процессе исполнения
которого запускаются модули трассировки подключений,
грузятся правила "NEW not SYN".
Когда клиент telnet или daemon пробуют послать
что-нибудь, то это подключение будет распознано трассировочным кодом как
NEW, но пакеты не имеют установленного бита
SYN, так как они, фактически,
являются частью уже установленного соединения.
Следовательно, пакет будет соответствовать правилам,
в результате чего будет зажурналирован и сброшен. Существует одна из разновидностей спуфинг-атак, которая называется
"Предсказание номера TCP-последовательности"
(Sequence Number Prediction). Смысл атак такого рода
заключается в использовании чужого IP-адреса для нападения на
какой-либо узел сети. Для рассмотрения типичной Sequence Number Prediction атаки
обозначим через [A] атакующий хост, [V] атакуемый хост,
[O] третий хост, чей IP-адрес используется атакующим. Хост [A] отправляет SYN-пакет (запрос на соединение)
хосту [V] с обратным IP-адресом хоста [O]. Хост [V] отвечает хосту [O] пакетом SYN/ACK. Теперь, по логике вещей, хост [O] должен разорвать
соединение пакетом RST, поскольку он не посылал запрос на
соединение (пакет SYN), и попытка атаки провалится, однако, допустим,
что хост [O] не ответил (оказался выключенным, перегружен работой или
находится за брандмауэром, который не пропустил пакет SYN/ACK). Если хост [O] не отправил пакет RST, прервав таким образом
начавшуюся атаку, то атакующий хост [A] получает возможность взаимодействия
с хостом [V], выдавая себя за [O]. Не передав RST-пакет мы тем самым способствуем
выполнению атаки на хост [V], которая может быть
инкриминирована нам самим. Общепринятой считается необходимость
отправления пакета RST в подобных случаях (RST в ответ на
незапрошенный SYN/ACK). Если в Вашем брандмауэре используются правила,
фильтрующие пакеты со статусом NEW и сброшенным битом SYN, то SYN/ACK-пакеты
будут сбрасываться этими правилами. Поэтому, следующее правило необходимо
вставить в цепочку bad_tcp_packets первым:
В большинстве случаев подобные правила обеспечивают
достаточный уровень безопасности для хоста [O] и риск от их
использования относительно невелик. Исключение составляют случаи
использования серии брандмауэров. В этом случае некоторые соединения
могут оказаться заблокированными, даже если они вполне законны.
Эти правила, ко всему прочему, допускают некоторые виды сканирования портов,
но не более того. Я добавил этот раздел, чтобы предупредить Вас о туповатых
провайдерах (Internet Service Providers), которые назначают IP-адреса,
отведенные IANA для локальных сетей.
Например, Swedish Internet Service Provider и телефонная монополия
Telia используют такие адреса для своих серверов
DNS (диапазон 10.x.x.x).
Проблема, с которой Вы будете наиболее вероятно сталкиваться,
состоит в том, что мы в своих скриптах блокируем подключения с любых
IP в диапазоне 10.x.x.x из-за возможности фальсификации пакетов.
Если Вы столкнетесь с такой ситуацией, то наверное Вам придется
снять часть правил. Или установить правила, пропускающие трафик с этих
серверов, ранее цепочки INPUT, например так: Хотелось бы напомнить подобным провайдерам, что эти диапазоны адресов
не предназначены для использования в Интернет.
Для корпоративных сетей пожалуйста, для Ваших собственных
домашних сетей тоже прекрасно! Но Вы не должны
вынуждать нас "открываться" по Вашей прихоти. В действительности эта задача достаточно проста, если Вам известны
принципы работы протокола DHCP.
Прежде всего необходимо знать, что DHCP
работает по протоколу UDP.
Следовательно, протокол является первым критерием.
Далее, необходимо уточнить интерфейс, например, если
DHCP-запросы идут через
$LAN_IFACE, то движение запросов
DHCP следует разрешить только через этот интерфейс.
И наконец, чтобы сделать правило более определенным, следует уточнить порты.
DHCP использует порты 67 и 68.
Таким образом, искомое правило может выглядеть следующим образом: Обратите внимание, это правило пропускает весь трафик по
протоколу UDP через порты 67 и 68, однако это не
должно Вас особенно смущать, поскольку оно разрешает лишь движение запросов
от узлов сети, пытающихся установить соединение с портами 67 и 68.
Этого правила вполне достаточно, чтобы позволить выполнение
DHCP-запросов и при этом не слишком
широко "открыть ворота". Если Вас очень
беспокоит проблема безопасности, то Вы вполне можете ужесточить это правило.
mIRC использует специфичные настройки, которые позволяют
соединяться через брандмауэр и обрабатывать DCC-соединения должным образом.
Если эти настройки используются совместно с iptables,
точнее с модулями ip_conntrack_irc и ip_nat_irc, то эта связка просто
не будет работать. Проблема заключается в том, что mIRC автоматически
выполняет трансляцию сетевых адресов (NAT) внутри пакетов.
В результате, когда пакет попадает в iptables, он просто не знает,
что с ним делать. mIRC не ожидает, что брандмауэр будет настолько
"умным", чтобы корректно обрабатывать IRC,
и поэтому самостоятельно запрашивает свой IP у сервера и затем
подставляет его при передаче DCC-запроса. Включение опции "I am behind a firewall"
("Я за брандмауэром") и использование модулей
ip_conntrack_irc и ip_nat_irc приводит к тому, что netfilter
пишет в системный журнал сообщение "Forged DCC send packet". У этой проблемы есть простое решение: отключите эту опцию
в mIRC и позвольте iptables выполнять всю работу.
Приложение B. Общие проблемы и вопросы
B.1. Проблемы загрузки модулей
insmod: iptable_filter: no module by that name found
iptables -t filter -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
iptables v1.2.5: can't initialize iptables table `filter': Table
does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
iptables: No chain/target/match by that name
B.2. Пакеты со статусом NEW и со сброшенным битом SYN
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
B.3. SYN/ACK-пакеты и пакеты со статусом NEW
iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT --reject-with tcp-reset
B.4. Поставщики услуг Internet, использующие зарезервированные IP-адреса
/usr/local/sbin/iptables -t nat -I PREROUTING -i eth1 -s \
10.0.0.1/32 -j ACCEPT
B.5. Как разрешить прохождение DHCP-запросов через iptables
$IPTABLES -I INPUT -i $LAN_IFACE -p udp --dport 67:68 --sport \
67:68 -j ACCEPT
B.6. Проблемы mIRC DCC
ю┴╩─╔ ╙╫╧╔╚ ╦╧╠╠┼╟! |