Linux - Security und Firewall Labor: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 39: | Zeile 39: | ||
** 3 Netzwerkkarten | ** 3 Netzwerkkarten | ||
* Als nächstes setzen wir den Hostnamen der äußeren '''Router Firewall''' und konfigurieren die statischen IP | * Als nächstes setzen wir den Hostnamen der äußeren '''Router Firewall''' und konfigurieren die statischen IP | ||
| − | * '''hostnamectl set-hostname firewall''' | + | * '''hostnamectl set-hostname firewall.lab1xx.int''' |
* für die statische IP muss die Datei ''/etc/network/interfaces'' bearbeitet werden (Distributions abhängig) | * für die statische IP muss die Datei ''/etc/network/interfaces'' bearbeitet werden (Distributions abhängig) | ||
* '''vim ''/etc/network/interfaces'' ''' | * '''vim ''/etc/network/interfaces'' ''' | ||
Version vom 13. April 2025, 11:48 Uhr
Ziel
physischer Netzwerkplan
logischer Netzwerkplan
Servervorlage
- Für VMs als Server empfiehlt es sich eine Vorlage zu erstellen, die schon minimal konfiguriert ist
- Der Nutzer root soll das Passwort radler haben
- Ein Benutzer kit mit dem Passwort kit soll angelegt werden
- die Vorlage soll keine graphische Oberfläche haben (Bei der Installation abwählen)
- Ein SSH-Server soll aber für die Remoteverwaltung installiert werden
Umsetzung
Hostzugriff absichern
- Falls man physischen Zugriff zur Maschine hat, kann die Authentifzierung von root beim Booten umgangen werden
- Bootsicherheit/-hacking
- Das wollen wir an der Firewall verhindern
- GRUB Passwort einrichten
Remotezugriff mit SSH
- Da man nicht immer physisch an einer Maschine anwesend sein kann, empfiehlt es sich Hosts über SSH zu steuern
- Der Datenverkehr ist dabei verschlüsselt, damit es beide Maschinen vor potentiellen Angreifern schützt, die den Verkehr mitschneiden
- Jeder Host soll über das SSH-Protokoll administrierbar sein
- Generieren Sie einen SSH-Schlüssel mit der Passphrase, z.B. 123Start$
- hinterlegen Sie den öffentlichen Schlüssel für die Nutzer kit und root auf der Firewall
- Der SSH-Server sollte nach Sicherstellung des Zugriffs über autorisierte SSH-Schlüssel keine Passwort-Authentifizierung mehr zulassen: SSH-Server Hardening
- Am Ende sollte jeder Host über ssh user@ip.oder.host.name erreichbar sein
Router Firewall
- Hardwareanpassungen, damit die Dienste später auch genug Ressourcen haben:
- 4 GB RAM
- 4 CPUs
- 3 Netzwerkkarten
- Als nächstes setzen wir den Hostnamen der äußeren Router Firewall und konfigurieren die statischen IP
- hostnamectl set-hostname firewall.lab1xx.int
- für die statische IP muss die Datei /etc/network/interfaces bearbeitet werden (Distributions abhängig)
- vim /etc/network/interfaces
auto lo iface lo inet loopback auto enp0s3 iface enp0s3 inet static address 192.168.''HS''.1''xx''/24 gateway 192.168.''HS''.254 auto enp0s8 iface enp0s8 inet static address 172.18.1''xx''.1/24 auto enp0s9 iface enp0s9 inet static address 10.88.1''xx''.1/24 auto enp0s10 iface enp0s10 inet static address 172.16.1''xx''.1/24
- ifdown -va ; ifup -va
- bzw.
- systemctl restart networking
- Als Kontrolle kann man ip addr show ausführen
Firewall
DHCP
Switch
DNS für das Labor einrichten
Vorbereitungen
- VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen
- Der Host soll im DMZ-Netzwerk liegen
- IP-Adresse herausfinden über das DHCP-Log oder die Konsole
- SSH-Schlüssel des Kit Hosts für User kit und root hinterlegen
- statische IP-Adresse nach dem Netzwerkplan setzen (/etc/network/interfaces)
- Hostname ändern zu dns
- SSH-Server anpassen
Nameserver
SFTP Server
Strongswan IPSEC
Wireguard
OpenVPN
Crowdsec
- Crowdsec Grundsätzliches
- Crowdsec Einordnung
- Crowdsec Installation und Handling
- Crowdsec SSH Bruteforce Beispiel
Fail2ban für SSH/SFTP einrichten
- apt install iptables fail2ban
- Plan ist es den DNS Server als Angreifer auf den SFTP Server zu starten
- Fail2ban ssh
Proxies
SOCKS Proxy
- SOCKS Proxies verbinden Client und Server protokollunabhängig über einen Proxy
- Eine verschlüsselte SOCKS Verbindung kann man am einfachsten mit SSH erreichen
- ssh -fnN -D 8080 kit@sftp
- curl www.lab1xx.sec
- curl --socks5 localhost:8080 www.lab1xx.sec
- Unterschiedliche IPs sollten unter /var/log/apache2/access.log zu sehen sein
Squid als Standard Proxy
- Ein einfacher Proxy soll eingerichtet werden
- Über die Source-IP wird kontrolliert, ob ein Client den Proxy benutzen darf
- Weitere ACLs können den Zugriff auf bestimmte Webseiten blockieren
Transparenter Proxy
- Clients im LAN sollen nicht die Möglichkeit haben den Proxy zu umgehen, indem sie den Eintrag aus dem Browser entfernen
- Über Firewall-Regeln können die Webanfragen auf den Proxy geleitet werden
Virenscanning mit ClamAV in Squid
- Durch Installieren von Stammzertifikaten auf den Browsern der Clients, soll Squid die Möglichkeit haben die Inhalte der Webseiten zu scannen
- Der Proxy kann so dann verhindern, dass Clients sich Viren herunterladen
Suricata
Mandatory Access Control
Apparmor
SELinux
HIDS
AIDE
Tripwire
Greenbone Security/Vulnerability Manager (Hacking & Security Seite 161)
- Kali Vorlage auf den realen Host ziehen
- Neue Maschine hinzufügen mit Netzwerkbrücke
- Benutzer/Passwort: kali/kali
- sudo -i
- apt update
- apt install gvm
- GVM initialisieren und das Passwort merken, aufschreiben oder in eine Datei speichern
- gvm-setup
- gvm-check-setup
- Die Initialisierung der Datenbank kann einige Stunden dauern
- Die Datenbank kann auch manuell geupdatet werden
- greenbone-feed-sync --type scan-config
- Falls das immernoch nicht funktioniert
- Die User ID des Admins holen...
- runuser -u _gvm -- gvmd --get-users --verbose
- ...und Konfiguration des Benutzers ändern
- runuser -u _gvm -- gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value <uuid_of_user>
Portscanning
- Die Effektivität der Firewall soll mit nmap getestet werden
- Für einen Vergleich scannen wir einmal mit Default-Policy accept und einmal mit drop
IP bei zuvielen Anfragen sperren
- Original: https://wiki.archlinux.org/title/Nftables#Dynamic_blackhole
- vim /etc/nftables.conf
table inet filter {
set blackhole {
type ipv4_addr;
flags dynamic, timeout;
size 65536;
}
chain input {
...
ct state new tcp dport 80 \
meter flood size 128000 { ip saddr timeout 10s limit rate over 10/minute } \
add @blackhole { ip saddr timeout 1m }
ip saddr @blackhole counter drop
}
...
}




