.titleBar { margin-bottom: 5px!important; }

Remote SSH (Dropbear) problem, Ports tunneln - forwardrules?

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von tilllt, 21 Feb. 2009.

  1. tilllt

    tilllt Neuer User

    Registriert seit:
    24 Juli 2005
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 tilllt, 21 Feb. 2009
    Zuletzt von einem Moderator bearbeitet: 21 Feb. 2009
    Hallo,

    ich weiss das dieses Thema viel und ausgiebig diskutiert wurde aber ich habe meiner Meinung nach die verschiedenen Anleitung ausprobiert und nichts davon hat funktioniert.

    Ich möchte auf eine Fritzbox 7050 mit AVM Firmware 14.04.33 über SSH einige Ports tunneln. Ich habe das Dropbear-Mod von the-construct installiert und über DynDNS die Box von aussen erreichbar gemacht. Lokal funktioniert das, inklusive SSH Tunnel auf Ports lokaler Geräte etc. Allerdings kriege ich weder mit virtuellem Interface, noch der häufig beschriebenen Änderung an den Forwardrules hin, die Fritzbox von aussen erreichbar zu machen.

    Ich habe mit dem FBEditor die ar7.cfg editiert und zurückgeladen, Box startet neu, der Eintrag in den Forwardrules scheint drin zu sein, aber auch nmap sagt port 22 (oder andere Ports die ich probiert habe) sind nicht offen. Hat noch jemand eine Idee?


    Auszug ar7.cfg
    -----
    Code:
    **** FRITZ!Box Fon WLAN 7050 (UI) CONFIGURATION EXPORT
    Password=xxx
    FirmwareVersion=14.04.33
    CONFIG_INSTALL_TYPE=ar7_ubik2_4MB_2eth_3ab_isdn_nt_te_pots_wlan_50494
    OEM=1und1
    Country=049
    **** CFGFILE:ar7.cfg
    /*
     * /var/flash/ar7.cfg
     * Fri Feb 20 23:04:00 2009
     */
    
    ar7cfg {
            mode = dsldmode_router;
            tsdisabled = no;
            igddenabled = yes;
            igdd_control_enabled = yes;
            wan_bridge_with_dhcpc = yes;
            wan_bridge_gateway = 0.0.0.0;
            dhcpc_use_static_dns = no;
            ethmode = ethmode_bridge;
            StatisticStartOfMonth = 1;
            macdsl_override = 00:00:00:00:00:00;
            ethinterfaces {
                    name = "eth0";
                    dhcp = no;
                    ipaddr = 192.168.178.1;
                    netmask = 255.255.255.0;
                    dstipaddr = 0.0.0.0;
                    dhcpenabled = yes;
                    dhcpstart = 0.0.0.0;
                    dhcpend = 0.0.0.0;
            } {
                    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 = "eth1";
                    dhcp = no;
                    ipaddr = 192.168.181.1;
                    netmask = 255.255.255.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.178.1;
                    netmask = 255.255.255.0;
                    dstipaddr = 0.0.0.0;
                    interfaces = "eth0", "usbrndis", "eth1", "tiwlan0", "wdsup0", 
                                 "wdsdw0", "wdsdw1", "wdsdw2", "wdsdw3";
                    dhcpenabled = yes;
                    dhcpstart = 0.0.0.0;
                    dhcpend = 0.0.0.0;
            } {
                    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", "eth1", "tiwlan0", "wdsup0", 
                                 "wdsdw0", "wdsdw1", "wdsdw2", "wdsdw3";
                    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 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";
                            }
                            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_pppoe;
                    ipbridgeing = 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 = 0.0.0.0;
                            dns2 = 0.0.0.0;
                            mtu = 0;
                    }
                    is_mcupstream = yes;
                    stay_always_online = no;
                    only_route_when_connected = no;
                    redial_delay_after_auth_failure = 1m;
                    redial_limit = 3;
                    redial_after_limit_reached = 10m;
                    redial_after_limit_reached_variance = 5m;
                    username_prefix_after_auth_failure = "";
                    redial_delay_after_low_error = 10s;
                    routes_only_for_local = 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 = "udp 0.0.0.0:5060 0.0.0.0:5060", 
                                           "tcp 0.0.0.0:22 0.0.0.0:22 0 # SSH";
                            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 = 10m;
                    redial_after_limit_reached_variance = 5m;
                    username_prefix_after_auth_failure = "";
                    redial_delay_after_low_error = 10s;
                    routes_only_for_local = no;
                    tcclassroutes = "sipdns", "sip", "rtp";
                    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";
                    }
            }
     
  2. sf3978

    sf3978 IPPF-Promi

    Registriert seit:
    2 Dez. 2007
    Beiträge:
    7,613
    Zustimmungen:
    3
    Punkte für Erfolge:
    38
    #2 sf3978, 21 Feb. 2009
    Zuletzt bearbeitet: 21 Feb. 2009
    Hast Du es auch schon ohne 0 und ohne Kommentar versucht?

    Code:
    "tcp 0.0.0.0:22 0.0.0.0:22 [B][COLOR="Red"]0 # SSH[/COLOR][/B]"
    EDIT:

    Mein dropbear lauscht z. B. auf dem Port 35286. Ohne Forwardrule in der ar7.cfg kann ich keine Verbindung zur FritzBox über die dyndns-Adresse aufbauen. Mit der rule "tcp 0.0.0.0:35286 0.0.0.0:35286" und mit "ssh -oPort=35286 root@<dyndns-Adresse>" kommt dann auch eine Verbindung zustande, aber nicht auf der Virtual-IP, sondern auf dsl mit der IP 169.254.2.1.
    Aus "netstat -a":
    Code:
    tcp        0      0 0.0.0.0:35286           0.0.0.0:*               LISTEN
    tcp        0     48 169.254.2.1:35286       <my-dyndns-adresse>:58529 ESTABLISHED
    Code:
    dsl       Link encap:Point-to-Point Protocol
              inet addr:169.254.2.1  P-t-P:169.254.2.1  Mask:255.255.255.255
              UP POINTOPOINT RUNNING NOARP ALLMULTI MULTICAST  MTU:1500  Metric:1
              RX packets:381 errors:0 dropped:0 overruns:0 frame:0
              TX packets:365 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:100
              RX bytes:40230 (39.2 KiB)  TX bytes:129122 (126.0 KiB)
    Im LAN und VPN funktioniert die ssh-Verbindung über die Virtual-IP.
     
  3. tilllt

    tilllt Neuer User

    Registriert seit:
    24 Juli 2005
    Beiträge:
    15
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    jo. das wars.

    Danke fuer den Tip mit der 0 und dem Kommentar, ich weiss nicht genau ob ich noch einen anderen Fehler gemacht hatte den ich mit der von Dir vorgeschlagenen Änderung auch korrigiert habe, auf jeden fall funktioniert es jetzt. Kann mich Remote einloggen und Ports, z.B. auf die Fritzbox Konfigurationsseite oder einen im lokalen ip netz befindlichen digitalen WLAN Bilderrahmen tunneln - was das ursprüngliche Ziel der Aktion war, weil die Honks von Kodak es noch nichtmal für nötig halten die Konfigurationsseite des Bilderrahmens Passwort zu schützen... Für SSH port forwarding gibts unter Mac OS X übrigens ein kleines praktisches Tool namens SSH Tunnel Manager (http://projects.tynsoe.org/en/stm/ ), wenn man wie ich zu faul ist Man-Pages zu lesen.

    Habe den Server mal auf Port 22 gelassen, wie sieht es denn heutzutage mit der Sicherheit von SSH gegen Brute-Force attacken aus bzw. Exploits von Dropbear? Ich meine wenn jemand sich wirklich dransetzt das Ding zu hacken wird er ja eh vorher einen Portscan machen und dann ist es ja wohl auch egal auf welchen Port man SSH laufen hat?
     
  4. sf3978

    sf3978 IPPF-Promi

    Registriert seit:
    2 Dez. 2007
    Beiträge:
    7,613
    Zustimmungen:
    3
    Punkte für Erfolge:
    38
    Ganz egal ist es nicht. I. d. R. werden nicht alle 65565 Ports gescannt. Wenn Du den dropbear nicht zwingend auf Port 22 lauschen lassen musst, dann wähle ein Port ab, z. B. 20000.