Archiv für Februar 2008

08
Feb

SSH Blacklist für Mac OS X

Neulich als ich Abends am Computer sass, fiel mir auf, dass im Netzwerk Monitor von Little Snitch (kleine Petzte) reger Verkehr herrschte, welcher durch den SSH Daemon sshd verursacht wurde.
Netzwerk Montor

Ein Blick in die Log Datei bestätigte den Verdacht:


michi@otherland ~ $ tail -f /var/log/secure.log
...
Feb  6 22:22:59 otherland com.apple.SecurityServer[20]: Failed to authorize right system.login.tty by client /usr/sbin/sshd for authorization created by /usr/sbin/sshd.
Feb  6 22:22:59 otherland sshd[19031]: Failed password for invalid user smart from 218.225.122.4 port 43343 ssh2
Feb  6 22:23:02 otherland sshd[19033]: Invalid user smart from 218.225.122.4
...

Seit einiger Zeit versucht also jemand mit blossem Durchprobieren (Brute Force) sich per SSH auf meinem Heim-Computer anzumelden. Auf meinen Linux Servers installiere ich immer selbstverständlich sshblack, auf die Idee dies auch zu Hause unter Mac OS X zu tun kam ich bis jetzt aber noch nicht. Genau dies möchte ich jetzt aber nachholen. Am Ende des Artikels gibt es auch die angepassten Dateien zum Herunterladen.

Als erstes muss sshblack heruntergeladen werden. Ich werde es in der Bash tun, es kann natürlich auch mit Firefox und Finder getan werden.


michi@otherland ~ $ wget http://www.pettingers.org/media/sshblackv28.tar.gz
--22:49:36--  http://www.pettingers.org/media/sshblackv28.tar.gz
           => `sshblackv28.tar.gz'
Resolving www.pettingers.org... 207.149.40.42
Connecting to www.pettingers.org|207.149.40.42|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 19,857 (19K) [application/x-gzip]

100%[============================================================================>] 19,857        24.01K/s             

22:49:38 (23.97 KB/s) - `sshblackv28.tar.gz' saved [19857/19857]

michi@otherland ~ $ tar xvfz sshblackv28.tar.gz
sshblackv28/
sshblackv28/INSTALL.TXT
sshblackv28/README.TXT
sshblackv28/bl
sshblackv28/iptables-setup.sh
sshblackv28/list
sshblackv28/unlist
sshblackv28/unbl
sshblackv28/sshblackv28.pl

sshblack nutzt iptables um unter anderen unixoiden Betriebssystemen den Angreifer mittels einer Sperre abzublocken. Unter Max OS X jedoch sollte man die eingebaute Firewall ipfw verwenden, wesshalb wir das Perl-Script sshblack anpassen müssen, und zwar können die Kommandos für das hinzufügen und entfernen einer Regel in den Variabeln ADDRULE und DELRULE und auch die Logdatei in LOG angepasst werden. Einfach in einem Editor der Wahl in sshblackv28.pl die Einträge anpassen.

Die originale Zeile mit dem iptables Kommando …


my($ADDRULE) = '/sbin/iptables -I BLACKLIST -s ipaddress -j DROP';

… wird durch die Zeile für das hinzufügen zur ipfw ersetzt …


my($ADDRULE) = '/sbin/ipfw add deny all from ipaddress to any';

… und das gleiche gilt auch für die Regel zum entfernen. Aus …


my($DELRULE) = '/sbin/iptables -D BLACKLIST -s ipaddress -j DROP';

… wird nun …


my($DELRULE) = '/sbin/ipfw delete `ipfw show | grep ipaddress | awk \'{ print $1 }\'`'

Als letztes noch unsere Logdatei anpassen. Der einzige Unterschied die Dateiendung. Einfach noch hinten .log an die Datei anhängen:


my($LOG) = '/var/log/secure.log';

Nun “installieren” wird sshblack, indem wir es nach /opt/local/bin kopieren und als ausführbar markieren und den Rest entfernen:


michi@otherland ~ $ sudo cp sshblackv28/sshblackv28.pl /opt/local/bin/
michi@otherland ~ $ sudo chmod +x /opt/local/bin/sshblackv28.pl
michi@otherland ~ $ rm -rf sshblackv28

Damit die Blackliste auch mit dem System startet, kann mit Lingon kurz und schmerzlos eine Launchd-Konfiguration erstellt werden. Hier ist meine:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>org.pettingers.sshblack</string>
	<key>ProgramArguments</key>
	<array>
		<string>/opt/local/bin/sshblackv28.pl</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>

was am Besten unter dem Namen org.pettingers.sshblack.plist im Verzeichnis /Library/LaunchDaemons abgelegt wird. Damit bei mir sshblack überhaupt laufen wollte, musste ich noch in /etc/profile die verwendete Sprache setzten:


export LANG="en_GB.UTF-8"

Wer sein OS X auf Deutsch eingestellt hat, sollte einfach de_DE.UTF-8 eintragen. Bei Bedarf kann nun auch noch das Lokale Netzwerk angepasst werden, da Adressen aus diesem Bereich nie auf die Blacklist kommen:


my($LOCALNET) = '^(?:127\.0\.0\.1|192\.168\.0)';

Die Standardeinstellung ist wie man oben sieht 192.168.0.X. Schlussendlich muss das Script noch ein wenig angepasst werden, da Launchd verlangt, dass das auszuführende Programm nicht einen eigenen Prozess abspaltet (fork). Dies können wir sshblack auch leicht mitteilen, indem wir die Variable DAEMONIZE auf 0 setzten:


my($DAEMONIZE) = '0';

Jetzt haben wir aber das Problem, dass sshblack die Log Informationen auf die Konsole ausgibt, welche dann von launchd verschluckt werden. Also müssen wir die Konsolenausgaben umbiegen (wir können die Kommandos dazu einfach aus der Fork-Bedingung kopieren:


open (STDOUT, ">>$OUTPUTLOG") or die "failed to open STDOUT";
open (STDERR, ">&STDOUT") or die "failed to open STDERR";
logit("SSHBLACK is Starting...",'1','0');

Endlich sind wir fertig und können den Dienst laden und starten, was wir natürlich auch gleich überprüfen:


michi@otherland LaunchDaemons $ sudo launchctl load org.pettingers.sshblack.plist
michi@otherland LaunchDaemons $ sudo launchctl start org.pettingers.sshblack
michi@otherland LaunchDaemons $ sudo launchctl list | grep sshblack
1597	0	org.pettingers.sshblack
michi@otherland LaunchDaemons $ tail -f /var/log/sshblacklisting
[Wed Feb  6 23:53:54 2008]  SSHBLACK is Starting...
[Wed Feb  6 23:53:54 2008]  Monitoring your log file for future attacks
michi@otherland LaunchDaemons $ ps -ef | grep perl
     0 1597     1   0   0:00.03 ttys000    0:00.06 /usr/bin/perl -w /opt/local/bin/sshblackv28.pl
  501 19674 13708   0   0:00.00 ttys000    0:00.00 grep perl

Sollte das Script aus irgend einem Grund nicht laufen, würde die Ausgabe anders aussehen:


michi@otherland LaunchDaemons $ sudo launchctl list | grep sshblack
-	255	org.pettingers.sshblack
michi@otherland LaunchDaemons $ tail -f /var/log/sshblacklisting
michi@otherland LaunchDaemons $ ps -ef | grep perl
  501 19674 13708   0   0:00.00 ttys000    0:00.00 grep perl

In diesem Fall sollte man sshblack direkt in der Konsole aufrufen, damit man dem Problem auf die Schliche kommen kann:


michi@otherland LaunchDaemons $ sudo /opt/local/bin/sshblackv28.pl

Sobald sich jemand viermal falsch per SSH anzumelden versucht, entweder mit einem falschen Benutzernamen oder auch falschem Passwort, schreibt sshblack seine Notizen und gegebenenfalls Aktionen in die Logdatei:


michi@otherland LaunchDaemons $ tail -f /var/log/sshblacklisting
[Fri Feb  8 16:11:36 2008]  SSHBLACK is Starting...
[Fri Feb  8 16:11:36 2008]  Monitoring your log file for future attacks
[Fri Feb  8 16:11:37 2008]  Watching 218.225.122.4 as potential attacker
[Fri Feb  8 16:11:38 2008]  Watching 218.225.122.4 as potential attacker
[Fri Feb  8 16:11:38 2008]  Watching 218.225.122.4 as potential attacker
[Fri Feb  8 16:11:39 2008]  Watching 218.225.122.4 as potential attacker
[Fri Feb  8 16:11:39 2008]  218.225.122.4 being blocked because of Failed password
00100 deny ip from 218.225.122.4 to any

Das die Adresse gesperrt wurde, können wir auch in der Feuerwand äh Firewall nachschauen:


michi@otherland ~ $ ipfw show
00100      8      780 deny ip from 218.225.122.4 to any
65535 102101 58129069 allow ip from any to any

In der Standardeinstellung entfernt sshblack die gesperrten IP-Adressen automatisch wieder nach vier Tagen. Natürlich kann man die Adressen auch wieder manuell entfernen:


michi@otherland ~ $ sudo ipfw show
00100      9      884 deny ip from 88.41.58.213 to any
65535 102704 58234265 allow ip from any to any
michi@otherland ~ $ sudo ipfw del 00100
michi@otherland ~ $ sudo ipfw show
65535 102723 58235526 allow ip from any to any

Das angepasste sshblack 2.8 für OS X und auch die Launchd Konfiguration kann hier heruntergeladen werden: SSHBlack (214)

Das Kommando zum Entfernen der Regel ipfw del benötigt als Parameter nicht die IP-Adresse, sondern die ID der Regel (Eine IP kann ja auch in mehreren Regeln sein). Prima, nun haben wie uns die lästigen Scriptkiddies vom Hals geschafft…

06
Feb

Blog, Podcast, Newsfeeds im Computerlabor

Am 11. Februar gibt es im Computerlabor einen neuen Workshop zum Thema ‘Blog, Podcasts, Newsfeeds’. Aber lest doch selber, was uns Kire diesmal zu Berichten hat:

Hoihoi

Der nächste Workshop steht bereits wieder an. Dieses mal ist das Thema
"Blog, Podcast, Newsfeeds":

Weblogs sind meist von Einzelpersonen oder kleineren Gruppen geführte
Tagebücher oder Journale zu bestimmten Themen. Da sie ohne viel
technischem Verständnis und ohne grossem Aufwand zu führen sind, haben
sie in den letzten Jahren das WWW massgeblich verändert. Wir werden uns
am Workshop der Blogosphäre aus einem technischen und zusätzlich auch
gesellschaftlichen Blickwinkel nähern. Während in Blogs Texte im
Vordergrund stehen, dient Podcasting der Veröffentlichung von Audio-
und Video-Daten. Und zu guter Letzt werden wir uns anschauen, wie wir
Dank Newsfeeds einfach auf dem Laufenden bleiben, wenn Beiträge auf
unseren Lieblingssites hinzukommen oder sich ändern - ohne regelmässig
vorbeisurfen zu müssen.

Das Thema ist betriebssystemunabhängig - und demnach auch für
Windows-, MacOS- und sonstige BenuterInnen spannend. Dennoch wird Zeit
für konkrete (Ubuntu-) Wünsche und Fragen übrig bleiben. Los geht's um
20.00 Uhr.

Die nächsten geplanten Workshops sind:

Mo. 10.03.2008: Computerlabor: Telefonie, Chat, Instant Messaging
Mo. 14.04.2008: Computerlabor: Webseiten programmieren mit HTML/CSS/PHP
Mo. 12.05.2008: Computerlabor: Webseiten programmieren mit HTML/CSS/PHP
Mo. 09.06.2008: Computerlabor: Webseiten programmieren mit HTML/CSS/PHP

Achtung: Die Webseiten-Daten könnten sich noch ändern.

Und alles weitere lässt sich wie immer hier finden:
http://www.kire.ch/linux/computerlabor.htm

Grüssle & bis dänne
Kire

Zu diesem spannenden Thema wird uns Kire sicher wieder einmal einige interessante Dinge zu erzählen wissen. Zu meiner Schande muss ich hier einmal gestehen, dass ich es selber noch nie an ein Computerlabor gewesen bin - mit einer Horde Kinder und einer Fortbildung ist mein Zeit und Energie leider begrenzt. Aber zum Glück habe ich ja zu Hause selber ein kleines Computerlabor ;-)




Februar 2008
M D M D F S S
« Jan   Mrz »
 123
45678910
11121314151617
18192021222324
2526272829  

Werbung


Buttonitis