PDA

Bekijk de volledige versie : Seltsame dropbear Meldung



carterb
11-08-2009, 14:09
Hallo zusammen,

als soeben mein Meidatomb-Mediaserver abgeschmiert ist, wollte ich im syslog überprüfen, ob mein selbstgeschriebenes Mediatomb-Reboot-Script (welches für solche Fälle geschrieben wurde) anspricht. Im syslog bin ich nun über die im Anhang dargestellten Meldungen gestoßen, die sich über Minuten so fortsetzen.

Kann jemand etwas damit anfangen?

PS.: So sehen die laufenden Prozesse aus

PID PPID USER STAT VSZ %MEM %CPU COMMAND
5515 138 admin R 1924 6% 33% dropbear
5512 138 admin R 1924 6% 20% dropbear
5514 138 admin R 1924 6% 20% dropbear
5518 5472 admin R 2096 7% 13% top
5517 138 admin R 1924 6% 13% dropbear
235 234 admin S 9492 31% 0% /opt/bin/transmission-daemon -g /tmp/m
229 1 admin S 9492 31% 0% /opt/bin/transmission-daemon -g /tmp/m
234 229 admin S 9492 31% 0% /opt/bin/transmission-daemon -g /tmp/m
225 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
239 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
242 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
245 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
247 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
233 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
237 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
232 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
238 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
230 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
1725 1 admin S 8788 29% 0% /opt/bin/mediatomb -d -u admin -g root
2183 210 admin S 4044 13% 0% /opt/sbin/smbd -D
Woher kommen die ganzen dropbear-Prozesse?? Hat sich dropbear einfach nur aufgehangen?

MMCM
11-08-2009, 16:58
Offensichtlich stammen sind diese Logeinträge von Brute-Force-Angriffen auf den ssh Server.
Für jede neue Verbindung wird auch ein neuer Prozess gestartet.
Es gibt mehrere Varianten, dieses zu verringern, aber ein sicheres Passwort für alle mit ssh verwendbaren Accounts sollte Pflicht sein.

siehe auch (Forumssuche, Google, Bing, ...):
change port for sshd/dropbear
public key authentication und password login disabled
fail2ban
iptables rules mit ipt_recent
u.v.a.m.

newbiefan
11-08-2009, 19:54
Also, da versuchen sich mehrere einen Zugriff zu verschaffen.
Das Problem kannst du lösen:
http://www.wl500g.info/showthread.php?t=19745
dazu gebe ich dir meine /opt/etc/hosts.deny Liste mit, die ist up-to-date.
Damit habe ich sogar auf Port 22 so gut wie keine Angriffe mehr.
Ach ja und avbf ist auch etwas umgeschrieben - steht in /opt/sbin/avbf
Den Script checklog brauchst du damit nicht mehr - nur falls du automatisch eine Blacklist generieren willst oder Dienst mit xinetd sperren willst. (Im Bedarfsfall kurze Nachricht)
Bitte berücksichtigen: ich betreibe meinen Asus als AP, wenn er als Gateway betrieben wird, ist es aber genau gleich. Eventuell die Variablen im Script anpassen. Ja und falls du nicht mehr loggen willst, einfach die betreffende Zeile auskommentieren.

Falls du vsftp hast, bist du auch damit gut geschützt. Falls FTP nicht gebraucht wird, einfach Port 21 heraus nehmen.

Eventuell nicht gebrauchte Ports wie Port 80 einfach auskommentieren.
Natürlich kannst du die Zeiten und Zugriffe beliebig auf deine Verhältnisse anpassen. Ich verwende eine 3 Minuten-Sperre, das verdirbt jedem Hacker die Lust und erlaubt mir sogar einige Tippfehler bei der Passworteingabe.

Nicht wundern, dass in der Deny-Liste einige Netzmasken mit 8 vorhanden sind, letztendlich sind das alle asiatischen Länder wie China usw., aber dafür hast du Ruhe.

Und falls du VSFTP verwendest, hilft auch noch ein zusätzlicher Eintrag in der vsftpd.conf Datei: delay_failed_login=15
Ich verwende aber die Ily-FW Kernel 2.4.37

chmod 755 brauche ich ohnehin nicht zu erwähnen.


Viel Spass.

carterb
12-08-2009, 09:25
Hi Newbiefan,

genau so etwas habe ich vermutet. Aber das es ne fertige Lösung gibt um Brute-Force-Attacken abzuwenden habe ich nicht erwartet.

Gute Anleitung, Danke!!!

Kurze Frage zu dem Script checklog:

Du schreibst in deiner Anleitung, das Script würde ne Meldung in Syslog schreiben. An welcher Stelle genau wird das gemacht?? Würde an dieser Stelle gerne mit meinem sendmail-script einhaken und anfangs für Testzwecke Emails versenden.

Hier???
logger checklog "IP $ipadr blocked, consider to unblock manually or reboot"

Leider kam das Script nach dem download etwas zerstückelt bei mir an. Habe es nach meinem logischen Verständnis zusammengefügt, könntest Du kurz drüberschauen obs richtig ist. Vielleicht schaust Du mal in die verknüpfte Datei aus deinem HowTo, nach dem Öffnen (direkt auf dem Router) hatte ich falsche Zeilenumbrüche.

Hier nun das Script:
#!/bin/sh
#checklog for filtering script kiddies
#published under GNU GPL2 for asus users
#(c) by newbiefan

logfile=/tmp/syslog.log
banned_file=/tmp/mnt/banned
#uncomment when called by cron
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

if [ -e /tmp/mnt/failcounts ]; then
oldcountsfailed=`cat /tmp/mnt/failcounts`
else
touch /tmp/mnt/failcounts
echo "0" > /tmp/mnt/failcounts
oldcountsfailed="0"
fi

#write how many failed logins to failcounts
grep -ic "nonexistent user" $logfile > /tmp/mnt/failcounts

if [ $oldcountsfailed = `cat /tmp/mnt/failcounts` ] ; then #is equal exit, nothing is changed
exit 0 #end script
fi

grep "nonexistent user" $logfile | cut -d" " -f11 | cut -d":" -f1 | uniq -c | awk '$1 > 2 { print $2; }' > $banned_file

for ipadr in `cat $banned_file` ; do
if [ -z "`/usr/sbin/iptables -n -L BLOCKIT | grep $ipadr`" ] ; then
/usr/sbin/iptables -A BLOCKIT -s $ipadr/32 -j REJECT --reject-with icmp-host-unreachable
logger checklog "IP $ipadr blocked, consider to unblock manually or reboot"
echo $ipadr >> /opt/var/log/blocklist.log
fi
done
#Without changing the order, nothing would happen, now return is the last entry
/usr/sbin/iptables -D BLOCKIT -j RETURN
/usr/sbin/iptables -A BLOCKIT -j RETURN

thE_29
12-08-2009, 14:31
Für sowas habe ich meinen syslog-banner geschrieben, aber ich war noch immer zufaul eine gscheite Anleitung zu basteln :)

Problem sind User mit Leerzeichen.. Früher waren die unter einem ' ' aber bei der jetzigen Meldung nicht mehr...

Werde mal gucken ob ich da was einbauen kann...


Edit: So den log-banner mal umgebaut, sodaß er auch auf Texte abfragt und nicht nur nach Tokens sucht (wird hier wahrscheinlich keiner verstehen ;)).

Baue aber gerade noch ein, dass er nach mehreren Suchkritereien suchen kann und auch ein BIS.

newbiefan
12-08-2009, 21:21
Hi Newbiefan,

genau so etwas habe ich vermutet. Aber das es ne fertige Lösung gibt um Brute-Force-Attacken abzuwenden habe ich nicht erwartet.

Gute Anleitung, Danke!!!

Kurze Frage zu dem Script checklog:

Du schreibst in deiner Anleitung.......

