Angriffe auf andere von meinem Freebsd Server durch Unbekannte

  • Hallo, ich habe ein echt schlechtes Problem.
    Ich habe gestern eine Meldung von blocklist.de bekommen dass mein Server anscheinend einen Server namens manitu1 attackiert hat
    ( manitu1 steht da mehr nicht..) und dass es ein ssh angriff war.
    Das war um 3:30 ca steht da. Da war ich schlafen. Heute bekam ich wieder ne mail aber diesmal von it-incident@iu.edu . Da steht ich habe um 2:40 angegriffen
    . Irgendwas mit guzzle9, Snort Alert, attempted login with suspicious username was detected,<myri0> ,ne ip die angegriffen wurde mit port 22. Meine ip mit port 34119.


    Ich war in beiden Fällen nicht wach bzw nicht am Server. Hab ich einen Virus oder was? Ich hab Freebsd 11 , mit apache , mysql und php drauf. Hab einiges probiert muss ich zugeben, also paar scripts da ich mich kaum auskenne damit, vielleicht habe ich mir dabei was eingefangen. Und ich kenn mich auch nicht so aus mit Logs oder so wie man nachschauen kann zb wer da eingeloggt war oder welches programm zu der zeit diesen port zb benutzt hat. Gibt es vlt was dafuer?

  • Wie du schon erkannt hast, müsste was in den log stehen (z.B. /var/log/auth.log). Grob kannst du die auch mit Programmen wie logwatch durchsuchen lassen.
    Auch die .bash_history der einzelnen Nutzer nicht vergessen. Wenn du Glück hast, dann hat der Angreifer seine Spuren nicht verwischt.


    Ansonsten wird der Port 34119 als Ausgangspunkt bei dir genannt. Lauscht auf diesen Port ein Dienst?
    Mit netstat kannst du das überprüfen: netstat(1)


    Von außen geht das mit einem Portscanner wie nmap.


    Du könntest auch nach verdächtigen Prozessen schauen. Mit top oder htop oder direkt mit Programmen wie rkhunter nach Rootkits suchen. Eine erhöhte CPU oder RAM Auslastung kann ebenfalls ein Indiz für einen Eindringling sein. Insbesondere letzteres könnte bedeuten, dass der Angreifer seine Schadsoftware in einer RAM-Disk abgelegt hat.


    Sofern der Angriff noch akut ist, könntest du das auch beim Netzwerk Monitoring sehen. Zum Beispiel mit tshark alles aufzeichnen und anschließend am PC mit Wireshark analysieren.


    EDIT: Am besten der Server dafür vom Netz nehmen (rescue Mode), bevor netcup das macht.

  • In meiner .bash_history finde ich nur das was ich zuletzt hatte.


    In der auth.log steht auch was von einem Nutzer admin , wusste gar nicht dass ich einen angelegt habe, oder ist der standardmäßig bei freebsd? Vielleicht habe ich es auch vergessen.
    Hier steht es:
    Dec 17 02:37:07 v22016114014640431 sshd[75750]: Accepted keyboard-interactive/pam for admin from 94.50.2.175 port 7178 ssh2


    Mal su admin gemacht , aber dort ist überhaupt keine .bash_history , also in /usr/home/admin/ , bzw der befehl history wurde nicht gefunden steht da!


    Vielleicht sollte ich nur meine IP freigeben für ssh? Sieht das nach aus als ob jemand eingebrochen ist oder so?




    netstat -an :


    Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address... - justpaste.it


    Hier mal top kopiert :
    PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 2811 root 1 20 0 20120K 3368K CPU0 0... - justpaste.it


    Hier ps aux :


    ps aux [url=https://justpaste.it/11hi4]root 11 198.5 0.0 0 32 - RL 12:55 163:40.35 root 0 0.0 0.0 0 240 - DLs 12:55 0:07.97 root 1 0.0 0... - justpaste.it[/url]





    Dazu muss ich sagen, dass ich den neugestartet habe vor ner Stunde, und gestern war dort ein Prozess .swap oder so hieß der mit über 2000 MB Size glaube ich oder 3000 .
    Den habe ich zuvor noch nie gesehen und hab ihn gekillt das war vielleicht was wichtiges ? Ausserdem war der CPU verbrauch für meine Verhältnisse hoch, 8 % oder so , normalerweise ists aber bei 1 - 2% da nur apache, mysql , und teamspeak laufen.




    Jedoch in der AUTH.LOG sieht es merkwürdig aus , hier mal ein Auschnitt aus dem aktuellen :

    Code
    Dec 17 11:00:00 v22016114014640431 newsyslog[84390]: logfile turned over due to size>100K
    Dec 17 11:00:53 v22016114014640431 sshd[84416]: Received disconnect from 58.218.199.182 port 56069:11:  [preauth]
    Dec 17 11:00:53 v22016114014640431 sshd[84416]: Disconnected from 58.218.199.182 port 56069 [preauth]
    Dec 17 11:01:46 v22016114014640431 sshd[84430]: Received disconnect from 58.218.199.182 port 26820:11:  [preauth]
    Dec 17 11:01:46 v22016114014640431 sshd[84430]: Disconnected from 58.218.199.182 port 26820 [preauth]


    Und das ist voll von diesen Sachen hab schon mehrere logfile archive so 7 stück.



    Hier mal den von 2:40 : Dec 17 02:37:07 v22016114014640431 sshd[75750]: Accepted ... - justpaste.it


    Sorry wegen externer Links, aber sonst ist das unübersichtlich, irgendwie funktioniert das CODE teil nicht, da er alles in eine Zeile packt..




    Hab mir die ApacheLogs angeschaut, leider nix gefunden!


    Ich mache mal tshark an kann mir jemand den richtigen Befehl nennen? Will nicht die ganze Zeit ein terminal anhaben. Am besten speichert er es in einer Datei die ich runterladen kann und am PC anschauen kann.
    Edit : habs raus, einfach screen benutzt dafür . So mal sehen was kommt. Was aber noch praktisch wäre, so ein Logprogramm für freebsd was nicht wie tshark nur ip und so daten loggt , sondern welche prozesse wann das netz benutzen also halt wie tshark nur mit prozessname falls es vom freebsd herkommt.


    Danke vielmals für eure Hilfe!!

  • Ohne Parameter speichert tshark den gesamten Netzwerkverkehr. Wenn du das ein paar Tage laufen lässt, dann wird die Datei am Ende sehr groß und unübersichtlich sein ... insbesondere für unerfahrene.


    Bzgl. des Nutzers Admin: Hattest du ein Panel wie froxlor, Plesk oder co. installiert? Diese legen gerne bei der Installation einen solchen Nutzer an.
    Ansonsten bedeutet der Eintrag nur, dass jemand für den Nutzer admin ein Passwort eingeben kann.


    Allerdings scheinst du deinen SSH Server nicht abgesichert zu haben. Wenn du den Port von 22 auf X verlegst, dann wird ein Großteil des "Hintergrundrauschens" verschwinden. Außerdem kannst du auch nur bestimmten Nutzern den Login erlauben. etc... Dann hast du auch in deiner auth.log nicht so viele disconnects.


    Bei top und netstat würde es natürlich helfen, wenn du dabei keine sftp Verbindung hättest und nur mit einem Nutzer per SSH angemeldet wärst. Ansonsten ist erkennbar, dass auch eine ausländische IP per SSH mit deinem Server verbunden ist. Allerdings kann der auch am Rumprobieren sein.

  • Hmm habe sicherheitshalber mal das root passwort geändert und werde den admin mal löschen erinnere mich nicht dass ich froxlor raufgepackt habe und wofür das sonst sein soll keine Ahnung, oder ich ändere einfach mal das pw von admin auch und schaue dann ob es zu Problemen kommt.


    Naja ich hab halt noch nicht viel Ahnung von und dachte dass man da nicht viel machen muss wegen SSH dachte das ist schon richtig eingerichtet nach der Installation, hab ja ein Image ( Freebsd11 ) von Netcup verwendet.
    Da war auch kein Froxlor oder so bei nur das minimalste.


    Wie kann ich denn den Port von 22 auf X verlegen?
    Das mit dem Loginbegrenzen muss ich dafür in
    /etc/ssh/sshd_config
    die Zeile
    AllowUsers user1
    reinschreiben und das war es dann?


    Oh stimmt hatte sftp laufen soll ich das nochmal machen ohne? Wusste nicht dass das schlecht ist sorry deswegen.


    Ja also die Ips sind merkwürdig vorallem bei netstat die ESTABLISHED sind also 217.12.208.28:37788 und 69.53.211.251:51916 und dann noch eine udp Verbindung 194.97.114.3:2010


    Also ist echt merkwürdig aber ich ändere erstmal pw und hoffe du kannst mir erklären wie man ssh ändert, den Port bzw absichert dass sich nur zb userX einloggen kann.
    Danke :D


    Edit könnte man doch in die sshd_config noch reinmachen dass zb ne ip ist , sodass nur von meiner ip rein kann , also müsste ich das so machen stimmt das ? :


    AllowUsers root@MeineIp

  • Ich gehe mal nicht von aus, dass du in Russland wohnst oder einen Proxy/Tor aus Russland nutzt ..und China wohl auch nicht ..


    IP : 94.50.2.175
    Host : ?
    Land : Russische Föderation


    IP : 58.218.199.182
    Host : ?
    Land : China



    Ich persönlich würde den Server - wie bereits hier geschrieben - ausschalten und nur noch im RecoveryModus starten, um von dort aus einem gesicherten System alles zu analysieren. Ich denke mal der Admin User ist definitiv vom Angreifer angelegt worden, jedoch auch wenn du den nun deaktivierst - die Lücke ist u.U. nach wie vor da.


    Gruß
    Alex

  • Ja hast recht nutze keine Proxies dafür oder wohne dort.


    Okay muss wohl diesen Modus anschalten.


    Was sollte ich am besten machen? Backup von der Seite und mysql und dann neu aufsetzen a windows style?

  • Du kannst davon ausgehen, dass Dein Server kompromittiert ist. Damit sollte dieser nicht wieder ans Netz genommen werden. Jetzt ist folgendes zu tun:
    1. Herausfinden, wie der Server kompromittiert wurde.
    2. Policies anpassen, um einen erneuten Angriff zu verhindern.
    3. Prüfen, ob und welche Daten noch genutzt werden können bzw. auf welches ältere Backup zurückgegriffen werden muss.
    4. Server neu aufsetzen und nur unbedenklichen Daten einspielen.

  • Ich weiß aber nicht wie ich das herausfinden kann wie der kompromittiert wurde.. Hab zzt 2 Verdächte


    - Eventuell war das alte root passwort per bruteforce knackbar, das könnte es sein und dann kann er ja machen was er will, auch logs löschen oder? aber warum dann nicht die auth.logs gelöscht worden sind weiß ich nicht.


    - Vielleicht auch eine PHP-Seite die per SSH sich auf den Server einloggt und TS3 startet/stoppt/restartet aber dort konnte man keine eigenen Befehle eingeben da alles vorbereitete Strings waren und nur geprüft wurde welches Item der Liste ausgewählt war.
    Es sei denn man kann irgendwie raw-php dateien herunterladen aber wenn das geht wäre das ja voll doof, weiß auch gar nicht wie das gehen sollte.


    Also sonst wollte ich mal postfix und so installieren was nicht ging und bekomme jetzt sendmail nicht mehr zum laufen ^^ FreeBSD-Postfix-MySQL-SpamAssassin-Maia-Virtual Setup | Purplehat Organization Aber glaube nicht dass es damit zu tun hat. Ansonsten habe ich vlc installiert letztens wegen Streaming, aber ist aus den ports gewesen also sollte gut sein.


    Achso wegen rkhunter kann ich btw nicht installieren der meint iwie source kernel oder so fehlt.


    Edit: Also tshark läuft seit nicht mal 2 Stunden und die Datei ist 150 MB groß jetzt :<

  • Eventuell war das alte root passwort per bruteforce knackbar, das könnte es sein und dann kann er ja machen was er will, auch logs löschen oder? aber warum dann nicht die auth.logs gelöscht worden sind weiß ich nicht.

    Da der Server als kompromittiert anzusehen ist, musst Du davon ausgehen, dass der Inhalt sämtlicher Log-Dateien auf dem Server manipuliert wurde.


    Vielleicht auch eine PHP-Seite die per SSH sich auf den Server einloggt und TS3 startet/stoppt/restartet aber dort konnte man keine eigenen Befehle eingeben da alles vorbereitete Strings waren und nur geprüft wurde welches Item der Liste ausgewählt war.
    Es sei denn man kann irgendwie raw-php dateien herunterladen aber wenn das geht wäre das ja voll doof, weiß auch gar nicht wie das gehen sollte.

    Diese PHP-Seite klingt sehr verdächtig. Kann man den Code irgendwo einsehen? Wie ist Dein PHP konfiguriert?


    Hast Du schon den Mysql- und den Syslog-Server geprüft? Beide hingen nach Deinen Angaben in Thread offen im Netz.


    Edit: DNS durch Syslog ersetzt, da zu schnell geschaut...

  • Was meinst du denn mit Syslog? Habe alle Logs durchgeguckt in /var/log aber meistens leer oder halt schon gepostet


    Schnell zum PHP-Code, der ist halt in PHP geschrieben und sollte wenn Apache oder PHP nicht dumm ist und die Rohdatei schickt also vor dem Auswerten dann sollte nix geschehen also Daten sollten nicht eingelesen werden können denke ich, es sei denn man kann irgendwie erzwingen dass der Server einem den PHP-Code schickt , das wäre jedoch sehr schlecht.
    Wie mein PHP konfiguriert ist kann ich nicht genau sagen , da es sehr viele Zeilen sind :D aber hauptsächlich sollte es auf Standard sein mit einigen Anpasungen wie short tags oder max filesize und execution time wegen upload



    Mysql ist offen im Netz ? Wieso? Ich habe phpMyAdmin installiert und greife so darauf zu sonst in den Nutzern ist nur localhost an. Die Logs von Mysql sagen aber dass jemand versucht hat zuzugreifen(ändere dass dann nächste mal in der my.cnf also bind-address = localhost) :
    2016-12-16 02:21:54 753 [Warning] Hostname 'ms-bg-rrrr-130.stretchoid.com' does not resolve to '107.170.202.184'.
    2016-12-16 02:21:54 753 [Note] Hostname 'ms-bg-rrrr-130.stretchoid.com' has the following IP addresses:
    2016-12-16 02:21:54 753 [Note] - 46.38.243.234
    2016-12-16 02:21:54 753 [Warning] Hostname 'ms-bg-oooo-6.stretchoid.com' does not resolve to '104.236.144.133'.
    2016-12-16 02:21:54 753 [Note] Hostname 'ms-bg-oooo-6.stretchoid.com' has the following IP addresses:
    2016-12-16 02:21:54 753 [Note] - 46.38.243.234
    2016-12-16 03:44:50 753 [Warning] IP address '218.92.126.142' could not be resolved: hostname nor servname provided, or not known
    2016-12-16 03:49:08 753 [Warning] IP address '113.240.250.156' could not be resolved: hostname nor servname provided, or not known
    2016-12-16 04:02:02 753 [Warning] IP address '124.133.7.42' could not be resolved: hostname nor servname provided, or not known
    2016-12-16 05:25:29 753 [Warning] IP address '169.54.233.120' has been resolved to the host name '78.e9.36a9.ip4.static.sl-reverse.com', which resembles IPv4-address itself.
    2016-12-16 07:57:09 753 [Warning] IP address '211.147.112.141' could not be resolved: hostname nor servname provided, or not known


    2016-12-16 20:10:12 753 [Warning] IP address '211.147.112.183' could not be resolved: hostname nor servname provided, or not known
    2016-12-17 02:38:27 753 [Warning] IP address '222.186.51.230' could not be resolved: hostname nor servname provided, or not known
    2016-12-17 03:50:52 753 [Warning] IP address '113.108.21.16' could not be resolved: hostname nor servname provided, or not known
    2016-12-17 04:37:53 753 [Warning] IP address '123.249.26.83' could not be resolved: hostname nor servname provided, or not known
    2016-12-17 10:33:49 753 [Warning] IP address '123.249.45.159' could not be resolved: hostname nor servname provided, or not known
    2016-12-17 11:07:13 753 [Warning] IP address '139.201.126.178' could not be resolved: hostname nor servname provided, or not known

  • Was meinst du denn mit Syslog?

    Der Port 514 hängt im Netz. Damit konnte jeder Deinem Syslog Daten schicken.


    Schnell zum PHP-Code, der ist halt in PHP geschrieben und sollte wenn Apache oder PHP nicht dumm ist und die Rohdatei schickt also vor dem Auswerten dann sollte nix geschehen also Daten sollten nicht eingelesen werden können denke ich, es sei denn man kann irgendwie erzwingen dass der Server einem den PHP-Code schickt , das wäre jedoch sehr schlecht.

    Sollte die Unkenntnis des PHP-Codes als Sicherheitsmaßnahme gelten, dann ist mit einiger Wahrscheinlichkeit hier ein Angriff möglich.


    Wie mein PHP konfiguriert ist kann ich nicht genau sagen , da es sehr viele Zeilen sind :D aber hauptsächlich sollte es auf Standard sein mit einigen Anpasungen wie short tags oder max filesize und execution time wegen upload

    Du kannst alle Kommentare entfernen. Dann sollten auch nur noch die Werte erscheinen, die vom Standard abweichen.


    Mysql ist offen im Netz ? Wieso?

    Das frage besser den Systemadministrator.

  • Ich hab das root Passwort und Admin Passwort abgeändert, fürs erste damit falls das jemand gekannt hat nicht mehr reinkommt und diesemal komplexer.


    Systemadmin bin ich. Die PhpSeite habe ich entfernt da sie eh nie genutzt wird. Mysql habe ich jetzt nur noch localhost als möglicher Host.

  • Sagmal, für was nutzt du denn den Server? Wie ich das rauslese nicht für Email oder ähnliches (da du es ja nicht zum laufen bekommst), also eigentlich nichts was du verlieren könntest ..


    Wieso schaltest du den denn nun nicht ab und machst es anständig? Alle Leute hier haben dir dazu geraten, aber das scheinst du zu ignorieren.



    Ganz ehrlich gesagt: Da du - wie du indirekt schreibst - mit Linux nichts zutun hast und auch nicht weißt was passiert, ist es mit einem reinen "ich ändere das Passwort und lösche auf Verdacht irgendein Script" bei weitem nicht getan. Du bist für deinen Server verantwortlich und andere Leute könnten dich zur Rechenschaft ziehen, wenn du - trotz des Wissens über das Problem - weiter damit fortfährst und somit wissentlich andere Server angreifst - deine IP ist für die anderen sichtbar und du hast somit das Problem am Hals!



    Tipp: Hol dir was managed und lass es, sorry, aber ich glaube nur gute Tipps kommen hier bei dir nicht an.

  • Ok wenn ich den Recovery hab was dann?


    Ich habe ja schon gesagt, dass ich gerne rausfinden würde woher dies kommt, denn auf blocklist.de waren auch andere netcup server verzeichnet, die sogar bereits wegen über 30 Angriffen in diesem Monat gemeldet wurden, was ja auch schon merkwürdig ist..


    Dachte vielleicht lass ich den mal laufen ne Nacht mit tshark und gucke rein, aber ist halt net so toll weil tshark ja nciht mitloggt welches programm / prozess das Internet nutzt.

  • Ok wenn ich den Recovery hab was dann?

    1. Herausfinden, wie der Server kompromittiert wurde.
    2. Policies anpassen, um einen erneuten Angriff zu verhindern.
    3. Prüfen, ob und welche Daten noch genutzt werden können bzw. auf welches ältere Backup zurückgegriffen werden muss.
    4. Server neu aufsetzen und nur unbedenklichen Daten einspielen.


    Dachte vielleicht lass ich den mal laufen ne Nacht mit tshark und gucke rein, aber ist halt net so toll weil tshark ja nciht mitloggt welches programm / prozess das Internet nutzt.

    Honeypots sollte nur betreiben, wer sehr genau weiß was er tut.

  • Ok ich hab den ganz ausgemacht setze jetzt eines der linux images rauf also Debian Jessie ( cozy cloud, Froxlor, Minimal, Nextcloud, ownCloud, Plesk, PowerDNS Master, PowerDNS Slave, ... )
    oder Debian Wheezy ( Froxlor, iMSCP 1.1, Minimal, OpenVPN Access Server, Plesk 12, ... )


    Setze dann mein Backup Schritt für Schritt ein damitich weiß dass nix in den Codezeilen verändert worden ist.


    Hätte aber zu gerne gewusst wie ich mir das verbockt habe, aber hab halt keine Ahnung wie ich das rausfinden soll im Recovery mode.

  • Jetzt mal ohne Witz was ist nur los mit den Menschen. Ich miete nen Server klatsch was drauf, kein Plan was es ist und merke das ich gehackt wurde. Egal lass das Ding weiter laufen ich kann mir damit ja nur mein Leben super einfach ruinieren.


    Tu mir den gefallen und Kündige den Server und kauf dir ein Buch und nen Raspberry Pi kosten alles in Summe etwa 100€ und lern damit was Linux ist. Leichtsinnigkeit hat in dieser Branche nichts verloren.