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]