The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Простое управление сложным фаерволом (netfilter/iptables) (iptables firewall linux)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: iptables, firewall, linux,  (найти похожие документы)
From: SG <sg@sg.tomsk.ru.> Newsgroups: email Date: Mon, 1 May 2006 18:21:07 +0000 (UTC) Subject: Простое управление сложным фаерволом (netfilter/iptables) Наверное каждый системный администратор хотя бы раз сталкивался с громоздкими настройками фаервола. Не несколько строчек для защиты своего персонального компьютера или сервера приложений, а сотни строк в каждой таблице на маршрутизаторе сети. Кто сталкивался - тот знает, как "удобно" править и как "легко" окинуть взором структуру этого нагромождения правил в разных таблицах и цепочках. Кроме этого довольно часто встречается ситуация, когда нужно добавить созданные скриптами правила в netfilter. Обычно, в таких ситуациях получаются размазанные по различным скриптам, хранящихся в невообразимых местах (у кого какая фантазия :) наборы правил. И что же делать с этим ужасом, когда требуется внести какие-то изменения и применить их? Каждый решает эту проблему по-своему, но обычно каждое изменение уникально в том смысле, что администратор забудет запустить вон тот скрипт или не в том порядке. И неизвестно, что будет после ребута... А если вдруг этот администратор куда-то делся и его заменяет другой... Какая до боли знакомая ситуация? :) В большинстве основанных на rpm дистрибутивах для пакета iptables существует набор стартовых скриптов и конфигов типа: /etc/init.d/iptables /etc/sysconfig/iptables-ipv4.d/* /etc/sysconfig/iptables* В других дистрибутивах тоже должна быть какая-то точка отсчета. Но проблема заключается в том, что правила netfilter загружаются с помощью утилиты iptables-restore, которая крайне примитивная и например не понимает присоединение дополнительных файлов правил с помощью директивы include. Я решил все эти проблемы простым способом: организовал дерево каталогов и файлов с правилами, а собирается все это в стандартный конфиг, который используется стартовым скриптом /etc/init.d/iptables. В результате получилась удобная структура конфигов, которую можно легко понять, в которую можно быстро вносить изменения и в которую могут добавляться правила, сгенеренные какими-то скриптами. Вот пример этого: /etc/sysconfig/iptables-ipv4.d/ rules.create - скрипт для создания конфига start - стандартный конфиг, который создается этим скриптом и используется стандартным стартовым скриптом (/etc/init.d/iptables) /etc/sysconfig/iptables-ipv4.d/filter/ begin end forward input output /etc/sysconfig/iptables-ipv4.d/mangle/ begin end forward input output postrouting prerouting /etc/sysconfig/iptables-ipv4.d/nat/ begin end output postrouting prerouting Это шаблон, который должен быть всегда. Пусть большая часть файлов будет поначалу пустая, но они должны быть. begin - начало таблицы, тут описываются дефолтные правила. Пример для filter: *filter :INPUT ACCEPT :FORWARD ACCEPT :OUTPUT ACCEPT end - этот файл завершает таблицу. Обычно там: COMMIT Остальные файлы по имени стандартных цепочек. Ну и разумеется, вы можете там создавать свои файлы с таким же именем, как и название цепочки. Так же можно поделить большую стандартную цепочку на несколько мелких. Например: forward.begin forward.net1 forward.net2 forward.netXX forward.end Другие скрипты могут создавать свои файлы-правила и все они будут собраны в одном конфиге. Вот мой пример таблицы filter: begin drop-and-log-it end external forward input noexternal noexternal-in output tomsknet tomsknet-in Ну а теперь сам скрипт, который собирает это дерево. Ничего сложного. Разумеется, каждый должен сам его доделывать под свои дополнительные цепочки: #!/bin/bash path="/etc/sysconfig/iptables-ipv4.d" rules="$path/start" cat $path/mangle/begin >$rules cat $path/mangle/prerouting >>$rules cat $path/mangle/postrouting >>$rules cat $path/mangle/input >>$rules cat $path/mangle/output >>$rules cat $path/mangle/forward >>$rules cat $path/mangle/end >>$rules cat $path/nat/begin >>$rules cat $path/nat/prerouting >>$rules cat $path/nat/postrouting >>$rules cat $path/nat/output >>$rules cat $path/nat/end >>$rules cat $path/filter/begin >>$rules cat $path/filter/input >>$rules cat $path/filter/output >>$rules cat $path/filter/forward >>$rules cat $path/filter/end >>$rules В этот скрипт можно добавить какие-то дополнительные действия. Например, у меня там генерится цепочка, которая пропускает трафик в городские сети (бесплатный). Попробуйте и часть ваших проблем и проблем ваших заместителей уйдет в прошлое.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, UserAd (?), 09:27, 05/05/2006 [ответить]  
  • +/
    Очередной костыль ... делал бы уж тогда по принципу redhat like init вместо того чтоб добавлять везде строчки ...
     
  • 2, a (??), 06:40, 06/05/2006 [ответить]  
  • +/
    Можно сильно не мудрить, а поставить firehol.
    http://firehol.sourceforge.net/
     
     
  • 3, Andrey Mitrofanov (?), 13:42, 06/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Присоединяюсь к предыдущему оратору...
    http://google.ru/search?q=firehol+site:opennet.ru
    http://google.ru/search?hl=ru&q=firehol+"Andrey+Mitrofanov" -- ссылки на linux.ru.net aka lrn.ru и debian.linuxrulez.ru придётся смотреть по "Сохранено в кеше" или в Web Archive идти :((( -- эти форумы не настолько "живучи", как OpenNET)
    // http://google.ru/search?q=firehol+site:www.lrn.ru http://web.archive.org/web/20050313190720/debian.linuxrulez.ru/forum/software
     

  • 4, Аноним (4), 18:38, 09/05/2006 [ответить]  
  • +/
    Фигня все это при грамотном распределении рулей по цепочкам, нормальном их именовании и соментариях (ipt_comment) достаточно короткой памятки с принципами...
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру