Einrichtung und Härtung eines Linux-Webservers

Dies ist unsere Dokumentation für unsere Projektaufgabe, einen Linux-Webserver einzurichten und zu härten. In dieser Dokumentation wird der Ablauf des Installationsprozesses sowie die Einrichtung des Webservers und dessen Härtung genau dargelegt. 

Beginn der Doku: –

Abschluss der Doku: 19.08.2024

Dokumentation ist: beendet 

1. Aufgabenstellung und Ziel

Unsere Aufgabe ist es, einen virtualisierten Webserver zu erstellen, mit Wireshark etwaige Schwachstellen und Angriffsvektoren zu ermitteln und besagten Server zu härten. Zusätzlich soll ein Konzept und eine Dokumentation über unser Vorgehen erstellt werden. 

2. Benötigte Software und Hardware

Hardware:

  • Hyper-V-fähiger Computer/Laptop/Server
  • Router mit Breitbandanschluss

Software:

  1. Windows 11
  1. Linux Ubuntu 22.04 (Distribution ist generell egal, die zu installierende Software kann variieren)

3. Wahl der Hardware

Stellen Sie sicher, dass die Hardware für Virtualisierung geeignet ist. Sollte man die Virtualisierung direkt auf dem eigenen Rechner oder Laptop starten wollen, ist der nachfolgende Schritt nicht nötig. In unserem Fall verwenden wir einen bereits durch RDP erreichbaren Server von Jack. Um die Virtualisierung zu starten, verbinden Sie sich mittels „Remotedesktopverbindung“ auf den Server. Tragen Sie die Adresse des Servers ein und klicken Sie auf „Verbinden“. Anschließend müssen die Login-Daten eingetragen werden.

4. Installation eines virtualisierten Servers

Als Erstes sollten Sie sicherstellen, dass Hyper-V auf Ihrem Computer bereits vorinstalliert ist. Ist das nicht der Fall, liegt das unter Umständen an einer alten Windows-Version. Stellen Sie sicher, dass Windows auf dem neuesten Stand ist.

Öffnen Sie Hyper-V, indem Sie es in der Suchleiste eingeben. Nach dem Öffnen sehen Sie eine leere Maske, die in drei Spalten eingeteilt ist. In der rechten Spalte unter dem Namen „Aktionen“ finden Sie den Schalter „Verbindung mit dem Server herstellen“. Klicken Sie darauf und erstellen Sie einen lokalen Server. Nach der Einstellung sehen Sie in der rechten Spalte deutlich mehr Schaltflächen.

Klicken Sie in der rechten Spalte auf „Schnellinstallation…“. Ein neues Fenster mit Installations-Images öffnet sich. Wählen Sie hier „Ubuntu 22.04 LTS“ und klicken Sie auf „Virtuellen Server erstellen“. Alternativ können Sie auch über den Schalter „Neu“ einen virtuellen Server mit erweiterten Einstellungen und einer ISO-Datei einrichten. Falls Sie das tun, werden einige Punkte in der Dokumentation nicht hilfreich sein.

Sobald der Server erstellt wurde, haben Sie die Möglichkeit, auf „Verbinden“ oder „Einstellungen bearbeiten…“ zu klicken. Beides können wir ignorieren. Schließen Sie zuerst das Fenster und klicken Sie in der rechten Spalte mit der Überschrift „Aktionen“ auf „Manager für virtuelle Switches…“. Klicken Sie auf „Extern“ und dann auf den Schalter „Virtuellen Switch erstellen“. Geben Sie Ihrem neuen Switch einen Namen und klicken Sie anschließend unter dem Reiter „Verbindungstyp“ auf das Dropdown-Menü. Wählen Sie in dem Dropdown-Menü Ihre Netzwerkkarte und stellen Sie sicher, dass das Kästchen direkt unter dem Dropdown-Menü angewählt ist. Klicken Sie anschließend auf „Anwenden“ und „OK“. 

