|
Кто не спрятался, я не виноват!Фильтрация пакетов, firewall и маскарадинг в ЛинуксеПолезные советыМеры безопасности во время изменения правил фильтрации
Во время изменения правил фильтрации некоторые нежелательные пакеты могут
проскочить через firewall. Рекомендуется следующий подход: # сначала вставляем во все цепочки правила, уничтожающие все пакеты ipchains -I input 1 -j DENY ipchains -I output 1 -j DENY ipchains -I forward 1 -j DENY ... делаем все необходимые изменения ... # убираем безусловное уничтожение пакетов ipchains -D input 1 ipchains -D output 1 ipchains -D forward 1 Динамическое изменение правил фильтрацииЕсли у вас есть непостоянный интерфейс, то во время начальной загрузки вы можете, например, установить первое правило во входной цепочке '-i ppp0 -j DENY', а после поднятия интерфейса, например, в скрипте ip-up, выполнить что-нибудь типа: # восстановить цепочку ppp-in ipchains-restore -f < ppp-in.firewall # заменить первое правило входной цепочки ipchains -R input 1 -I ppp0 -j ppp-inСоответственно, скрипт ip-down может выглядеть так: ipchains -R input 1 -i ppp0 -j DENY Сохранение и восстановление правил фильтрации
С помощью скрипта ipchains-save, входящего в комплект ipchains-scripts (
ipchains-save > my-firewallВ качестве параметра можно указать имя одной цепочки. Если имя не указано, то записываются правила всех цепочек. Кроме того, можно указать флаг '-v', который позволит посмотреть правила по мере их записи. Для восстановления правил из фала применяется скрипт ipchains-restore: ipchains-restore < my-firewallВо время работы ipchains-restore может запрашивать подтверждения на некоторые действия, например, если создаваемая цепочка уже существует, то можно очистить ее либо ничего не делать, тогда правила будут добавляться к уже существующим в цепочке правилам. Какие пакеты не надо уничтожатьПрежде чем уничтожать все ненужные вам пакеты, учтите следующее:
Защита от атак по IPНекоторые типы пакетов могут при определенных условиях вызывать нарушения в работе TCP/IP-стека протоколов, вплоть до полного зависания компьютеров. Ниже приводятся некоторые рекомендации по настройке фильтрации, если за вашим firewall'ом есть компьютеры, чувствительные к таким атакам. Свежие ядра Линукса нечувствительны к этим атакам, но другие системы могут нуждаться в защите.
Защита от спуфингаIP-спуфингом (spoofing) называется посылка пакетов с обратным адресом другой машины. Поскольку фильтрация пакетов во многом основывается на адресе отправителя, спуфинг может использоваться, чтобы обмануть фильтр пакетов. Кроме того, он используется для маскировки атакующего при атаках типа SYN, Teardrop, Ping of Death, и других. Если вы не знаете, что это такое, это не важно ;-)
Лучший способ защититься от IP-спуфинга называется Проверка Адреса Отправителя
(Source Address Verification), и выполняется программами маршрутизации, а не
фильтрации пакетов. Проверьте, существует ли у вас на машине файл
/proc/sys/net/ipv4/conf/all/rp_filter. Если да, то верным решением будет
включение Проверки Адреса Отправителя во время начальной загрузки машины. Для
этого следует вставить следующие команды в один из ваших скриптов инициализации,
до инициализации сетевых интерфейсов: # Включаем Проверку Адреса Отправителя и получаем # защиту от спуфинга на всех существующих и будущих интерфейсах if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then echo -n "Setting up IP spoofing protection..." for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done echo "done." else echo PROBLEMS SETTING UP IP SPOOFING PROTECTION. BE WORRIED. echo "CONTROL-D will exit from this shell and continue system startup." echo # Start a single user shell on the console /sbin/sulogin $CONSOLE fiЕсли это у вас не получится, можно вручную добавить правила для защиты каждого интерфейса. Для этого требуется знать, какие интерфейсы у вас есть.
К примеру, у вас на машине 3 интерфейса - eth0, eth1, ppp0. Вы можете
использовать ifconfig, чтобы узнать какие адреса и маски сети используются на
каждом из интерфейсов. Предположим, eth0 соединен с сетью
192.168.1.0/255.255.255.0, eth1 - с сетью 10.0.0.0/255.0.0.0, а ppp0 - с
остальным интернетом (поэтому на этом интерфейсе возможны любые адреса, кроме
локальных сетей). Тогда надо добавить следующие правила: ipchains -A input -i eth0 -s ! 192.168.1.0/24 -j DENY ipchains -A input -i ! eth0 -s 192.168.1.0/24 -j DENY ipchains -A input -i eth1 -s ! 10.0.0.0/8 -j DENY ipchains -A input -i ! eth1 -s 10.0.0.0/8 -j DENYТакое решение хуже, чем Проверка Адреса Отправителя, поскольку при изменении сетевой конфигурации вам придется переделывать правила фильтрации. Ядра 2.1.x и выше автоматически отвергают пакеты с адресом отправителя 127.*.*.*, если они приходят не с локального интерфейса. Если у вас ядро 2.0.x, вы можете таким же образом защитить интерфейс lo: ipchains -A input -I !lo -s 127.0.0.0/8 -j DENY Где взять
На официальной странице ipchains:
Скрипты для ipchains:
Ссылки
© Александр Дилевский 06-15.06.1999. << Страница 4 |