NIX-ПРЕДОХРАНИЛОВО вся правда об ipchains Спецвыпуск Xakep, номер #024, стр. 024-022-4 - Интерфейс (флаг -i), к интерфейсам также применима инверсия, например «-i ! lo» будет значить «все интерфейсы, кроме lo». До кучи ты можешь указывать группу интерфейсов «-i eth+», это будет означать все интерфейсы, имена которых начинаются с «eth». - TCP SYN пакеты (-y) - это пакеты с запросом на установление TCP соединения. Они могут применяться только в правилах с TCP протоколом (например так: «-p TCP -s 0.0.0.0/0 -y», что означает принимать TCP SYN пакеты с любого адреса). - Только фрагменты пакетов (-f). Если пакет превышает по своему размеру MTU (Maximum Transfer Unit - максимальный размер), то он фрагментируется - разбивается на несколько пакетов, которые пересылаются по отдельности (на одной стороне разбираются, а на другой - собираются). На нашем файрволле эти пакеты можно собирать - дефрагментировать (для задействования этой опции ядра необходимо установить "CONFIG_IP_ALWAYS_DEFRAG = y") и транзитом отправлять их дальше. Вот тут и вылезает, аки гад из-под коряги, простая проблема - в первом фрагменте пакета лежит заголовок, а в остальных нет. Будь осторожен - злобные досеры могут закормить тебя обрывками пакетов, такие методы существуют, так что без нужды не запускай дефрагментатор. Вот почти все условия, которые тебе могут понадобиться, (я, правда, не рассказал о типах и кодах для протокола ICMP, но о них прочитаешь по ссылкам, которые указаны чуть ниже). Наконец, мы определились что за пакет нам пришел, и теперь надо принять решение, что же с ним делать. Для этого существуют шесть специальных действий плюс два дополнительных. Специальные действия задаются флагом -j: - ACCEPT - принять пакет. - DENY - грохнуть. - REJECT - издевательски грохнуть, т.е. послать отправителю ICMP-пакет о совершенном деянии (при условии, что проверяемый пакет не был ICMP-пакетом). - MASQ - замаскарадить пакет, действует только для пересылочной цепочки и при условии, что ядро поддерживает маскарадинг. - REDIRECT - применить прозрачное проксирование, т.е. отправить пакет на указанный порт локальной машины (возможно только во входной цепочке, формат «-j REDIRECT номер_порта»). - RETURN - применить к этому пакету политику цепочки. Если после -j ты укажешь действие, отличное от этих шести, то пакет начнется проверяться по указанной тобою цепочке (после флага -j), по завершении проверки по пользовательской цепочке проверка продолжится по текущей цепочке правил. Кроме этих общих переходов, ты можешь записать в логи пришедший тебе пакет (флаг -l) и изменить тип обслуживания пакета (-t), а еще... Ладно, хватит, это уже совсем необязательные фишки (любопытным - welcome2rtfm). ПОЛЕЗНЫЕ ХИНТЫ Прикинь, дружище, что ты полезешь разбираться на уже работающий файрволл со своим энтузазизмом великого конфигуратора. Готов поспорить на ящик «Балтики»-пятерки и упаковку кальмаров, что у тебя с первого раза мало чего стoящего получится, а вот угробить текущую конфигурацию - это запросто. Но не волнуйся, если ты будешь предохраняться, то и твой волк будет сыт и овечки мало пострадают (да и пастуху вечная память!)... Ведь текущие правила цепочки (или цепочек) можно сохранить при помощи утилиты «ipchains-save имя_цепочки > имя_файла»; если вдруг забудешь указать имя цепочки, не волнуйся - сохранятся правила для всех цепочек. А если ты забыл указать имя файла, то извини, твой танк припаркован на запасном пути :). Ну а раз можно сохранить правила, то со стороны разработчиков было бы верхом глупости, если их нельзя было бы загрузить - «ipchains-restore < имя_файла». |