The OpenNET Project / Index page

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

[FreeBSD] пример продвинутого /etc/rc.firewall (firewall freebsd ipfw example)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: firewall, freebsd, ipfw, example,  (найти похожие документы)
From : Igor Nikolaev 2:5030/266 10 Jan 01 11:38:50 Subj : [FreeBSD] пример продвинутого /etc/rc.firewall ------------------------------------------------------------------------------- * Forwarded from area 'RU.LINUX' > опять же - поверю, когда увижу работающее. Желательно - не на /> уровне домашней машины - для нее есть та тулза, которая в subject. Может кому поможет, я выкинул конкретику, надеюсь нигде не опечатавшись. Всё равно патчить по месту, gpl :-) Это от фри потому как нефиг на линуксе роутеры строить. % cat /etc/rc.firewall #!/bin/sh # Unifyed firewall configuration # control network vtc="правильная_сетка с серверами/24" mail="почтовая машина" mail_ports="23,25,110,540" # в этом каталоге лежит файл с описанием роутера, см ниже rules=/usr/local/etc/ipfw/`/bin/hostname -s` # запуск /etc/rc.firewall echo | less для отладки if [ "${1}" = "echo" ] then ipfw="/bin/echo" else ipfw="/sbin/ipfw" fi # interface ip number by name ip () { ifconfig $1 | grep inet | awk '{ print $2; }'; } # start list number rule_num=1000 # pass and deny rules pass () { rule_num=$(($rule_num+10)); $ipfw add $rule_num pass $*; } deny () { rule_num=$(($rule_num+10)); $ipfw add $rule_num deny $*; } # backbone backbone () { pass all from any to any via $1; } # client segment segment () { pass ip from `ip $1` to any via $1 pass ip from any to `ip $1` via $1 } # any access any () { pass all from $1 to any pass all from any to $1 } # free acces from any interface from list to any lan () { local i j for i in $*; do pass ip from `ip $i` to any via $i pass ip from any to `ip $i` via $i for j in $*; do if [ $i != $j ]; then pass all from any to any out recv $i xmit $j fi done done } # client workstation: only outgoing tcp client () { pass ip from $1 to any pass tcp from any to $1 established } # only mail workstation mailws () { pass tcp from $1 to $mail $mail_ports pass tcp from $mail $mail_ports to $1 } # server: only incoming tcp on port list + control snmp server () { local ip port ip=$1 shift for port in $* do pass tcp from any to $ip $port pass tcp from $ip $port to any established done } # не забудьте default accept в ядре $ipfw -f flush # default правила, чините сами чего как кому надо ;-) pass all from any to any via lo0 deny all from any to 127.0.0.0/8 pass udp from any to any 33434-33523 pass all from $vtc to any pass all from any to $vtc pass tcp from any to any established # named pass udp from any to $vtc 53 pass udp from $vtc 53 to any pass udp from $vtc to any 53 pass udp from any 53 to $vtc # snmp pass udp from any 161 to $vtc pass udp from $vtc to any 161 # icmp deny icmp from any to any frag pass icmp from any to any # bootp pass udp from any to any 67 pass udp from any to any 68 # Router rules . $rules $ipfw add 65000 deny all from any to any % Конфигурация конкретной машины выглядит как-нибудь вот так: % less /usr/local/etc/ipfw/имя_роутера backbone ed0 backbone ed1 lan ed2 ed3 ed4 segment ed5 segment ed6 client $ip client $ip server $ip smtp pop3 imap4 http server $ip 22 23 25 4000-4010 mailws $ip % $ip это ip адрес клиента. *Hельзя* использовать fqdn вместо ip - так как роутинг в момент загрузки может ещё не встать. Hа самом деле это старый вариант, сейчас я это дело на perl'е переписал. Hо для небольшого числа роутеров (десяток) он вполне пригоден. -- Игорь Hиколаев --- ifmail v.2.12.os.sensi * Origin: http://www.spb.edu (2:5030/266@fidonet)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Вадим Юртайкин (?), 09:31, 11/12/2002 [ответить]  
  • +/
    Прошу прощения. Где вообще почитать нормально, как работает ipfw? Живу под FreeBSD 4.7,надо толком ограничить потоки. И, казалось, все настроил, но Trafshow это опровергает. Как валило все, так и валит, как хочет.
     

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




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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