|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Igor Nikolaev 2:5030/266 10 Jan 2001 12:38:51 To : Alex Korchmar Subject : Re: I: Интерактивная настройка файрвола -------------------------------------------------------------------------------- Alex Korchmar <Alex_Korchmar@p65.f423.n5020.z2.fidonet.org> wrote: > опять же - поверю, когда увижу работающее. Желательно - не на > уровне домашней машины - для нее есть та тулза, которая в 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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/134167479cca3.html, оценка из 5, голосов 10
|