Hallo Carterb,
nimm avbf von diesem Thread und vergiss den Script checklog. Den brauchst du nicht, denn avbf blockiert dir mit Iptables jeden Bruteforce und Dos Angriff sicher und ohne jeden Script.
Zur Sicherheit bzw. zur Kontrolle schreibt Iptables jeden brute force Angriff in den Logfile. Wenn alles funzt, kannst ja nach einigen Tagen die Zeile mit den Logeinträgen auskommentieren.
Ich würde nicht bei jedem Brute Force eine Email versenden, das bringt nichts wenn du ohnehin nicht zu Hause bist. Das geht viel besser und einfacher: Installiere Dir lighttpd und schreibe deinen Logfile jede Stunde mit Cron auf eine Webseite. Das ist wahnsinnig einfach, mach dir einen Script und schreibe diese Zeile hinein:


#!/bin/sh
cat /opt/var/log/syslog.log | sed 's/$/<\br>/' > /opt/share/www/asus/log.htm

Und wenn Du dir noch einen dyndns account besorgst (kostenlos), kannst du von jedem PC der Welt z.Bspl. deine Seite aufrufen: http://deinaccount.homelinux.net/asus/log
Du musst nur den Port deines Webservers frei schalten.

Checklog hilft dir ohnehin nicht viel, da fast alle Hacker mit einem Botnet arbeiten. Ausserdem sind fast alle IPs dynamisch vergeben, am nächsten Tag haben die ohnehin eine andere IP.
Ich beobachte meinen Logfile und sperre bei vielen Hack-Versuchen einfach das gesamte Subnetz vom jeweiligen Provider oder gleich eine ganze Region.
Das geht ganz einfach mit "whois ip.des.hackers" und danach das ganze Subnetz in die hosts.deny Liste eintragen. Wenn du das etliche Tage machst, kann man sogar erkennen, wo die Hacker wirklich sitzen - z.Bspl. an der Tages und Nachtzeit, am verwendeten Wörterbuch, oder ob man von einer UNI am Tag oder in der Nacht angegriffen wird usw....deshalb sind in meiner Denyliste auch einige kleinere Netzwerke gesperrt. Das komische ist dann, dass sobald die Hacker das bemerken, hast du Ruhe - sie müssen ja fürchten aufgedeckt zu werden. Naja da gibt es noch viele Möglichkeiten einem Hacker das Leben schwer zu machen......und manchmal nehme ich sogar ganz bewusst einen Hacker in Kauf, dazu stelle ich ihm ein Gerät zur Verfügung mit den üblichen simplen Passwörtern und gib dem User admin oder root beschränkte, aber fast alle Rechte. Dann kann man super sehen, was der Hacker eigentlich sucht und machen will - und sehr oft staunt man, zumindest wenn man erkennt wer da wirklich dahinter steckt, da sind viele angeblich hoch-seriöse Einrichtungen an nicht erlaubten Dingen zumindest beteiligt.
Naja genug gebrabbelt, nur soviel: es ist unheimlich spannend und meist wird es zur Leidenschaft......
have fun

carterb
13-08-2009, 09:09
Hi,

Danke Newbiefan für die ausführlichen Antworten. Hab nen Webserver laufen, weiss aber noch nicht ob ich den log dort ablegen werde. Lasse mich gerne per Email über allerhand Vorgehen auf dem Router und im Haus informieren.

Werde es mit dem avbf-script versuchen.

thE_29
13-08-2009, 15:56
Sodala, mein Log-Banner ist eigentlich jetzt ziemlich gut ausgerüstet ;)

Zu finden ist er hier: http://code.google.com/p/log-banner/
Und hier die binary + conf: ftp: the29.ath.cx
user: asta
pw: wuff
dir: log_banner
Dort gibts den log_banner und am besten noch die example_log_banner.conf

Das ganze basiert darauf, dass in die /tmp/syslog.log Einträge geschrieben werden, wenn sich jemand falsch einloggt!

Da es zum Testen ist, ist die Release Ban Zeit auf 10 Sekunden gesetzt, sodaß ihr euch nicht ewig selbst banned :)

In der example_log_banner.conf ist eigentlich alles gut erklärt!