Mit dieser Switch-Konfiguration stellen wir sicher, dass die VM später in unserem Router als eigenständiges Gerät gelistet wird. Rechtsklicken Sie jetzt die zuvor erstellte VM (sollte in unserem Fall den Namen „Ubuntu 22.04 LTS“ haben) und klicken Sie auf „Einstellungen“. In den Einstellungen können Sie die Konfiguration der VM vornehmen. Für uns ist gerade nur die „Netzwerkkarte“ unter dem Reiter „Hardware“ wichtig. Klicken Sie darauf: Es sollten sich die Netzwerkeinstellungen öffnen. Unter „Virtueller Switch“ befindet sich ein Dropdown-Menü, klicken Sie darauf und wählen Sie die zuvor erstellte Netzwerkkarte aus. Im Anschluss wieder auf „Anwenden“ und „OK“ klicken. Rechtsklicken Sie erneut die VM und drücken Sie auf „Verbinden“. Es öffnet sich ein Fenster. Klicken Sie dort auf die Schaltfläche „Start“, um die VM zu starten.

5. Einrichtung der VM

Sobald Sie die VM gestartet haben, richten Sie bitte einen Nutzer ein. Da wir eine Distribution mit grafischer Oberfläche nutzen, sollte dieser Schritt selbsterklärend sein. Wichtig ist dennoch, ein starkes Passwort zu wählen, damit hier kein Angriffspunkt entsteht. Nach der erfolgreichen Einrichtung öffnet sich ein XRDP-Fenster.

XRDP kommt im Image vorinstalliert und erleichtert das Kopieren und Einfügen von Dateien und Texten von der Windows-Maschine zur Linux-VM. In der Maske müssen die zuvor in der Linux-Benutzereinrichtung ausgewählten Login-Daten eingetragen werden. Danach muss man sich noch in die Linux-VM mit denselben Login-Informationen einloggen.

6. SSH und Nginx

Nachdem Sie sich in Linux eingeloggt haben und auf dem Home-Screen sind, klicken Sie auf das Symbol mit 9 Vierecken am unteren linken Bildschirmrand. Es öffnet sich ein Menü mit mehreren Anwendungen, klicken Sie auf „Terminal“. Alternativ können Sie „Terminal“ auch in die Suchleiste eingeben, die sich am oberen Bildschirmrand befindet. Hier öffnet sich jetzt das Terminal, mit dem wir den Großteil unserer Arbeit machen werden.

Als erstes müssen wir den SSH-Server installieren und einrichten, damit wir und potenzielle Webentwickler darauf arbeiten können, ohne dass sie Zugriff auf unsere Hardware haben. Mit dem Zugriff über SSH können wir auch im späteren Verlauf die Sicherheit drastisch erhöhen.

6.1 Installation von SSH

Als erstes müssen wir den APT-Cache des Systems updaten, da es unter Umständen die Pakete, die wir brauchen, nicht finden kann. Dazu verwenden wir folgenden Befehl im Terminal:

$ sudo apt update

Als nächsten Schritt installieren wir die SSH-Anwendung inklusive Serverfunktion:

$ sudo apt install openssh-server openssh-client

An dieser Stelle kann auch noch einmal geprüft werden, ob SSH schon läuft mit folgendem Befehl:

$ sudo systemctl status ssh

Da es uns in erster Linie bei unserem Server um Härtung geht, richten wir hier direkt auch die Firewall-Einstellungen mittels UFW ein. Dazu müssen folgende Befehle ausgeführt werden:

$ sudo ufw allow ssh  # neue Regel für SSH
$ sudo ufw status  # Status abrufen
$ sudo ufw enable  # falls der Service offline sein sollte

Damit wäre SSH schon einmal installiert. Zu SSH kommen wir später noch einmal, als nächstes installieren wir Nginx.

6.2 Installation von Nginx

Öffnen Sie dazu wieder das Terminal und geben Sie folgendes ein:

$ sudo apt install nginx

Nach der Installation kann der Nginx-Service mit folgenden Befehlen gestartet, gestoppt und neugestartet werden:

$ sudo service nginx start
$ sudo service nginx stop
$ sudo service nginx restart

Starten Sie den Nginx-Server. Nach der Installation kann der Webserver über die IP-Adresse schon gefunden werden, sofern die HTTP-IP schon freigegeben wurde. Zur Portfreischaltung kommen wir später. Unter dem Verzeichnis /etc/nginx können jetzt auch Einstellungen an Nginx vorgenommen werden. Unter var/www/ finden wir die HTML-Datei, die wir später noch benötigen.

7. Benutzer und Gruppen

