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:
- Windows 11
- Linux Ubuntu 22.04 (Distribution ist generell egal, die zu installierende Software kann variieren)
- OpenSSH-Server
- AppArmor
- AA-Profiles
- AA-Utils
- Nmap
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
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
- Öffnen Sie Hyper-V auf Ihrem Windows-Rechner.
- 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“.
- Erstellen Sie einen neuen virtuellen Server:
- Klicken Sie auf „Schnellinstallation…“.
- Wählen Sie „Ubuntu 22.04 LTS“ und klicken Sie auf „Virtuellen Server erstellen“.
- 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
- Starten Sie die VM und richten Sie einen Benutzer ein.
- 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
- Installieren Sie Wireshark auf Ihrem Windows-Rechner.
- Starten Sie Wireshark und wählen Sie das Netzwerkinterface aus, das Sie überwachen möchten.
- 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
- Erstellen Sie starke Passwortrichtlinien und erzwingen Sie regelmäßige Passwortänderungen.
- Stellen Sie sicher, dass Benutzer nur die minimal notwendigen Rechte haben.
- Ü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.
Geil