Einfach mal starten mit ./log_banner example_log_banner.conf dann guckt er die /tmp/syslog.log und aufs Program sshd == dropbear (zumindest bei mir).
Werde am WE noch einen extra Thread + deutscher Anleitung + Bsp posten. Falls es halt schon jemand testen will.. (bei mir klappts super mit dropbear und ftp - wobei ftp ein eigenes Thema bei mir ist).

Ok, wenn bei euch dropbear läuft, wird das Bsp nicht gehen ;)
Auf meinem 2ten Router läuft dropbear (weiß nicht wieso beim anderen sshd läuft)! Maybe morgen am Abend, aber spätestens am WE gibts dann ne Anleitung für dropbear (bzw, ein config file dafür).

legolas
13-08-2009, 23:00
Hi,

was auch ganz gut hilft ist die Ports für SSH auf andere Ports umzulegen. Grundsätzlich sind bei mir nur zwei Ports offen. Einer für OpenVPN und einer für SSH. FTP würde ich komplett schliessen, da zu unsicher. Wenn man die Standardports verwendet, ist man ständigen Atacken ausgesetzt. Durch das Verlegen auf Ports über 1024 war bei mir dann Ruhe eingekehrt. Ich verwende einfach Portumleitungen auf einer FritzBox, da bei mir die WL500gP hinter der FritzBox sitzt. Dann geht es auch ohne irgendwelche Scripte.

So weit ich das verstanden habe werden in der Firewall die Adressen gesperrt. Die Frage ist nur, wie performant das Ganze läuft, wenn viele Regeln vorhanden sind. Mit der Zeit sammelt sich da so einiges an. Ganze Netze zu sperren ist auch nicht so elegant. Spart aber zumindest eine menge Regeln.

Was mich noch interessiert, wer sind denn die seriösen Einrichtungen von denen die Hackerangriffe ausgehen? Man sollte dort zu mindest die Admins in Kenntnis setzen.

Norbert

newbiefan
14-08-2009, 15:52
Hi,

was auch ganz gut hilft ist die Ports für SSH auf andere Ports umzulegen. Grundsätzlich sind bei mir nur zwei Ports offen. Einer für OpenVPN und einer für SSH. FTP würde ich komplett schliessen, da zu unsicher. Wenn man die Standardports verwendet, ist man ständigen Atacken ausgesetzt. Durch das Verlegen auf Ports über 1024 war bei mir dann Ruhe eingekehrt. Ich verwende einfach Portumleitungen auf einer FritzBox, da bei mir die WL500gP hinter der FritzBox sitzt. Dann geht es auch ohne irgendwelche Scripte.


Naja, lieber Legolas - andere Ports zu verwenden kann man freilich machen, aber bei mehreren Usern ist es mehr als lästig, z.Bspl. Port 19223 für ssh und 31932 für ftp zu verwenden. Das ging sogar soweit, dass ich selbst nicht einmal mehr die Portnummer wusste und ich bin ja nicht immer nur mit meinem Notebook unterwegs. Da verwende ich schon viel lieber die Standards. Ausserdem hat ein Forwarding eventuelle Nachteile: versuche einmal mit Cookies auf einem Webserver zu arbeiten, der durch Forwarding auf irgend einem Port und nicht auf 80 läuft.
Darüber hinaus ist ein Full-Portscan für einen Hacker nun wirklich kein Problem, selbst auf dem Asus geht das fast mit Bordmitteln (optware nmap).
Und noch etwas: auch ich verwende eine Fritzbox und den Asus als AP, trotzdem greift jeder nach belieben auf deinen Asus zu wenn du Server-Dienste laufen hast. Da hilft dir die Fritzbox gar nicht - wenn Port 21,22 und/oder 80 usw. weitergeleitet oder forwarded werden, ist für diese Ports dein Asus zuständig. Da helfen bei BruteForce oder Dos Angriff nur Iptables Regeln auf der (Standard) Input chain. Das mache ich mit ipt_recent - ohne jeden Script, lediglich bei startup konfiguriert mein Script avbf die Input chain. Wenn man einen etwas schnelleren Internetanschluss hat und einmal eine längere Dos Attacke hatte, ist man froh, nur mit den Iptables zu arbeiten. Jedes Script oder Programm tut sich dann höllisch schwer. Das kann jeder gerne selbst ausprobieren, indem man einmal vom PC auf die WAN-Seite einen ordentlichen Angriff simuliert. Z.Bspl. Cron startet bis zu 3 Minuten später den entsprechenden Script! Deshalb nur Kernel-Schutz (Iptables) und kein Script/Prgm!



