AVM-Firewall package für Freetz

Das Problem ist nun wieder aufgetreten: Das Webinterface zeigt weder ein- noch ausgehende Regel an. Setze ich den Haken 'Regelwerk anzeigen', sehe ich nur Highoutput-Regeln, Lowinput-Regeln werden keine angezeigt.

Das ist der Inhalt der /mod/etc/conf/avm-firewall.cfg:
Code:
export AVM_FIREWALL_DO_ACTIVATE='yes'
export AVM_FIREWALL_GUI='*gui*'
export AVM_FIREWALL_LOG=''
export _cgi_width='1004'
export AVM_FIREWALL_RULESTABLE_LI='deny ip any 242.0.0.0 255.0.0.0 /*AVM*/
deny ip any host 255.255.255.255 /*AVM*/
deny udp any any eq 135 /*AVM*/
deny tcp any any eq 135 /*AVM*/
deny udp any any range 137 139 /*AVM*/
deny tcp any any range 137 139 /*AVM*/
deny udp any any range 161 162 /*AVM*/
deny udp any any eq 520 /*AVM*/
deny udp any any eq 111 /*AVM*/
deny udp any any eq 22289 /*AVM*/
deny udp any any eq 1710 /*AVM*/
deny udp any any eq 1048 /*AVM*/
deny udp any any eq 158 /*AVM*/
deny udp any any eq 515 /*AVM*/'
export AVM_FIREWALL_RULESTABLE_HO='reject ip any 242.0.0.0 255.0.0.0 /*AVM*/
deny ip any host 255.255.255.255 /*AVM*/
reject ip any 169.254.0.0 255.255.0.0 /*AVM*/
reject udp any any eq 135 /*AVM*/
reject tcp any any eq 135 /*AVM*/
reject udp any any range 137 139 /*AVM*/
reject tcp any any range 137 139 /*AVM*/
reject udp any any range 161 162 /*AVM*/
reject udp any any eq 520 /*AVM*/
reject udp any any eq 111 /*AVM*/
reject udp any any eq 22289 /*AVM*/
reject udp any any eq 1710 /*AVM*/
reject udp any any eq 1048 /*AVM*/
reject udp any any eq 158 /*AVM*/
reject udp any any eq 515 /*AVM*/
reject icmp any 149.1.1.0 255.255.255.0 /*AVM*/'
export AVM_FIREWALL_POLICY_LI='permit '
export AVM_FIREWALL_POLICY_HO='permit '

Das erstaunliche ist, dass ich seit vorgestern nichts mehr an der Fritz!Box gemacht habe - und da waren sie noch da.

Firefox meldet jedoch einen Fehler:
Code:
Fehler: document.getElementById(tmpid) is null
Quelldatei: http://fritz.box:81/cgi-bin/pkgconf.cgi?pkg=avm-firewall
Zeile: 399

