Netzlaufwerk mit VBS / Batch verbinden

Dies ist nur ein kleiner Codeschnipsel, wie ein Netzwerlaufwerk verbunden werden kann.

Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "Z:", "\\server\path", false, "user", "password"

und hier der Befehl für eine Batch

net use Z: \\server\path /user:user password

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/