So weit ich das verstanden habe werden in der Firewall die Adressen gesperrt. Die Frage ist nur, wie performant das Ganze läuft, wenn viele Regeln vorhanden sind. Mit der Zeit sammelt sich da so einiges an. Ganze Netze zu sperren ist auch nicht so elegant. Spart aber zumindest eine menge Regeln.


Das Script avbf schützt nur auf der INPUT Seite mit ipt_recent, sonst nichts.
Weiters kann man aber muss nicht!! mit checklog eine IP sperren, wenn 3x nonexistent user kommt. Aber wie gesagt, das hilft sowieso nichts - denn das macht sowieso ipt_recent (inkl. voreingestelltem release) und ausserdem handelt es sich praktisch immer um dynamische IP's. Tags darauf sind die wieder da........nur mit anderer IP.
Und sorry, lieber Legolas - ich persönlich halte es für die eleganteste Methode, ganze Netze zu sperren - denn nur dann hilft dem Hacker auch keine dynamische IP. Und ich habe sowieso schon seit längerer Zeit den gesamten asiatischen Raum gesperrt. Ich brauche keine Chinesen usw. auf meiner Home-Webseite.

Wegen der Performance hatte ich nicht einmal mit 100te gesperrter IP's irgend ein Problem. Heute brauche ich das nicht mehr - bei mir herrscht Ruhe, zumindest seit ich den ganzen asiatischen Raum und einige andere kleinere Netze komplett ausgesperrt habe.




Was mich noch interessiert, wer sind denn die seriösen Einrichtungen von denen die Hackerangriffe ausgehen? Man sollte dort zu mindest die Admins in Kenntnis setzen.

Norbert

Naja, das fängt bei UNI's an und hört bei riesigen Übersee-Kabelgesellschaften
auf. Dazwischen liegen Govs und grosse Suchmaschinen sowie einige INET-Forschungseinrichtungen. Ausserdem ist es mehr als interessant welche Infos wo landen. Dazu schreibe ich dir dieses Wochenende eine PM - mit ein paar IP's aus meinen Logfiles. Die kann/will ich aus rechtlichen Gründen, bzw. Schutz bestimmter Einrichtungen nicht öffentlich machen.

Admins zu informieren hilft leider nichts, kein einziger von insgesamt 32 hat reagiert und/oder geantwortet - im Gegenteil, ich bin der Meinung, dass sich die Angriffe aus genau diesen Netzen intensivierten.

Ich kann mit Sicherheit sagen, dass ein Schutz mit ipt_recent viel sicherer als jeder Script/Prgm ist. Wenn der Kernel abschmiert, kann selbst der Hacker nichts mehr machen - deshalb habe ich avbf gemacht und verwende es mit absolutem Erfolg.

LG Helmut

Ach, wenn es jemand interessiert:
http://www.apnic.net:80/publications/research-and-insights/ip-address-trends/apnic-resource-range

legolas
16-08-2009, 15:48
Hi newbiefan,

ich wollte Deine Lösung in keiner Weise kritisieren. Sie wird sicher gut funktionieren. Vor einiger Zeit hatte ich auch solche Probleme und wollte Scripte anwenden, die die IPs aussperren. Wie Du schon selbst geschrieben hast, sind Scripte nicht die beste Wahl dafür. Ich hatte damals auch den IP-Verkehr analysiert und bin darauf gestossen, dass oft asiatische Server die Atacken ausführen. Mir ist auch aufgefallen, dass alle Einbruchversuche mit recht einfachen Mitteln durchgeführt werden, sehr schnell sehr viele Rechner attakieren zu können. Portscanns sind sicherlich leicht möglich, benötigen jedoch sehr viel Zeit, da alle Ports durchgetestet werden müssen. Da die Antwortzeit des zu testenden Servers unbekannt ist und im Internet durchaus 100ms betragen kann, lohnt es nicht alle Ports zu testen. Da bräuchte man schon ca. 6000 s, um alle Ports testen zu können. Also ca. 100 Minuten. Da lohnt das Scannen dann nicht mehr, sofern man nicht von Geheimdiensten persönlich und exclusiv beschnüffelt wird. Deshalb werden die Standard-Ports als erstes angegriffen.

