Brute Force Passwortliste erstellen (Bash)

Weil sich mein Intel Core 2 Quad Processor Q9550 in meinem „Server-PC“ langweillt und dieser eigentlich 24 * 7 läuft habe ich ein Miniprogramme (wenn man das schon Programm nennen darf) in der Bash geschrieben, welches eine Brute Force Passwortliste erstellen soll.

Der Beitrag besteht aus einem Praxis- und einem Theorieteil. Ich schreibe den Praxisteil absichtlich vor dem Theorieteil, weil man nach der Theorie die Praxis wegen entmutigung nicht mehr lesen würde ;-). Weiterlesen

SSH mit fail2ban absichern

In diesem Tutorial schreibe ich darüber wie eine IP nach einer bestimmten Anzahl fehlerhaften Logins über SSH für eine bestimmte Zeit gebannt werden kann. Das Ganze ist sehr einfach.

fail2ban installieren


aptitude install fail2ban

Unter anderem sollte es in der Datei /etc/fail2ban/jail.conf folgendes geben

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6

Diese Werte müssen nur noch angepasst werden

[ssh]

enabled = true
port    = 2000
filter  = sshd
# Log aus welchem fail2ban die Loginversuche erkennen soll
logpath  = /var/log/auth.log
# Gesperrt nach x Loginversuchen
maxretry = 3
# Gesperrt für x Sekunden
bantime = 3600

Jezt sollte das Ganze schon funktionieren. Noch ein paar Kommandos zum Thema

fail2ban steuern

/etc/init.d/fail2ban {start|force-start|stop|restart|force-reload|status}

Aktueller Status von fail2ban


fail2ban-client status ssh
Status for the jail: ssh
|- filter
|  |- File list:        /var/log/auth.log
|  |- Currently failed: 1
|  `- Total failed:     1
`- action
   |- Currently banned: 1
   |  `- IP list:       192.168.20.2
   `- Total banned:     1

Aktuelle Iptable anzeigen

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports 22           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
DROP       all  --  192.168.20.2  anywhere
RETURN     all  --  anywhere             anywher

IP wieder zulassen (unban)

iptables -D fail2ban-ssh -s 192.168.20.2 -j DROP

Vorsicht! fail2ban ist es egal, dass ich diese IP vorher aus der Iptable gelöscht habe. Nach einem Neustart von fail2ban fügt fail2ban für die IP wieder eine Blockregel in die Iptable ein. Für dieses Problem habe ich noch keine Lösung gefunden. Wenn die IP zwingend nicht geblockt werden soll, kann sie in die Ignoreliste in /etc/fail2ban/jail.conf aufgenommen werden.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.20.2
bantime  = 600
maxretry = 3

Schlussbemerkung

Auch fail2ban wird nicht zu 100% fehlerfrei sein. Nicht selten passiert es, dass eine Firewall, welche eigentlich etwas schützen sollte zum Angriff missbraucht werden kann, wenn sie schlecht konfiguriert ist.

Hier bin ich noch auf eine interessante Methode gestossen, wie man sich von einer unsicheren Umgebung auf den Server mittels OTP (one time password) per SSH einloggen kann: http://www.heise.de/security/artikel/Einmalpasswoerter-fuer-den-Heimgebrauch-270884.html

Dem Citrix XenServer eine lokale Festplatte als lokalen Storage hinzufügen

Heute habe ich zwei 1TB Festplatten in meinen Citrix XenServer eingebaut. Die Festplatten wurden im BIOS erkannt, nun musste ich diese dem Citrix XenServer 5.6 noch als lokalen Storage hinzufügen.

Bevor mit dem Tutorial begonnen wird muss ein Backup der VMs erstellt werden falls etwas schief geht!

Die Festplatten sind grundsätzlich vorhanden

fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         499     4008186   83  Linux
/dev/sda2             500         998     4008217+  83  Linux
/dev/sda3             999      121601   968743597+  83  Linux

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdc doesn't contain a valid partition table

Disk /dev/sdd: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdd doesn't contain a valid partition table

So werden die verfügbaren Festplatten angezeigt

ls -l /dev/disk/by-id/
total 0
lrwxrwxrwx 1 root root  9 Jul 23 13:07 scsi-SATA_SAMSUNG_HD103SJS246J90Z453865 -> ../../sdd
lrwxrwxrwx 1 root root  9 Jul 23 13:07 scsi-SATA_SAMSUNG_HD103SJS246J90Z453867 -> ../../sdb
lrwxrwxrwx 1 root root  9 Jul 23 13:07 scsi-SATA_WDC_WD1001FALS-_WD-WMATV2870992 -> ../../sdc
lrwxrwxrwx 1 root root  9 Jul 23 13:07 scsi-SATA_WDC_WD1001FALS-_WD-WMATV2871282 -> ../../sda
lrwxrwxrwx 1 root root 10 Jul 23 13:07 scsi-SATA_WDC_WD1001FALS-_WD-WMATV2871282-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jul 23 13:07 scsi-SATA_WDC_WD1001FALS-_WD-WMATV2871282-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Jul 23 13:07 scsi-SATA_WDC_WD1001FALS-_WD-WMATV2871282-part3 -> ../../sda3

Die zwei Samsung Festplatten sdd und sdb sollen dem Citrix XenServer als lokalen Storage hinzugefügt werden.

Jetzt wird je Festplatte ein Physical Volume erstellt

pvcreate /dev/sdb
pvcreate /dev/sdd

Die zwei neuen Physical Volume sind vorhanden

pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdd
  VG Name               VG_XenStorage-d6fb2d7d-8c33-eda5-5645-a0116400251d
  PV Size               931.51 GB / not usable 6.41 MB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              238464
  Free PE               238463
  Allocated PE          1
  PV UUID               6N5Bfx-UiQ0-KRrJ-jkLD-hVzB-8mZ9-JXKsTW

  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               VG_XenStorage-38b07d5b-ecf5-0520-57e8-fa24bfe4e1cf
  PV Size               931.51 GB / not usable 6.41 MB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              238464
  Free PE               238463
  Allocated PE          1
  PV UUID               QNeO2f-81Dc-aq1b-i1Fs-hxiO-f6I1-WUdTg9

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               VG_XenStorage-cece6857-dbf2-ebc7-0a87-049bda6709d0
  PV Size               923.87 GB / not usable 9.46 MB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              236507
  Free PE               173295
  Allocated PE          63212
  PV UUID               7AfPF2-O6V7-wRAp-FtHT-GUN0-avM8-AvuIxv

  --- Physical volume ---
  PV Name               /dev/sdc
  VG Name               VG_XenStorage-cece6857-dbf2-ebc7-0a87-049bda6709d0
  PV Size               931.51 GB / not usable 6.41 MB
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              238464
  Free PE               0
  Allocated PE          238464
  PV UUID               uIO134-y120-iy13-VDBf-JLEX-vQin-b3B3L3

Der lokale Storage wird erstellt mit

xe sr-create type="lvm" content-type="user" device-config:device="/dev/disk/by-id/scsi-SATA_SAMSUNG_HD103SJS246J90Z453867" name-label="Local Storage 1"
xe sr-create type="lvm" content-type="user" device-config:device="/dev/disk/by-id/scsi-SATA_SAMSUNG_HD103SJS246J90Z453865" name-lable="Local Storage 2"

und die verschiedenen lokal Storage werden angezeigt mit


xe sr-list type=lvm
uuid ( RO)                : d6fb2d7d-8c33-eda5-5645-a0116400251d
          name-label ( RW): Local Storage 2
    name-description ( RW):
                host ( RO): citrixxenserver
                type ( RO): lvm
        content-type ( RO): user

uuid ( RO)                : 38b07d5b-ecf5-0520-57e8-fa24bfe4e1cf
          name-label ( RW): Local Storage 1
    name-description ( RW):
                host ( RO): citrixxenserver
                type ( RO): lvm
        content-type ( RO): user

uuid ( RO)                : cece6857-dbf2-ebc7-0a87-049bda6709d0
          name-label ( RW): Local storage
    name-description ( RW):
                host ( RO): citrixxenserver
                type ( RO): lvm
        content-type ( RO): user

Die neuen Festplatten sind jetzt hinzugefügt und werden im XenCenter angezeigt.

Update:

Wenn auf dem Citrix Xenserver eine neue VM erstellt wird, kann man auswählen, auf welchem Storage die virtuelle Festplatte der VM liegen soll. Das Bild verdeutlicht das Beispiel.

Storage

Auf Local Storage 2 und 1 könnte die virtuelle Festplatte natürlich auch abgelegt werden, wenn diese Storages nicht schon voll wären.

Ich denke, dass so zum Beispiel auch eine externe Festplatte als lokalen Storage dem Citrix XenServer hinzugefügt werden könnte. Getestet habe ich es allerdings nicht.

Eigenen Webserver für WordPress installieren

Für ein Projekt, welches ich später in meinem Heimnetzwerk umsetzen möchte, benötige ich ein installiertes WordPress auf einem lokalen Webserver im Heimnetzwerk. Ich habe jedoch keinen Webserver gehabt und habe mich deshalb ans Einrichten des Webservers für WordPress gemacht.

Packete installieren

WordPress benötigt Apache, PHP und MySQL.

aptitude install apache2 mysql-server php5

Damit Apache mit PHP und MySQL zusammenarbeiten kann, musste ich noch zwei weitere Packete installieren.

aptitude install libapache2-mod-auth-mysql php5-mysql

Die Grundlagen sind jetzt vorhanden. Weiterlesen

Viele Dateien in einem Ordner mit einem Script umbenennen

Heute hatte ich folgendes Problem: In einem Ordner waren ca. 40 Dateien, welche alle eine URL in ihrem Dateinamen enthielten. Natürlich wollte ich diese unnütze URL entfernen und habe kurzerhand ein Miniscript geschrieben:

#!/bin/sh
###########
# Renames files in a directory
###########

# Get all filenames
files=$(ls *.mp3)
for i in $files
do

# Build the new filename
new=$(echo $i | sed s/'.\[www.url.com\]'/""/g)

# Move old file to new file
mv $i $new
done

Das Miniscript entfernt schnell in allen Dateinamen die URL und kann als Basis für weitere Bearbeitungen von vielen Dateinamen benutzt werden. Mit Sed und Regex kann man seiner Kreativität freien Lauf lassen ;-).

Update: Danke an Lars Moelleken. Du hast mein Script in einem Einzeiler erledigt :D.

rename s/.\[www.url.com\]/""/ *.mp3

SSH Keyfiles einrichten

Im Moment übe ich mich im härten vonSSH. Alle Tipps und Tricks wird man wohl kaum von heute auf morgen lernen. Ein System zu härten und sicher zu machen ist ein langwieriger Prozess. Man wird immer wieder Neues entdecken und umsetzen. Dies ist ein Minihowto wie man SSH mit Keyfiles einrichten kann.

Schlüssel erzeugen

puttygen.exe von http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html herunterladen.

Ist das Programm gestartet klickt man auf „Generate“ und bewegt ordentlich den Mauszeiger im grauen Feld.

Danach gibt man  bei „Key passphrase“ und „Confirm passphrase“ ein langes Kennwort ein. Wird kein Passwort eingegeben kann sich jeder mit dem Privatekey ohne irgend ein Passwort mit dem Server verbinden.

Dann klickt man auf „Save private key“ und speichert den PrivateKey. Dieses File muss gut vor unbefugten Leuten geschützt werden, besonders wenn kein Kennwort verwendet wird!

Schlüssel platzieren

Auf dem Server gibt man folgende Befehle ein:

mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod -R 700 ~/.ssh

Nun fügt man den Public Key in die Datei ~/.ssh/authorized_keys ein.

Nun sieht die Datei etwa so aus:

Silvan@sshserver:~$ cat .ssh/authorized_keys
ssh-rsa eRIN9F41TEvd [...] 5e9ydiPlpCjiK7y3==

Das ssh-rsa ist wichtig, weil der Server sonst bei einem Anmeldeversuch

Server refused our key

zurückgibt.

Authentifizierung konfigurieren

Damit die Authentifizierung mit Keyilfes funktioniert und mit Passwort nicht mehr funktioniert muss die Datei /etc/ssh/sshd_config angepasst werden

PubkeyAuthentication yes
PasswordAuthentication no

Jetzt funktioniert das Anmelden am Server mit dem Privatekey.

Weitere HowTos

Das Ganze unter Linux: http://wiki.ubuntuusers.de/SSH#Authentifizierung-ueber-Public-Keys

Das HowTo mit Bilder zu puttygen.exe und putty.exe: http://blog.murawski.ch/2010/04/ssh-authentifizierung-mit-privatekey/

Zertifizierung Junior Level Linux Professional (LPIC-1) bestanden

Am 10. Januar 2010 schrieb ich über die bestandene LPI101 Prüfung (LPI 101 bestanden). Nachdem ich auch LPI102 bestanden habe, habe ich jetzt das Zertifikat für Junior Level Linux Professional (LPIC-1)

Gestern kam die erfreuliche Nachricht:

Erreichte Punkte: 650
Erforderliche Punktzahl: 500
Status: Pass

Ich habe mit 650 von 800 Punkten bestanden.

Im Bereich Networking Fundamentals war ich am Besten.

80%            Shells, Scripting and Data Management
60%            User Interfaces and Desktops
83%            Administrative Tasks
70%            Essential System Services
85%            Networking Fundamentals
66%            Security

Meines Erachtens ist LPI 102 einfacher als LPI 101.  Die Hauptthemen für LPI102 waren Scripting, Cron, Netzwerk und X11 was man auch den Lernzielen und Gewichtungen für die LPI 102 Prüfung entnehmen kann.

Zur Vorbereitun hat natürlich wie immer die offizielle Dokumentation und das Benutzen von Linux geholfen ;-), jedoch auch die folgenden zwei Bücher.

Das Buch LPIC-1 von Peer Heinlein. Die Simulationsfragen sind realistisch und könnten an der Prüfung kommen ;-). Das Buch ist als Ergänzung zur offiziellen Dokumentation geeignet. Der Grundstoff für die Prüfung wird dort nicht nochmals durchgenommen, höchstens wichtige Details auf welche man achten muss.

Das Buch LPIC-1: Sicher zur erfolgreichen Linux-Zertifizierung von Galileo Computing. Die Simulationsfragen sind nicht realistisch, sondern sehr realistisch ;-). So realisitisch, dass der Wortlaut der Fragen und die Reihenfolgen der Antworten zum Teil genau gleich waren wie an der Prüfung ;-). In diesem Buch habe ich nur die Simulationsfragen gelöst, jedoch ist auch ein ausführlicher Theorieteil vorhanden. Wie gut der Theorieteil ist weiss ich nicht, weil ich diesen nicht gelesen habe. Die Theorie habe ich schon durch die offizielle Dokumentation abgedeckt.

Trotz diesen Simulationsfragen in den Büchern möchte ich betonen, dass die Grundlagen gelernt werden müssen! Ohne Grundlagen kann der Test wohl kaum bestanden werden. Die Simulationsfragen sind nur eine Ergänzung neben dem Lernen der Grundlagen. Das i-Tüpfelchen auf dem i.

Ist man LPIC-1 zertifiziert kann man auch gleich das Zertifikat Novell CLA (Novell Certified Linux Admininstrator) beantragen. Wenn das Zert beantragt wurde erhält man dann eine Email mit

... You have just been entitled to the Novell Certified Linux Administrator certification based on your LPI-1 certification credential. ...

Nun heisst es auf die Zertifikate warten und ran ans LPIC-2 (wenn die Freude an Linux bleibt) ;-). Viel Erfolg für jeden, der noch an die Zertifzierung geht!

Natürliche habe auch diesmal nicht nur ich bestanden –> Junior Level Linux Professional (Bites, Bytes and my 5 cents)

SSl Explorer installieren

SSL Explorer ist ein Javaprogramm, dass mit Java 5 läuft, welches einen SSL Tunnel durch das Internet auf Port 443 aufbaut. So viel sei verraten: Durch den SSL Tunnel kann alles getunnelt werden (SSH, VPN, usw.). Sitzt man zum Beispiel hinter einer Firewall welche keine SSH Verbindung zulässt könnte diese SSH Verbindung über den SSL Tunnel getunnelt werden… (SSH over SSL oder VPN over SSL) Weiterlesen