Frage zum AVM-Webserver bzw. ctlmgr in aktuellen Fritz!OS-Versionen

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
15,300
Punkte für Reaktionen
1,760
Punkte
113
Ich hoffe mal, das ist jetzt nicht OT, aber hier ist meine Chance auf eine Antwort sicherlich am größten.

Ich hätte mal eine Frage bzgl. des ctlmgr, der ja für vieles - meines Wissens auch für das Durchsetzen von Zugriffsbeschränkungen auf den Webserver - zuständig ist.

Der ctlmgr ist im Normalfall an den Port 80 auf allen Interfaces gebunden.

Wenn jetzt auf einem nicht-lokalen Interface eine private "Class A"-IP aus 10.0.0.0/8 verwendet wird, ordnet der ctlmgr diesen Zugriff dann als lokal oder als "internet" ein ?

Vielleicht hat ja jemand privat einen ausrangierten DSLAM und das schon einmal mit einer DSL-Box im Gartenhaus über eine Zweidrahtleitung :) getestet.

Einen Test mit einer meiner 7390 im IP-Client-Mode - meine einzige Idee und Möglichkeit - halte ich nicht für aussagekräftig, da der ctlmgr dann ja auch weiß, daß die Box in diesem Modus läuft und ggf. die Zuordnung dann doch wieder genauer prüft.

Auslöser meiner Frage ist unter anderem der folgende Abschnitt in der Konfiguration meiner FB6360:
Code:
websrv {
        port = "80";
        https_port = "XXX";
        read_timeout = 15m;
        request_timeout = 30s;
        keepalive_timeout = 5m;
        nokeepalive = "*";
        errordir = "/usr/www/html/errors";
        webdir = "/usr/www";
        cgidir = "cgi-bin";
        indexfn = "index.var", "index.htm", "index.html";
        users_only_for_https = yes;
        cors_allow_origins = "*.avm.de";
        cors_allow_headers = "SOAPACTION", "Content-Type", "Origin";
        cors_allow_methods = "GET", "POST", "OPTIONS";
        cors_max_age = 1d;
[B]        subfolder {
                name = "info";
                passwd = "$$$$ZVS1QPHIBDTEJQXUZGCJLKF2F6QOW2K1GAKC6TLK1VOVNSY2CFPKZGORBWYAO5YEMTWARE22N5135MZS"; (absichtlich nicht maskiert !)
                allow_from_internet = no;
                lan_authentication = no;
        }
[/B]}
Ich habe einen solchen Abschnitt bisher in keinem anderen mir zugänglichen Modell (7050, 7170, 7270v1, 7390) gefunden, auch nicht bei einer Internet-Recherche. Oder ich habe doch falsch gesucht oder nicht weit genug geblättert, "ar7.cfg" bringt halt sehr viele Treffer und auch "subfolder" ist eben nicht sehr spezifisch.

Wenn man jetzt einmal die Namen der Einstellungen wörtlich nimmt, ist dieser Ordner (subfolder) nur aus dem lokalen Netz (allow_from_internet = no) ohne Authentifizierung (lan_authentication = no) zugänglich. Ich mutmaße einmal, daß auch ein leeres Kennwort in "passwd =" zu einem schönen langen Eintrag führt und somit dieser Eintrag irreführend sein kann.

Ein Aufruf von "fritz.box/info" führt jedenfalls (ob mit oder ohne gültige sid) bei mir immer auf die "url not found"-Seite, was bei einem "subfolder" ja auch zu erwarten ist. Eine FB7390 (05.52) lehnt "subfolder" ab, wenn ich mich beim Editieren der ar7.cfg nicht vertan habe; andererseits enthält auch der ctlmgr einer 7390 das Symbol "AR7CFG_subfolder_alloc" und es sollte eigentlich funktionieren.

Jetzt muß man noch wissen, daß meine FB6360 seitens des Providers auf der wan0-Schnittstelle (DOCSIS-Interface) mit einer Adresse aus 10.46.128.0/20 zusätzlich zur über DHCP bezogenen öffentlichen IP (eigentlich sogar 2, VoIP geht extra) konfiguriert wird und das ist offensichtlich auch nicht nur ein Transitnetz.

Da stellt sich mir angesichts der Möglichkeit, daß unter "info" ja auch so ziemlich jede Seite aus dem "normalen" UI (notfalls mit Generierung einer gültigen sid auf einer zusätzlichen Einstiegsseite, falls eine der anderen Lua-Seiten die sid prüfen will) verlinkt sein könnte, schon die Frage, wie weit die Zugriffsmöglichkeiten über das "DOCSIS management"-Interface wirklich gehen.

Dafür wäre es entscheidend, die o.a. Frage zu klären, da natürlich ansonsten in der Konfiguration auch die üblichen Forward-Rules
Code:
forwardrules = "tcp 0.0.0.0:21 0.0.0.0:21 0", 
"tcp 0.0.0.0:4xx 0.0.0.0:4xx 0";
vorhanden sind, die eigentlich eine Beschränkung der offenen Ports auf "dsliface:name=internet" auf ftp und https (unter konfigurierbarem Port) annehmen lassen.

Wenn ich mir dann aber wieder die Routing-Tabelle der Box (in den DOCSIS-Diagnosedaten)
Code:
IPv4 Default routing table
--------------
169.254.180.1 dev dsl  metric 2 
169.254.180.2 dev dsl  metric 2 
85.214.xxx.xxx/30 via 192.168.xxx.2 dev lan 
192.168.xxx.0/28 dev lan  src 192.168.xxx.1 
172.31.179.0/24 dev guest  src 172.31.179.1 
91.65.72.0/23 dev dsl  metric 2 
91.65.112.0/21 dev dsl  metric 3 
169.254.0.0/16 dev lan  src 169.254.1.1 
192.168.0.0/16 via 192.168.xxx.2 dev lan 
default dev dsl  metric 2 
IPv4 Docsis routing table
--------------
10.46.128.0/20 dev wan0  src 10.46.1xx.xxx 
default via 10.46.1xx.xxx dev wan0
und die Anzeige der Interfaces (ifconfig -a)
Code:
dsl       Link encap:Point-to-Point Protocol  
          inet addr:192.168.XXX.1  P-t-P:192.168.XXX.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:27345 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1119 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:2157460 (2.0 MiB)  TX bytes:205111 (200.3 KiB)
[...]
wan0      Link encap:Ethernet  HWaddr 9C:C7:A6:XX:XX:XX  
          inet addr:10.46.1XX.XXX  Bcast:10.46.1XX.255  Mask:255.255.240.0
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:47678 errors:0 dropped:155 overruns:0 frame:0
          TX packets:196 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3371331 (3.2 MiB)  TX bytes:42526 (41.5 KiB)
ansehe, komme ich für mich zu der Einschätzung, daß es sich um 2 unterschiedliche Interfaces handelt (auch wenn das "logische" dsl wohl auf das "physische" wan0 bridged => wan_bridge_with_dhcpc = yes) und daß da die Forward-Rules aus der ar7.cfg für wan0 wohl nicht per se gelten.

Dafür spräche auch die Ausgabe von zusätzlichen Zeilen wie diesen
Code:
Classifiers: 
----------------------- 
Clfy  0: EtherType MAC ==> SF 11e6b
Clfy  1: IPv4 SRC 10.0.0.0/255.0.0.0 Proto 17 Ports 2427-2428:0 ==> SF 11e6b
Clfy  2: IPv4 SRC 10.0.0.0/255.0.0.0 Proto 17 Ports 0:53 ==> SF 11e6b
Clfy  3: IPv4 SRC 10.0.0.0/255.0.0.0 Proto 17 Ports 161:0 ==> SF 11e6b
Clfy  4: IPv4 DST 83.169.182.0/255.255.255.128 Proto 17 Ports 5060:5060 ==> SF 11e6b
Clfy  5: IPv4 SRC 10.0.0.0/255.0.0.0 DST 10.0.0.0/255.0.0.0 Proto 17 TosLow 0x50 TosHigh 0x50 Mask 0xff ==> SF 11e6b
Clfy  6: EtherType MAC ==> SF 11e6b
Clfy  7: IPv4 DST 10.0.0.0/255.0.0.0 Proto 17 Ports 0:2427-2428 ==> SF 11e6c
Clfy  8: IPv4 DST 10.0.0.0/255.0.0.0 Proto 17 Ports 53:0 ==> SF 11e6c
Clfy  9: IPv4 DST 10.0.0.0/255.0.0.0 Proto 17 Ports 0:161 ==> SF 11e6c
Clfy 10: IPv4 SRC 83.169.182.0/255.255.255.128 Proto 17 Ports 5060:5060 ==> SF 11e6c
im Rahmen der Diagnose-Informationen des DOCSIS-Interfaces.

Und ja, ich sehe auch, daß da erst einmal offensichtlich keine HTTP(S)-Regel zu erkennen ist ... ich habe aber überhaupt keine gesicherte Erkenntnis, wie diese Daten für das DOCSIS-Interface gesetzt werden und ob nicht doch eine dynamische Änderung möglich ist. Genauer: Die o.a. Angaben könnten sowohl eine statisch konfigurierte Startkonfiguration als auch die Anzeige zur Laufzeit sein, das geht auch aus dem Kontext für mich nicht hervor.

Die konkrete 10.x-Adresse meiner Box und ihrer Vorgängerin (die hatte auch wirklich eine andere Adresse) hat sich - jedenfalls seitdem ich sie immer wieder mal abfrage - nicht geändert. Aber das wäre auch bei einer DHCP-Lease auf wan0 wohl nicht anders, solange die Box nicht über ein mehrfaches der (unbekannten) Lease-Time offline ist.

Bei UM-Boxen scheinen diese Zugriffsregeln auch nicht zu existieren, daher würde ich ein festes Verdrahten in den DOCSIS-Komponenten eher ausschließen, vorausgesetzt der DOCSIS-Teil (Hard- und Software) ist für alle OEMs gleich.

Spaßigerweise findet sich in der netstat-Ausgabe kein Prozess, der an den UDP-Ports (Proto 17) mit den Nummern 2427 oder 2428 lauscht, dafür ist ein Prozess mit dem Namen "snmp_agent_cm" dann auch gleich noch an den SNMP-Trap-Port (162) auf wan0 gebunden, für den wiederum keine der o.a. Regeln zuträfe. Irgendwie ist das alles schon echt verwunderlich ...

So, noch einmal kürzer zusammengefaßt:
Wenn der ctlmgr Zugriffe über wan0 von einer 10.x-Adresse als "lokal" ansieht, kann meines Erachtens der Provider auf einer FB6360 so ziemlich alles tun, was er möchte. Und zwar (das ist nur eine Vermutung, da ctlmgr meines Wissen "closed source" ist) ohne irgendeine Rücksichtnahme auf die Zugriffsbeschränkungen durch den Kunden. Daher meine eingangs gestellte Frage ...

Sorry für die Überlänge des Postings und danke an alle, die bis hier gelesen haben. :)
 
Zuletzt bearbeitet:
Auch wenn es ein Selbstgespräch werden könnte:

Während des Korrekturlesens nach dem Posten des ersten Textes fiel mir dann doch noch eine Möglichkeit zum Testen ein. Die Ergebnisse lassen für mich zwar nur einen Schluß zu, ich hätte aber gerne doch noch eine "zweite Meinung".

Fritz!Box 7390 (Labor-FW 25667) mit Telnet-Zugang an einem VDSL-Anschluß

Code:
# [B]showdsldstat[/B]
time: 2013-07-26 22:24:16
0: sync_dsl: VDSL (showtime)
 maxspeed     25080000    5056000  25.08Mbit/s   5.06Mbit/s
 actual            120        104     120bit/s     104bit/s
                                         0.00%        0.00%
cpmacconfig:normal
running (voip=0,tr069=0,tv=0,ntp=0,ipv6=0,ipv4=0,vpn=0)
PPPoE Forward: disabled
VPN: **removed**
VPN: **removed**

0: name internet
0: sync_group: sync_dsl
0: iface vdsl PPPoE/26/dsl bc:05:43:XX:XX:XX stay online 1 vlan 7 (voip) (prop: default internet) (prop6: default internet)
0: IPv6: tunnel (6to4)
0: IPv6: connected since 2013-07-26 06:43:19 (setup time 1 secs) (connect cnt 4)
0: IPv6: **removed**
0: IPv6: **removed**
0: IPv6: mtu 1472
0: IPv4: native
0: IPv4: connected since 2013-07-26 06:43:19 (setup time 1 secs) (connect cnt 4)
0: IPv4: next disconnect 2013-07-27 06:41:54 (in 29858 secs)
0: IPv4: ip 217.7.xxx.xxx peer 217.5.98.14 mtu 1492
0: IPv4: masqaddr 217.7.xxx.xxx
0: IPv4: dns 217.237.151.115 217.237.148.102
0: route 217.7.XXX.XXX/32 protocol iface
0: route 217.237.148.102/32 protocol static-iface
0: route 217.237.151.115/32 protocol static-iface
0: mc to wan 239.0.0.250 (unknown)
0: acname BERA82-ths
0: RX bytes:43072659 pkt error:0 discard:0 filtered:980 dropped:13
0: RX pkts:87789 unicast:87789 multicast:0 broadcast:0
0: TX bytes:13001706 pkt error:0 discard:0 filtered:0 dropped:20
0: TX pkts:86533 unicast:86529 multicast:0 broadcast:4
[... Rest gelöscht]
So, jetzt setzen wir mal auf "vdsl" und "dsl" eine IP-Adresse.
Code:
#[B] ip a show dev dsl[/B]
22: dsl: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP200> mtu 1500 qdisc pfifo_fast qlen 100
    link/ppp
    inet 192.168.XXX.1/32 scope global dsl
    inet6 2002:XXXX/64 scope global dynamic
       valid_lft 7070sec preferred_lft 3470sec
    inet6 fe80::be05:43ff:fea0:6161/64 scope link
       valid_lft forever preferred_lft forever
# [B]ip a show dev vdsl[/B]
35: vdsl: <BROADCAST,MULTICAST,UP,LOWER_UP100> mtu 1500 qdisc tbf qlen 1000
    link/ether bc:05:43:XX:XX:XX brd ff:ff:ff:ff:ff:ff
# [B]ip a add 10.1.1.1/16 dev vdsl[/B]
# [B]ip a add 10.2.1.1/16 dev dsl[/B]
# [B]ip a show dev vdsl[/B]
35: vdsl: <BROADCAST,MULTICAST,UP,LOWER_UP100> mtu 1500 qdisc tbf qlen 1000
    link/ether bc:05:43:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.1/16 scope global vdsl
#[B] ip a show dev dsl[/B]
22: dsl: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP200> mtu 1500 qdisc pfifo_fast qlen 100
    link/ppp
    inet 192.168.XXX.1/32 scope global dsl
    inet 10.2.1.1/16 scope global dsl
    inet6 2002:XXXX/64 scope global dynamic
       valid_lft 6930sec preferred_lft 3330sec
    inet6 fe80::be05:43ff:fea0:6161/64 scope link
       valid_lft forever preferred_lft forever
Um ganz sicher zu gehen, noch ein Blick auf die Routing-Tabelle:
Code:
# [B]ip r[/B]
217.237.151.115 dev dsl  metric 2
169.254.180.1 dev dsl  metric 2
217.237.148.102 dev dsl  metric 2
169.254.180.2 dev dsl  metric 2
217.7.xxx.xxx dev dsl  metric 2
192.168.xxx.0/28 dev lan  src 192.168.xxx.1
172.31.179.0/24 dev guest  src 172.31.179.1
10.2.0.0/16 dev dsl  src 10.2.1.1
10.1.0.0/16 dev vdsl  src 10.1.1.1
169.254.0.0/16 dev lan  src 169.254.1.1
192.168.0.0/16 via 192.168.xxx.2 dev lan
default dev dsl  metric 2
Das sieht für mich alles richtig aus. Die statischen Routen zu den DNS-Servern werden per Script gesetzt, da manchmal noch eine andere Default-Route mit Metric 1 per Script gesetzt wird und die Telekom-DNS-Server sehr zickig sind, wenn Anfragen aus fremden Netzen kommen.

Jetzt prüfen wir die lokale Erreichbarkeit der Adressen per Ping.
Code:
# ping -c 1 10.1.1.1
PING 10.1.1.1 (10.1.1.1): 56 data bytes
64 bytes from 10.1.1.1: seq=0 ttl=64 time=1.218 ms

--- 10.1.1.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 1.218/1.218/1.218 ms
# ping -c 1 10.2.1.1
PING 10.2.1.1 (10.2.1.1): 56 data bytes
64 bytes from 10.2.1.1: seq=0 ttl=64 time=0.539 ms

--- 10.2.1.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.539/0.539/0.539 ms
# ping -c 1 217.7.xxx.xxx
PING 217.7.xxx.xxx (217.7.xxx.xxx): 56 data bytes
64 bytes from 217.7.xxx.xxx: seq=0 ttl=64 time=0.542 ms

--- 217.7.xxx.xxx ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.542/0.542/0.542 ms
Auch wenn ich die feste IP immer unkenntlich mache (wenn ich denn auch alle erwische), prüfe ich bei der Eingabe immer mehrmals, daß ich auch die richtige Adresse verwende, wenn das Ergebnis unerwartet ist. Daher ist das hier
Code:
# [B]wget -O - http://217.7.xxx.xxx/login_sid.lua[/B]
Connecting to 217.7.xxx.xxx (217.7.xxx.xxx:80)
wget: can't connect to remote host (217.7.xxx.xxx): No route to host
schon etwas kurios, wenn man das Ping oben betrachtet. Aber egal, fragen wir mal die 10.x-Adressen nach einem Login.
Code:
# [B]wget -O - http://10.1.1.1/login_sid.lua[/B]
Connecting to 10.1.1.1 (10.1.1.1:80)
<?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>369b881b</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionInfo>
-                    100% |*********************************************************************************************|   165   0:00:00 ETA
# [B]wget -O - http://10.2.1.1/login_sid.lua[/B]
Connecting to 10.2.1.1 (10.2.1.1:80)
<?xml version="1.0" encoding="utf-8"?><SessionInfo><SID>0000000000000000</SID><Challenge>7b4d000d</Challenge><BlockTime>0</BlockTime><Rights></Rights></SessionInfo>
-                    100% |*********************************************************************************************|   165   0:00:00 ETA
Wenn ich jetzt nicht einen riesigen Denkfehler mache, sollte eigentlich mindestens eine der beiden 10.x-Adressen, wenn nicht sogar beide, genauso reagieren wie die feste IP oben.

In meiner Welt ist die 10.1.1.1 auf dem vdsl-Interface mit der 10.x auf dem wan0 aus meinem originalen Posting vergleichbar. Ok, auf der 6360 wäre es (bei iptables) Forwarding und auf meiner 7390 Input, das ist doch aber für die 217.irgendwas-Adresse genauso, oder ?

Aber ich erwarte ja auch gar nicht, daß die (AVM-)Firewall den Verkehr blockiert, ich hätte eigentlich eher erwartet, daß der ctlmgr auf Port 80 außer auf lan (da wird der lokale Verkehr ja zusammengefaßt) überhaupt kein TCP-Accept ausführt, geschweige denn einen HTTP-Request akzeptiert.

Kann mal bitte jemand meinen Trugschluß aufdecken oder hat AVM da wirklich Mist gebaut ? Absicht würde ich AVM bei "normalen" Boxen eigentlich nicht unterstellen.
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,361
Beiträge
2,250,846
Mitglieder
374,014
Neuestes Mitglied
flindiesel
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.