ar7.cfg - Auszug
Code:
ar7cfg {
       
                name = "eth0";
                dhcp = no;
                ipaddr = 192.168.0.1;
                netmask = 255.255.255.0;
                dstipaddr = 0.0.0.0;
                dhcpenabled = no;
                dhcpstart = 192.168.0.20;
                dhcpend = 192.168.0.200;
        } {
                name = "eth0:0";
                dhcp = no;
                ipaddr = 169.254.1.1;
                netmask = 255.255.0.0;
                dstipaddr = 0.0.0.0;
                dhcpenabled = yes;
                dhcpstart = 0.0.0.0;
                dhcpend = 0.0.0.0;
        } {
                name = "usbrndis";
                dhcp = no;
                ipaddr = 192.168.179.1;
                netmask = 255.255.255.0;
                dstipaddr = 0.0.0.0;
                dhcpenabled = yes;
                dhcpstart = 0.0.0.0;
                dhcpend = 0.0.0.0;
        } {
                name = "wlan";
                dhcp = no;
                ipaddr = 192.168.182.1;
                netmask = 255.255.255.0;
                dstipaddr = 0.0.0.0;
                interfaces = "tiwlan0", "wdsup0", "wdsdw0", "wdsdw1", 
                             "wdsdw2", "wdsdw3";
                dhcpenabled = yes;
                dhcpstart = 0.0.0.0;
                dhcpend = 0.0.0.0;
        }
        brinterfaces {
                name = "lan";
                dhcp = no;
                ipaddr = 192.168.0.1;
                netmask = 255.255.255.0;
                dstipaddr = 0.0.0.0;
                interfaces = "eth0", "usbrndis", "tiwlan0", "wdsup0", 
                             "wdsdw0", "wdsdw1", "wdsdw2", "wdsdw3";
                dhcpenabled = no;
                dhcpstart = 192.168.0.20;
                dhcpend = 192.168.0.200;
        } {
                name = "lan:0";
                dhcp = no;
                ipaddr = 169.254.1.1;
                netmask = 255.255.0.0;
                dstipaddr = 0.0.0.0;
                dhcpenabled = yes;
                dhcpstart = 0.0.0.0;
                dhcpend = 0.0.0.0;
        }
        dslinterface {
                name = "dsl";
                dhcp = no;
                ipaddr = 169.254.2.1;
                netmask = 255.255.255.255;
                dstipaddr = 169.254.2.1;
                dhcpenabled = yes;
                dhcpstart = 0.0.0.0;
                dhcpend = 0.0.0.0;
        }
        dslinterface_metric = 2;
        ipbridge {
                enabled = no;
        }
        pppoefw {
                interfaces = "usbrndis", "eth0", "wlan", "lan";
                nofirewall = yes;
                ipnetbiosfilter = yes;
                dnsfilter_for_active_directory = yes;
                hostuniq_filter = "";
                dpconfig {
                        security = dpsec_host;
                        lowinput {
                                policy = "reject";
                                accesslist = 
                                             "permit ip any any connection outgoing-related", 
                                             "permit ip any any connection incoming-related", 
                                             "permit icmp any any";
                        }
                        lowoutput {
                                policy = "permit";
                        }
                        highinput {
                                policy = "permit";
                        }
                        highoutput {
                                policy = "permit";
                                accesslist = 
                                             "reject ip any 242.0.0.0 255.0.0.0", 
                                             "deny ip any host 255.255.255.255", 
                                             "reject ip any 169.254.0.0 255.255.0.0", 
                                             "reject udp any any range 161 162", 
                                             "reject udp any any eq 111";
                        }
                        shaper = "globalshaper";
                }
        }
        budget {
                Enabled = no;
                Period = 2;
                VolumeLow = 0;
                VolumeHigh = 0;
                ConnectionTime = 0;
                WarnOnly = yes;
        }
        vccs {
                VPI = 1;
                VCI = 32;
                traffic_class = atm_traffic_class_UBR;
                pcr = 0;
                scr = 0;
                priority = 0;
                dsl_encap = dslencap_ether;
                ipbridgeing = no;
                ipbridgeing_igmp = no;
                pppoeforwarding = no;
                connections = "internet", "voip";
        }
        mcupstream = "internet";
        voip_forwardrules = "udp 0.0.0.0:5060 0.0.0.0:5060", 
                            "tcp 0.0.0.0:5060 0.0.0.0:5060", 
                            "udp 0.0.0.0:7078+32 0.0.0.0:7078";
        tr069_forwardrules = "tcp 0.0.0.0:8089 0.0.0.0:8089";
        dslifaces {
                enabled = yes;
                name = "internet";
                dsl_encap = dslencap_inherit;
                dslinterfacename = "dsl";
                no_masquerading = no;
                no_firewall = no;
                pppoevlanauto = no;
                pppoevlanauto_startwithvlan = no;
                ppptarget = "internet";
                etherencapcfg {
                        use_dhcp = yes;
                        ipaddr = 0.0.0.0;
                        netmask = 0.0.0.0;
                        gateway = 0.0.0.0;
                        dns1 = 212.113.0.3;
                        dns2 = 83.169.185.33;
                        mtu = 0;
                }
                is_mcupstream = yes;
                stay_always_online = yes;
                only_route_when_connected = no;
                redial_delay_after_auth_failure = 1m;
                redial_limit = 3;
                redial_after_limit_reached = 1h;
                redial_after_limit_reached_variance = 5m;
                redial_delay_after_low_error = 10s;
                routes_only_for_local = no;
                ripv2receiver_enabled = no;
                dsldpconfig {
                        security = dpsec_firewall;
                        lowinput {
                                policy = "permit";
                                accesslist = 
                                             "deny ip any 242.0.0.0 255.0.0.0", 
                                             "deny ip any host 255.255.255.255", 
                                             "deny udp any any eq 135", 
                                             "deny tcp any any eq 135", 
                                             "deny udp any any range 137 139", 
                                             "deny tcp any any range 137 139", 
                                             "deny udp any any range 161 162", 
                                             "deny udp any any eq 520", 
                                             "deny udp any any eq 111", 
                                             "deny udp any any eq 22289", 
                                             "deny udp any any eq 1710", 
                                             "deny udp any any eq 1048", 
                                             "deny udp any any eq 158", 
                                             "deny udp any any eq 515";
                        }
                        lowoutput {
                                policy = "permit";
                        }
                        highinput {
                                policy = "permit";
                        }
                        highoutput {
                                policy = "permit";
                                accesslist = 
                                             "reject ip any 242.0.0.0 255.0.0.0", 
                                             "deny ip any host 255.255.255.255", 
                                             "reject ip any 169.254.0.0 255.255.0.0", 
                                             "reject udp any any eq 135", 
                                             "reject tcp any any eq 135", 
                                             "reject udp any any range 137 139", 
                                             "reject tcp any any range 137 139", 
                                             "reject udp any any range 161 162", 
                                             "reject udp any any eq 520", 
                                             "reject udp any any eq 111", 
                                             "reject udp any any eq 22289", 
                                             "reject udp any any eq 1710", 
                                             "reject udp any any eq 1048", 
                                             "reject udp any any eq 158", 
                                             "reject udp any any eq 515", 
                                             "reject icmp any 149.1.1.0 255.255.255.0";
                        }
                        forwardrules = "tcp 0.0.0.0:499 0.0.0.0:499 0", 
                                       "udp 0.0.0.0:5060 0.0.0.0:5060";
                        shaper = "globalshaper";
                }
        } {
                enabled = yes;
                name = "voip";
                dsl_encap = dslencap_inherit;
                dslinterfacename = "dsl";
                no_masquerading = no;
                no_firewall = no;
                pppoevlanauto = no;
                pppoevlanauto_startwithvlan = no;
                ppptarget = "voip";
                etherencapcfg {
                        use_dhcp = yes;
                        ipaddr = 0.0.0.0;
                        netmask = 0.0.0.0;
                        gateway = 0.0.0.0;
                        dns1 = 0.0.0.0;
                        dns2 = 0.0.0.0;
                        mtu = 0;
                }
                is_mcupstream = no;
                stay_always_online = yes;
                only_route_when_connected = no;
                redial_delay_after_auth_failure = 1m;
                redial_limit = 3;
                redial_after_limit_reached = 1h;
                redial_after_limit_reached_variance = 5m;
                redial_delay_after_low_error = 10s;
                routes_only_for_local = no;
                tcclassroutes = "sipdns", "sip", "rtp";
                ripv2receiver_enabled = no;
                dsldpconfig {
                        security = dpsec_firewall;
                        lowinput {
                                policy = "permit";
                                accesslist = "permit udp any any", 
                                             "permit icmp any any", 
                                             "deny ip any host 255.255.255.255", 
                                             "reject ip any any";
                        }
                        lowoutput {
                                policy = "permit";
                        }
                        highinput {
                                policy = "permit";
                        }
                        highoutput {
                                policy = "permit";
                                accesslist = "permit udp any any", 
                                             "reject ip any any";
                        }
                        forwardrules = "udp 0.0.0.0:5060 0.0.0.0:5060";
                        shaper = "globalshaper";
                }
        }
        targets {
                type = pppcfg_target_internet;
                name = "internet";
                only_crypt_auth = no;
                local {

Grüße
smileyman
 
Könntest du mal bitte mit "rechter Mausklick-> Aktueller Frame -> Framequelltext anzeigen" die "angemeckerte Zeile" mit etwas drumherum raussuchen?
Und auch, was so kurz hinter "<script>" bei "allrules_li=" und "allrules_ho=" steht? Dort werden die Arrays aufgebaut.

Hier würde dann Firebug doch helfen ;-)

Danke!

Jörg
 
Hallo Jörg,

das ist die genannte Zeile:
Code:
function build_where_select(){
  [B]element=document.getElementById("id_where");[/B]
  l=element.length;
  if (  l < rulescount+1 ) {
    for (j=l ; j< rulescount+1 ; j++){
        newopt=document.createElement('option');
        newopt.text= (j+1);
        newopt.value= (j+1);
        element.options[j]= newopt;
    }
  }
  else if ( l > rulescount+1 ){
    for (j=l ; j >= rulescount+1 ; j--){
                element.options[j]= null ;
    }
  }
}
Hinter Script:
Code:
<script>
/*
console.time("mytime");
*/
rules="";

action=new Array();
proto=new Array();
source=new Array();
dest=new Array();
param=new Array();
remark=new Array();
rulescount=0;
allrules_li=new Array('deny ip any 242.0.0.0 255.0.0.0 /*AVM*/', 'deny ip any host 255.255.255.255 /*AVM*/', 'deny udp any any eq 135 /*AVM*/', 'deny tcp any any eq 135 /*AVM*/', 'deny udp any any range 137 139 /*AVM*/', 'deny tcp any any range 137 139 /*AVM*/', 'deny udp any any range 161 162 /*AVM*/', 'deny udp any any eq 520 /*AVM*/', 'deny udp any any eq 111 /*AVM*/', 'deny udp any any eq 22289 /*AVM*/', 'deny udp any any eq 1710 /*AVM*/', 'deny udp any any eq 1048 /*AVM*/', 'deny udp any any eq 158 /*AVM*/', 'deny udp any any eq 515 /*AVM*/')
allrules_ho=new Array('reject ip any 242.0.0.0 255.0.0.0 /*AVM*/', 'deny ip any host 255.255.255.255 /*AVM*/', 'reject ip any 169.254.0.0 255.255.0.0 /*AVM*/', 'reject udp any any eq 135 /*AVM*/', 'reject tcp any any eq 135 /*AVM*/', 'reject udp any any range 137 139 /*AVM*/', 'reject tcp any any range 137 139 /*AVM*/', 'reject udp any any range 161 162 /*AVM*/', 'reject udp any any eq 520 /*AVM*/', 'reject udp any any eq 111 /*AVM*/', 'reject udp any any eq 22289 /*AVM*/', 'reject udp any any eq 1710 /*AVM*/', 'reject udp any any eq 1048 /*AVM*/', 'reject udp any any eq 158 /*AVM*/', 'reject udp any any eq 515 /*AVM*/', 'reject icmp any 149.1.1.0 255.255.255.0 /*AVM*/')
policy_li="permit ";
policy_ho="permit ";
allrules=allrules_ho;
selrules="ho";
showrules();
allrules=allrules_li;
selrules="li";
 

Init_FW_Table();
/*
console.timeEnd("mytime");
console.time("mytime");
*/

/*
console.timeEnd("mytime");
*/

function my_tmp(elem){
var tmp=elem;
while (tmp.id !="content"){
    tmp=tmp.parentNode;}
cn=tmp.childNodes;
i=0;
while (i < cn.length && cn[i].className != "btn"){
i+=1;
}
cn[i].action='alert("ha, geaendert")';
newtmp=tmp.removeChild(cn[i]);
alert("ist weg");
}

Danke und Grüße
smileyman
 
Bin etwas in Eile, daher nur kurz: Die obere Zeile passt leider nicht ganz zur Fehlermeldung (da tauch kein "document.getElementById(tmpid)" auf) :-( .

Der Ausschnitt unten scheint zumindest so o.k. zu sein, die "Datenübernahme" in die JS-Seite (Aufbau des Arrays) wäre also erstmal o.k..

Tja, leider weiß ich im Moment auch nicht mehr...

Jörg
 
Bin etwas in Eile, daher nur kurz: Die obere Zeile passt leider nicht ganz zur Fehlermeldung (da tauch kein "document.getElementById(tmpid)" auf) :-( .

Ja, du hast recht - wenn man weiß wie man dann zu richtigen Zeile kommt, ist es auch ganz einfach ;-)
Es handelt sich nämlich wohl um das hier:
Code:
function Init_FW_policy(){
	pol= (selrules=="li")? policy_li : policy_ho;
	var tmpid="id_"+pol;
	[B]document.getElementById(tmpid).checked=true[/B];
}

Grüße
smileyman
 
Wenn der Fehler noch Auftritt, könntest du mich da etwas unterstützen?!?

Die CGI Datei kopieren, etwas verändern und dann sehen, was rauskommt...

Code:
cd /var/tmp
sed 's/var tmpid="id_"+pol;/var tmpid="id_"+pol; document.getElementById("id_new_rule").value=tmpid; /' /usr/lib/cgi-bin/avm-firewall.cgi > /var/tmp/avm-firewall.cgi

mount --bind /var/tmp/avm-firewall.cgi /usr/lib/cgi-bin/avm-firewall.cgi

Dann sollte wenn due die FW-Seite aufrufst oben in dem Feld, wo die neue Regel steht, der Inhalt von "tmpid" stehen. Was steht denn dann da?

Besten Dank!!!

Jörg
 
Hallo Jörg,
klar kann ich dich da unterstützen. - Ich habe vorhin nach meinem Posting mal wieder die Standard-Regeln geladen. - Eine zeitlang standen die auch drin. - Jetzt habe ich wieder die Config-Seite geöffnet: Regeln wieder weg (selber Status wie vorher) :-(

Ich habe die Befehle, so wie du schreibst ausgeführt: Jetzt erscheint jedoch auf dem Webinterface die Fehlermeldung: Fehler: Kein Skript für das Paket 'avm-firewall'.

Irgendwas scheint da schiefgelaufen zu sein.
Kann ich die Datei nicht auch via Editor (nvi, vi, etc.) ändern?

Danke
smileyman
 
sehr interesant zu lesen das es der art unterschedlicha uf den einzelnen boxen laufen kann...bei mir z.b. rennt es perfekt...
und das auf 7170 und 7270
 
Fehler: Kein Skript für das Paket 'avm-firewall'.
Sorry, mein Fehler! Ein "chmod +x /var/tmp/avm-firewall.cgi" sollte das beheben.

Und natürlich kann man die Datei auch anders verändern, je mehr du dir da Eigeninitiative zutraust, umso besser ...


Jörg
 
Sorry, mein Fehler! Ein "chmod +x /var/tmp/avm-firewall.cgi" sollte das beheben.

Kein Problem - Jetzt ist das Interface wieder verfügbar.
Im Feld 'Regel:' steht nun 'id_permit'
(Habe dir mal einen Screenshot angehängt)

Und natürlich kann man die Datei auch anders verändern, je mehr du dir da Eigeninitiative zutraust, umso besser ...


Hätte ich jetzt als nächstes probiert ;-) - Da ich jedoch in Linux noch nicht fit bin und momentan meine Bücher (Prüfungsvorbereitung) wälze, wodurch mir etwas wenig Zeit zum basteln bleibt, bin ich da für deine Unterstützung sehr dankbar ;-)

Grüße
smileyman
 

Anhänge

  • AVM-Firewall.jpg
    AVM-Firewall.jpg
    104.8 KB · Aufrufe: 72
Zuletzt bearbeitet:
Tja, blöd eigentlich, denn das Object mit der ID "id_permit" sollte es eigentlich geben, oder? Oben in der Kopfzeile der Radio-Button für die "Default Policy"?

Vielleicht könntest du die Zeile mal fest darauf ändern:
Code:
document.getElementById("id_permit").checked=true;

Jörg
 
Hallo Jörg,
theoretisch schon - praktisch aber wohl nicht ;-)
Ich habe die Zeile mal abgeändert.
Jetzt ist das Fenster komplett leer. - Nur die Buttons 'Übernehmen' und 'Standard' sehe ich noch. - Alles andere in diesem Frame ist verschwunden. - Hmm.