Zuerst sollte man sich eine Nutzer- und Berechtigungsstruktur überlegen, die für den Anwendungszweck passend ist. Als Beispiel: jemand, der unsere Website designen soll, braucht keinen Root-Zugriff.

Unsere Struktur ist wie folgt:

  • Root: allem übergeordnet.
  • Webadmins: haben erweiterte Administratorrechte, aber keinen Root-Zugriff.
  • Webdevs: haben Rechte zum Bearbeiten und Einfügen, können Server neustarten.
  • Webcontent: darf nur bearbeiten, hat keine erweiterten Rechte.

Als nächstes müssen die Nutzergruppen, die wir uns hier überlegt haben, erstellt und konfiguriert werden. Das geht mit folgenden Befehlen:

$ sudo groupadd webadmins

$ sudo groupadd webdevs

$ sudo groupadd webcontent

Um die Gruppen „webadmins“, „webdevs“ und „webcontent“ zu erstellen.

$ sudo chown -R root:webadmins /var/www

Um die Gruppen „root“ und „webadmins“ als Besitzer des Verzeichnisses festzulegen.

$ sudo chmod -R 750 /var/www

Das Verzeichnis kann nur noch vom Besitzer ausgeführt, beschrieben und gelesen werden, andere Gruppen dürfen nur noch lesen.

$ sudo mkdir /var/www/html

$ sudo mkdir /var/www/logs

$ sudo chown -R www-data:webcontent /var/www/html

$ sudo chown -R www-data:webadmins /var/www/logs

$ sudo chmod -R 775 /var/www/html

$ sudo chmod -R 750 /var/www/logs

Die ersten beiden Befehle werden benutzt, um die Verzeichnisse „html“ und „logs“ zu erstellen. Die beiden darauffolgenden um die Nutzerrechte so zu bearbeiten, dass „webcontent“ und „webadmins“ ihre Arbeiten ausführen können.

$ sudo adduser nutzername webadmins

$ sudo adduser nutzername webdevs

$ sudo adduser nutzername webcontent

Um einen Nutzer zu der entsprechenden Gruppe hinzuzufügen.

Beispiel:

$ sudo adduser maxmuster webcontent

Um einen Benutzer namens „maxmuster“ zu der Gruppe „webcontent“ hinzuzufügen.

Mit diesen Einstellungen stellen wir sicher, dass nur die Leute Zugriff haben, die es auch sollen. Die Nutzer müssen sich im Terminal nicht einloggen, das kann auch über SSH funktionieren. Dazu müssen die Nutzer über das Terminal SSH aktivieren und der Gruppe hinzufügen:

$ sudo groupadd ssh

$ sudo adduser nutzername ssh

8. Firewall

Nachdem wir jetzt die groben Nutzereinstellungen eingerichtet haben, sollten wir uns um die Firewall kümmern. Wir benutzen dazu das vorher bereits angesprochene UFW. Es ist in der Regel bei Ubuntu-Distributionen vorinstalliert und muss nur aktiviert werden. Dazu geben Sie folgendes ins Terminal ein:

$ sudo ufw enable

$ sudo ufw status

Um UFW zu aktivieren und den Status abzurufen.

Zusätzlich zu dem bereits freigegebenen SSH-Port, den wir vorher hinzugefügt haben, müssen wir noch die Ports für HTTP und HTTPS freigeben:

$ sudo ufw allow http

$ sudo ufw allow https

Wenn die Regeln korrekt konfiguriert sind, muss sich jetzt die Konfigurationsmaske von UFW öffnen. Tragen Sie die entsprechenden Ports ein und speichern Sie die Änderungen. Zum Abschluss müssen wir Nginx noch in der UFW registrieren, damit die Anwendung auch die Verbindungen empfangen und richtig verarbeiten kann. Dazu geben Sie im Terminal folgendes ein:

$ sudo ufw allow ‚Nginx Full‘

Mit diesem Schritt haben wir die Firewall-Einstellungen soweit eingerichtet, dass unser Server jetzt sicher über das Internet erreicht werden kann. Weitere Regeln können über das Terminal erstellt und bearbeitet werden. Wir werden später auf einige spezielle Einstellungen eingehen.

9. Wireshark

