Results 1 to 9 of 9

Thread: Dropbear: bad password attempt

  1. #1

    Unhappy Dropbear: bad password attempt

    Hallo allerseits,

    seit einiger Zeit sehe ich immer wieder im Syslog folgendes:
    Code:
    Jul 22 09:19:29 dropbear[13777]: bad password attempt for 'root' from ::ffff:200.165.160.99:48790
    Jul 22 09:19:29 dropbear[13777]: exit before auth (user 'root', 1 fails): Disconnect received
    Jul 22 09:19:29 dropbear[13778]: Child connection from ::ffff:200.165.160.99:48930
    oder

    Code:
    Jul 22 09:54:21 dropbear[14692]: Child connection from ::ffff:200.165.160.99:46278
    Jul 22 09:54:23 dropbear[14692]: login attempt for nonexistent user from ::ffff:200.165.160.99:46278
    Jul 22 09:54:24 dropbear[14692]: exit before auth: Disconnect received
    Nun mache ich mir natürlich meine Gedanken was da los ist, da diese Meldungen im Sekunden-Takt auftreten und das schon über mehrere Tage hinweg...
    Da versucht doch irgend jemand über SSH an meinen WL500gp ran zu kommen...
    Gibt es in irgend einer weise eine Möglichkeit solche IP's automatisch in eine Art Blacklist aufzunehmen?
    Z.B. wird 5x versucht sich anzumelden, mit falschen Passwort, oder nicht existierenden User, dann soll die IP kennerell bis zum Router-Neustart verboten werden!

    Hat da jemand eine Idee. Vielleicht mit einem Script, was im Hintergrund läuft und die IPTABLES dementsprechend ändert?

    Danke für Eure Hilfe.

    Ciao

  2. #2
    Join Date
    Feb 2005
    Location
    Germany - Frankfurt
    Posts
    1,548
    Hi,

    ja, da versucht jemand Dein ssh zu knacken
    Und ja, das ist leider absolut normal...

    Ich möchte jetzt ganz bewusst nicht wieder eine security-Diskussion anfangen.
    Such einfach mal nach "ssh sicher machen" in google.

    Die beiden sichersten Methoden:

    1) Ein sehr gutes Passwort
    2) oder nur über Zertifikate

    Um den Müll im Log loszuwerden und die Anzahl der Angriffe zu verringern kannst Du noch den ssh Port ändern.

    wengi

    EDIT: Hier im Forum gab es glaube ich mal einen recht guten, englischen Beitrag. Ich finde ihn im Moment aber nicht...
    EDIT2: Gefunden! Ich verlinke sogar in meinem Howto darauf (Kapitel 14b) : http://wl500g.info/showpost.php?p=98784&postcount=268
    Last edited by wengi; 22-07-2008 at 11:41.
    Übersicht aller HowTos --- HowTo Overview (mostly german)
    WL-HDD mit diesem Setup. --- WL-HDD with this setup.
    Kein Support per PM - Frage im jeweiligen Thread! --- No support via pm - ask in the according thread!
    Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vorne herein ausgeschlossen erscheint. (Albert Einstein)

  3. #3

    Lightbulb

    Hab mich heute mal mit dem Thema befasst...
    Und das ist dabei rausgekommen:

    1. Lösungsweg:
    Der Ansatz kam von http://wiki.x-wrt.org/index.php/HowT...cking_dropbear, anschließend noch Fehler rausgemacht und ASUS tauglich umgeschrieben...

    in der /usr/local/sbin/post-firewall folgendes einfügen:
    Code:
    #Stop Dropbear Hacking
    iptables -N STOPDROPBEARHACKRULE
    iptables -A INPUT  -s 192.0.2.0/24  -j STOPDROPBEARHACKRULE 
    iptables -A FORWARD  -s 192.0.2.0/24  -j STOPDROPBEARHACKRULE 
    iptables -A STOPDROPBEARHACKRULE   -m limit --limit 2/second -j LOG  --log-level info --log-prefix "BRUTE FORCE HACK -- DENIED"
    iptables -A STOPDROPBEARHACKRULE  -j DROP
    Via Cron wird dann noch aller einer Minute folgendes Script ausgeführt:
    Code:
    #!/bin/sh
    ######################################################
    # Inhalt von /opt/etc/cron.1mins/StopDropbearhack.sh #
    ######################################################
    
    MAX_ATTEMPTS="5"
    CHAINNAME="STOPDROPBEARHACKRULE"
    WHITELIST="192.168.1.2 192.168.1.3 192.168.1.100 192.168.1.200 192.168.1.101 192.168.1.201 192.168.1.110 192.168.1.210 192.168.1.120 192.168.1.220"
    
    cat /tmp/syslog.log|grep -e "bad password attempt" -e "login attempt for nonexistent user"|awk '{print $FN}'|awk '{n=split($0,fn,":"); print fn[7]}'|sort|uniq  -c|sort -n|sed "s/[ [:space:]]*//"|while read i
    
    do
    
        IP=`echo $i | cut -d" " -f 2`
    
        MEMBERFOUND="false"
    
        for MEMBER in $WHITELIST
        do
            if [ "$MEMBER" = "$IP" ]; then
                 MEMBERFOUND="true"
            fi
        done
    
        if [ "$MEMBERFOUND" != "true" ]; then
           iptables -n -L INPUT|grep -e "^$CHAINNAME[^[:alnum:]_]"|grep -q "$IP"
           EXITCODE=$?
    
           if [ "$EXITCODE" -eq '1' ]; then
    
              COUNT=`echo $i | cut -d" " -f1`
    
              if [ "$COUNT" -ge "$MAX_ATTEMPTS" ]; then
                    iptables -I INPUT  -s $IP -j $CHAINNAME
                    iptables -I FORWARD  -s $IP -j $CHAINNAME
    
                    logger "BRUTE FORCE ALERT -- $IP was blocked"
               fi
            fi
          fi
    done
    Nach einem SSH-Brute Force steht dann im SysLog dies hier drin:
    Code:
    Jul 22 21:58:45 dropbear[1018]: login attempt for nonexistent user from ::ffff:201.116.1.18:48862
    Jul 22 21:58:46 dropbear[1018]: exit before auth: Disconnect received
    Jul 22 21:58:46 dropbear[1019]: Child connection from ::ffff:201.116.1.18:49003
    Jul 22 21:58:48 dropbear[1019]: login attempt for nonexistent user from ::ffff:201.116.1.18:49003
    Jul 22 21:58:49 dropbear[1019]: exit before auth: Disconnect received
    Jul 22 21:58:50 dropbear[1020]: Child connection from ::ffff:201.116.1.18:49150
    Jul 22 21:58:52 dropbear[1020]: login attempt for nonexistent user from ::ffff:201.116.1.18:49150
    Jul 22 21:58:53 dropbear[1020]: exit before auth: Disconnect received
    Jul 22 21:58:53 dropbear[1021]: Child connection from ::ffff:201.116.1.18:49291
    Jul 22 21:58:55 dropbear[1021]: bad password attempt for 'root' from ::ffff:201.116.1.18:49291
    Jul 22 21:58:56 dropbear[1021]: exit before auth (user 'root', 1 fails): Disconnect received
    Jul 22 21:58:56 dropbear[1022]: Child connection from ::ffff:201.116.1.18:49428
    Jul 22 21:58:59 dropbear[1022]: bad password attempt for 'root' from ::ffff:201.116.1.18:49428
    Jul 22 21:59:00 dropbear[1022]: exit before auth (user 'root', 1 fails): Disconnect received
    Jul 22 21:59:01 dropbear[1023]: Child connection from ::ffff:201.116.1.18:49608
    Jul 22 21:59:01 /opt/sbin/cron[1025]: (root) CMD (run-parts /opt/etc/cron.1mins       # aller einer Minute)
    Jul 22 21:59:03 root: BRUTE FORCE ALERT -- 201.116.1.18 was blocked
    Laut "iptables --list" wurde diese IP dann auch tatsächlich gesperrt.

    Einen Nachteil hat dieses Script jedoch... Der Angreifer hat genau eine Minute Zeit sein unwesen zu treiben.

    2. Lösungsweg:
    /usr/local/sbin/post-firewall:
    Code:
    #!/bin/sh
    #SSH
    iptables -D INPUT -j DROP
    # iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    # iptables -t nat -A PREROUTING -i vlan1 -p tcp --dport 22 -j DNAT --to-destination $4:22
    iptables -A INPUT -j DROP
    
    
    iptables -D INPUT -j DROP
    iptables -A INPUT -p tcp --dport 81 -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -t nat -A PREROUTING -i $1 -p tcp --dport 80 -j DNAT --to-destination $4:81
    # This we know...
    WANIF=$1
    LANIP=$4
    
    # insert necessary modules
    insmod ipt_recent
    insmod ipt_psd
    
    # Drop previous offenders
    iptables -N BANDITDROP
    iptables -A INPUT   -m recent --rcheck --name BANDIT -j BANDITDROP
    iptables -A FORWARD -m recent --rcheck --name BANDIT -j BANDITDROP
    iptables -A BANDITDROP -m recent --update --seconds 3600 --rttl --name BANDIT \
      -j LOG --log-prefix "Bandit DROP " --log-tcp-sequence --log-tcp-options --log-ip-options
    iptables -A BANDITDROP -j REJECT --reject-with  icmp-net-unreachable
    
    # Detect port scan
    iptables -N PORTSCANDROP
    iptables -A INPUT -i ${WANIF} -m psd -j PORTSCANDROP
    iptables -A PORTSCANDROP -m recent --set --name BANDIT
    iptables -A PORTSCANDROP -m recent --update --seconds 3600 --rttl --name BANDIT \
      -j LOG --log-prefix "Port_Scan DROP " --log-tcp-sequence --log-tcp-options --log-ip-options
    iptables -A PORTSCANDROP -j REJECT --reject-with  icmp-net-unreachable
    
    # SSH server with brute force prevention
    iptables -N SSHFORCEDROP
    iptables -N SSHACCEPT
    iptables -A INPUT -m tcp -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 2 -j SSHACCEPT
    iptables -A INPUT -m tcp -p tcp --dport 22 -j SSHFORCEDROP
    iptables -A SSHFORCEDROP -m recent --set --name BANDIT
    iptables -A SSHFORCEDROP -m recent --update --seconds 3600 --rttl --name BANDIT \
      -j LOG --log-prefix "SSH_Brute_Force DROP " --log-tcp-sequence --log-tcp-options --log-ip-options
    iptables -A SSHFORCEDROP -j  REJECT --reject-with  icmp-proto-unreachable
    iptables -A SSHACCEPT -j LOG --log-prefix "SSH ACCEPT " --log-tcp-sequence \
      --log-tcp-options --log-ip-options
    iptables -A SSHACCEPT -j ACCEPT
    iptables -t nat -A PREROUTING -i ${WANIF} -p tcp --dport 22 -j DNAT --to-destination ${LANIP}:22
    iptables -A INPUT -j DROP
    Hat den Vorteil, dass der Router nicht immer aller einer Minute das SysLog durchgehen muss.

    Dumm ist nur, dass ich den 2. Lösungsweg erst nach der Fertigstellung des 1. auf http://www.macsat.com/forum/index.php?topic=206.0 entdeckt habe...
    Werde trotzdem den 2. Lösungsweg wählen

    Ciao
    Last edited by rj.2001; 22-07-2008 at 21:51.

  4. #4
    Der 2 lösungsweg sieht sehr interesannt aus.... leider funktioniert er bei mir nicht ganz.
    hab das LANIP=$4 mal in br0 geändert da ich mir bei meinem wl500gp nicht sicher bin wo die einzelnen interfaces liegen.
    ich hab dan mal versucht von einem remoteserver mich einzuloggen und es war ihm leider zimlich egal wie oft/schnell ich das password falsch eingetippt habe. Werde wohl sonst mal den ersten lösungsweg versuchen weil diese permanenten login verscuhe nerven doch schon recht gut

  5. #5
    @thejew
    Warum hast du die Variable durch den echten IF-Namen ersetzt? Post-firewall trägt doch ganz automatisch die Interfaces ein. Die Interfaces kannst du übrigens mit 'ifconfig' anzeigen lassen.

    @rj.2001
    Super Ansatz, man könnte ihn doch glatt auf FTP (Port 20,21) ausweiten. Ihr solltet echt mein Log sehen, da geht die Post ab. Die meisten Deppen versuchen sich als 'Administrator' anzumenlden. Zu dumm, dass ich keinen FTP-User mit dem Namen 'Administrator' vergeben habe

    Gruß

    Robert
    Last edited by akbor; 01-08-2008 at 21:01.
    ISP: TV Cable 50/5 Mbit
    Modem: Arris Touchstone TM822S
    "NAS": 1000 GB 2.5" HDD, EXT4, (USB @ RT-AC87U)
    Router: Asus RT-AC87U 380.68 (Merlin build), vsftpd, Samba3, NFS, Transmission, PyLoad...)
    Clients: mittlerweile unzählige...

  6. #6
    Quote Originally Posted by akbor View Post
    @thejew
    Warum hast du die Variable durch den echten IF-Namen ersetzt? Post-firewall trägt doch ganz automatisch die Interfaces ein. Die Interfaces kannst du übrigens mit 'ifconfig' anzeigen lassen.
    Hmmm das ich mit ifconfig die interfaces seh wuste ich schon aber ich seh immernoch nicht wie das mit den iptabels zusammenhängt? Warum ist $1 das WAN, und $4 das LAN? wenn das überhaupt richtig ist. Um diesen konflikt aus dem weg zu gehen hab ich einfach die variable in dem script geändert. Müsste eigentlich gehen weil ich anderen iptables code gehsehen hab wo andere das ähnlich gemacht haben.

    Ich hab jetzt meine firewall wieder abgestellt da mein asterisk server irgendwie meinen anderen teilnehmer geschluckt hat. Eigenartg den ich hatte extra port 5060 freigegeben.

    ich finde die ganze iptables konfiguration zimlich anstrengend und es gibt wenig gute beispiele oder tutorials. Häufig haben leute auch unterschiedlichen code obwohl sie das gleiche bewirken.

    schade eigentlich den ich hab mich wenigstens ein bischen sicherer gefühlt

  7. #7
    '$1' ist in der 'post-firewall' definitiv das WAN-Interface (bei meinem Router 'vlan1'). Das weiss ich ganz genau, seitdem ich mit wshaper experimentiert habe. Ob '$4' denn tatsächlich das LAN-Interface (bzw. 'br0') ist, kann ich dir nicht mit 100%er SIcherheit sagen. Vielleicht weiss das jemand von den Experten? Oder vielleicht findest du was im englichsprachigen Forum. Wenn nicht, kannst du auch versuchen, Oleg direkt zu fragen.

    Gruß

    Robert
    ISP: TV Cable 50/5 Mbit
    Modem: Arris Touchstone TM822S
    "NAS": 1000 GB 2.5" HDD, EXT4, (USB @ RT-AC87U)
    Router: Asus RT-AC87U 380.68 (Merlin build), vsftpd, Samba3, NFS, Transmission, PyLoad...)
    Clients: mittlerweile unzählige...

  8. #8
    Hallo und danke für den Lösungsvorschlag #2

    Nachdem sich auch bei mir die Brute Force Attacken häufen, habe ich selbigen mal ausprobiert, aber einige Fehlermeldungen beim Ausführen der entsprechend angepassten post-firewall erhalten:
    Code:
    Warning: wierd character in interface `-p' (No aliases, :, ! or *).
    Bad argument `tcp'
    Try `iptables -h' or 'iptables --help' for more information.
    Warning: wierd character in interface `-m' (No aliases, :, ! or *).
    Bad argument `psd'
    Try `iptables -h' or 'iptables --help' for more information.
    Warning: wierd character in interface `-p' (No aliases, :, ! or *).
    Bad argument `tcp'
    Try `iptables -h' or 'iptables --help' for more information.
    Hattet ihr ähnliche Fehler? Was stimmt denn hier noch nicht?

    Zu funktionieren scheint's aber, heute morgen wurde eine der üblichen Angriffe nach drei Versuchen abgeschmettert

  9. #9
    Oho
    Na da werde ich doch glatt meinen vsftpd_banner auf einen syslog banner umbauen!

    Werde es aber für mehere Programme machen, deswegen brauchts ein bißchen, da ich jetzt noch eine config Datei brauche!

Similar Threads

  1. How to to get sftp access with dropbear
    By velovite in forum WL-700g Tutorials
    Replies: 10
    Last Post: 20-03-2009, 02:56
  2. Ïðåâüþ íîâîé âåðñèè ïðîøèâêè 1.9.2.7-9
    By Oleg in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 804
    Last Post: 14-03-2009, 19:42

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •