Letsencrypt installieren

Letsencrypt ist ein Open Source Projekt, welches kostenlos SSL Zertifikate zur Verfügung stellt die inzwischen auch von den meisten Browsern, Anwendungen und Apps unterstützt werden.

Damit gibt es also keinen sinnvollen Grund mehr Verbindungen zu  Serverdiensten (z. B. Webserver, EMail etc.) unverschlüsselt zu lassen.

Unter Ubuntu 18.04 wird Letsencrypt bereits in den apt-Quellen angeboten. Zusätzlich können noch Plugins für Apache oder Nginx installiert werden, welche die Anforderung, Installation, Einrichtung und Aktualisierung der Zertifikate automatisch vornehmen können!

Wie fast immer unter Linux ist die Installation schnell und einfach zu erledigen. Allerdings müsst Ihr Euch evtl. entscheiden ob Ihr das Paket ‚python3-certbot-apache‚ oder ‚python3-certbot-nginx‚ installieren wollt. Das hängt natürlich davon ab welchen Webserver Ihr einsetzt 😉

Im nachfolgenden Beispiel habe ich Nginx als Webserver eingesetzt:

apt install certbot python-certbot-nginx

Einrichtung Zertifikate (Beispiel nginx)

Nun, das war schon die Installation. Nun möchten wir aber noch sehen wie der Certbot die Zertifikate installiert. Für unsere Beispiel nehme ich die Grundkonfiguration für die Domain ‚www.meine-dolle-domain.de‘. Ich gehe davon aus, dass der diese Domain im Verzeichnis ‚/etc/nginx/sites-enabled‘ eingerichtet ist. Die Grundkonfiguration könnte z. B. so aussehen:

server {
    listen 80;
    server_name www.meine-dolle-domain.de;
    root /var/www/meine-dolle-domain.de;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

Um nun für alle unter ‚/etc/nginx/sites-enabled‘ eingerichteten Domains auf SSL mit Letsencrypt Zertifikat umzustellen (Beachte Grundsatz: Keine unverschlüsselten Verbindungen!) geben wir einfach den Befehl

certbot --nginx

ein. Certbot durchsucht nun die vorhandenen Konfigurationen und bietet Ihnen entsprechende Auswahlmenüs für Domain und automatisches SSL Redirect die Du beantworten bzw. auswählen musst. Die ausführliche Beschreibung der Menüs und der Ausgabe erspare ich uns hier mal.

Im Ergebnis sollten Iht z. B. für das o. g. Beispiel sehen können, dass nicht nur ein entsprechendes Zertifikat installiert wurde, sondern auch gleich die Webserver-Konfigurationsdatei für die Domain ‚www.meine-dolle-domain.de‘ automatisch auf SSL umgestellt wurde. Dies könnt Ihr auch im folgenden Beispiel schön sehen

server {
    server_name www.meine-dolle-domain.de;
    root /var/www/meine-dolle-domain.de;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/support.computerfritze.net/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/support.computerfritze.net/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

Testen

Gut, dass mit dem testen ist einfach! Bloss die Domain im Browser aufrufen. Wenn Ihr das SSL Redirect bei der Certbot- Konfiguration gewählt habt (eindringlich empfohlen!), sollte Ihr nun automatisch auf die HTTPS-Seite weiter geleitet werden. Ansonsten müsst Ihr halt das ‚HTTPS://‘ Eurer Domain in der Browser-Adresszeile voran stellen.

Rootkit- & Exploit-Jäger ‚rkhunter‘ installieren

Zum installieren einfach auf der Shell

apt install rkhunter

eingeben.

Anschließend die Datenbank von rkhunter mit folgendem Befehl installieren

rkhunter --update

Natürlich müssen die Logfiles von rkhunter regelmäßig überprüft werden. Automatische Benachrichtigungen können u. a. mit Hilfe des Pakets ‚mailutils‘ eingerichtet werden. Aber dazu kommen wir später

Zertifikatsbasierten Login für Hauptbenutzer einrichten

Im letzten Teil haben wir uns den Hauptbenutzer ‚ myadm‘ eingerichtet. Mit diesem Benutzer können wir uns nun per SSH auf dem Server anmelden und per ’sudo‘ mit ‚root‘ Rechten an dem Server arbeiten.

Im nächsten Schritt wollen wir das Konto so umstellen, dass der Login mit einem Zertifikat (Zertifikat = ein Art elektronischer Ausweis) erfolgen kann. In einem späteren Schritt ändern wir die SSH Konfiguration so, dass der Login nur noch mit Hilfe eines Zertifkats möglich ist.

Dadurch muss das Passwort für den Hauptbenutzer in Zukunft nicht mehr übertragen werden. Dadurch kann das Passwort auch nicht ‚man in the middle‘ Attacken abgefangen werden. Zusätzlich ist das Zertifkat über ein Passwort gesichert, welches ich aber nur lokal (also auf meinem Rechner) eingeben muss.

Zertifkat für SSH erstellen (private & public key)

Falls Ihr keine eigene PKI-Infrasruktur für die Erstellung und Verwaltung von Zertifikaten betreibt, wird es vermutlich reichen, wenn Ihr das Zertifikat selbst erstellt. In dem Beispiel gehe ich davon aus, dass Ihr ein Zertifikat für den Benutzer ‚myadm‘ einrichten wollt. Dazu öffnet Ihr ein Terminal und haut mal folgenden Befehl raus:

ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/myadm/.ssh/id_rsa): /home/myadm/.ssh/myadm
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/myadm/.ssh/myadm.
Your public key has been saved in /home/myadm/.ssh/myadm.pub.
The key fingerprint is:
SHA256:3X+IXJNfrCRGQPkDs3lpfW5WEgqfI6+UKJ23fZ+gdbA martin@cof0004
The key's randomart image is:
+---[RSA 4096]----+
| .o. |
| =. . |
| O.= . |
| .+o@ ooo|
| .So.++=++| | . + +o.o==|
| . o +oE++o|
| o + +..|
| . . o.|
+----[SHA256]-----+

Bitte das Passwort nicht einfach leer lassen nur weil ‚key-gen‘ sagt es sei optional! Okay, im Ergebnis habt Ihr jetzt zwei neue Dateien im Verzeichnis ‚/home/myadm/.ssh‘ liegen:

myadm – dies ist der private Schlüssel des Zertifkates und wird nie, nie, aber wirklich niemals aus der Hand gegeben!

myadm.pub – ist der öffentliche Teil des Schlüssels, der aber nur mit dem’private key‘ zusammen genutzt werden kann.

Für die Nutzung des privaten Schlüssels ist dann noch das Passwort erforderlich.

SSH Anmeldung mit Zertifkat

Damit sich unser frisch gebackener Admin ‚myadm‘ auch mit dem Zertifkat an dem Server anmelden kann, müssen wir den öffentlichen teil des Zertifkates (also im Beispiel die Datei ‚myadm.pub‘ noch im Benutzerverzeichnis auf dem Server hinterlegen. Das geht ganz einfach mit dem Befehl:

ssh-copy-id -i ~/.ssh/<ZERTIFIKAT>.pub <BENUTZERNAME>@<SERVERNAME>

Der befehl fragt nun nach dem Passwort des Benutzers <BENUTZERNAME> und kopiert dann den öffentlichen Schlüssel des Zertifikats in die Datei ‚/home/<BENUTZERNAME>/.ssh/authorized_keys‘ auf dem Server.

Test

Sehr Wichtig: Nun testen ob die Anmeldung mittels Zertifikat funktioniert!

Dazu öffnet Ihr bitte ein zweites Terminal und versucht Euch mit folgendem Befehl anzumelden.

ssh -i ~/.ssh/<ZERTIFIKAT>.pub <BENUTZERNAME>@<SERVERNAME> 

Nun sollte ’ssh‘ nach Eurem Passwort für die Nutzung den privaten Teil des Schlüssels fragen und sich anschließend sofort automatisch anmelden. Es ist für die nächsten Schritte sehr, sehr wichtig, dass Ihr diesen Zugang testet! Wir stellen nämlich die Konfiguration so um dass man sich zukünftig nur noch mit einem gültigen Zertifikat anmelden kann und es besteht die Gefahr, dass Ihr Euch komplett von dem Server ausschließt…..

Linux Webserver einrichten und betreiben

Hier beschreibe ich eine Möglichkeit wie Ihr Euren eigen Webserver mit Linux einrichten und einigermaßen sicher betreiben könnt.

Wichtig ist, sich darüber im Klaren zu sein, dass die Installation des Servers das Wenigste ist. Wichtiger ist den Server im laufenden Betrieb regelmäßig zu überprüfen und zu warten! Wer dazu keine Lust hat, sollte am Besten gar nicht erst einen eigenen Server betreiben, weil er über kurz oder lang ein Sicherheitsrisiko für sich, seine Benutzer und alles anderen Im Internet darstellt.

Ich beschreibe im Folgenden kurz die Schritte zur Installation unseres Webservers und verweise in den entsprechenden Absätzen auf die jeweilige Detailbeschreibung. Wer es eilig hat oder schon weiß was er will, kann auch im nebenstehenden Kasten direkt auf den Artikel klicken.

Nun fangen wir aber mit der Installation an. Ich gehe davon aus, Ihr habt Euch irgendwo bei einem Hoster einen Server gemietet und bereits ein Ubuntu 16.04 oder 18.04 installieren lassen. Wollt Ihr zuhause einen Server installieren, installiert halt den Minimalen Ubuntu Server mit SSH.

Bitte nehmt für einen Server nur die geraden Ubuntu-LTS-Versionen mit Langzeitsupport!

Nun aber los!

1. ‚root‘ Passwort ändern.

Falls Ihr das Betriebssystem (hier Ubuntu Server 16.04/18.04) selber installiert habt, werdet Ihr schon ein eigenes Passwort vergeben haben. Falls Ihr den Server vorinstalliert vom Hoster übernommen habt, ist der erste Schritt die Einrichtung eines eigenen ‚root‘ Passworts. Wie das geht erfahrt Ihr im Artikel ‚Passwort für Benutzer ‚root‘ ändern

2. Administrative Benutzer einrichten.

Auch dieser Schritt ist wahrscheinlich nicht erforderlich, wenn Ihr Euren Server selber installiert habt. Dann habt Ihr bei der Installation schon einen Hauptbenutzer angelegt, der die Erlaubnis hat mittels ’sudo‘ auch mit ‚root‘ Rechten zu arbeiten. Habt Ihr den Server vom Hoster ist meist nur der Benutzer ‚root‘ vorinstalliert und Ihr solltet einen ‚Administrativen Hauptbenutzer einrichten mit dem Ihr bei Bedarf ‚root‘ Rechte mittels sudo ausüben dürft. Der direkt Zugang von außen (z. B. via SSH) wird für den Hrrn ‚root‘ später aus Sicherheitsgründen gesperrt.

Und hier erfahrt Ihr wie Ihr einen ‚administrativen Hauptbenutzer einrichtet‚.

3. Zertifkatsbasierter Login Hauptbenutzer

Einfach weil es sicherer und komfortabler ist, richten wir den Zugang des Hauptbenutzers so ein, dass ein Zertifikat (= elektronischer Ausweis) mit einem Passwort zur Anmeldung und eindeutigen Identifikation ausreicht.

Wie das im Detail funktioniert erfahrt Ihr im Artikel ‚Zertifikatsbasierten Login für Hauptbenutzer einrichten‚.

4. SSH Server konfigurieren

So, nun ist es Zeit den SSH Server so einzustellen, dass eine direkte Anmeldung des Benutzers ‚root‘ verboten wird und gleichzeitig der Login nur noch über Zertifkate erfolgen darf. Wie das geht, wird im Artikel ‚SSH Server / Deamon konfigurieren‚ beschrieben.

5. System aktualisieren

Nun haben wir ja schon eine einigermaßen sichere Ausgangskonfiguration. Zeit um das ‚System zu aktualisieren‚.

6. Rootkit-Jäger ‚rkhunter‘ installieren

Die Software ‚rkhunter‘ ist eine Art Anti-Schadsoftware-Scanner die sich spezielle auf sogenannte ‚root kits‘ und andere lokale Exploits (Exploits = Sicherheitslücken) prüft. Da die Ausgaben des Programms z. T. techn. Hintergrundwissen verlangt, ist es eigentlich eher etwas für gestandene Admins, aber wir werden uns dem Schritt für Schritt annähern. Zunächst einmal wollen aber den ‚Rootkit- & Exploit-Jäger ‚rkhunter‘‚ installieren.

7. SSH Angriffe ausbremsen mit ‚fail2ban‘

Wer Server im Internet betreibt, kennt das. Täglich hunderte (oder mehr?) Versuche sich auf dem Server per SSH anmelden. Das nervt und müllt die Logfiles voll :-). Dagegen bietet ‚fail2ban‘ das richtige Mittel!

Wird sich von einer IP-Adresse mit einem falschen Passwort angemeldet, wird dieser Versuch von ‚fail2ban‘ registriert. Finden nun 3 Versuche mit falschem Passwort statt, wird diese IP-Adresse für eine Weile gesperrt. Damit werden sogenannte ‚Brute Force Attacken‘ ( = das automatisierte Ausprobieren von vielen, vielen Passwörtern) zwar nicht verhindert aber ganz gewaltig ausgebremst und damit mehr oder minder sinnlos.

Ein schöner Nebeneffekt ist, dass auch nciht mehr soviele Einträge über falsche Anmeldeversuche in der Logdatei auftauchen.

Wie Ihr diese kleine aber feine Software installiert steht im Artikel ‚fail2ban installieren‚.

8. Die Firewall ’shorewall‘ installieren

Okay, die Sache mit der Firewall. Eigentlich ist so eine Firewall bei einem sauber konfigurierten Server nicht wirklich nötig. Wer – wie ich – grundsätzlich prüft, dass auf dem Server wirklich nur die Ports geöffnet sind die ich brauche, braucht so eine Firewall nicht wirklich. Schließĺich prüft die auch nur ob die Nutzung eines Ports erlaubt ist oder nicht.

Aber! Mir ist es schon mehrfach passiert, dass ich beim herum konfigurieren am Server doch versehentlich (und meist nur vorübergehend) einen Port freigeschaltet habe. Schließlich basteln wir hier an sehr komplexen Konfigurationen und da macht man auch schon mal Fehler….

Hier finde ich dann eine Firewall als zweiten „Schutzwall“ ganz hilfreich. Schalte ich nun versehentlich mal einen nicht benötigten Port frei, passiert gar nichts, weil die Firewall diesen Port sperrt solange ich in der Firewall nichts anderes konfiguriere.

Allerdings sollte man hier im Artikel ‚Shorewall – Firewall installieren und einrichten‚ beschrieben Firewall Konfiguration wirklich vorsichtig, langsam und gründlich arbeiten.

Repair Café Gallerie

Repair Café am 20.07.2018

Linux? Wozu? Warum? Weshalb?

Ubuntu: das benutzerfreundliche Betriebssystem für Menschen

Kurz, Linux ist ein modernes, schnelles, komfortablen und auch noch kostenloses Betriebssystem! Ein Betriebssystem wie z. B.. Linux oder Microsoft Windows 10TM und sorgt dafür, dass Dein Computer überhaupt „läuft“.

Jeder Computer braucht also immer zuerst ein Betriebssystem. Davon gibt und gab es schon viele, wie z. B. MS DOSTM, MS WindowsTM, NovellTM, Apple iOSTM oder eben auch Linux

Ein wichtiger Unterschied zu anderen Betriebssystemen ist, dass hinter Linux nicht eine Firma steckt wie z. B. die Firma Microsoft hinter MS WindowsTM. Vielmehr ist Linux ein Gemeinschaftswerk von Anwendern, Entwicklern und Systemadministratoren, Universitäten, Firmen, öffentlichen Einrichtungen und vielen Enthusiasten, welche die Weiterentwicklung von Linux seit über 25 Jahren voran treiben.

Linux: Der Alleskönner

Viele Betriebssysteme sind an eine bestimmte Technologie gebunden. Z. B. ist Microsoft WindowsTM zwar auf den meisten PCs anzutreffen aber so gut wie nie beispielsweise auf einem Navigationsgerät. Oder Apples iOSTM für Mobilgeräte habe ich noch nie auf einer PlayStation laufen sehen.

Einzig Linux ist nahezu überall anzutreffen wo es um Computer geht. Linux läuft auf dem PC und auf dem ältesten Notebook! Linux betreibt aber auch Supercomputer oder Smartphones als Basis für Googles AndroidTM. Linux lässt aber auch Router (wie z.B. als Basis für Fritz!OS) arbeiten, Navigationssysteme, selbstfahrende Autos, Roboter, Technik aus der Luft- und Raumfahrt, Unmengen von Web- und EMail-Servern und vieles was hier in der Liste noch fehlt!

So wundert es fast ein wenig, dass soviel Flexibilität und Können nicht dazu geführt hat, dass Linux auf auch jedem PC zu finden ist. Dies hat aber nichts mit den Fähigkeiten von Linux zu tun, sondern eher mit einer Marktmacht der Firma Microsoft die PC Hersteller dazu bringt, MS WindowsTM vorzuinstallieren und jede neue WindowsTM Version nur mit viel, viel Marketing-Rummel auf den Markt bringt.

Der Quellcode von Linux kann sich jeder herunterladen

Linux hat sich auch deshalb zum Universalgenie in der IT entwickelt, weil jeder – wirklich jeder – den Programm-Code (auch Quellcode genannt) kostenlos nehmen darf und für seine Bedürfnisse anpassen kann. Sich z.B. zusätzliche Funktionen einbauen oder bessere Programme und Tools erstellen. Und viele diese Entwicklungen werden dann genauso kostenlos als „Open Source“ weiter gegeben. Mehr Informationen zum Thema Open Source gibt es übrigens in unserem Artikel „Open Source – Freiheit für das Wissen!“

Linux! Weil Du es schon kennst!

Die Wahrscheinlichkeit, dass Du schon mal mit einem Linux Computer in Berührung gekommen bist, ist ziemlich hoch! Vielleicht hast Du ein Android Tablet oder eine FritzBox zu Hause? Oder vielleicht einen Smart TV?

Linux läuft auf einer Vielzahl an Hardware wie z. B. hier auf dem Raspberry PI

Ach, Du hast gar nicht gemerkt, dass dies ein Linux Gerät war? Ja, so ist Linux. Leise, unaufdringlich und macht einfach seinen Job! Und deswegen mag ich Linux!

Auf dem PC verhält sich Linux nicht anders. Einfache und schnelle Installation und kein Mammut-Lizenz-Code ‚rumgetippe. Ist es einmal installiert und flott gestartet, geht die Ruhe auf dem Desktop weiter. Keine aufdringlichen Meldungen von Sicherheitssoftware, die mir deutlich macht wie wichtig sie doch ist. Nicht 1 Stunde bis zur Anmeldung warten bis das Update durch ist.

Linux hat sich auch deshalb zum Universalgenie in der IT entwickelt, weil jeder – wirklich jeder – den Programm-Code (auch Quellcode genannt) kostenlos nehmen darf und für seine Bedürfnisse anpassen kann. Sich z.B. zusätzliche Funktionen einbauen oder bessere Programme und Tools erstellen. Und viele diese Entwicklungen werden dann genauso kostenlos als „Open Source“ weiter gegeben. Mehr Informationen zum Thema Open Source gibt es übrigens in unserem Artikel „Open Source – Freiheit für das Wissen!“

Linux: Kostenlose Vielfalt

Tux – Das Linux Maskottchen

Die Linux Welt ist bunt. Damit meine ich nicht nur den freundlichen Linux Pinguin, der als Kult-Sysmbol für Linux gilt. Nein, es gibt jede Menge verschiedene „Linuxe“. Z. B. eines ältesten Zusammenstellungen (auf linuxianisch: ‚Distributionen‘) namens Debian. An dem aber nur eingefleischte Systemadmins Freude finden.

Oder das sehr benutzerfreundlich Ubuntu mit einer unglaublich schnellen und hilfsbereiten riesigen deutschen Community. Und zusätzlich gibt es noch tausende von hochwertigen und kostenlosen Programmen! Von ganzen Office Paketen, über Ton- und Video und Grafikbearbeitungen für Profis und Amateure, CAD Software und Programmierumgebungen für Robotor, jede Menge Lösungen für Messaging. Viele kleine und große Programme helfen Dir die Power des Internets voll auszuschöpfen.

Oder Du willst Smart Home Komponenten oder 3D Drucker oder andere Technik  (Arduino, Raspberry u.a.)  selber bauen und programmieren? Auch da hast Du bei Linux alles dabei was Du brauchst.

Linux: Jetzt mache ich mit!

Wenn Du Dich jetzt fragst wie auch Du an Linux kommst, dann ist die nächste Linux User Gruppe eine feine Adresse! Sogenannte LUGs (engl. Linux User Group) haben sich auf der ganzen Welt gegründet um die Nutzung von Linux möglichst vielen Menschen einfach zu ermöglichen. Deine nächste LUG ist natürlich die LUG wERKelenz 🙂

Dort kannst Du Dich beraten lassen und bekommst auch Hilfe bei der Installation und bei Fragen zur Bedienung. Oder Du gehst zu einer der Installationsparties. Da installieren wir in gemütlicher Atmosphäre gemeinsam mit Euch Linux. Tja, Linux und Open Source hat auch viel mit „gemeinsam“  (Community) und „teilen“ (Wissen teilen) zu tun. Aber dazu an anderer Stelle mehr.

Wenn Du jetzt immer noch nicht weißt, dass Du Linux brauchst, solltest Du uns aber unbedingt mal bei einem LUG wERKelenz Treffen besuchen!

System aktualisieren

…. tja, was wohl… na klar! Auf die root-Shell!

Dann Reposirories aktualisieren

apt update

Und vor dem eigentlichen Update erstemal prüfen, was Ubuntu denn so alles aktualisieren möchte

apt -s safe-upgrade

Wenn mit den Aktualsierungsvorschlägen einverstanden sind, führen wir das Update durch

apt safe-upgrade

Fall Kernel oder zentrale Bibliotheken (z. B. libc) aktualisiert wurden, müssen wir den Server einmal neu starten (kann aber auch später gemacht werden…..)

shutdown -r now

…und fertisch!

LUG wERKelenz Treffen

Du hast Interesse an Linux? Dann solltest Du das Treffen der Linux Anwender Gruppe „LUG wERKelenz“ auf keinen Fall verpassen. Also, bis bald!

Du hast überhaupt keine Ahnung was Linux überhaupt ist? Kein Problem, lies einfach unseren Beitrag „Was ist eigentlich Linux“? Aber Vorsicht! Es besteht akute Gefahr sich mit dem Linux-ist-cool-Virus anzustecken!

Shorewall – Firewall installieren und einrichten

Für Shorewall Version 5.0.4

Wie immer als root auf dem Server anmelden und über apt shorewall installieren:

apt install shorewall

Die erforderlichen Konfigurationsdaten aus dem Beispielen heraus kopieren:

cp /usr/share/doc/shorewall/examples/one-interface/interfaces /etc/shorewall/
cp /usr/share/doc/shorewall/examples/one-interface/zones /etc/shorewall/
cp /usr/share/doc/shorewall/examples/one-interface/policy /etc/shorewall/
cp /usr/share/doc/shorewall/examples/one-interface/rules /etc/shorewall/

Und nun die Datei /etc/shorewall/interfaces mit einem Editor öffnen und den Inhalt kontrollieren bzw. entsprechend den nachfolgenden Zeilen anpassen:

##########################################################
#ZONE INTERFACE OPTIONS
net eth0 dhcp,tcpflags,logmartians,nosmurfs,sourceroute=0

OK, das meiste was da steht ist, glaube ich, verständlich. Wir sagen hier im Wesentlichen, dass wir eine Netzwerkkarte eth0 haben, die wir der Zone (kommt gleich…) net zuordnen. Wenn ihr nicht sicher seit ob eure Netzwerkkarte wirklich ‚eth0‘ heißt, schaut bitte in der Datei ‚/etc/network/interfaces‘ nach. Natürlich können hier bei Bedarf auch mehr Interfaces und Zonen definiert werden.

Besonderheit Strato vServer

Beim Strato vServer heißt das Interface nicht ‚eth0‘ sondern ‚venet0‘. Die Einstellungen sind entsprechen anzupassen.

Jetzt die Datei /etc/shorewall/zones mit einem Editor öffnen und den Inhalt kontrollieren bzw. entsprechend den nachfolgenden Zeilen anpassen:

##########################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4

Hier haben wir jetzt zwei Zonen definiert. Einerseits haben wir die Firewall selbst fw als  Zone vom Typ firewall festgelegt. Dabei steht fw letztlich auch als Synonym für den den Rechner selbst, da aller Netzwerkverkehr ja über die Firewall läuft. In der zweiten Zeile definieren wir eine Zone net vom Typ ipv4. Die Zone net hatten wir ja schon zuvor an die Netzwerkkarte eth0 gebunden, somit steht net für den gesamten Netzwerkverkehr der nach außen oder von außen kommt.

Jetzt die Datei /etc/shorewall/policy mit einem Editor öffnen und den Inhalt kontrollieren bzw. entsprechend den nachfolgenden Zeilen anpassen:

############################################################################### #SOURCE DEST POLICY LOG LEVEL LIMIT:BURST $FW net DROP info net $FW DROP info # The FOLLOWING POLICY MUST BE LAST all all REJECT info

Aber was bedeuten diese drei magischen Zeilen? In der Datei policy werden quasi die Grundeinstellungen gesetzt für alle Fälle die in der Datei rules nicht geregelt werden. Diese Einstellung wirr auf DROP gesetzt für den Fall, dass ein ungewollt laufendes Programm irgendetwas nach außen senden will oder Infomation über das Netzwerk sammeln will.
$FW net DROP info – aller Netzwerkverkehr von der Quelle $FW zum Ziel net wird verworfen (DROP). In dem Logfile wird ein bei loglevel info ein Eintrag gesetzt.
net all DROP info – aller Netzwerkverkehr von der Quelle net zum Ziel all wird verworfen (DROP). Logfile, wie vor.
all all REJECT info – Wenn keine von den beiden Regeln zuvor greifen sollte, kommt diese Regel zur Anwendung: Weise allen Netzwerkverkehr von und in alle Richtungen zurück.

Im Ergebnis haben wir nun jeglichen Netzwerkverkehr unterbunden, es sei denn wir definieren in den rules spezifische Regeln für erlaubten Verkehr.

Zu guter Letzt die Datei /etc/shorewall/rules mit einem Editor öffnen und den Inhalt den nachfolgenden Zeilen anpassen. Die standardmäßig vorhanden Ping/DROP Regel, kann gelöscht werden und wir starten mit folgender Mindestkonfiguration:

SSH incoming
SSH(ACCEPT) net $FW
DNS outgoing
DNS(ACCEPT) $FW net
FTP outgoing
FTP(ACCEPT) $FW net
HTTP outgoing
HTTP(ACCEPT) $FW net

Damit sind – recht minimalistisch – nur vier Verbindungen möglich:
1. Mit SSH von außen auf den Firewall
2. DNS Anfragen des Firewallrechners an die Außenwelt
3. FTP vom Firewallrechner ins Netz (für Downloads)
3. HTTP vom Firewallrechner ins Netz

Die ausgehenden DNS, FTP und HTTP Regeln sind alleine schon deswegen erforderlich, da sonst z. B. keine Sicherheitsupdates mehr über Netz installiert werden können.

In der Datei rules können nach Bedarf weitere Ports Schritt für Schritt aufgemacht werden.

Die Konfiguration testen wir schnell auf  Tipp- und/oder Syntaxfehler:

shorewall check

Wenn das soweit fehlerfrei ist bitte die Datei /etc/default/shorewall mit einem Editor öffenn und den Start von shorewall mit folgendem Eintrag erlauben

startup=1

Zum Testen ein wird der Dienst von Hand gestartet (Evtl. Fehler werden angezeigt….):

/etc/init.d/shorewall start

Die laufende SSH-Sitzung sollte i. d. R. durch den Start von shorewall nicht unterbrochen werden. Wenn der Start funktioniert öffnen wir ein weiteres Terminal (lokal) und melden uns dort per SSH auf dem Server an, damit wir sicher sein können, dass wir uns nicht ausgesperrt haben.

Ob der Server nun wirklich so schweigsam ist wie erwartet, können wir mit einem schlichten ping testen. Mit der obigen Konfiguration sollte der Server nicht mal den Hauch einer Antwort auf den Ping geben.

Ach übrigens, die Hersteller von Routern würden diese Konfiguration marketing-gerecht hochtrabend als „Stealth-Mode“ bezeichnen…….

Nun noch den folegenden Befehl eingeben damit Shoreall auch beim Start startet.

systemctl enable shorewall.service

‚fail2ban‘ installieren

fail2Ban durchsucht Logdateien und blockt IP-Adressen, die zu viele fehlgeschlagene Loginversuche haben. Es aktualisiert Firewallregeln (iptables), um diese IP-Adressen zu sperren. Hierdurch werden auch die Logfiles etwas übersichtlicher.

Im derzeitigen Stand der Installation des Linux Basis Servers haben wir als Dienst nur SSH aktiviert. Für diesen Dienst sind in der vom Paket Maintainer mitgelieferten Konfiguration schon Regeln definert, sodass eine weitergehende Konfiguration zum jetztigen Zeitpunkt nicht erforderlich ist. Ggf. ist nach der Installation weitere Dienste auch eine entsprechende Konfiguration erforderlich.

fail2ban ist mit folgenden Schritten schnell installiert:

Als root auf der Shell anmelden und fail2ban per apt installieren und starten

apt install fail2ban
/etc/init.d/fail2ban start

Nun wollen wir testen ob das Programm auch richtig funktioniert. Mit dem folgenden Befehl können wir alle einlog versuche sehen und den Test durchführen.

tail -f /var/log/fail2ban.log

Als nächstes öffnen wir eine neue Shell und versuchen uns mit falschem Passwort anzumelden. Es sollte eine Fehlermeldung kommen und auf der Servershell sollte angezeigt werden das es einen Anmeldeversuch gab. Machen wir das 5 mal, dann sollte nicht mehr ‚found‘ dort stehen sondern ‚Ban‘. Wenn dies der Fall ist haben wir alles richtig installiert.

Gut, nun sind natürlich erst einmal ausgesperrt. Der schnellste Weg dies zu ändern ist es sich eine neue IP-Adresse geben zu lassen. Dazu das DSL Kabel an Eurem Rputer einmal kurz heraus ziehen und wieder einstecken. Alternativ in den Router-Einstellungen die DSL Verbindung neu herstellen lassen.