Linux - Security und Firewall Plan - Linkai

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

VirtualBox Vorlagen

  • Debian: Dienen als Server, Firewall oder generell Rechner, die keine graphische Oberfläche benötigen (sollte schon in Virtualbox als debian-bullseye-server vorhanden sein)
  • Arch: Rechner im LAN, Verwaltung der Server von hier aus über SSH/Weboberflächen (Befehl zum Herunterladen in der nächsten Zeile)
  • scp 192.168.3.200:~/Dokumente/lan-host.ova ~/Dokumente

Tag 1

Aufbau der Labore

  • Eine Debian Maschine soll uns als Firewall dienen
  • Diese soll über einen Bridgeadapter eine pseudo-öffentliche IP im Schulungsnetzwerk erhalten
  • Ein zweiter Netzwerkadapter vom Typ "internes Netzwerk" soll als LAN der Labore dienen
  • Ein Host mit einer graphischen Oberfläche im LAN der Firewall soll als Verwaltungsrechner dienen
  • Wenn die virtuellen Maschinen so konfiguriert sind, können sie hochgefahren werden
  • Nun muss die Netzwerkeinstellung wie im Schaubild konfiguriert werden:
  • Als erstes muss man "physisch" auf der Firewall die statischen IPs konfigurieren
  • 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.3.1xx/24
 gateway 192.168.3.254

auto enp0s8
iface enp0s8 inet static
 address 172.16.1xx.1/24
  • ifdown -va ; ifup -va
  • Als Kontrolle kann man ip addr show ausführen
  • Ab hier kann man vom LAN Host aus auf die Firewall zugreifen (Befehle ab hier beziehen sich auf LAN Host!)
  • Dazu muss NetworkManager gestoppt werden, damit dieser Dienst nicht in unsere temporäre Netzwerkkonfiguration pfuscht
  • systemctl stop NetworkManager
  • Wir vergeben uns eine temporäre IP Adresse, um auf die Firewall per SSH zugreifen zu können
  • ip addr add 172.16.1xx.2/24 dev enp0s3
  • Nun sollte der Remote-Zugriff auf die Firewall möglich sein
  • ssh kit@172.16.1xx.1
  • Damit Hosts im LAN automatisch eine IP-Adresse erlangen, konfigurieren wir nun einen DHCP Server (Befehle ab hier finden auf der Firewall statt!)
  • apt install isc-dhcp-server
  • Falls dieser Befehl einen Fehler in der Namensauflösung schmeist, dann muss ein richtiger Nameserver eingetragen werden
  • vim /etc/resolv.conf
nameserver 1.1.1.1 # Als Beispiel. Man kann auch jeden anderen validen Nameserver verwenden
  • Nach der Installation des DHCP Servers beschwert sich systemd, dass er den Dienst nicht starten kann, weil er noch nicht richtig konfiguriert ist.
  • Das ist nicht weiter schlimm, da wir ihn wie folgt einstellen:
  • vim /etc/default/isc-dhcp-server
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
INTERFACESv4="enp0s8"
  • vim /etc/dhcp/dhcpd.conf
option domain-name-servers 1.1.1.1;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
subnet 172.16.1xx.0 netmask 255.255.255.0 {
	range 172.16.1xx.2 172.16.1xx.10;
	option routers 172.16.1xx.1;
}

Hostzugriff absichern

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

SSH-Schlüssel mit Passwort generieren

  • Man sollte Passwort-Authentifikation vermeiden soweit es geht
  • Bei SSH kann man stattdessen mit Schlüsselpaaren arbeiten, die wie folgt generiert werden
  • ssh-keygen
  • Den privaten Schlüssel sollte man mit einer Passphrase verschlüsseln für erhöhte Sicherheit
  • Danach sollten folgende Dateien da sein
  • ls ~/.ssh
id_rsa id_rsa.pub
  • Um den öffentlichen Schlüssel auf der Firewall abzulegen kann man einen der folgenden Befehle verwenden:
  • ssh-copy-id kit@172.16.1xx.1

bzw. diesen Befehl falls der Ordner .ssh schon im Homeverzeichnis vom Benutzer kit existiert:

  • scp ~/.ssh/id_rsa.pub kit@172.16.1xx.1:~/.ssh/authorized_keys
  • Nun sollte nicht mehr das Passwort des remoten Benutzers abgefragt werden
  • Damit man nicht jedes mal den privaten Schlüssel entsperren muss, sollte man sich einen SSH Agent konfigurieren
  • Um die Administration der Firewall einfacher zu machen kann man sich auch den öffentlichen Schlüssel zum root-User kopieren
  • su -
  • mkdir .ssh
  • cp ~kit/.ssh/authorized_keys ~/.ssh

SSH-Daemon auf Firewall absichern: Anderer Port, kein Root Login über Passwort

  • Im Moment kann jeder, der das Passwort des kit-Nutzers kennt, sich an der Firewall anmelden
  • Um das zu verhindern kann man den SSH Daemon folgerdermaßen konfigurieren
  • vim /etc/ssh/sshd_config
Port 2222
AddressFamily inet
ListenAddress 172.16.107.1
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

Tag 2

  • Internet Zugriff für LAN mit iptables
  • Stateful Firewall: Establish und Related, um den Zustand von TCP/UDP Verbindungen zu beobachten, Conntrack als Visualisierung
  • Connection Tracking anpassen
  • grundlegende Dinge wie Loopback, Web, etc. freischalten
  • Dienste wie DNS, Webserver in der DMZ erstellen
  • vim /etc/default/isc-dhcp-server
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
INTERFACESv4="enp0s8 enp0s9"
  • vim /etc/dhcp/dhcpd.conf
option domain-name-servers 1.1.1.1;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
subnet 172.16.1xx.0 netmask 255.255.255.0 {
	range 172.16.1xx.2 172.16.1xx.10;
	option routers 172.16.1xx.1;
}
subnet 10.0.1xx.0 netmask 255.255.255.0 {
	range 10.0.1xx.2 10.0.1xx.10;
	option routers 10.0.1xx.1;
}
  • Firewall Regeln für Zugriff einrichten

Tag 3

  • Mitschneiden des Datenverkehrs mit tcpdump / wireshark
  • Verschlüsseln des Datenverkehrs mit VPNs
  • IPSec Site-to-Site aufbauen mit PSK
  • IPSec Site-to-Site aufbauen mit Zertifikat

Tag 4

  • Firewall als nftables (Der Nachfolger von iptables) schreiben

Tag 5

  • OpenVPN Site-to-Site aufbauen
  • OpenVPN mit User-Authentication einrichten

HIDS

  • AIDE
  • Tripwire

Tag 6

  • Fail2ban für SSH einrichten

NIDS

Tag 7

  • Squid Proxy konfigurieren (Application und transparent)
  • Virenscanning mit ClamAV in Squid

Tag 8

  • Angriffe mit nmap versuchen
  • System anpassen, anschauen wo was Alarm schlägt