Fail2ban | SSH Absichern Teil 2

September 30, 2010 at 5:45 pm (IT) (, , , , , , )

Wie bereits angekündigt hier noch der zweite Teil zum Thema SSH-Sicherheit:

FAIL2BAN

Fail2Ban ist ein Dienst der Log-Files von anderen Diensten nach BruteForce Attacken durchforstet. Hat eine entdeckt wird die Angreifer IP mittels IP-Tables blockiert. Das tolle an FAIL2BAN ist das eine ganze Reihe von Diensten überwachen kann und mithilfe von RRDTool ist sogar eine grafische Auswertung der Ban Statistik möglich. Ausserdem ist es dazu in der Lage E-Mails an den Administrator zu verschicken. Heute werde ich nur auf die konfiguration der Überwachung des SSHD Dienstes eingehen.

Fail2Ban ist in für viele Distributionen als Package verfügbar:

http://www.fail2ban.org/wiki/index.php/Downloads

Unter Debian Lenny langt ein einfaches

apt-get install fail2ban

um Fail2Ban zu installieren. Als erstes sollte man die Konfigurationsdatei von Fail2Ban erstellen. Hierfür wird eine Kopie der mitgelieferten jail.conf angelegt:

cp /etc/init.d/fail2ban/jail.conf /etc/fail2ban/jail.local

Die Datei jail.local wird nun zur Konfiguration von Fail2Ban verwendet und hat Vorrang gegenüber der jail.conf.

Das Tolle ist das der SSHD-Dienst schon von vorneherein aktiviert ist, sodass man nur noch ein paar kleine Anpassungen in der jail.conf vornehmen muss:

ignoreip = 111.222.333.444 (Hier können bestimmte IP’s eingetragen auf die die Regeln von Fail2Ban nicht angewendet werden   sollen) 
bantime = 600
(Zeit in Sekunden die eine IP gebant ist)
maxretry = 3
(Anzahl der Wiederholung einer falschen Passwort eingabe bis Ban ausgeteilt wird)

Danach nocheinmal Fail2Ban mit /etc/init.d/fail2ban restart neustarten. Das Logfile von Fail2Ban findet ihr unter /var/log/fail2ban.log
Demnächst mehr zu Fail2Ban!

Advertisements

Permalink Schreibe einen Kommentar

SSH absichern Teil I

September 30, 2010 at 5:00 pm (IT) (, , , , , , )

SSH ist DAS protokoll für die sichere Administration von entfernten Unix/Linux rechnern. Leider gibt es jedoch genug „Script-Kiddys“ im Netz die immer wieder versuchen mittels Bruteforce in SSH-Systeme einzudringen. Das Problem ist hierbei das diese Bruteforce Attacken eine Menge Rechenleistung kosten, sodass der Server ständig Performance an die SSH-Authentifikation abgibt. Mithilfe der folgenden kleinen Tricks kann man seinen SSH-Zugang weitesgehend absichern und falls man sich für eine Blacklist entscheidet sogar die Performance kosten für die Abwehr von Bruteforce Attacken senken. Innerhalb der datei /etc/ssh/sshd_config wird die konfiguration des SSH-Servers vorgenommen weshalb die folgenden Optionen, sofern nicht anders beschrieben innerhalb dieser Datei vorgenommen werden. Ich gehe davon aus das bereits ein SSH User angelegt ist, der keine root Rechte hat. Ich habe den gleichen User auf dem Server angelegt mit dem ich auch unter meiner Workstation arbeite, weswegen ich im weiteren davon ausgehe das ihr ähnlich verfahrt. Desweiteren solltet ihr auch mit
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup ein Backup der Orginal Datei anlegen;)

1. Kein Root Login zulassen

Wenn man die Option

PermitRootLogin no

setzt ist es nicht mehr möglich mithilfe des root Accounts eine SSH Verbindung zu dem Server aufzubauen. Das hat den Vorteil das ein Angreifer sich nicht sofort mit vollen Rechten im System bewegen kann.

2. Listen Port ändern

Der SSH-Server „horcht“ normalerweise den Port 22 auf Anfragen ab wesewegen die häufigsten Bruteforce Attacken auch auf eben diesen Port abzielen. Es ist jedoch möglich diesen zu ändern mithilfe der Option:

Port 12345

3. Nutzung von SSH Version 2

Mithilfe der Option

Protocol 2

zwingt man den SSH Server die Verbindungen nur in der Version 2 aufzubauen. So umgeht man die Schwächen von Version 1. Selbstverständlich muss der Client zwingenderweise auch SSH 2 beherschen.

4. Einschräkung der User Zugänge

Da ja auf den meisten Unix/Linux Systemen mehre Benutzer angelegt sind macht es durchaus sinn bestimmte User und/oder Gruppen vom SSH Zugang auszusperren. Dies ist mithilfe der folgenden Optionen möglich:

AllowUsers USERNAME
AllowGroups GROUPNAME
DenyUsers USERNAME
DenyGroups GROUPNAME

allow erlaubt Usern und Gruppen das Verbinden deny verbietet es.

5. Authentifizierung ändern

Um die maximale Sicherheit mit SSH zu erlangen ist es notwendig die Authentifizierung von SSH auf PubKeyAuthentication zu ändern.

PubkeyAuthentication yes

Jetzt sollten wir den Speicherort für die keyfiles definieren:

AuthorizedKeysFile %h/.ssh/authorized_keys

Damit werden alle keyfiles des jeweiligen Benutzers in ~/.ssh/authorized_keys gespeichert.

Mit /etc/init.d/sshd restart starten wir den SSH Server neu. Als nächstes sollten wir auf dem Client den Privaten Schlüssel für den Zugriff generieren:

ssh-keygen -t rsa

ich empfehle hier unbedingt eine Passphrase anzugeben. Jetzt müssen wir den öffentlichen Schlüssel auf den Server mittels ssh-copy-id kopieren:

ssh-copy-id -i ~/.ssh/id_rsa.pub „-p 12345 user@server“

Nach einem weiteren restart des SSH Servers wird die Authentifizierung mittels Pub- und Privatkey  durchgeführt.

5. Anmeldung via Passwort verbieten

Bis jetzt war es noch weiterhin möglich sich via Passwort an dem Server anzumelden. Dies sollten wir nun noch deaktivieren:

PasswordAuthentication no
UsePAM no

Damit wäre unser SSH-Server erstmal gut abgesichert, sodass Script-Kiddys keine Chance mehr haben. Im nächsten Teil dieser Anleitung werde ich erklären wie es möglich ist mittels fail2ban Bruteforce Attacken erfolgreich abzublocken.

Permalink Schreibe einen Kommentar

[Projekt: ESXi Homeserver] Unable to find a supported device to write – Lösung

August 27, 2009 at 1:41 pm (Projekt: ESXi Homeserver) (, , , , , )

der esxi server hat von haus aus probleme ide laufwerke bzw den ide controller zu erkennen, sodass eine installation mit dem hinweis Unable to find a supported device to write abgebrochen wird. mithilfe der anpassung einer kleinen datei ist es jedoch möglich esxi zu installieren. sobald man bei der installation an dem punkt angelangt ist, der einem sagt das die hdd nicht erkannt wurde muss man mithilfe von ALT+F1 in die erste shell wechseln und sich als root  ohne pw anmelden. mithilfe des befehls

lspci

bzw

fdisk -l

kann man feststellen ob die hdd vom kernel erkannt wurde. sollte dies der fall sein kann man mithilfe von

vi /usr/lib/vmware/installer/Core/TargetFilter.py

esxi dazu überzeugen die platte doch zu erkennen. man muss lediglich nach dem abschnitt def IDEFilter(lun) suchen und folgenden eintrag

return interface.GetInterfaceType() == ScsiInterface.SCSI_IFACE_TYPE_IDE

durch folgenden ersetzen:

return interface.GetInterfaceType() == ScsiInterface.SCSI_IFACE_TYPE_ISCSI

nun muss man nur noch vi beenden und install in die shell tippern, dann kann der fröhliche installations spaß weitergehen!

Permalink Schreibe einen Kommentar

[Projekt: ESXi Homeserver] Einleitung

August 27, 2009 at 9:31 am (Projekt: ESXi Homeserver)

es ist so weit, der muede startet ein neues projekt \o/