Da ich nur zwei Ports offen habe und die umleite, stellt das für mich kein all zu grosses Problem dar, mir die Ports zu merken. Einen Webserver auf einen anderen Port zu verlegen macht ja nun auch keinen Sinn. Er sollte bei Port 80 bleiben. Dieser Port ist für Angriffe auch nicht relevant, da man nicht viel damit machen kann. Oft suchen die Hacker Speicherplatz für Ihre illegalen Downloads bzw. bauen Botnetze auf. Deshalb ist es sehr beliebt FTP-Server zu kapern. Daher würde ich FTP-Ports überhaupt nicht mehr freischalten. Auch vsftp hilft da nicht viel. Solche Dienste benutze ich nur über ein VPN, wenn ich sie privat nutze. Überhaupt ist ein VPN meines erachtens die beste Lösung für derartige Probleme. Die Angriffsfläche ist minimal und zudem sehr schwer zu durchbrechen. Sie ist nur nicht sinnvoll, wenn der Server (Router) öffentlich sein soll.

Norbert

newbiefan
16-08-2009, 18:51
Hi newbiefan,

ich ............................
Norbert
Hi Legolas, ich habe deine Meinung nicht als Kritik verstanden (auch wenn man das in meiner Antwort interpretieren koennte) . Dazu sind wir beide schon zu lange hier.

Mit den Portscans hast du schon recht - die dauern wirklich sehr lange - dennoch gibt es auch hier eine Abhilfe. Nmap kennt ja auch Portranges und IPRanges, folglich ist es naheliegend, ein Botnet dafuer zu verwenden. Damit laesst sich die Last und Zeit betraechtlich minimieren - zumal fuer einen guten PC sehr viele parallel laufende Prozesse kein Problem darstellen.
Mit den asiatischen Hackern habe ich ja nun keine Probleme mehr, wie du dem Link von vorher entnehmen kannst, habe ich das gesamte APNIC Netz gesperrt. Das ist bisher die beste Methode, wie man meinen Iptables ja auch entnehmen kann. Die restlichen sperrt ipt_recent und mein Script Checklog wurde bereits degradiert - der schreibt nur mehr die Brute_Force IP's in eine Liste. Diese sehe ich mir jede Woche einmal an und blockiere ein Subnetz, wenn sehr viele Angriffe von diesen Netz gekommen sind. Alle anderen sind mir egal - meine Passwoerter sind sehr gut, ein echter Mix aus Zahlen und Buchstaben.
Bezueglich FTP kann ich vorerst nur sagen, dass mir vsftpd am wenigsten Probleme bereitet, da habe ich bereits alle Moeglichkeiten ausgenuetzt und offensichtlich haben die Hacker bereits aufgegeben. Moeglichst wenig gleichzeitige Connections von einer IP und delay_failed_login=15 verderben sowieso jedem einen Angriffsversuch. Und selbst wenn sich jemand die Muehe macht, ist er nach 3 Versuchen ohnehin gesperrt mit ipt_recent.
Ich benutze FTP fuer mehrere User, es ist eben einmal das einfachste Mittel, um Daten auszutauschen, wobei natuerlich keine allzu sensiblen Daten getauscht/gespeichert werden sollen.
Und wie du schon gesagt hast, ein Webserver ist nicht allzu empfindlich, zumindest wenn man keine Scripte laufen hat.
Falls Interesse besteht, lege ich meine heutige IP-Tables Ausgabe bei.
Syntax:
iptables -nv -L
cat /proc/net/ipt_recent/BRUTE

Schoenen Sonntag noch.........