Um unseren Server zu überwachen und auf etwaige Schwachstellen zu prüfen, benutzen wir Wireshark. Es ist ein Open-Source-Programm, das Netzwerkverkehr in Echtzeit überwacht und analysiert. Sie können es kostenlos von der offiziellen Wireshark-Website herunterladen.

9.1 Installation von Wireshark

Installieren Sie Wireshark auf Ihrem Windows-Rechner oder Ihrer Linux-VM. Starten Sie das Programm und wählen Sie das Netzwerkinterface aus, das Sie überwachen möchten. In unserem Fall ist das die Netzwerkkarte, die Sie in Hyper-V konfiguriert haben.

9.2 Nutzung von Wireshark

Starten Sie die Aufnahme und lassen Sie sie einige Zeit laufen, während Sie den Server normal verwenden. Sie können den Netzwerkverkehr analysieren und nach verdächtigen Aktivitäten oder Sicherheitslücken suchen. Speichern Sie die Aufnahmen und nutzen Sie sie zur späteren Analyse und Härtung des Servers.

10. Härtung des Webservers

Nach der Installation und Konfiguration unseres Webservers sollten wir Maßnahmen zur Härtung des Servers ergreifen. Dazu gehören das Einspielen von Sicherheitsupdates, das Konfigurieren von sicheren Passwörtern, das Einschränken von Benutzerrechten und das Überwachen von Serveraktivitäten.

10.1 Sicherheitsupdates

Stellen Sie sicher, dass alle Pakete auf dem neuesten Stand sind:

$ sudo apt update && sudo apt upgrade -y

10.2 Passwortrichtlinien

Erstellen Sie starke Passwortrichtlinien und erzwingen Sie regelmäßige Passwortänderungen. Dazu können Sie die PAM-Module verwenden.

10.3 Benutzerrechte

Stellen Sie sicher, dass Benutzer nur die minimal notwendigen Rechte haben. Nutzen Sie dafür die in Abschnitt 7 beschriebenen Methoden.

10.4 Überwachung

Nutzen Sie Tools wie Wireshark und Systemprotokolle, um den Server kontinuierlich zu überwachen. Erstellen Sie regelmäßige Backups und überprüfen Sie diese auf Integrität.

11. AppArmor

Mit AppArmor können wir die Rechte von Programmrechten einschränken. Was wichtig ist, denn falls es jemand gelingen sollte durch eine Sicherheitslücke, eines Programmes, Zugriff auf unser System zu erlangen und größeren Schaden anzurichten. Im Verlauf werden wir die Zugriffsrechte von Nginx einschränken.

Als erstes muss AppArmor und AppArmor-Utils installiert werden, AppArmor ist in unserer Distribution zwar schon vor installiert, „Utils“ noch nicht. Hier ist die Commands zum Installieren von AppArmor und AppArmor-Utils:

$ sudo apt install apparmor 

$ sudo apt install apparmor apparmor-utils

Im nächsten Schritt aktivieren wir AppArmor und starten es.

$ sudo systemctl enable apparmor 

$ sudo systemctl start apparmor

Jetzt müssen wir die config-Datei für AppArmor und Nginx öffnen.

$ sudo nano /etc/apparmor.d/usr.sbin.nginx

Hier Kopiert ihr folgenden Text rein (Solltet ihr noch mit PuTTY eingeloggt sein vergesst nicht, dass hier mit „Shift+Einfg“ eingefügt wird):

#include <tunables/global>

