grhansolo: Brute-Force Attacke - IP bei Hoster gesperrt

Hallo,

ich habe einige Webseiten bei www.allinkl.com gehostet. U.a. ist hier auch eine Webseite dabei die auf Wordpress basiert. Gestern wollte meine Kollegin Änderungen auf der Webseite machen. Dazu wollte Sie das Wordpress Backend nutzen. Dummerweise war Sie sich bezogen auf das Passwort des Backends nichtmehr ganz sicher und hat das Passwort deshalb sehr häufig falsch eingegeben. Plötzlich war dann keine einzige URL die ich bei www.allinkl.com gehostet habe mehr erreichbar. Des Weiteren war ich nichtmehr dazu in der Lage E-Mails über Outlook 2013 zu versenden, die sich auf das Suffix der bei www.allinkl.com gehosteten Webseiten beziehen. Nach einem längeren Telefonat mit www.allinkl.com habe ich gemeinsam mit dem Support herausgefunden, dass die IP gesperrt wurde, weil man wohl aufgrund der vielen vergeblichen Login-Versuche einen Brute-Force Angriff vermutet hat.

Hierzu hätte ich einige Fragen:

  1. Die Wordpress Webseite, auf der meine Kollegin sich verglich versucht hat einzuloggen, wird ja per DNS von der URL in eine IP aufgelöst. Aufgrund der zu häufigen Login-Versuche wurde die IP gesperrt. Da die anderen Webseiten, die ich bei allinkl gehostet habe, ja höchstwahrscheinlich auf dem gleichen Server liegen, der ja nur eine IP hat, konnte ich diese logischerweise auch nichtmehr erreichen. Nun zur Frage: Ich glaube ich nutze einen Shared Server, sprich ich teile mir den Server mit anderen Kunden von allinkl. Bedeutet das, dass durch die Sperrung der IP auch die Webseiten der anderen Kunden, die auf dem gleichen Server gehostet sind, auch nichtmehr erreichbar waren.

  2. Warum konnte ich keine E-Mails mehr senden. Eine E-Mail hat doch nichts mit einer gesperrten IP zu tun?

  3. Ich habe den allinkl Support gefragt, warum ich nach der Sperrung der IP keine automatische Benachrichtigung bekommen habe, dass die IP gesperrt wurde. Die haben mir erklärt, dass dies nicht möglich wäre, da sie anhand der gesperrten IP nicht auf mich als Kunden zurückschließen können. Meines Erachtens ist das aber doch möglich. Die haben doch meine URL und meine IP. Damit müssten die doch auch auf mich zurückschließen können und hätten mir Bescheid geben können. Denke ich richtig oder ist es wirklich nicht möglich auf mich als Kunden anhand der gesperrten IP zurückzuschließen?

  4. Wurde die IP seitens des Hosters gesperrt oder ist hier eine andere Institution verantwortlich.

  5. Wie genau kann man eine IP sperren?

  1. Hallo grhansolo,

    Die Wordpress Webseite, auf der meine Kollegin sich verglich versucht hat einzuloggen, wird ja per DNS von der URL in eine IP aufgelöst. Aufgrund der zu häufigen Login-Versuche wurde die IP gesperrt. Da die anderen Webseiten, die ich bei allinkl gehostet habe, ja höchstwahrscheinlich auf dem gleichen Server liegen, der ja nur eine IP hat, konnte ich diese logischerweise auch nichtmehr erreichen. Nun zur Frage: Ich glaube ich nutze einen Shared Server, sprich ich teile mir den Server mit anderen Kunden von allinkl. Bedeutet das, dass durch die Sperrung der IP auch die Webseiten der anderen Kunden, die auf dem gleichen Server gehostet sind, auch nichtmehr erreichbar waren.

    Du zäumst das Pferd von der falschen Seite auf. Nicht die IP des Servers wurde gesperrt, sondern deine IP, mit der du im Internet unterwegs bist, wurde vom Server gesperrt.

    Warum konnte ich keine E-Mails mehr senden. Eine E-Mail hat doch nichts mit einer gesperrten IP zu tun?

    Ich vermute, dass dein ISP sowas wie fail2ban laufen hat. Nach einer gewissen Anzahl von Versuchen wird deine IP ausgesperrt und du kannst keinen Dienst mehr nutzen - auch Mail nicht.

    Ich habe den allinkl Support gefragt, warum ich nach der Sperrung der IP keine automatische Benachrichtigung bekommen habe, dass die IP gesperrt wurde. Die haben mir erklärt, dass dies nicht möglich wäre, da sie anhand der gesperrten IP nicht auf mich als Kunden zurückschließen können. Meines Erachtens ist das aber doch möglich. Die haben doch meine URL und meine IP. Damit müssten die doch auch auf mich zurückschließen können und hätten mir Bescheid geben können. Denke ich richtig oder ist es wirklich nicht möglich auf mich als Kunden anhand der gesperrten IP zurückzuschließen?

    Du denkst immer noch falsch herum, es ist nicht die IP deiner Webseite gemeint sondern die IP deines Haus-Anschlusses. Und da ist es in der Tat ohne weiteres nicht möglich, auf den Kunden rückzuschliessen.

    LG,
    CK

    1. Ahoi Christian

      was dann aber hieße, dass er über einen ssh-Tunnel (ssh -D ...) drauf zugreifen könnte ...;

      Dank und Gruß,

      bob from berlin

      1. Hallo frankx,

        was dann aber hieße, dass er über einen ssh-Tunnel (ssh -D ...) drauf zugreifen könnte ...;

        Ich halte es bei dem vermuteten Kenntnisstand für nicht wahrscheinlich, dass er Zugriff auf einen Server mit SSH hat.

        LG,
        CK

        1. Mir wäre es neu das Wordpress selbst den Zugang zum Server sperren könnte. Die auswirkungen in der htacces (auf die hat WP zugriff) betreffen nur den Apache.

          Vielleicht gibt es ja eine Kombi mit der IP Tables des Servers. Dann wäre soetwas möglich, aber Typisch wäre diese Kombination nicht.

          1. Hallo Larry-Fiona,

            Mir wäre es neu das Wordpress selbst den Zugang zum Server sperren könnte. Die auswirkungen in der htacces (auf die hat WP zugriff) betreffen nur den Apache.

            Nein, WP selber wird das nicht gewesen sein, aber Tools wie fail2ban oder mod_security können das.

            Vielleicht gibt es ja eine Kombi mit der IP Tables des Servers. Dann wäre soetwas möglich, aber Typisch wäre diese Kombination nicht.

            Das ist so nicht ganz richtig, gerade fail2ban erfreut sich grosser Beliebtheit.

            LG,
            CK

            1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

              Das ist so nicht ganz richtig, gerade fail2ban erfreut sich grosser Beliebtheit.

              ... und funktioniert augenscheinlich auch recht ordentlich out-of-the-box, solange man die Logs der Applikationen im Standard-Verzeichnis /var/log/ belässt.

              Wenn man diese, z.B. für ein shared Hosting, aber in eigene Verzeichniss verschiebt, hat man ganz schön zu tun, auch fail2ban diese Veränderung beizubringen. Ähnliches gilt für den Fall, wenn man das Logformat ändert.

              In der Standardeinstellung wird die IP nach drei Fehlversuchen für 10 Minuten gesperrt und ins Log von fail2ban eingetragen. Man kann da nun noch einen draufsetzen und IPs, die mehrmals innerhalb einer gewissen Zeit im fail2ban-Log auftauchen vollständig gesperrt werden per iptables. Fastix und ich hatten darüber unseren Dialog vor ein paar Wochen (BTW: Danke nochmal).

              Spirituelle Grüße
              Euer Robert
              robert.r@online.de

              --
              Möge der wahre Forumsgeist ewig leben!
              1. Moin!

                Für Wordpress gibt es eine Erweiterung, die liefert das logging und die Einträge für fail2ban-Konfiguration:

                Dauerhafte Sperrung in allen Ports:

                In ubuntu muss man das nur anpassen, auf Debian-Servern nachtragen:

                /etc/fail2ban/jail.conf

                …
                [recidive]
                enabled  = true 
                port     = all
                filter   = recidive
                logpath  = /var/log/fail2ban.log
                action   = iptables-allports[name=recidive]
                           sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
                #bantime  = 604800  ; 1 week
                bantime  = 86400000 ; 1000 days
                findtime = 86400    ; 1 day
                maxretry = 3
                

                /etc/fail2ban/filter.d/recidive:

                # Fail2Ban filter for repeat bans
                #
                # This filter monitors the fail2ban log file, and enables you to add long 
                # time bans for ip addresses that get banned by fail2ban multiple times.
                #
                # Reasons to use this: block very persistent attackers for a longer time, 
                # stop receiving email notifications about the same attacker over and 
                # over again.
                #
                # This jail is only useful if you set the 'findtime' and 'bantime' parameters 
                # in jail.conf to a higher value than the other jails. Also, this jail has its
                # drawbacks, namely in that it works only with iptables, or if you use a 
                # different blocking mechanism for this jail versus others (e.g. hostsdeny 
                # for most jails, and shorewall for this one).
                
                [INCLUDES]
                
                # Read common prefixes. If any customizations available -- read them from
                # common.local
                before = common.conf
                
                [Definition]
                
                _daemon = fail2ban\.actions
                
                # The name of the jail that this filter is used for. In jail.conf, name the 
                # jail using this filter 'recidive', or change this line!
                _jailname = recidive
                
                failregex = ^(%(__prefix_line)s|,\d{3} fail2ban.actions:\s+)WARNING\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+<HOST>\s*$
                
                # Author: Tom Hendrikx, modifications by Amir Caspi 
                

                Wenn es ganz übel kommt, dann holt sich mancher Serverbetreiber noch eine Blacklist:

                #!/bin/bash
                # Skript holt böse IPs von diversen Listen und blockt diese in der Firewall
                # Jörg Reinholz
                
                ### SETUP:
                urlIList='
                https://lists.blocklist.de/lists/strongips.txt
                https://www.badips.com/get/list/any/3?age=1d
                https://api.blocklist.de/getlast.php?time=24h
                ';
                
                ### Programm:
                _chain='BLOCKLIST';
                _tmpFile=`mktemp`;
                
                # Holen der bösen IPs
                for url in $_urlIList
                do
                        echo "Action: Hole $url";
                        wget -qO- "$url"  >> "$_tmpFile";
                        echo "Done: $url geholt."
                done
                
                # Test auf Daten, ggf. Abbruch:
                if [ 1 -gt `wc -l < $_tmpFile`]        
                then
                        echo "Es konnten keine Daten empfangen werden";
                        exit 2;                            
                fi                                                                                               
                
                # Ausfiltern und Liste in Variable laden   
                ipList=`sort -u < "$_tmpFile" | grep -P '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' | grep -Pv "^[ \t]*$" | tr "\n" ' ';`;                                                                                                                          
                #letztes Komma löschen:
                ipList=${ipList:0:${#ipList} - 1};                                                                                                                                         
                # Alte Liste löschen
                /sbin/iptables -D INPUT   -j $_chain 2> /dev/null;
                /sbin/iptables -D OUTPUT  -j $_chain 2> /dev/null;
                /sbin/iptables -D FORWARD -j $_chain 2> /dev/null;
                /sbin/iptables -F $_chain  2> /dev/null;
                /sbin/iptables -X $_chain  2> /dev/null;
                
                # Neue chain
                /sbin/iptables -N $_chain 2> /dev/null;
                
                # IPs an neue Chain anhängen
                for ip in $ipList
                do
                        /sbin/iptables -A $_chain -s $ip -j DROP;
                done
                
                # chain wirksam machen
                /sbin/iptables -I INPUT -j $_chain
                /sbin/iptables -I OUTPUT -j $_chain
                /sbin/iptables -I FORWARD -j $_chain
                
                exit 0
                

                ... und manch anderer wirft seine bans dort auch ein.

                Jörg Reinholz

                1. Moin!

                  #!/bin/bash
                  # Skript holt böse IPs von diversen Listen und blockt diese in der Firewall
                  # Jörg Reinholz
                  
                  ### SETUP:
                  urlIList='
                  

                  Da ist mir doch beim Verschönern fürs Forum der Unterstrich mit weggekommen:

                  ### SETUP:
                  _urlIList='
                  

                  (Ich weiß, dass ich sonst dutzende Nachfragen bekomme.)

                  Das Skript sollte übrigens aller 12 Stunden mit crontab getartet werden. Und es läuft.

                  Jörg Reinholz