Let’s Encrypt auf CentOS 7 mit Apache

Installation von Let’s Encrypt auf CentOS 7 mit Apache

Let’s Encrypt ist eine Zertifizierungsstelle, die kostenlose X.509-Zertifikate für Transport Layer Security (TLS) anbietet. In diesem Tutorial wird erläutert, wie man Let´s Encrypt SSL anhand des ACME Vorgang mit certbot durchführt, und Let’s Encrypt auf einem CentOS 7 Host mit Apache-Webserver implementiert.

  Vorausgesetzt wird hier, das der Apache-Webserver bereits installiert ist, eine Domain im DNS registriert ist, die Domain als Apache VirtualHost konfiguriert ist.

Zur installation wollen wir root werden.

Nun den Apache-Webserver neu starten.

Die Firewall für SSL mit dem Service Port 443 öffnen.

Jetzt durch den certbot das SSL-Zertifikat generieren lassen.

  Die erste Domäne sollte die Basis Domain sein. In diesem Beispiel heißt sie mydomain.com, diese durch den tatsächlichen Domain-Name ersetzen.

Die Ausgabe des certbot sieht in etwa wie folgt aus.

Abschließend kann die URL getestet werden.

Die URL im Browser abrufen und bei SSL Labs verifizieren.

SSL Labs SSL Analyzing Report

Das Let’s Encrypt Zertifikat ist 90 Tage gültig. Für die automatische Erneuerung des Zertifikats, erstellen wir ein neuen Cron-Job.

Das Zertifikat wird einmal im Monat zur Erneuerung überprüft.

 

netstat bei CentOS 7 minimal Installation

Bereitstellen von netstat nach CentOS Minimal Installation

CentOS beinhaltet nach der Minimalinstallation nur wenig des sonst gewohnten Umfangs, eine reihe von System-Tools fehlen, so scheint es zumindest, bei näherer Betrachtung zeigt sich, das es nur neue Befehle sind, die herkömmlichen Tools können aber nachträglich installiert werden.

Ein solches Tool ist netstat, dieses wie folgt hinzugefügt wird.

Ermitteln welches Installationspaket das gewünschte Tool beinhaltet, lässt sich mit der Option whatprovides.

net-tools ist eine Sammlung mit Basis-Netzwerkprogramme. Ist das Paket net-tools installiert, stehen folgende Kommandos auf dem Host zur Verfügung:

Mit den net-tools wird die Verfügbarkeit der veralteten Linux-Netzwerk-Befehle wiederhergestellt, folgende Tabelle zeigt die veralteten Linux-Befehle und die neuen Ersetzungsbefehle:

Veraltete BefehleNeue befehle
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link
iptunnelip tunnel
iwconfigiw
nameifip link
netstatss -t (für netstat -t), ss -u (für netstat -u)
ip route (für netstat -r)
ip -s link (für netstat -i)
ip maddr (für netstat -g)
routeip r (ip route)

  ss – another utility to investigate sockets, ss is used to dump socket statistics. It allows showing information similar to netstat.

Beispiel zur Anwendung von ss anstelle von netstat:

Ebenso kann ein whois lookup oft nützliche Informationen liefern, dazu muss whois installiert werden:

WordPress vor Brute-Force Attacken schützen

WordPress Server vor Brute-Force Login versuche durch fail2ban schützen.

WordPress Schutz bietet sich durch mehrere Methoden an, neben LockDown Plugins, die IP-Adressen und Zeitstempel jedes fehlgeschlagenen Anmeldeversuchs aufzeichnen und blockieren, wird mit fail2ban die Kernel Firewall gesteuert, und damit der host für eine vorgegebene Zeit gesperrt.

  Zur Installation von fail2ban auf CentOS 7 muss das EPEL Repository hinzugefügt werden:

Die Installation hier wie folgt als root, es wird eine Standard Konfiguration bereitgestellt, und erfordert keine weiteren Anpassungen:

Nachdem fail2ban auf dem Server ist, sollen die Apache access_log Dateien nach Anmeldeversuche untersucht werden.

Damit fail2ban weiss nach welchen parser in der Logdatei gesucht werden soll, wird ein Filter erzeugt, durch editieren mit vim oder anderen bevorzugten Editor, erstellen wir die Filter Datei mit vi /etc/fail2ban/filter.d/wp-auth.conf:

Die Hauptkonfiguration von fail2ban befindet sich in der Datei /etc/fail2ban/jail.conf, diese kann kopiert werden als jail.local, oder es genügt nur die zusätzliche Filter Einstellung einzutragen, die Konfiguration hinzufügen mit vi /etc/fail2ban/jail.local

Nach 6 Anmeldeversuche (maxretry) wird für 30 min. blockiert.

Bevor fail2ban genutzt wird, ist ein blick in /etc/fail2ban/jail.conf gegeben, unter der Sektion [INCLUDES] sind die Pfade der eingesetzten Linux Distribution definiert, bei before = paths-distro.conf, wir verwenden bei CentOS7 die Datei /etc/fail2ban/paths-fedora.conf :

Die Datei paths-fedora.conf   kopieren zu paths-centos.conf. Es werden alle Logs unter /home/web/*/logs ausgelesen, die Pfade zu den Apache Logs ggf. anpassen:

Nun fail2ban neu starten um den Filter zu aktivieren.

fail2ban Status überprüfen wie folgt.

Der iptables Status des Filters in der Kette ausgeben.

Die iptables Ausgabe des Filter AuthFailures in etwa viel folgt.

Hat man sich selber durch zu viel Fehlversuche und Tests ausgesperrt, kann man sich mit folgendem Command wieder entsperren.

  Der vorteil dieser Methode ist es, durch fail2ban wird der host und alle Dienste blockiert, der Bot wird in der regel zur nächsten Webseite gehen, um die Attacken fortzusetzen, auch ssh und ftp anfragen gehen ins leere, und ICMP anfragen bleiben für die IP-Adresse unbeantwortet.