/usr/sbin/nginx {

#include <abstractions/base>

#include <abstractions/nameservice>

#include <abstractions/user-tmp>

#include <abstractions/apache2-common>

capability net_bind_service,

capability setgid,

capability setuid,

capability dac_override,

/usr/sbin/nginx mr,

/etc/nginx/** r,

/usr/share/nginx/** r,

/var/www/** r,

/var/log/nginx/**rw,

/run/nginx.pid w,

deny /home/*/ r,

deny /home/*/ rw,

/var/lib/nginx/** rw,

}

Danach wie gewohnt speichern und die Datei verlassen.

Kurz zur Erklärung:

Die ersten 4 Zeilen mit der „#“ davor sind dafür, um eigene Parameter einzubinden.

 Die vier Zeile mit „Capability“ sind zum Setzen von Systemrechten, z.B. „net_bind_service“ ist für die Einbindung an Ports zuständig. Alles darunter ist zum einschränke der Order Zugriffe, z.B. verbieten die „deny/home*“ Zeilen den Zugriff auf sämtliche Nutzer „Homer“ Verzeichnisse.

Nach dem Speichern müssen wir in AppArmor die Profile laden und in den Enforce-Modus setzen. 

$ sudo apparmor_parser –r /etc/apparmor.d/usr.sbin.nginx 

$ sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx

Sollte der Command „aa-enforce“ nicht funktionieren, ist die Zusatz Anwendung „Apparmor-utils“ wahrscheinlich nicht installiert.

WICHTIG: Sollte nach der Änderung der Datei die Website nicht mehr aufrufbar sein schau mit: 

$ sudo tail /var/log/syslog | grep apparmor 

in den Logfile nach Fehlern.

12. Nmap

Kurz zu Nmap, Nmap ist eine Anwendung, mit den man Netzwerke scannen kann und mit NSE (Nmap Script Engine) auch Daten auslesen oder Manipulieren kann.

Für Nmap brauchen wir in der Regel auch keine extra Hardware, wir haben einfach die selbe VM genutzt.

WICHTIG: Nmap ist ein sehr mächtiges, aber auch gefährliches Netzwerk-Tool, beim Verwenden von Nmap solltet ihr IMMER das Einverständnis der Person haben, die ihr scannt. 

Wir gehen hier auch nicht weiter auf die Benutzung von Nmap als wir müssen, für mehr Informationen, schau bitte auf Nmap.org Zuerst müssen wir Nmap auf unserer VM installieren. Das heißt wir loggen uns zuerst über SSH oder direkt auf unsere VM in unser Profil ein und benutzen Folgenden Command im Terminal:

$ sudo apt install nmap

Nach erfolgreicher Installation ist Nmap direkt einsetzbar. Es Empfiehlt sich als erstes ein nicht-modifizierten Scan durchzuführen um offene Port und damit Angriffsvektoren zu finde:

$ nmap “target”

Da es sich hier um ein Heimnetz handelt, veröffentlichen wir die Notizen in einem separaten Dokument (Sie sind nicht Online zu finden, „Sorry Stranger:P“)

Starting Nmap ( https://nmap.org )

 Interesting ports on scanme.nmap.org (64.13.134.52):

 Not shown: 994 filtered ports 

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 4.3 (protocol 2.0)

25/tcp closed smtp 

53/tcp open domain ISC BIND 9.3.4 

70/tcp closed gopher

80/tcp open http Apache httpd 2.2.2 ((Fedora)) 

|_ HTML title: Go ahead and ScanMe! 

113/tcp closed auth

 Device type: general purpose Running: Linux 2.6.X OS details: Linux 2.6.20-1 (Fedora Core 5)

Hier kann man sehen das der Port für SSH und http offen ist, genau die beiden solltet ihr auch bei euch angezeigt bekommen. Darauf können wir zurückgreifen, wir haben uns für SSH entschieden. Darauf können wir zurückgreifen, wir haben uns für SSH entschieden.

12.1 NSE(Nmap Script Engine) 

Wir nutzen hier online Scripts der Einfachheit halber, mit erweiterten Kenntnissen in Netzwerktechnik und Lua kann man sich auch eigene Scripts schreiben. 

Darauf können wir zurückgreifen, wir haben uns für SSH entschieden, als Angriffsziel(Anmerkung: mit besseren Nmap Kenntnissen wäre es wahrscheinlich möglich gewesen root Access zu bekommen). 

Als erstes wollten wir herausfinden, welche Schlüsselalgorithmus unterstützt wird. Damit wir auch sehen, ob wir generell eine Chance haben, einen Key zu greifen. 

Das alles wird nun mit Scripts gemacht.

12.2 Nmap-SSH2-Enum-Algos

Das Command und der Output für sehen so aus: 

$ nmap –p22 hostadresse –script ssh2-enum-algos 

PORT STATE SERVICE 

22/tcp open ssh 

| ssh2-enum-algos: 

| kex_algorithms (4) 

| diffie-hellman-group-exchange-sha256 

| diffie-hellman-group-exchange-sha1 

| diffie-hellman-group14-sha1 

| diffie-hellman-group1-sha1

| server_host_key_algorithms (2) 

| ssh-rsa

| ssh-dss 

| encryption_algorithms (13) 

| aes128-ctr 

| aes192-ctr 

| aes256-ctr 

| arcfour256

| arcfour128

| aes128-cbc 

| 3des-cbc

| blowfish-cbc 

| cast128-cbc 

| aes192-cbc 

| aes256-cbc 

| arcfour 

| rijndael-cbc@lysator.liu.se 

| mac_algorithms (6) 

| hmac-md5 

| hmac-sha1 

| hmac-ripemd160 

| hmac-ripemd160@openssh.com 

| hmac-sha1-96 

| hmac-md5-96 

| compression_algorithms (2) 

| none 

|_ zlib@openssh.com

Wir können hier erkennen das so ziemlich alle Key-Algorithmen unterstützt werden, was eine potenzielle Chance ist einen Key mit einer geringeren Verschlüsselung zu erwischen. Genau das wird auch der nächste Schritt sein.

12.3 Nmap ssh-hostkey

Der nächste Command zeigt die „Fingerprints“ der SSH Keys an, je nach Ausführlichkeit hat man auch die Chance den ganzen Key angezeigt zu bekommen. Der Command dafür und wie der Output aussehen könnte:

$ nmap hostadresse –script ssh-hostkey –script-args ssh_hostkey=full 

Post-scan script results: 

| ssh-hostkey: Possible duplicate hosts 

| Key 1024 60:ac:4d:51:b1:cd:85:09:12:16:92:76:1d:5d:27:6e (DSA) used by: 

| 192.168.1.1 

| 192.168.1.2 

| Key 2048 2c:22:75:60:4b:c3:3b:18:a2:97:2c:96:7e:28:dc:dd (RSA) used by: 

| 192.168.1.1

|_ 192.168.1.2

12.4 Nmap ssh-brute 

Das letzte Skript, das wir nutzen werden, ist SSH-Brute, das Script forciert Passwort Eingaben, bei einem schlecht gewählten bzw. einem schwachen Passwort kann ein Angreifer Root Access erhalten. 

Der Command dafür und wie der Output aussehen könnte:

$ nmap hostadresse –script ssh-brute 

22/ssh open ssh 

| ssh-brute: 

| Accounts

| username:password 

| Statistics 

|_ Performed 32 guesses in 25 seconds.

An dieser Stelle beenden wir unseren Angriff mit Nmap. Sollte während eurer Angriffsversuche eine Sicherheitslücke aufgetaucht sein, z.B bei SSH-Brute wurde euer Root Password angezeigt, solltet ihr sofort Maßnahmen ergreifen, um euer System zu schützen.

Schritt-für-Schritt-Anleitung: Einrichtung und Härtung eines Linux-Webservers

Vorbereitungen

Benötigte Hardware:

  • Hyper-V-fähiger Computer/Laptop/Server
  • Router mit Breitbandanschluss

Benötigte Software:

  • Windows 11
    • Hyper-V
    • PuTTY (oder MobaXTerm)
    • PuTTYGen
    • Wireshark
  • Linux Ubuntu 22.04
    • OpenSSH-Server
    • AppArmor (inkl. AA-Profiles und AA-Utils)
    • Nmap

Schritt 1: Installation von Hyper-V und Erstellung eines virtuellen Servers

  1. Öffnen Sie Hyper-V auf Ihrem Windows-Rechner.
  2. Erstellen Sie einen neuen virtuellen Switch:
    • Klicken Sie auf „Manager für virtuelle Switches…“
    • Wählen Sie „Extern“ und klicken Sie auf „Virtuellen Switch erstellen“.
    • Geben Sie dem Switch einen Namen und wählen Sie Ihre Netzwerkkarte aus.
    • Aktivieren Sie das Kästchen „Diese Netzwerkverbindung freigeben“.
  3. Erstellen Sie einen neuen virtuellen Server:
    • Klicken Sie auf „Schnellinstallation…“.
    • Wählen Sie „Ubuntu 22.04 LTS“ und klicken Sie auf „Virtuellen Server erstellen“.
  4. Konfigurieren Sie die Netzwerkkarte der VM:
    • Rechtsklicken Sie auf die VM und wählen Sie „Einstellungen“.
    • Unter „Hardware“ -> „Netzwerkkarte“ wählen Sie den zuvor erstellten virtuellen Switch.

Schritt 2: Einrichtung der Linux-VM

  1. Starten Sie die VM und richten Sie einen Benutzer ein.
  2. Nach der Einrichtung melden Sie sich in der VM an und öffnen das Terminal.

Schritt 3: Installation und Konfiguration von SSH

Aktualisieren Sie den APT-Cache:
sudo apt update

Installieren Sie den OpenSSH-Server:
sudo apt install openssh-server openssh-client

Überprüfen Sie den Status des SSH-Servers:
sudo systemctl status ssh

Konfigurieren Sie die Firewall:
sudo ufw allow ssh

sudo ufw enable

sudo ufw status

Schritt 4: Installation und Konfiguration von Nginx

Installieren Sie Nginx:
sudo apt install nginx

Starten Sie den Nginx-Server:
sudo service nginx start

Konfigurieren Sie die Firewall für Nginx:
sudo ufw allow ‚Nginx Full‘

Schritt 5: Benutzer- und Gruppenverwaltung

Erstellen Sie die benötigten Gruppen:
sudo groupadd webadmins

sudo groupadd webdevs

sudo groupadd webcontent

Konfigurieren Sie die Verzeichnisberechtigungen:
sudo chown -R root:webadmins /var/www

sudo chmod -R 750 /var/www

sudo mkdir /var/www/html /var/www/logs

sudo chown -R www-data:webcontent /var/www/html

sudo chown -R www-data:webadmins /var/www/logs

sudo chmod -R 775 /var/www/html

sudo chmod -R 750 /var/www/logs

Fügen Sie Benutzer zu den entsprechenden Gruppen hinzu:
sudo adduser nutzername webadmins

sudo adduser nutzername webdevs

sudo adduser nutzername webcontent

Schritt 6: Überwachung mit Wireshark

  1. Installieren Sie Wireshark auf Ihrem Windows-Rechner.
  2. Starten Sie Wireshark und wählen Sie das Netzwerkinterface aus, das Sie überwachen möchten.
  3. Starten Sie die Aufnahme und lassen Sie sie einige Zeit laufen, während der Server in Betrieb ist.

Schritt 7: Härtung des Webservers

Aktualisieren Sie alle Pakete:
sudo apt update && sudo apt upgrade -y

  1. Erstellen Sie starke Passwortrichtlinien und erzwingen Sie regelmäßige Passwortänderungen.
  2. Stellen Sie sicher, dass Benutzer nur die minimal notwendigen Rechte haben.
  3. Überwachen Sie den Server kontinuierlich mit Tools wie Wireshark und Systemprotokollen.

Fazit

Die Einrichtung und Härtung eines Linux-Webservers erfordert eine sorgfältige Planung und eine systematische Vorgehensweise. Beginnend mit der Auswahl und Installation der benötigten Software und der Konfiguration von Hyper-V, über die Installation und Sicherung von SSH und Nginx, bis hin zur detaillierten Benutzer- und Gruppenverwaltung sowie der kontinuierlichen Überwachung mit Tools wie Wireshark. Jeder dieser Schritte ist essenziell, um einen stabilen, sicheren und gut verwalteten Webserver zu betreiben.

Die Nutzung von Hyper-V zur Virtualisierung und die Installation eines Linux-Systems wie Ubuntu 22.04 bietet eine flexible und skalierbare Plattform für Webanwendungen. Die Konfiguration der Firewall und die Härtung des Servers durch strikte Benutzer- und Rechteverwaltung minimieren potenzielle Sicherheitsrisiken. Die kontinuierliche Überwachung des Netzwerkverkehrs und die regelmäßige Aktualisierung der Software gewährleisten, dass der Server stets auf dem neuesten Stand und gegen aktuelle Bedrohungen geschützt ist.

Insgesamt ist diese Anleitung ein umfassender Leitfaden für Administratoren, die einen sicheren und effizienten Linux-Webserver einrichten möchten. Durch die sorgfältige Beachtung jedes Schrittes und die regelmäßige Überprüfung und Anpassung der Sicherheitsmaßnahmen wird sichergestellt, dass der Webserver nicht nur den aktuellen Anforderungen entspricht, sondern auch zukunftssicher ist.

1 Kommentar zu „Einrichtung und Härtung eines Linux-Webservers“

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen