Kostenlose Zertifikate mittels Certbot

Insbesondere in der heutigen Zeit tragen (kostenlose) Zertifikate erheblich zur Reputation eurer Website bei. In der folgenden Anleitung erläutere ich, wie ich Zertifikate ohne & mit der Verwendung von Cloudflare nutze.

Um den Prozess zu vereinfachen, empfehle ich bereits im voraus vHosts angelegt zu haben.

1. Zu Beginn aktualisieren wir alle Pakete auf dem Server.

apt update && apt upgrade -y

2. Anschließend installieren wir certbot.

apt -y install certbot

3. Nachdem die Installation durchgeführt wurde, könnt ihr mit dem folgenden Befehl eure Zertifikate erstellen.

certbot

Durch die bereits angelegten vHosts könnt ihr nun eure Domains auswählen.

Sofern die Zertifikate erfolgreich erstellt worden sind, erhaltet ihr folgende Meldung:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/linuxpirat.de/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/linuxpirat.de/privkey.pem
   Your certificate will expire on 2022-07-17. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Die Zertifikate werden automatisch erneuert, manuell können diese jedoch mit certbot renew erneuert werden.

Zertifikate mit Cloudflare nutzen

Durch die Nutzung eines DNS-Dienstes wie beispielsweise Cloudflare ist die Verwendung von den Zertifikaten leider nicht ganz so simpel.

Bei der ersten Methode könnt ihr das Zertifikat beantragen. Anschließend müssen händisch TXT-Records erstellt werden.

certbot -d linuxpirat.de --manual --preferred-challenges dns certonly
Please deploy a DNS TXT record under the name
_acme-challenge.linuxpirat.de with the following value:

75fbd40640a99925d20efa1d1d23ae2750968fd4

Once this is deployed,
Press ENTER to continue

Nachdem der Wert in einem TXT-Record ist, könnt ihr nach einer kurzen Wartezeit mit Enter bestätigen und den Record wieder löschen.

Bei erstmaliger Erstellung müsst ihr noch folgende Werte im Cloudflare User-Panel anpassen:

SSL/TLS Reiter öffnen.
Den Verschlüsselungsmodus auf Vollständig (strikt) umschalten.
Den Reiter Edge-Zertifikate aufrufen.
„Immer HTTPS verwenden“ anschalten, TLS-Mindestversion auf 1.1.

Ihr habt es geschafft! Nun hat eure Website über Cloudflare ein gültiges Zertifikat. Ungünstigerweise ist es immer ein wenig nervig, die Records händisch einzutragen und wieder zu löschen. Vergisst man mal die Erneuerung, können Besucher nicht auf eure Website.

Zum Glück gibt es für das Problem auch eine Lösung, denn mittels der API von Cloudflare und einem certbot-Plugin werden die Einträge automatisch erstellt und wieder gelöscht. Dafür müsst ihr folgendes Paket installieren

apt install certbot python3-certbot-dns-cloudflare

Je nach Webserver, den ihr verwendet, ist noch eine kleine Anpassung nötig. Solltet ihr standardmäßig nginx benutzen, ist keine Anpassung nötig. Bei Apache entsteht jedoch folgendes Problem: das Plugin von certbot nutzt nginx, bei simultaner Ausführung haben die beiden Webserver jedoch dieselben Ports von 80 beziehungsweise 443. Installiert daher nginx, öffnet die default Konfiguration von nginx und ändert den Port zu einem nicht benutzen.

apt install nginx -y
nano /etc/nginx/sites-available/default
Ich habe testweise den Port 1337 nginx zugewiesen.

Nun sollte es keine Probleme geben, wenn man standardmäßig Apache nutzt.

Damit sich das Plugin in euren Account einloggen kann, müssen wir noch die Zugangsdaten hinterlegen.

cd
mkdir .credentials
nano /root/.credentials/cloudflare.ini
chmod 600 /root/.credentials/cloudflare.ini

In der neu erstellten cloudflare.ini Datei tragt ihr euren Global API Key von Cloudflare ein.

# Cloudflare API credentials used by Certbot
dns_cloudflare_email = [email protected]
dns_cloudflare_api_key = 111111111111111111111111111111

Abschließend könnt ihr eure Zertifikate vollautomatisch erstellen oder erneuern lassen. Dabei muss einmalig folgender Befehl ausgeführt werden:

certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.credentials/cloudflare.ini -d linuxpirat.de

Nach erfolgreicher Erstellung oder Verlängerung erhaltet ihr wieder wie folgt eine Bestätigung

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
...

Sollte das Zertifikat noch nicht erkannt worden sein, installiert das Zertifikat erneut.

root@linuxpirat:/etc/nginx/sites-available # certbot
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: linuxpirat.de
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry.
(ref: /etc/letsencrypt/renewal/linuxpirat.de.conf)

What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Attempt to reinstall this existing certificate
2: Renew & replace the certificate (may be subject to CA rate limits)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Keeping the existing certificate
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/linuxpirat.de
Traffic on port 80 already redirecting to ssl in /etc/nginx/sites-enabled/linuxpirat.de

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://linuxpirat.de
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Teamspeak 3 Musikbot

Ein Bot kann für einen Teamspeak Server sehr hilfreich und nützlich sein. Natürlich kann man damit Musik oder Radios abspielen, aber auch Skripte wie beispielsweise ein Ticketsystem ist hilfreich. Den Bot manuell zu installieren war keine Kunst, es gibt aber mittlerweile ein Autoinstaller von Philipp Eßwein unter dem Link.

Kopiert den Link des Skriptes und führt dieses auf eurem Server aus.

„What should the installer do“ – (1) Install
Startscript directory – (1) Automatic
Teamspeak/Discord Mode – (1) Both
Terms of use – (2) Yes
Install Youtube downloader – (1) Yes
Update system packages – (1) Yes

Anschließend müssen noch den Teamspeak Lizenzbestimmungen zugestimmt werden, dafür einfach die Anweisungen im Installer beachten. Anschließend ist euer Bot auf domain.tld:8087 oder ip:8087 verfügbar. Das Passwort wird am Ende der Installation ausgegeben, bitte nach dem ersten Einloggen verändern

Teamspeak 3 Installation

1. Pakete und Repositorys aktualisieren

apt update && apt upgrade

2. Benutzer für den Teamspeak 3 Server erstellen. Es ist empfohlen, den Server nicht mit root-Rechten zu starten.

adduser --disabled-login teamspeak

3. Zum eben erstellten Teamspeak-Benutzer wechseln

su teamspeak
cd

4. Die Teamspeak Server Dateien der aktuellen Version herunterladen. Es kann vorkommen, dass bereits eine neuere Version verfügbar ist.

wget https://files.teamspeak-services.com/releases/server/3.13.6/teamspeak3-server_linux_amd64-3.13.6.tar.bz2

5. Anschließend die heruntergeladenen Daten entpacken.

ls
tar xfvj teamspeak3-server_linux_amd64-3.13.6.tar.bz2

Für eine genauere Erklärung des zweiten Befehls verweise ich auf einen weiteren Artikel von mir.

6. Die Datei wurde nun entpackt. Die nicht benötigte Datei kann gelöscht werden und anschließend in das Zielverzeichnis navigiert werden.

rm teamspeak3-server_linux_amd64-3.13.6.tar.bz2
cd teamspeak3-server_linux_amd64

7. Um den Server starten zu können, müssen den Lizenzbestimmungen von Teamspeak zugestimmt werden.

touch .ts3server_license_accepted

8. Der Teamspeak-Server ist nun startklar.

./ts3server_startscript.sh start

Beim erstmaligen Start erscheint der einmalige Token und die Query-Daten, welche in jedem Fall notiert werden sollten! Mittels den Query-Daten könnt ihr euch beispielsweise über YaTQA einloggen und den Voiceserver verwalten.


Troubleshooting

1. Server Query Admin Passwort zurücksetzen

./ts3server_startscript.sh start serveradmin_password=DEINPASSWORT

2. Server startet nicht? Überprüfe, ob der Server bereits läuft und ob die Lizenzbestimmungen akzeptiert worden sind.

SSH absichern

Die Anleitung zeigt, wie man seinen Server mithilfe von Keys absichert. Additional können auch noch weitere Sicherheitseinstellungen vorgenommen werden, dazu aber später. Ich empfehle euch auf der offiziellen Seite von PuTTY den Installer herunterzuladen, ansonsten benötigt ihr PuTTY und PuTTYgen um eure Keys zu erstellen. Befolgt die Anleitung bitte genau, sonst kann es dazu führen, dass ihr aus dem System ausgesperrt werdet.

PuTTY herunterladen

1. Als Erstes öffnen wir PuTTYgen, um unser Schlüsselpaar zu erzeugen. Das Schlüsselpaar besteht aus einem privaten und öffentlichen Schlüssel. Bitte überprüft, dass das rot markierte Feld mit eurem übereinstimmt.

2. Als Nächstes drückt ihr zunächst auf „Generate“ und bewegt eure Maus in dem oberen Feld.

3.1 Wenn der Schlüssel generiert ist, habt ihr im Feld euren „public key“, dieser wird in den nächsten Schritten auf dem Server gespeichert wird.

3.2 Im zweiten Feld habt ihr nun drei Felder, die ihr verändert. Der „Key Fingerprint“ ist salopp gesagt nur ein Name für eueren Schlüssel. Der Name wird während des Login Vorgangs angezeigt. Zu Demonstrationszwecken tippe ich ‚linuxpirat.de-sshkey‘ ein.

3.3 Die anderen beiden Eingabefelder (key passphrase & confirm passphrase“) dienen der Authentifizierung, hier gebt ihr ein Passwort eurer Wahl ein.

3.4 Im dritten Feld könnt ihr euch nun euren privaten Schlüssel abspeichern. Klickt auf den im Bild gelb unterlegten Button und speichert ihn ab. Ich empfehle, den Schlüssel separat auf einen USB-Stick zu speichern.

Wenn der Schlüssel abgespeichert ist, sollte es wie folgt aussehen:

4. Loggt euch in euren Server als root Benutzer ein. Erstellt das Verzeichnis für euren public Key.

mkdir ~/.ssh
chmod 700 ~/.ssh

5. Erstellt nun mit vi oder dem Editor nano eine Datei in dem neu erstellen Verzeichnis.

nano ~/.ssh/authorized_keys

6. Jetzt kopiert ihr euren public key in die Datei.

7. Schließt die Datei mit STRG + X und bestätigt die Speicherung mit „y“ und Enter.

8. Die Datei darf nur von dem Benutzer beschreibbar oder lesbar sein, deshalb führen wir folgenden Befehl aus:

chmod 600 ~/.ssh/authorized_keys

9. Bevor wir uns selbst ausschließen, testen wir, ob wir uns mit dem Key anmelden können. Öffnet PuTTY ein zweites Mal.

10. Gebt wie gewohnt eure IP-Adresse des Servers ein und klickt in der linken Spalte auf SSH, bis der Menüpunkt „Auth“ zu sehen ist. Wählt hier euren abgespeicherten Key aus, in meinem Fall „server-key“.

11. Navigiert zurück in das Hauptmenü. Im dritten Feld habt ihr nun die Möglichkeit, einen beliebigen Namen für euren Server einzutippen. Speichert im Anschluss die Einstellung ab

12. Der Server scheint den Schlüssel zu akzeptieren. Es erscheint euer „Name“ für den Schlüssel.

13. Ihr müsst nun euer Passwort/Passphrase eingeben, was zuvor im PuTTYgen festgelegt worden ist. Wenn ihr bis hier hin die Anleitung richtig ausgeführt habt, solltet ihr euch einloggen können.

14. Abschließend müssen wir den Server auf unseren Schlüssel anpassen. Schließlich soll sich keine Person ohne den Key einloggen können. Öffnet die ssh Konfigurationsdatei mit:

nano /etc/ssh/sshd_config

15. In der Datei müsst ihr folgende Werte verändern:

PasswordAuthentication no
UsePAM no
Protocol 2

PasswordAuthentication von ‚yes‘ auf ’no‘
UsePAM von ‚yes‘ auf ’no‘
Unter UsePAM schreibt ihr „Protocol 2“

16. Additional könnt ihr euren Port auf eine beliebige Zahl ändern. Als Beispiel nehme ich 2000. Dies erhöht die Sicherheit zusätzlich.

17. Schließt die Datei mit STRG + X und bestätigt die Speicherung mit „y“ und Enter.

18. Um die Änderung wirksam zu machen, müsst ihr euren ssh Dienst neustarten:

/etc/init.d/ssh restart

Fertig! Euer Server ist weitestgehend von ungewolltem Zugriff geschützt. Ich erinnere euch erneut, speichert eure private Schlüsseldatei extern ein zweites Mal ab.


Troubleshooting

  • Stellt sicher, dass ihr in PuTTY eure Schlüsseldatei ausgewählt habt. Wenn der Port geändert wurde, muss dieser auch in PuTTY bei den Verbindungseinstellungen geändert werden!
  • Wenn euch nun der SFTP Zugriff verweigert wird, stellt sicher, dass auch hier der Schlüssel angegeben wurde.

Was macht der Befehl?

Als ich ein unerfahrener Nutzer war, und lange hieroglyphische Befehle mit einer endlosen Kette an Parametern in der Suchmaschine gefunden habe, wusste ich im Grunde nie, was die angehängten Parameter bewirken.

Als Beispiel greife ich den Befehl aus einer meiner Beiträge auf

lsof -i -P -n

Was macht der Befehl und was bedeuten die angehängten Parameter dort?

Relativ spät habe ich eine sehr nützliche Seite gefunden, die mir heute noch hilft, unbekannte Befehle schneller zu verstehen.

explainshell.com

Auf dieser Seite könnt ihr eure Befehle eingeben, und erhaltet eine Auflistung mit der genauen Funktionsweise.

Hilfreiche Befehle

Hin und wieder benötigt man Befehle, die man sich als Anfänger schlichtweg nicht merken kann. Deshalb gibt es eine grobe Übersicht von Befehlen, die ich im Alltag nützlich finde.

Verfügbare Festplatten und deren Größe:

df -h

Aktuellen Traffic anzeigen


Der farbige Bandbreitenmesser (Color Bandwidth Meter) zeigt den aktuellen Netzwerkverkehr von allen Netzwerkgeräten auf einer einfachen Oberfläche an. Das Paket muss zuerst auf eurem Betriebssystem installiert werden:

apt install -y cbm

Anschließend kann die Oberfläche geöffnet werden

cbm

Laufende Prozesse & belegte Systemressourcen einsehen


Hierbei gibt es zwei ziemlich bekannte Wege, top und htop. Letzteres ist nur mit einer Installation möglich.

top

Und htop

apt install -y htop
htop

Beide Übersichten können mit der Taste ‚q‘ geschlossen werden.

Verwendete Ports auflisten

Gerade zu Beginn, während man seinen Server konfiguriert und mehrere Programme installiert, kann es vorkommen, dass man plötzlich eine Fehlermeldung wegen eines bereits verwendeten Port erhält. Um herauszufinden, welches Programm welchen Port beansprucht, kann man folgenden Befehl nutzen:

lsof -i -P -n | grep LISTEN

Systeminformationen auslesen

Um eine gut übersichtliche und ausreichende Übersicht über mein System zu erhalten nutze ich das Paket inxi.

apt install -y inxi
inxi -Fx