Slawa Olhovchenkov wrote:
> > 
> > ifpw как известно весьма низкоуровневая вещь. Никто не писал макрос
> > или скрипт, который бы сгенерил правила ipfw по типу как в Cisco PIX:
> > назначил интерфейсам уровни безопасности, и трафик может идти с
> > интерфейса с большим security level на интерфейс с меньшим security
> > level, но не наоборот (точнее, наоборот - только возвратный трафик).
> > 
> > Я что-то попытался продумать такую конструкцию с keep-state хотя бы
> > для 3 интерфейсов  с разными уровнями (inside 100, outside 0, dmz 50)
> > и у меня ум за разум зашёл. А если еще адреса транслировать надо,
> > вообще труба.
> 
> #!/usr/bin/perl
> print "Input: ifname sec_level\n";
> while(<>){
>  @F = split;
>  push @{$Sec{$F[1]}}, $F[0];
> }
> @seclist = sort {$b <=> $a} keys %Sec;
> print "check-state\n";
> foreach $f (@seclist) {
>  @fl = sort @{$Sec{$f}};
>  foreach $t (@seclist) {
>   next if $t > $f;
>   if($f == $t) {
>     for($i=0; $i <= $#fl; $i++){
>      for($j=0; $j <= $#fl; $j++) {
>       next if $fl[$i] eq $fl[$j];
>       print "permit ip from any to any recv $fl[$i] xmit $fl[$j]\n";
>      }
>     }
>     next;
>   }
>   @tl = sort @{$Sec{$t}};
>   foreach $from (@fl) {
>    foreach (@tl) {
>     print "permit ip from any to any recv $from xmit $_ keep-state\n";
>    }
>   }
>  }
> }

Гениально! 

check-state
permit ip from any to any recv INSIDE xmit DMZ keep-state
permit ip from any to any recv INSIDE xmit OUTSIDE keep-state
permit ip from any to any recv DMZ xmit OUTSIDE keep-state



-- 
Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
sip:[email protected]

Ответить