da ich in letzter zeit auf der arbeit viel mit dem esx server von vmware gearbeitet habe möchte ich nun auch zu hause einen esx server betreiben. da ich aber armer schueler bin (whine) hab ich natürlich keine kohle für software übrig weswegen ich mich für den kleinen bruder vom esx entscheide, dem esxi. auch dieser wird wie sein großer bruder direkt auf der server hardware installiert und bietet daher eine bessere ressourcen verteilung der wirt hardware für die vms. man sollte jedoch beachten das nicht jede hardware vom esxi server unterstützt wird. ich hab als hardware für den server noch ein altes sockel a msi board gefunden mit einem athlon 3200+ und einem gb arbeitspeicher. der onboard ide controller wird leider nicht von esxi unterstützt, lspci zeigt ihn zwar an aber fdisk -l erkennt keine platten. urkomischerweise jedoch wird eine alte pci to ide karte direkt vom esxi erkannt, an der nun zwei platten angeschlossen sind (80 und 20GB). dennoch muss man bei der esxi installation noch eine cfg anpassen um ihn dazu zu bewegen, auf die platten zu schreiben. welche datei man dort wie anpassen muss werde ich noch später bloggen;) normalerweise wäre ich ja jetzt schon glücklich jedoch erkennt der esxi natürlich weder den onboard ethernet controller noch die pci 3com karte:/ dank google bin ich jedoch auf eine liste gestoßen welche alle funktionierenden ethernet controller enthält, sodass ich mir gestern abend noch eine Intel Pro/1000 GT karte für 20€ bei ebay bestellt habe. sobald die karte da ist kann es also losgehen;) ein weiteres problem waren jedoch auch noch die 1gb ram des servers, da es sich um ein sockel a board handelt brauch ich ddr speicher, der ist jedoch ziemlich teuer und ausserdem habe ich nur 2 slots auf dem board, weshalb ich leider erstmal mit einem gb ram vorlieb nehmen muss, obwohl dies bedeutet das ich den esxi 3.5 installieren muss, da der 4.0er bei weniger als 2gb ram die installation abbricht:/ zu guter letzt nochmal den sinn eines esxi homeservers:

atm habe ich ein altes p3 notebook mit 600mhz cpu und 256mb ram und xubuntu 8.04 welches smb shares verwaltet, vpn anbietet und noch diverse andere kleinigkeiten im netzwerk zur verfügung stellt. da die hardware schon alt und schwach ist und ich oben genannte hardware noch rumliegen hatte habe ich mich geistig schon länger dafür entschieden den server auszutauschen. warum esxi? nun erstmal möchte ich einen win 2k3 server und einen arch linux server im netzwerk haben, der arch linux sollte hierbei den job vom alten notebook übernehmen und der 2k3 soll eine domänen verwaltung mit active directory anbieten. mithilfe von esxi kann ich also beide server auf einer einzigen hardware laufen lassen, wenn das mal nicht effizient ist!

sobald die intel karte hier angekommen ist, gibts den nächsten eintrag;)

Permalink Schreibe einen Kommentar

[ESX 4]Webservice starten

August 18, 2009 at 11:08 am (ESX) (, , , , )

normalerweise wird die weboberfläche des ESX nicht automatisch beim hochfahren gestartet. möchte man diese per hand starten sollte man folgenden befehl ausführen:

service vmware-webAccess status (überprüft ob der service an oder aus ist)

service vmware-webAccess start (start den webaccess)

Permalink Schreibe einen Kommentar

[ESX 4] Änderung der SSH Netzwerkeinstellungen

August 18, 2009 at 9:51 am (ESX) (, , , , , , , , )

wenn man einen esx server in eine andere netzwerkumgebung migrieren möchte ist es notwendig die entsprechenden netzwerkeinstellungen für ssh zu verändern. als erstes bearbeitet man die datei /etc/sysconfig/network mit einem texteditor wie nano (nano /etc/sysconfig/network) die datei hat folgenden inhalt:

NETWORKING=yes
HOSTNAME=esx-4
GATEWAY=192.168.2.1
GATEWAYDEV=vswif0
IPV6_AUTOCONF=no
NETWORKING_IPV6=no

an dieser stelle muss man das gateway des jeweiligen netzwerks anpassen.

als nächstes wechselt man in das verzeichnis /etc/sysconfig/network-scripts und sucht dort den adapter über den den ssh angesprochen wird, in meinem fall ifcfg-vswif0. wir öffnen wieder die datei und bekommen folgendes zu sehen:

DEVICE=vswif0
HOTPLUG=yes
MACADDR=00:50:56:45:7b:f2
ONBOOT=yes
PORTGROUP=“Service Console“
BOOTPROTO=static
BROADCAST=192.168.2.255
DHCPV6C=no
IPADDR=192.168.2.2
IPV6INIT=no
IPV6_AUTOCONF=no
NETMASK=255.255.255.0

hier können wir dann die subnetzmaske, die ip sowie den broadcast angeben.

Permalink Schreibe einen Kommentar

Kurztipp: Erstellen einer ISO unter Linux mit dd

Juli 28, 2009 at 9:28 am (IT) (, , )

moin,

als kleine notiz an mich selbst:

zum erstellen einer iso unter linux benötigt man folgenden befehl:

dd if=/dev/cdrom of=dateiname.iso

Permalink Schreibe einen Kommentar

[ESX 4]SSH für Root

Juli 23, 2009 at 4:17 pm (ESX) (, , , , , , , , )

da vmwares esx server in der standard konfiguration keinen root login via ssh erlaubt habe ich hier ein kleines workaround für euch:

ihr müsst als erstes die datei sshd_config mit einem texteditor wie z.B. nano bearbeiten:

nano /etc/ssh/sshd_config

dort müsst ihr die zeile

PermitRootLogin no

auf PermitRootLogin yes stellen. damit währe gewährleistet das ihr euch als root via ssh auf dem server anmelden könnt. unter umständen müsst ihr jedoch noch die firewall so umkonfigurieren, dass ssh bzw sshd zugelassen wird. dies erreicht ihr mit folgender eingabe:

esxcfg-firewall -e sshServer

esxcfg-firewall -e sshClient

viel spaß mit ssh und sftp:)

Permalink Schreibe einen Kommentar

Windows 7

Juli 6, 2009 at 11:11 am (IT) (, , , , )

da mir xp mit seinen 64bit allüren langsam aber sicher aufm sack ging hab ich mich einfach mal getraut auf meinem rechner daheim neben ubuntu 9.04 win 7 zu installieren. die installation war ziemlich easy weil vista like, wer da was verkackt hat selber schuld hehe. ansonsten bin ich von dem neuen os der redmonder eigentlich recht angetan alles läuft soweit fix und flüssig und das was ich bisher an software ausprobiert habe (ff 3.5, nvidia treiber, street fighter IV, avira)lief anstandslos sogar mein 2ter monitor wurde direkt erkannt. sehr schön ms! die optik is natürlich ganz schick soweit, meiner einer muss sich aber schon etwas umgewöhnen weil ich mit vista nicht viel gemacht habe (gesehen, gelacht, gelöscht) heute abend werd ich dann nochmal ein wenig an der kiste weitermachen. die einzige kritik die ich bisher habe ist die tatsache, dass alles einen neuen platz/namen hat und man erstmal suchen muss bis man gefunden hat was man braucht (stichwort systemsteuerung:o). was aber sehr cool ist, ist die schaltfläche im explorer mit der man neue ordner erstellen kann!

Permalink 1 Kommentar

Random Fortunes Quotes beim Starten eines Terminals

Juni 24, 2009 at 7:36 am (IT) (, , , , )

so auch mal was neues von mir in meinem blog, diesmal möchte ich euch zeigen wie man random quotes aus der fortunes db beim starten eines terminal mit cowsay auslesen kann wie es bei einigen distris wie zum beispiel linux mint standard ist.

Terminal mit Fortune und Cowsay
Terminal mit Fortune und Cowsay

zuerst brauchen wir die pakete fortunes, fortunes-de und cowsay. unter ubuntu via apt-get zu installieren:

sudo apt-get install fortunes fortunes-de cowsay

jetzt müssen wir nur noch in der .bashrc folgendes kleines script einfügen, damit ein spruch aus der fortunes db
via cowsay dargestellt wird (nano /home/user/.bashrc):

if [ -f /usr/games/fortune -a -d /usr/share/cowsay ]; then
dir=’/usr/share/cowsay/cows/‘
file=`/bin/ls -1 „$dir“ | sort –random-sort | head -1`
cow=$(echo „$file“ | sed -e „s/\.cow//“)
/usr/games/fortune quiz wusstensie | /usr/games/cowsay -f $cow
fi

diese änderung ist nur für den aktuellen benutzer gültig, wenn die quotes bei allen usersn ausgegeben werde sollen dann
muss die geschichte in der datei /etc/bash.bashrc eingestellt werden!

Permalink Schreibe einen Kommentar

Next page »