Da ich momentan jedoch zeitlich zu eng dran bin um hier weiterzuspielen muss ich das erstmal ein Stück vertagen. - Ich hoffe du bist mir da nicht böse?!
Lass uns das ganze etwas verschieben. - Ich werde mich dann nochmal reinknien.
Erst mal die FB komplett resetten / Freetz deinstallieren und anschließend neu installieren. - Dann werde ich das nochmal genau testen, wo es hakt.

Danke
smileyman
 
...nee, ist kein Problem, denn bei mir läuft es ja ;-), was aber eben dazu führt, dass nur diejenigen die vermuteten Fehler finden können, bei denen Sie auftreten.
Und Prüfung geht natürlich vor, außerdem habe ich ja auch noch andere Hobbies ;-)

Danke bis hierher und viel Erfolg!

Jörg
 
Hallo,

ich habe in der Firma einen PC stehen, der sich über Fritzbox VPN in das andere Firmennetz integriert, beides Fritzboxen 7170.

Kann ich mit dieser Firewall einstellen, dass auf diesem einzelnen PC zwar das VPN funktioniert, aber sonst der Internetzugang gesperrt ist?

Ich freue mich sehr auf eine Antwort und wenn es klappt werde ich mich gerne in das Thema einlesen.

Beste Grüße
TT
 
Das sollte eigentlich gehen. In den ausgehenden Regeln folgendes eintragen (für 192.168.178.123 deinen PC für 1.2.3.4 die IP des IPSec Gateways):
Code:
permit ip host 192.168.178.123 host 1.2.3.4
deny ip host 192.168.178.123 any

Hier wäre vom PC aus jedes Protokoll zur Zielfritzbox erlaubt, was wohl kein Problem sein sollte?!?

Jörg
 
ok, dankeschön schonmal :)
hört sich sehr gut an.

ipsec gateway wäre dann die ip adresse der 2. fritzbox oder?

funktioniert dies auch wenn man nicht über dsl sich einwählt sondern am kabelmodem hängt?
 
Ja, die zweite IP ist das IPSec Gateway, also der "anderen" Box. Allerdings gehe ich davon aus, dass diese Ziel-IP eine feste IP haben muss. Die Regeln werden nicht mit einem Namen oder einer einer Dyndns-Adresse funktionieren. Probier es lieber nicht, da einen Namen einzutragen, das ganze ist recht "Mimosenhaft", weil direkt in die zentrale Konfigdatei der Box eingegriffen wird. Steht da was "unerwartetes" für die Box, stellt sie ihre Defalts wieder her und die Box ist einstellungsmäßig quasi wieder "wie neu" ...

Ob sich die Box direkt oder Modem verbindet, ist egal. Sie muss allerdings aus ihrer Sicht die Verbindung aufbauen (ein "vorhandene Verbindung mitbenutzen" geht nicht!).

Jörg
 
ok, meinst du die öffentlich adresse, welche bei der einwahl verteilt wird oder die lokale ip adresse der 2. fb (ist bei mir 192.168.179.250) ?
 
Nein, nicht die lokale, die "öffentliche", denn das ist ja die IP auf die dein PC zugreifen will/soll, um die IPSec-Verbindung aufzubauen. In der Box kannst du dann halt den Zugriff auf genau diese Adresse zulassen, auf alle anderen sperren (das macht der oben genannte Eintrag).

Aber es muss eben leider genau eine IP-Adresse sein. Wenn die dynamisch bei der Einwahl vergeben wird, geht dein Vorhaben leider nicht (es sei denn, du könntest das mit der eindeutigen IP über Skripte "Nachbilden", die den Eintrag in der FW immer anpassen).

Jörg
 
Kann man in den AVM-Firewall Regeln eigentlich auch MAC-Adressen eintragen? :confused:

Falls nein: Warum nicht?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.