Selbstsigniertes Multidomain SSL Zertifikat erstellen

Möchte man unter einer IP mehrere Domains über HTTPS zur Verfügung stellen, wird ein Multidomain SSL Zertifikat benötigt. Solch ein Multidomain SSL Zertifkat kann einfach und schnell selbst erstellt werden.

Verzeichnis erstellen:

mkdir /etc/apache2/SSL/multidomain
cd /etc/apache2/SSL/multidomain

Key erstellen mit:

openssl genrsa -sha512 -out multidomain.key 4096

Zertifikatsrequest (CSR) erstellen mit:

openssl req -sha512 -new -key multidomain.key -out multidomain.csr

Beim CN muss die Domain angegeben werden, welche in der Datei multidomain.cnf an erster Stelle steht! In diesem Beispiel also domain.ch

In der Datei multidomain.cnf die Domains eintragen:

vi multidomain.cnf
subjectAltName=DNS:domain.ch,DNS:*.andereDomain.ch,DNS:*.weitereDomain.ch

Das Zertifikat erstellen:

openssl x509 -req -sha512 -days 3650 -in multidomain.csr -signkey multidomain.key -text -extfile multidomain.cnf -out multidomain.crt

Das generierte Multidomain SSL Zertifikat multidomain.crt kann nun z.B. in Apache verwendet werden.

Version von Apache verstecken

Wenn man auf einem Webserver, der mit Apache läuft, eine Seite aufruft die es nicht gibt, dann zeigt Apache per Default folgendes an:

Not Found
The requested URL /huhu was not found on this server.
Apache/2.2.22 (Debian) Server at domain.ch Port 80

Dies zeigt schon an, mit welchem Betriebssystem der Webserver läuft und welcher Webserver im Einsatz ist. Jeden gewöhnlichen Besucher der Webseiten interessiert diese Information eigentlich nicht und darum sollte diese deaktiviert werden. Je weniger Informationen preisgegeben werden umso besser. Weiterlesen

Proxy mit Filter und Virenschutz über SSL-Explorer

Das Ziel ist ein Proxy, welcher unerwünschte Inhalte herausfiltert und den Verkehr auf Viren untersucht. Damit der Proxy auch vom Web erreichbar ist, setze ich den SSL-Explorer ein.

Schlussendlich durchläuft der Verkehr diese Punkte: Computer –> SSL-Explorer –> Squid3 –> Privoxy (unerwünschte Inhalte filtern) –> Havp (Virenschutz) –> Internet.

Die Installation ist sehr einfach und die Befehle können 1:1 in die Konsole kopiert werden. Das Tutorial wurde auf einem Debian x86 Squeeze erstellt. Weiterlesen

Eigenen Debian Spiegelserver (Mirror) einrichten

Da ich später mit FAI (fully automated installation) Server automatisch mit Debian installieren möchte, benötige ich einen eigenen lokalen Spiegelserver (Mirror). Zudem muss dann nicht jeder Server Packete und Updates aus dem Internet herunterladen, sonderen kann diese vom lokalen Spiegelserver (Mirror) beziehen. Ein lokaler Spiegelserver (Mirror) ist relativ schnell und einfach mit apt-mirror eingerichtet. Weiterlesen

Switch MAC flooding (fluten)

So nach langer Zeit komme ich endlich wieder dazu, einen Blogbeitrag zu schreiben. Im Moment stehe ich im Abschluss der Informatiklehre und muss darum Prioritäten setzten ;-).

Heute habe ich eine interessante Unterhalten mit jemandem gehabt. Dabei sind wir schnell vom Broadcast auf die MAC-Adresstabelle eines Switches und davon auf MAC flooding gekommen. Damit man das Ganze versteht hole ich ein wenig aus. Weiterlesen

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