From: Alexander Marx Date: Sat, 5 Oct 2013 11:50:35 +0000 (+0200) Subject: Firewall: added some more plausichecks and additional errormessages X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=commitdiff_plain;h=e6e9a8117677eca8319982ce56aa72e93c9b407e Firewall: added some more plausichecks and additional errormessages --- diff --git a/config/forwardfw/rules.pl b/config/forwardfw/rules.pl index baeb7ada5..5116844b7 100755 --- a/config/forwardfw/rules.pl +++ b/config/forwardfw/rules.pl @@ -251,7 +251,6 @@ sub buildrules #print rules to console foreach my $DPROT (@DPROT){ $DPORT = &get_port($hash,$key,$DPROT); - print "uzlputz DPROT= $DPROT $DPORT\n"; $PROT=$DPROT; $PROT="-p $PROT" if ($PROT ne '' && $PROT ne ' '); foreach my $a (sort keys %sourcehash){ @@ -593,6 +592,8 @@ sub get_port }else{ return "--dport ".&fwlib::get_srv_port($$hash{$key}[15],1,$prot); } + }elsif($prot eq 'ICMP' && $$hash{$key}[11] eq 'ON'){ #When PROT is ICMP and "use targetport is checked, this is an icmp-service + return "--icmp-type ".&fwlib::get_srv_port($$hash{$key}[15],3,$prot); } }elsif($$hash{$key}[14] eq 'cust_srvgrp'){ if ($prot ne 'ICMP'){ diff --git a/html/cgi-bin/forwardfw.cgi b/html/cgi-bin/forwardfw.cgi index 44aa07370..c16fd0ade 100755 --- a/html/cgi-bin/forwardfw.cgi +++ b/html/cgi-bin/forwardfw.cgi @@ -805,7 +805,17 @@ sub checkrule } } } - #check source and destination protocol if source manual and dest single service + #When using source- or targetport, the protocol has to be TCP or UDP + if (($fwdfwsettings{'USESRV'} eq 'ON' || $fwdfwsettings{'USE_SRC_PORT'} eq 'ON') && ($fwdfwsettings{'SRC_PORT'} ne '' || $fwdfwsettings{'TGT_PORT'} ne '') && ($fwdfwsettings{'PROT'} ne 'TCP' && $fwdfwsettings{'PROT'} ne 'UDP')){ + $errormessage.=$Lang::tr{'fwdfw err prot_port1'}; + return; + } + #when icmp selected, no targetport allowed + if (($fwdfwsettings{'PROT'} ne '' && $fwdfwsettings{'PROT'} ne 'TCP' && $fwdfwsettings{'PROT'} ne 'UDP') && ($fwdfwsettings{'USESRV'} eq 'ON' || $fwdfwsettings{'USE_SRC_PORT'} eq 'ON')){ + $errormessage.=$Lang::tr{'fwdfw err prot_port'}; + return; + } + #change protocol if prot not equal dest single service if ($fwdfwsettings{'grp3'} eq 'cust_srv'){ foreach my $key (sort keys %customservice){ if($customservice{$key}[0] eq $fwdfwsettings{$fwdfwsettings{'grp3'}}){ @@ -826,7 +836,7 @@ sub checkrule if ($fwdfwsettings{'PROT'} eq 'ICMP'){ $fwdfwsettings{'USE_SRC_PORT'}=''; $fwdfwsettings{'SRC_PORT'}=''; - $fwdfwsettings{'USESRV'}=''; + #$fwdfwsettings{'USESRV'}=''; $fwdfwsettings{'TGT_PORT'}=''; &General::readhasharray("${General::swroot}/fwhosts/icmp-types", \%icmptypes); foreach my $key (keys %icmptypes){ @@ -1254,7 +1264,7 @@ sub get_serviceports } } if($tcp && $udp && $icmp){ - push (@protocols,"All"); + push (@protocols,"TCP,UDP,
ICMP"); return @protocols; } if($tcp){ @@ -1656,7 +1666,7 @@ END