<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.xinux.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Linkai.zhang</id>
	<title>Xinux Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.xinux.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Linkai.zhang"/>
	<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Spezial:Beitr%C3%A4ge/Linkai.zhang"/>
	<updated>2026-10-21T21:50:27Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Datei:Tls-verbindung.drawio.png&amp;diff=58652</id>
		<title>Datei:Tls-verbindung.drawio.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Datei:Tls-verbindung.drawio.png&amp;diff=58652"/>
		<updated>2024-12-05T11:43:55Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: Linkai.zhang lud eine neue Version von Datei:Tls-verbindung.drawio.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58651</id>
		<title>Unix-/Linux Netz</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58651"/>
		<updated>2024-12-04T12:45:58Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Webserver */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Netzwerk der Schulung=&lt;br /&gt;
&lt;br /&gt;
* Die WAN-IP wird die 172.RNr.0.(100 + eigene Nr.)&lt;br /&gt;
* Die &#039;&#039;&#039;D&#039;&#039;&#039;e&#039;&#039;&#039;m&#039;&#039;&#039;ilitarisierte &#039;&#039;&#039;Z&#039;&#039;&#039;one (DMZ) enthält Services, die von außen erreichbar sein sollen&lt;br /&gt;
* Im LAN befindet sich unser Administratorrechner von dem wir unsere Rechner konfigurieren&lt;br /&gt;
* Das LAN soll Verbindungen ins Internet initiieren können, aber nicht direkt von außen erreichbar sein&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul2}}&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;xx&#039;&#039; in den folgenden Bildern durch die eigene Nummer ersetzen&lt;br /&gt;
;Benutzername für virtuelle Maschinen ist &#039;&#039;xinux&#039;&#039; oder &#039;&#039;root&#039;&#039;&lt;br /&gt;
;Passwort ist immer 123Start$&lt;br /&gt;
&lt;br /&gt;
= Vorbereiten der Firewall =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-0}}&lt;br /&gt;
&lt;br /&gt;
* Wir klonen den Rechner &amp;quot;Server Vorlage&amp;quot; und nennen ihn &amp;quot;Firewall&amp;quot;&lt;br /&gt;
* Dieser braucht 3 Netzwerkadapter:&lt;br /&gt;
# Netzwerkbrücke&lt;br /&gt;
# Internes Netzwerk &amp;quot;LAN&amp;quot;&lt;br /&gt;
# Internes Netzwerk &amp;quot;DMZ&amp;quot;&lt;br /&gt;
* Wir starten die Firewall und konfigurieren statische IP Adressen für alle 3 Netzwerkadapter&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/network/interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s3&lt;br /&gt;
 iface enp0s3 inet static&lt;br /&gt;
  address 172.RNr.0.1&#039;&#039;xx&#039;&#039;/16&lt;br /&gt;
  gateway 172.RNr.0.1&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s8&lt;br /&gt;
 iface enp0s8 inet static&lt;br /&gt;
  address 192.168.0.1/24&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s9&lt;br /&gt;
 iface enp0s9 inet static&lt;br /&gt;
  address 10.0.1&#039;&#039;xx&#039;&#039;.1/24&lt;br /&gt;
&lt;br /&gt;
* Interfaces runter und wieder hochfahren, um die neue Konfiguration zu laden&lt;br /&gt;
* &#039;&#039;&#039;ifdown -va&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ifup -va&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart networking&#039;&#039;&#039;&lt;br /&gt;
* Danach sollte der Befehl &#039;&#039;&#039;ip address show&#039;&#039;&#039; (oder &#039;&#039;&#039;ip a&#039;&#039;&#039;) die neuen IP Adressen anzeigen&lt;br /&gt;
&lt;br /&gt;
 1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&lt;br /&gt;
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;
     inet 127.0.0.1/8 scope host lo&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 ::1/128 scope host &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 2: enp0s3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1456 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:9b:79:a1 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;172.RNr.1.1&#039;&#039;xx&#039;&#039;/16&#039;&#039;&#039; brd 172.22.255.255 scope global enp0s3&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 2003:e5:173a:c401:a00:27ff:fe9b:79a1/64 scope global dynamic mngtmpaddr &lt;br /&gt;
        valid_lft 7134sec preferred_lft 1215sec&lt;br /&gt;
     inet6 fe80::a00:27ff:fe9b:79a1/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 3: enp0s8: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:15:03:b7 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;192.168.0.1/24&#039;&#039;&#039; brd 192.168.0.255 scope global enp0s8&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe15:3b7/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 4: enp0s9: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:31:01:09 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.1/24&#039;&#039;&#039; brd 10.0.100.255 scope global enp0s9&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe31:109/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
&lt;br /&gt;
= Workstation im LAN zum Systemadministrator machen =&lt;br /&gt;
&lt;br /&gt;
* Den Netzwerkadapter von VM &amp;quot;LAN Host&amp;quot; auf &amp;quot;Internes Netzwerk LAN&amp;quot; umstellen und die VM starten&lt;br /&gt;
* Wenn wir unsere Netzwerkkonfiguration anschauen, dann sehen wir keine IP Adresse, da noch kein DHCP läuft&lt;br /&gt;
* Deshalb geben wir uns eine temporäre IP, um per SSH auf die Firewall zu kommen&lt;br /&gt;
* &#039;&#039;&#039;systemctl stop NetworkManager&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ip address add 192.168.0.2/24 dev enp0s3&#039;&#039;&#039;&lt;br /&gt;
* Nun können wir die Firewall per SSH erreichen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* als erstes ändern wir den hostnamen der Firewall von &#039;&#039;debian&#039;&#039; zu &#039;&#039;firewall&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;hostnamectl set-hostname fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 127.0.0.1 localhost&lt;br /&gt;
 127.0.1.1 &#039;&#039;&#039;fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Ein erneutes einloggen updatet den Namen im Prompt&lt;br /&gt;
* als nächstes installieren wir einen [[DHCP]] Server, um Rechnern im LAN automatisch eine Netzwerkkonfiguration zu geben&lt;br /&gt;
* &#039;&#039;&#039;apt install isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Am Ende der Installation wird es eine Fehlermeldung geben, da systemd versucht den Dienst zu starten, obwohl noch keine Konfiguration da ist&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name-servers 1.1.1.1;&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet &#039;&#039;MAC Adresse vom Arch&#039;&#039;;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Dienst mit der neuen Konfiguration starten und überprüfen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl status isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Beim Neustart von Arch sollte dann automatisch die &#039;&#039;192.168.0.2&#039;&#039; bekommen (falls nicht MAC-Adresse überprüfen)&lt;br /&gt;
&lt;br /&gt;
= Firewall als Router konfigurieren =&lt;br /&gt;
&lt;br /&gt;
* Im Moment verwirft die Firewall alle Pakete mit IP-Adressen, die nicht für ihn selbst bestimmt sind&lt;br /&gt;
* Um die Pakete uns Default-Gateway weiterzuleiten muss der Kernelparameter &#039;&#039;net.ipv4.ip_forward&#039;&#039; gesetzt sein&lt;br /&gt;
* Temporär (bleibt nicht nach einem Reboot):&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=1&#039;&#039;&#039; &#039;&#039;# Einschalten&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=0&#039;&#039;&#039; &#039;&#039;# Ausschalten&#039;&#039;&lt;br /&gt;
* Für eine persistente Konfiguration muss dieser Parameter in der die Datei &#039;&#039;/etc/sysctl.conf&#039;&#039; stehen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/sysctl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to enable packet forwarding for IPv4&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;sysctl -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039;ource &#039;&#039;&#039;N&#039;&#039;&#039;etwork &#039;&#039;&#039;A&#039;&#039;&#039;ddress &#039;&#039;&#039;T&#039;&#039;&#039;ranslation muss noch geschehen, damit die Pakete mit IP Adressen aus einem privaten Netzwerk den Weg zurück finden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority 0;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
         oif enp0s3 masquerade&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl enable nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= SSH Schlüssel für passwortloses Login =&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Um nicht jedes mal das Passwort beim Login eingeben zu müssen kann man sich stattdessen mit einem privaten Schlüssel authentifizieren&lt;br /&gt;
* Wir erstellen einen Schlüssel mit RSA Verschlüsselung und erstmal ohne Passwortabfrage für den Benutz des Schlüssels&lt;br /&gt;
* &#039;&#039;&#039;ssh-keygen&#039;&#039;&#039; &#039;&#039;# 123Start$ als Passwort nehmen&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ssh-copy-id xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;scp ~/.ssh/id_rsa.pub xinux@192.168.0.1:~/.ssh/authorized_keys&#039;&#039;&#039;&lt;br /&gt;
* In der &#039;&#039;authorized_keys&#039;&#039; Datei können mehrere öffentliche Schlüssel stehen (pro Zeile ein Schlüssel)&lt;br /&gt;
* Es ist üblich SSH Login über Passwörter komplett auszuschalten sobald die SSH Schlüssel von den zugangsberechtigten Benutzern hinterlegt sind&lt;br /&gt;
* Normalerweise sind die Schlüssel passwortgeschützt.&lt;br /&gt;
* Damit man nicht jedes mal das Passwort dafür eingeben muss kann man einen [[SSH Agent]] nutzen&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
&lt;br /&gt;
* Wir wollen uns direkt als root einloggen können, weshalb die &#039;&#039;&#039;authorized_keys&#039;&#039;&#039; Datei auch im Home-Verzeichnis des root-Nutzers liegen muss&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mkdir &#039;&#039;.ssh&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cp &#039;&#039;~xinux/.ssh/authorized_keys&#039;&#039; &#039;&#039;.ssh/&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Um den SSH-Server abszusichern können wir den Port verlegen und nur schlüsselbasiertes Einloggen zulassen&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/ssh/sshd_config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Port 2222&lt;br /&gt;
 AddressFamily inet&lt;br /&gt;
 ListenAddress 192.168.0.1&lt;br /&gt;
 PubkeyAuthentication yes&lt;br /&gt;
 PasswordAuthentication no&lt;br /&gt;
 UsePAM no&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Nun sollten wir uns direkt als root anmelden können &lt;br /&gt;
* &#039;&#039;&#039;ssh -p 2222 root@192.168.0.1 &amp;quot;id &amp;amp;&amp;amp; hostname&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Um die Ameldung einfacher zu gestalten können wir unseren SSH-Client konfigurieren&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;~/.ssh/config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Host fw&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 	Hostname 192.168.0.1&lt;br /&gt;
 	User root&lt;br /&gt;
 	Port 2222&lt;br /&gt;
&lt;br /&gt;
* Jetzt kann man den Befehl folgendermaßen verkürzen:&lt;br /&gt;
* &#039;&#039;&#039;ssh fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= DHCP erweitern =&lt;br /&gt;
&lt;br /&gt;
* Um neue Rechner in der DMZ automatisch über LAN administrierbar zu machen, erweitern wir den DHCP Server auf der Firewall&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8 &#039;&#039;&#039;enp0s9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Die Subnetzdefinitionen folgen der Reihenfolge der Interfaces in &#039;&#039;/etc/default/isc-dhcp-server&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;subnet 10.0.1&#039;&#039;xx&#039;&#039;.0 netmask 255.255.255.0 {&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;range 10.0.1&#039;&#039;xx&#039;&#039;.50 10.0.1&#039;&#039;xx&#039;&#039;.100;&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;option routers 10.0.1&#039;&#039;xx&#039;&#039;.1;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet MAC Adresse vom Arch;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[DNS]] Server =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-1}}&lt;br /&gt;
&lt;br /&gt;
== Virtualbox ==&lt;br /&gt;
* Ein Klon von &amp;quot;Server Vorlage&amp;quot; mit Netzwerkadapter im internen Netzwerk &amp;quot;DMZ&amp;quot; erstellen&lt;br /&gt;
* Über die Systemlogs für &#039;&#039;&#039;DHCP&#039;&#039;&#039; auf der &#039;&#039;&#039;Firewall&#039;&#039;&#039; können wir die IP Adresse des DNS-Servers herausfinden&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
* &#039;&#039;&#039;journalctl -u isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Zurück zu Arch wechseln und über SSH auf den DNS Server einloggen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@10.0.&#039;&#039;(100 + eigene Nr.).&#039;&#039; &#039;&#039;yy&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
* Anschließend die IP Adresse in &#039;&#039;/etc/network/interfaces&#039;&#039; konfigurieren: 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2&lt;br /&gt;
* Hostname auf DNS: setzen (in &#039;&#039;/etc/hosts&#039;&#039; auch umändern)&lt;br /&gt;
* SSH Schlüssel hinterlegen&lt;br /&gt;
* Bind9 installieren&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;apt install bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
== Optionen festlegen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
         allow-recursion { 0.0.0.0/0; };&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zone definieren ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;lab(100 + eigene Nr.).nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zonendatei erstellen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab&#039;&#039;(100 + eigene Nr.)&#039;&#039;.nux. technik.xinux.de. (&#039;&#039;(Datum + Ver.nr.)&#039;&#039; 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns&lt;br /&gt;
 dns     IN A    10.0.(100 + eigene Nr.).2&lt;br /&gt;
 fw      IN A    10.0.(100 + eigene Nr.).1&lt;br /&gt;
&lt;br /&gt;
* Dienst neustarten und testen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short fw.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Der DNS-Server in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 53 UDP/TCP an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.0.1&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define dnsserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority -100; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Auflösen anderer Domänen über eine Pseudo Top Level Domain =&lt;br /&gt;
&lt;br /&gt;
== Dienst neustarten und DNS-Auflösung testen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short xinux.net&#039;&#039;&#039;&lt;br /&gt;
* Wenn das funktioniert dann den DNS Server im DHCP Server als Standard DNS Server und Suchdomäne eintragen (zur Firewall wechseln)&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 option domain-name-servers 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Arch neustarten und in &#039;&#039;/etc/resolv.conf&#039;&#039; nachschauen, ob die neue Konfiguration automatisch gezogen wurde&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart NetworkManager&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Bind9 Forwarder eintragen =&lt;br /&gt;
&lt;br /&gt;
== DNS Server der &#039;&#039;.nux&#039;&#039;-Domain ==&lt;br /&gt;
* Wenn jeder die DMZ der anderen erreichen kann, ist es möglich über eine Top Level Domain die anderen Domänen aufzulösen&lt;br /&gt;
* Dazu muss man auf den &#039;&#039;&#039;DNS Server&#039;&#039;&#039; einen vorkonfigurierten Pseudo Top Level Domain Nameserver als &#039;&#039;&#039;Forwarder&#039;&#039;&#039; eintragen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 forwarders { 172.RNr.0.100; }; //IP des Top Level Domain Nameservers&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Wenn man die Reverse Zone später auch auflösen will braucht man diese Zeile&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 empty-zones-enable no;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* Einmal alle Domänen durchtesten&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ping fw.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pseudo &#039;&#039;.nux&#039;&#039; Domain Server ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         empty-zones-enable no;&lt;br /&gt;
         allow-recursion  { 0.0.0.0/0; };&lt;br /&gt;
         allow-query  { 0.0.0.0/0; };&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
 };&lt;br /&gt;
* Zur Zonendefinition hinzufügen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 zone &amp;quot;0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 ...&lt;br /&gt;
* Zonendateien&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN      SOA     dns.nux. technik.xinux.de. (2023041809 14400 3600 3600000 86400)&lt;br /&gt;
 &lt;br /&gt;
 @       IN      NS      dns.nux.&lt;br /&gt;
 lab101          NS      dns.lab101.nux.&lt;br /&gt;
 lab102          NS      dns.lab102.nux.&lt;br /&gt;
 lab100          NS      dns.nux.&lt;br /&gt;
 &lt;br /&gt;
 dns     IN      A       172.RNr.0.100&lt;br /&gt;
 dns.lab101      A       172.RNr.0.1&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 dns.lab102      A       172.RNr.0.1&#039;&#039;xy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Reverse Lookup =&lt;br /&gt;
&lt;br /&gt;
* Für manche Dienste muss einer IP einen Domain Namen zugeordnet werden&lt;br /&gt;
* Dazu eine neue Zone definieren und eine neue Zonendatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;100.0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;100.0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim 100.0.10.in-addr.arpa&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab100.nux. technik.xinux.de. (2023050901 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns.lab100.nux.&lt;br /&gt;
 1       IN PTR  fw.lab100.nux.&lt;br /&gt;
 2       IN PTR  dns.lab100.nux.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Netz absichern =&lt;br /&gt;
&lt;br /&gt;
* Im Moment darf jeder auf die Firewall von jeden zugreifen (und damit alle dahinterliegenden Systeme)&lt;br /&gt;
* Um dies zu verhindern erstellen wir mit [[Nftables Netze absichern|nftables]] Firewall Regeln, die nur das nötigste zulassen&lt;br /&gt;
* Die Regeln werden von oben nach unten abgearbeitet&lt;br /&gt;
* Wenn keine Regel greift, dann zieht die &#039;&#039;Default Policy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Prerouting, Input, Forward, Output und Postrouting sind Punkte an denen wir Regeln erstellen können&lt;br /&gt;
&lt;br /&gt;
{{#drawio:nft-inet1}}&lt;br /&gt;
&lt;br /&gt;
== Nur SSH aus LAN auf die Firewall zulassen ==&lt;br /&gt;
&lt;br /&gt;
* Default Policy wird in allen Filterketten auf Drop gesetzt&lt;br /&gt;
* Wenn also keine Regel das Paket durchlässt, wird es verworfen&lt;br /&gt;
* Über Connection Tracking können wir uns auf die Regulierung neuer Verbindungen fokussieren&lt;br /&gt;
* Als erstes soll nur:&lt;br /&gt;
** Die Firewall mit sich selbst über das loopback Interface kommunizieren können (da es sonst zu komischen Problemen führen kann)&lt;br /&gt;
** &#039;&#039;Established&#039;&#039; und &#039;&#039;Related&#039;&#039; Pakete akzeptiert werden&lt;br /&gt;
** Neue Anfragen aus dem LAN auf TCP Port 2222 akzeptieren&lt;br /&gt;
** Firewall soll über HTTP bzw. HTTPS Programme herunterladen können&lt;br /&gt;
** Gedroppte Pakete sollen geloggt werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wanip = 172.RNr.0.1xx &lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 &#039;&#039;&#039;define wandev = enp0s3&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define landev = enp0s8&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define lan = 192.168.0.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif $landev tcp dport 2222 accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-input--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif $wandev tcp dport { 80, 443 } accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-output--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
 		ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 		ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Internetzugriff für LAN und Firewall ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/nftables.conf&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 define wanip = 172.22.0.1xx&lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 define wandev = &amp;quot;enp0s3&amp;quot;&lt;br /&gt;
 define landev = &amp;quot;enp0s8&amp;quot;&lt;br /&gt;
 define dmzdev = &amp;quot;enp0s9&amp;quot;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1xx.0/24&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
 		iif $landev ip saddr $lan tcp dport 2222 accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver tcp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver tcp  dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dmz tcp dport 22 accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
                 ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
                 ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;C&#039;&#039;&#039;onnection &#039;&#039;&#039;T&#039;&#039;&#039;racking &#039;&#039;&#039;T&#039;&#039;&#039;abelle ==&lt;br /&gt;
&lt;br /&gt;
* Das Tool &#039;&#039;&#039;conntrack&#039;&#039;&#039; installieren, um die CTT anschauen und leeren zu können&lt;br /&gt;
* &#039;&#039;&#039;apt install conntrack&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -F&#039;&#039;&#039; &#039;&#039;# Leert die Tabelle&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -L&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 tcp      6 432000 ESTABLISHED src=192.168.0.2 dst=192.168.0.2 sport=58178 dport=22 src=192.168.0.1 dst=192.168.0.2 sport=22 dport=58178 [ASSURED] mark=0 use=1&lt;br /&gt;
&lt;br /&gt;
= Webserver =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-2}}&lt;br /&gt;
&lt;br /&gt;
* Rechnern im LAN sollen Webseiten aufrufen können&lt;br /&gt;
* unsere DNS Server sollten andere Server im Internet und in den anderen DMZs befragen dürfen&lt;br /&gt;
* d.h. UDP Port 53 aus LAN und DMZ und TCP Ports 80 und 443 für LAN sollten freigeschalten werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 &#039;&#039;&#039;define dmzdev = enp0s9&#039;&#039;&#039;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 &#039;&#039;&#039;define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
             ct state established,related accept&lt;br /&gt;
             iif $landev tcp dport 22 accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             &#039;&#039;&#039;iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&#039;&#039;&#039;&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
         oif $wandev masquerade&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Ein Webserver in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 80/443 an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 define dmzdev = enp0s9&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.1.1&#039;&#039;xx&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define webserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter; policy drop;&lt;br /&gt;
                 iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif $landev tcp dport 22 accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&lt;br /&gt;
                 iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $webserver tcp dport 80 accept&#039;&#039;&#039;&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority 0; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* Der DNS Server soll uns erstmal auch als Webserver dienen&lt;br /&gt;
* &#039;&#039;&#039;apt install apache2&#039;&#039;&#039;&lt;br /&gt;
* Im Browser sollten die Webserver über die IPs der Firewalls erreichbar sein&lt;br /&gt;
&lt;br /&gt;
== Debug Möglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
* Falls sich die Firewall nicht so verhält wie erwartet, kann man:&lt;br /&gt;
** Connection Tracking Tabelle leeren/flushen: &#039;&#039;&#039;conntrack -F&#039;&#039;&#039;&lt;br /&gt;
** Über &#039;&#039;&#039;tail -f -n0 /var/log/syslog | grep nftables&#039;&#039;&#039; gedroppte Pakete anschauen (wenn die Log Regeln da sind)&lt;br /&gt;
** NAT Regeln überprüfen: &#039;&#039;&#039;tcpdump -i &#039;&#039;interface&#039;&#039; &#039;&#039;filter&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
** Auf Syntaxfehler überprüfen: &#039;&#039;&#039;nft -cf /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= LDAP Server einrichten =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-3}}&lt;br /&gt;
&lt;br /&gt;
* ein LDAP Server ermöglicht uns zentrale Benutzerverwaltung innerhalb einer Domäne&lt;br /&gt;
* die Benutzerdaten werden in einer Datenbank gespeichert und von Clients über &#039;&#039;&#039;TCP Port 389&#039;&#039;&#039; befragt&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;ldap&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
* eventuell muss auf der Firewall Port 80 und 443 für die DMZ freigeschaltet werden, damit die Pakete heruntergeladen werden können&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[Openldap Basic Config common]]&lt;br /&gt;
&lt;br /&gt;
= [[HAProxy]] für zentrale SSL Terminierung =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-4}}&lt;br /&gt;
&lt;br /&gt;
* Im Moment ist nur SSH verschlüsselt&lt;br /&gt;
* Pakete von HTTP Verbindungen zwischen den LAN und DMZ werden im Klartext verschickt&lt;br /&gt;
* &#039;&#039;&#039;Problem&#039;&#039;&#039;: Jemand der den Verkehr mitscheidet, kann alles lesen&lt;br /&gt;
* &#039;&#039;&#039;Lösung&#039;&#039;&#039;: Upgrade auf HTTPS mit [[Grundlagen Kryptografie | Zertifikaten]]&lt;br /&gt;
* [[SFTP-Server]] für den sicheren Transfer der Zertifikatsanträge&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;haproxy&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
# signiertes Wildcard-Zertifikat rüberkopieren&lt;br /&gt;
# privaten Zertifikatsschlüssel rüberkopieren&lt;br /&gt;
&lt;br /&gt;
* Signiertes Zertifikat vom SFTP Server holen&lt;br /&gt;
* &#039;&#039;&#039;sftp -P 9922 cert_req@172.RNr.1.100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;get cert/lab1&#039;&#039;xx&#039;&#039;.nux.crt&#039;&#039;&#039;&lt;br /&gt;
* Auf dem HAProxy die &#039;&#039;server.pem&#039;&#039; Datei erstellen&lt;br /&gt;
* &#039;&#039;&#039;cat lab1&#039;&#039;xx&#039;&#039;.nux.key lab1&#039;&#039;xx&#039;&#039;.nux.crt &amp;gt; /etc/haproxy/server.pem&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/haproxy/haproxy.cfg&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 frontend https_web_services&lt;br /&gt;
  bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
  timeout client 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  acl acl_web1 hdr_beg(host) -i web1&lt;br /&gt;
  acl acl_web2 hdr_beg(host) -i web2&lt;br /&gt;
  use_backend backend_web1 if acl_web1&lt;br /&gt;
  use_backend backend_web2 if acl_web2&lt;br /&gt;
  default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 #frontend https_frontend&lt;br /&gt;
 # bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
 # timeout client 50000&lt;br /&gt;
 # default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web1&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_dns 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web2&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_ldap 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend http_backend&lt;br /&gt;
  mode http&lt;br /&gt;
  balance roundrobin&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  server web_dns_2 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
  server web_ldap_2 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart haproxy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[Squid erste Schritte|Squid]] Proxy auf der Firewall =&lt;br /&gt;
&lt;br /&gt;
* [[Squid ACL Basic]]&lt;br /&gt;
* [[Iptables mit Squid Transparenter Proxy]]&lt;br /&gt;
* Mehr Kontrolle über die Domains, die LAN erreichen darf&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
 acl facebook url_regex -i facebook&lt;br /&gt;
 &lt;br /&gt;
 http_access deny facebook&lt;br /&gt;
 http_access allow all&lt;br /&gt;
 &lt;br /&gt;
 #nativer Zugriff&lt;br /&gt;
 http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 #transparenter Zugriff unverschlüsselt&lt;br /&gt;
 http_port 3128 intercept&lt;br /&gt;
 #transparenter Zugriff verschlüsselt &#039;&#039;&#039;wichtig https_port&#039;&#039;&#039;&lt;br /&gt;
 https_port 3129 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 &lt;br /&gt;
 ssl_bump bump all&lt;br /&gt;
 &lt;br /&gt;
 coredump_dir /var/spool/squid&lt;br /&gt;
 logfile_rotate 0&lt;br /&gt;
 &lt;br /&gt;
 cache_dir ufs /var/spool/squid 200 16 256&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;acl domain_blacklist dstdomain &amp;quot;/etc/squid/domain_blacklist.txt&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;http_access deny all domain_blacklist&#039;&#039;&#039;&lt;br /&gt;
 http_access allow localnet&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/domain_blacklist.txt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 facebook.com&lt;br /&gt;
 twitter.com&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart squid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-5}}&lt;br /&gt;
&lt;br /&gt;
= Festplatten verschlüsseln =&lt;br /&gt;
&lt;br /&gt;
; Das Verschlüsseln mit &#039;&#039;&#039;cryptsetup&#039;&#039;&#039; löscht alle vorherigen Daten der Festplatte&lt;br /&gt;
* Neue Festplatte in VirtualBox erstellen und anhängen&lt;br /&gt;
* zu verschlüsselnde Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;fdisk /dev/sdX&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup luksFormat /dev/sdXx&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup open /dev/sdXx &#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Dateisystem auf der entschlüsselten Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;mkfs.ext4 /dev/mapper/&#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* beliebige Testdatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;echo &amp;quot;Hallo Welt&amp;quot; &amp;gt; encrypted.txt&#039;&#039;&#039;&lt;br /&gt;
* Nach Benutzen der Partition wieder verschlüsseln&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup close name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Separate VM für Monitoring/Scanning =&lt;br /&gt;
&lt;br /&gt;
# Hostname auf &#039;&#039;health&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.4/24&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
&lt;br /&gt;
= Checkmk =&lt;br /&gt;
&lt;br /&gt;
* Die Weboberfläche soll über [https://cmk.lab1xx.nux https://cmk.lab1&#039;&#039;xx&#039;&#039;.nux] erreichbar sein:&lt;br /&gt;
** DNS Eintrag&lt;br /&gt;
** HAProxy ACL&lt;br /&gt;
&lt;br /&gt;
* Download: https://checkmk.com/de/download?method=cmk&amp;amp;edition=cre&amp;amp;version=2.2.0b7&amp;amp;platform=debian&amp;amp;os=bullseye&amp;amp;type=cmk&lt;br /&gt;
* Anweisungen der Webseite folgen&lt;br /&gt;
* cmkadmin&#039;s Passwort auf 123Start$ ändern&lt;br /&gt;
* Rechner ins Monitoring hinzufügen&lt;br /&gt;
* AUR Paketmanager https://github.com/Jguer/yay&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58650</id>
		<title>Unix-/Linux Netz</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58650"/>
		<updated>2024-12-04T12:45:12Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Destination NAT  und Portforwarding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Netzwerk der Schulung=&lt;br /&gt;
&lt;br /&gt;
* Die WAN-IP wird die 172.RNr.0.(100 + eigene Nr.)&lt;br /&gt;
* Die &#039;&#039;&#039;D&#039;&#039;&#039;e&#039;&#039;&#039;m&#039;&#039;&#039;ilitarisierte &#039;&#039;&#039;Z&#039;&#039;&#039;one (DMZ) enthält Services, die von außen erreichbar sein sollen&lt;br /&gt;
* Im LAN befindet sich unser Administratorrechner von dem wir unsere Rechner konfigurieren&lt;br /&gt;
* Das LAN soll Verbindungen ins Internet initiieren können, aber nicht direkt von außen erreichbar sein&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul2}}&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;xx&#039;&#039; in den folgenden Bildern durch die eigene Nummer ersetzen&lt;br /&gt;
;Benutzername für virtuelle Maschinen ist &#039;&#039;xinux&#039;&#039; oder &#039;&#039;root&#039;&#039;&lt;br /&gt;
;Passwort ist immer 123Start$&lt;br /&gt;
&lt;br /&gt;
= Vorbereiten der Firewall =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-0}}&lt;br /&gt;
&lt;br /&gt;
* Wir klonen den Rechner &amp;quot;Server Vorlage&amp;quot; und nennen ihn &amp;quot;Firewall&amp;quot;&lt;br /&gt;
* Dieser braucht 3 Netzwerkadapter:&lt;br /&gt;
# Netzwerkbrücke&lt;br /&gt;
# Internes Netzwerk &amp;quot;LAN&amp;quot;&lt;br /&gt;
# Internes Netzwerk &amp;quot;DMZ&amp;quot;&lt;br /&gt;
* Wir starten die Firewall und konfigurieren statische IP Adressen für alle 3 Netzwerkadapter&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/network/interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s3&lt;br /&gt;
 iface enp0s3 inet static&lt;br /&gt;
  address 172.RNr.0.1&#039;&#039;xx&#039;&#039;/16&lt;br /&gt;
  gateway 172.RNr.0.1&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s8&lt;br /&gt;
 iface enp0s8 inet static&lt;br /&gt;
  address 192.168.0.1/24&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s9&lt;br /&gt;
 iface enp0s9 inet static&lt;br /&gt;
  address 10.0.1&#039;&#039;xx&#039;&#039;.1/24&lt;br /&gt;
&lt;br /&gt;
* Interfaces runter und wieder hochfahren, um die neue Konfiguration zu laden&lt;br /&gt;
* &#039;&#039;&#039;ifdown -va&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ifup -va&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart networking&#039;&#039;&#039;&lt;br /&gt;
* Danach sollte der Befehl &#039;&#039;&#039;ip address show&#039;&#039;&#039; (oder &#039;&#039;&#039;ip a&#039;&#039;&#039;) die neuen IP Adressen anzeigen&lt;br /&gt;
&lt;br /&gt;
 1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&lt;br /&gt;
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;
     inet 127.0.0.1/8 scope host lo&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 ::1/128 scope host &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 2: enp0s3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1456 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:9b:79:a1 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;172.RNr.1.1&#039;&#039;xx&#039;&#039;/16&#039;&#039;&#039; brd 172.22.255.255 scope global enp0s3&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 2003:e5:173a:c401:a00:27ff:fe9b:79a1/64 scope global dynamic mngtmpaddr &lt;br /&gt;
        valid_lft 7134sec preferred_lft 1215sec&lt;br /&gt;
     inet6 fe80::a00:27ff:fe9b:79a1/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 3: enp0s8: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:15:03:b7 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;192.168.0.1/24&#039;&#039;&#039; brd 192.168.0.255 scope global enp0s8&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe15:3b7/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 4: enp0s9: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:31:01:09 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.1/24&#039;&#039;&#039; brd 10.0.100.255 scope global enp0s9&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe31:109/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
&lt;br /&gt;
= Workstation im LAN zum Systemadministrator machen =&lt;br /&gt;
&lt;br /&gt;
* Den Netzwerkadapter von VM &amp;quot;LAN Host&amp;quot; auf &amp;quot;Internes Netzwerk LAN&amp;quot; umstellen und die VM starten&lt;br /&gt;
* Wenn wir unsere Netzwerkkonfiguration anschauen, dann sehen wir keine IP Adresse, da noch kein DHCP läuft&lt;br /&gt;
* Deshalb geben wir uns eine temporäre IP, um per SSH auf die Firewall zu kommen&lt;br /&gt;
* &#039;&#039;&#039;systemctl stop NetworkManager&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ip address add 192.168.0.2/24 dev enp0s3&#039;&#039;&#039;&lt;br /&gt;
* Nun können wir die Firewall per SSH erreichen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* als erstes ändern wir den hostnamen der Firewall von &#039;&#039;debian&#039;&#039; zu &#039;&#039;firewall&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;hostnamectl set-hostname fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 127.0.0.1 localhost&lt;br /&gt;
 127.0.1.1 &#039;&#039;&#039;fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Ein erneutes einloggen updatet den Namen im Prompt&lt;br /&gt;
* als nächstes installieren wir einen [[DHCP]] Server, um Rechnern im LAN automatisch eine Netzwerkkonfiguration zu geben&lt;br /&gt;
* &#039;&#039;&#039;apt install isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Am Ende der Installation wird es eine Fehlermeldung geben, da systemd versucht den Dienst zu starten, obwohl noch keine Konfiguration da ist&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name-servers 1.1.1.1;&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet &#039;&#039;MAC Adresse vom Arch&#039;&#039;;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Dienst mit der neuen Konfiguration starten und überprüfen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl status isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Beim Neustart von Arch sollte dann automatisch die &#039;&#039;192.168.0.2&#039;&#039; bekommen (falls nicht MAC-Adresse überprüfen)&lt;br /&gt;
&lt;br /&gt;
= Firewall als Router konfigurieren =&lt;br /&gt;
&lt;br /&gt;
* Im Moment verwirft die Firewall alle Pakete mit IP-Adressen, die nicht für ihn selbst bestimmt sind&lt;br /&gt;
* Um die Pakete uns Default-Gateway weiterzuleiten muss der Kernelparameter &#039;&#039;net.ipv4.ip_forward&#039;&#039; gesetzt sein&lt;br /&gt;
* Temporär (bleibt nicht nach einem Reboot):&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=1&#039;&#039;&#039; &#039;&#039;# Einschalten&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=0&#039;&#039;&#039; &#039;&#039;# Ausschalten&#039;&#039;&lt;br /&gt;
* Für eine persistente Konfiguration muss dieser Parameter in der die Datei &#039;&#039;/etc/sysctl.conf&#039;&#039; stehen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/sysctl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to enable packet forwarding for IPv4&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;sysctl -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039;ource &#039;&#039;&#039;N&#039;&#039;&#039;etwork &#039;&#039;&#039;A&#039;&#039;&#039;ddress &#039;&#039;&#039;T&#039;&#039;&#039;ranslation muss noch geschehen, damit die Pakete mit IP Adressen aus einem privaten Netzwerk den Weg zurück finden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority 0;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
         oif enp0s3 masquerade&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl enable nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= SSH Schlüssel für passwortloses Login =&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Um nicht jedes mal das Passwort beim Login eingeben zu müssen kann man sich stattdessen mit einem privaten Schlüssel authentifizieren&lt;br /&gt;
* Wir erstellen einen Schlüssel mit RSA Verschlüsselung und erstmal ohne Passwortabfrage für den Benutz des Schlüssels&lt;br /&gt;
* &#039;&#039;&#039;ssh-keygen&#039;&#039;&#039; &#039;&#039;# 123Start$ als Passwort nehmen&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ssh-copy-id xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;scp ~/.ssh/id_rsa.pub xinux@192.168.0.1:~/.ssh/authorized_keys&#039;&#039;&#039;&lt;br /&gt;
* In der &#039;&#039;authorized_keys&#039;&#039; Datei können mehrere öffentliche Schlüssel stehen (pro Zeile ein Schlüssel)&lt;br /&gt;
* Es ist üblich SSH Login über Passwörter komplett auszuschalten sobald die SSH Schlüssel von den zugangsberechtigten Benutzern hinterlegt sind&lt;br /&gt;
* Normalerweise sind die Schlüssel passwortgeschützt.&lt;br /&gt;
* Damit man nicht jedes mal das Passwort dafür eingeben muss kann man einen [[SSH Agent]] nutzen&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
&lt;br /&gt;
* Wir wollen uns direkt als root einloggen können, weshalb die &#039;&#039;&#039;authorized_keys&#039;&#039;&#039; Datei auch im Home-Verzeichnis des root-Nutzers liegen muss&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mkdir &#039;&#039;.ssh&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cp &#039;&#039;~xinux/.ssh/authorized_keys&#039;&#039; &#039;&#039;.ssh/&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Um den SSH-Server abszusichern können wir den Port verlegen und nur schlüsselbasiertes Einloggen zulassen&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/ssh/sshd_config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Port 2222&lt;br /&gt;
 AddressFamily inet&lt;br /&gt;
 ListenAddress 192.168.0.1&lt;br /&gt;
 PubkeyAuthentication yes&lt;br /&gt;
 PasswordAuthentication no&lt;br /&gt;
 UsePAM no&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Nun sollten wir uns direkt als root anmelden können &lt;br /&gt;
* &#039;&#039;&#039;ssh -p 2222 root@192.168.0.1 &amp;quot;id &amp;amp;&amp;amp; hostname&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Um die Ameldung einfacher zu gestalten können wir unseren SSH-Client konfigurieren&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;~/.ssh/config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Host fw&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 	Hostname 192.168.0.1&lt;br /&gt;
 	User root&lt;br /&gt;
 	Port 2222&lt;br /&gt;
&lt;br /&gt;
* Jetzt kann man den Befehl folgendermaßen verkürzen:&lt;br /&gt;
* &#039;&#039;&#039;ssh fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= DHCP erweitern =&lt;br /&gt;
&lt;br /&gt;
* Um neue Rechner in der DMZ automatisch über LAN administrierbar zu machen, erweitern wir den DHCP Server auf der Firewall&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8 &#039;&#039;&#039;enp0s9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Die Subnetzdefinitionen folgen der Reihenfolge der Interfaces in &#039;&#039;/etc/default/isc-dhcp-server&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;subnet 10.0.1&#039;&#039;xx&#039;&#039;.0 netmask 255.255.255.0 {&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;range 10.0.1&#039;&#039;xx&#039;&#039;.50 10.0.1&#039;&#039;xx&#039;&#039;.100;&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;option routers 10.0.1&#039;&#039;xx&#039;&#039;.1;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet MAC Adresse vom Arch;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[DNS]] Server =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-1}}&lt;br /&gt;
&lt;br /&gt;
== Virtualbox ==&lt;br /&gt;
* Ein Klon von &amp;quot;Server Vorlage&amp;quot; mit Netzwerkadapter im internen Netzwerk &amp;quot;DMZ&amp;quot; erstellen&lt;br /&gt;
* Über die Systemlogs für &#039;&#039;&#039;DHCP&#039;&#039;&#039; auf der &#039;&#039;&#039;Firewall&#039;&#039;&#039; können wir die IP Adresse des DNS-Servers herausfinden&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
* &#039;&#039;&#039;journalctl -u isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Zurück zu Arch wechseln und über SSH auf den DNS Server einloggen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@10.0.&#039;&#039;(100 + eigene Nr.).&#039;&#039; &#039;&#039;yy&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
* Anschließend die IP Adresse in &#039;&#039;/etc/network/interfaces&#039;&#039; konfigurieren: 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2&lt;br /&gt;
* Hostname auf DNS: setzen (in &#039;&#039;/etc/hosts&#039;&#039; auch umändern)&lt;br /&gt;
* SSH Schlüssel hinterlegen&lt;br /&gt;
* Bind9 installieren&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;apt install bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
== Optionen festlegen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
         allow-recursion { 0.0.0.0/0; };&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zone definieren ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;lab(100 + eigene Nr.).nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zonendatei erstellen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab&#039;&#039;(100 + eigene Nr.)&#039;&#039;.nux. technik.xinux.de. (&#039;&#039;(Datum + Ver.nr.)&#039;&#039; 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns&lt;br /&gt;
 dns     IN A    10.0.(100 + eigene Nr.).2&lt;br /&gt;
 fw      IN A    10.0.(100 + eigene Nr.).1&lt;br /&gt;
&lt;br /&gt;
* Dienst neustarten und testen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short fw.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Der DNS-Server in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 53 UDP/TCP an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.0.1&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define dnsserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority -100; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Auflösen anderer Domänen über eine Pseudo Top Level Domain =&lt;br /&gt;
&lt;br /&gt;
== Dienst neustarten und DNS-Auflösung testen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short xinux.net&#039;&#039;&#039;&lt;br /&gt;
* Wenn das funktioniert dann den DNS Server im DHCP Server als Standard DNS Server und Suchdomäne eintragen (zur Firewall wechseln)&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 option domain-name-servers 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Arch neustarten und in &#039;&#039;/etc/resolv.conf&#039;&#039; nachschauen, ob die neue Konfiguration automatisch gezogen wurde&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart NetworkManager&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Bind9 Forwarder eintragen =&lt;br /&gt;
&lt;br /&gt;
== DNS Server der &#039;&#039;.nux&#039;&#039;-Domain ==&lt;br /&gt;
* Wenn jeder die DMZ der anderen erreichen kann, ist es möglich über eine Top Level Domain die anderen Domänen aufzulösen&lt;br /&gt;
* Dazu muss man auf den &#039;&#039;&#039;DNS Server&#039;&#039;&#039; einen vorkonfigurierten Pseudo Top Level Domain Nameserver als &#039;&#039;&#039;Forwarder&#039;&#039;&#039; eintragen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 forwarders { 172.RNr.0.100; }; //IP des Top Level Domain Nameservers&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Wenn man die Reverse Zone später auch auflösen will braucht man diese Zeile&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 empty-zones-enable no;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* Einmal alle Domänen durchtesten&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ping fw.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pseudo &#039;&#039;.nux&#039;&#039; Domain Server ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         empty-zones-enable no;&lt;br /&gt;
         allow-recursion  { 0.0.0.0/0; };&lt;br /&gt;
         allow-query  { 0.0.0.0/0; };&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
 };&lt;br /&gt;
* Zur Zonendefinition hinzufügen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 zone &amp;quot;0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 ...&lt;br /&gt;
* Zonendateien&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN      SOA     dns.nux. technik.xinux.de. (2023041809 14400 3600 3600000 86400)&lt;br /&gt;
 &lt;br /&gt;
 @       IN      NS      dns.nux.&lt;br /&gt;
 lab101          NS      dns.lab101.nux.&lt;br /&gt;
 lab102          NS      dns.lab102.nux.&lt;br /&gt;
 lab100          NS      dns.nux.&lt;br /&gt;
 &lt;br /&gt;
 dns     IN      A       172.RNr.0.100&lt;br /&gt;
 dns.lab101      A       172.RNr.0.1&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 dns.lab102      A       172.RNr.0.1&#039;&#039;xy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Reverse Lookup =&lt;br /&gt;
&lt;br /&gt;
* Für manche Dienste muss einer IP einen Domain Namen zugeordnet werden&lt;br /&gt;
* Dazu eine neue Zone definieren und eine neue Zonendatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;100.0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;100.0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim 100.0.10.in-addr.arpa&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab100.nux. technik.xinux.de. (2023050901 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns.lab100.nux.&lt;br /&gt;
 1       IN PTR  fw.lab100.nux.&lt;br /&gt;
 2       IN PTR  dns.lab100.nux.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Netz absichern =&lt;br /&gt;
&lt;br /&gt;
* Im Moment darf jeder auf die Firewall von jeden zugreifen (und damit alle dahinterliegenden Systeme)&lt;br /&gt;
* Um dies zu verhindern erstellen wir mit [[Nftables Netze absichern|nftables]] Firewall Regeln, die nur das nötigste zulassen&lt;br /&gt;
* Die Regeln werden von oben nach unten abgearbeitet&lt;br /&gt;
* Wenn keine Regel greift, dann zieht die &#039;&#039;Default Policy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Prerouting, Input, Forward, Output und Postrouting sind Punkte an denen wir Regeln erstellen können&lt;br /&gt;
&lt;br /&gt;
{{#drawio:nft-inet1}}&lt;br /&gt;
&lt;br /&gt;
== Nur SSH aus LAN auf die Firewall zulassen ==&lt;br /&gt;
&lt;br /&gt;
* Default Policy wird in allen Filterketten auf Drop gesetzt&lt;br /&gt;
* Wenn also keine Regel das Paket durchlässt, wird es verworfen&lt;br /&gt;
* Über Connection Tracking können wir uns auf die Regulierung neuer Verbindungen fokussieren&lt;br /&gt;
* Als erstes soll nur:&lt;br /&gt;
** Die Firewall mit sich selbst über das loopback Interface kommunizieren können (da es sonst zu komischen Problemen führen kann)&lt;br /&gt;
** &#039;&#039;Established&#039;&#039; und &#039;&#039;Related&#039;&#039; Pakete akzeptiert werden&lt;br /&gt;
** Neue Anfragen aus dem LAN auf TCP Port 2222 akzeptieren&lt;br /&gt;
** Firewall soll über HTTP bzw. HTTPS Programme herunterladen können&lt;br /&gt;
** Gedroppte Pakete sollen geloggt werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wanip = 172.RNr.0.1xx &lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 &#039;&#039;&#039;define wandev = enp0s3&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define landev = enp0s8&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define lan = 192.168.0.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif $landev tcp dport 2222 accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-input--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif $wandev tcp dport { 80, 443 } accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-output--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
 		ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 		ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Internetzugriff für LAN und Firewall ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/nftables.conf&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 define wanip = 172.22.0.1xx&lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 define wandev = &amp;quot;enp0s3&amp;quot;&lt;br /&gt;
 define landev = &amp;quot;enp0s8&amp;quot;&lt;br /&gt;
 define dmzdev = &amp;quot;enp0s9&amp;quot;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1xx.0/24&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
 		iif $landev ip saddr $lan tcp dport 2222 accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver tcp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver tcp  dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dmz tcp dport 22 accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
                 ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
                 ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;C&#039;&#039;&#039;onnection &#039;&#039;&#039;T&#039;&#039;&#039;racking &#039;&#039;&#039;T&#039;&#039;&#039;abelle ==&lt;br /&gt;
&lt;br /&gt;
* Das Tool &#039;&#039;&#039;conntrack&#039;&#039;&#039; installieren, um die CTT anschauen und leeren zu können&lt;br /&gt;
* &#039;&#039;&#039;apt install conntrack&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -F&#039;&#039;&#039; &#039;&#039;# Leert die Tabelle&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -L&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 tcp      6 432000 ESTABLISHED src=192.168.0.2 dst=192.168.0.2 sport=58178 dport=22 src=192.168.0.1 dst=192.168.0.2 sport=22 dport=58178 [ASSURED] mark=0 use=1&lt;br /&gt;
&lt;br /&gt;
= Webserver =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-2}}&lt;br /&gt;
&lt;br /&gt;
* Rechnern im LAN sollen Webseiten aufrufen können&lt;br /&gt;
* unsere DNS Server sollten andere Server im Internet und in den anderen DMZs befragen dürfen&lt;br /&gt;
* d.h. UDP Port 53 aus LAN und DMZ und TCP Ports 80 und 443 für LAN sollten freigeschalten werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 &#039;&#039;&#039;define dmzdev = enp0s9&#039;&#039;&#039;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 &#039;&#039;&#039;define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
             ct state established,related accept&lt;br /&gt;
             iif $landev tcp dport 22 accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             &#039;&#039;&#039;iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&#039;&#039;&#039;&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     table inet nat {&lt;br /&gt;
         chain postrouting {&lt;br /&gt;
             type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
             oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Ein Webserver in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 80/443 an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 define dmzdev = enp0s9&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.1.1&#039;&#039;xx&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define webserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter; policy drop;&lt;br /&gt;
                 iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif $landev tcp dport 22 accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&lt;br /&gt;
                 iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $webserver tcp dport 80 accept&#039;&#039;&#039;&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority 0; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* Der DNS Server soll uns erstmal auch als Webserver dienen&lt;br /&gt;
* &#039;&#039;&#039;apt install apache2&#039;&#039;&#039;&lt;br /&gt;
* Im Browser sollten die Webserver über die IPs der Firewalls erreichbar sein&lt;br /&gt;
&lt;br /&gt;
== Debug Möglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
* Falls sich die Firewall nicht so verhält wie erwartet, kann man:&lt;br /&gt;
** Connection Tracking Tabelle leeren/flushen: &#039;&#039;&#039;conntrack -F&#039;&#039;&#039;&lt;br /&gt;
** Über &#039;&#039;&#039;tail -f -n0 /var/log/syslog | grep nftables&#039;&#039;&#039; gedroppte Pakete anschauen (wenn die Log Regeln da sind)&lt;br /&gt;
** NAT Regeln überprüfen: &#039;&#039;&#039;tcpdump -i &#039;&#039;interface&#039;&#039; &#039;&#039;filter&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
** Auf Syntaxfehler überprüfen: &#039;&#039;&#039;nft -cf /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= LDAP Server einrichten =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-3}}&lt;br /&gt;
&lt;br /&gt;
* ein LDAP Server ermöglicht uns zentrale Benutzerverwaltung innerhalb einer Domäne&lt;br /&gt;
* die Benutzerdaten werden in einer Datenbank gespeichert und von Clients über &#039;&#039;&#039;TCP Port 389&#039;&#039;&#039; befragt&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;ldap&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
* eventuell muss auf der Firewall Port 80 und 443 für die DMZ freigeschaltet werden, damit die Pakete heruntergeladen werden können&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[Openldap Basic Config common]]&lt;br /&gt;
&lt;br /&gt;
= [[HAProxy]] für zentrale SSL Terminierung =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-4}}&lt;br /&gt;
&lt;br /&gt;
* Im Moment ist nur SSH verschlüsselt&lt;br /&gt;
* Pakete von HTTP Verbindungen zwischen den LAN und DMZ werden im Klartext verschickt&lt;br /&gt;
* &#039;&#039;&#039;Problem&#039;&#039;&#039;: Jemand der den Verkehr mitscheidet, kann alles lesen&lt;br /&gt;
* &#039;&#039;&#039;Lösung&#039;&#039;&#039;: Upgrade auf HTTPS mit [[Grundlagen Kryptografie | Zertifikaten]]&lt;br /&gt;
* [[SFTP-Server]] für den sicheren Transfer der Zertifikatsanträge&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;haproxy&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
# signiertes Wildcard-Zertifikat rüberkopieren&lt;br /&gt;
# privaten Zertifikatsschlüssel rüberkopieren&lt;br /&gt;
&lt;br /&gt;
* Signiertes Zertifikat vom SFTP Server holen&lt;br /&gt;
* &#039;&#039;&#039;sftp -P 9922 cert_req@172.RNr.1.100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;get cert/lab1&#039;&#039;xx&#039;&#039;.nux.crt&#039;&#039;&#039;&lt;br /&gt;
* Auf dem HAProxy die &#039;&#039;server.pem&#039;&#039; Datei erstellen&lt;br /&gt;
* &#039;&#039;&#039;cat lab1&#039;&#039;xx&#039;&#039;.nux.key lab1&#039;&#039;xx&#039;&#039;.nux.crt &amp;gt; /etc/haproxy/server.pem&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/haproxy/haproxy.cfg&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 frontend https_web_services&lt;br /&gt;
  bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
  timeout client 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  acl acl_web1 hdr_beg(host) -i web1&lt;br /&gt;
  acl acl_web2 hdr_beg(host) -i web2&lt;br /&gt;
  use_backend backend_web1 if acl_web1&lt;br /&gt;
  use_backend backend_web2 if acl_web2&lt;br /&gt;
  default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 #frontend https_frontend&lt;br /&gt;
 # bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
 # timeout client 50000&lt;br /&gt;
 # default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web1&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_dns 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web2&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_ldap 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend http_backend&lt;br /&gt;
  mode http&lt;br /&gt;
  balance roundrobin&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  server web_dns_2 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
  server web_ldap_2 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart haproxy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[Squid erste Schritte|Squid]] Proxy auf der Firewall =&lt;br /&gt;
&lt;br /&gt;
* [[Squid ACL Basic]]&lt;br /&gt;
* [[Iptables mit Squid Transparenter Proxy]]&lt;br /&gt;
* Mehr Kontrolle über die Domains, die LAN erreichen darf&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
 acl facebook url_regex -i facebook&lt;br /&gt;
 &lt;br /&gt;
 http_access deny facebook&lt;br /&gt;
 http_access allow all&lt;br /&gt;
 &lt;br /&gt;
 #nativer Zugriff&lt;br /&gt;
 http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 #transparenter Zugriff unverschlüsselt&lt;br /&gt;
 http_port 3128 intercept&lt;br /&gt;
 #transparenter Zugriff verschlüsselt &#039;&#039;&#039;wichtig https_port&#039;&#039;&#039;&lt;br /&gt;
 https_port 3129 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 &lt;br /&gt;
 ssl_bump bump all&lt;br /&gt;
 &lt;br /&gt;
 coredump_dir /var/spool/squid&lt;br /&gt;
 logfile_rotate 0&lt;br /&gt;
 &lt;br /&gt;
 cache_dir ufs /var/spool/squid 200 16 256&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;acl domain_blacklist dstdomain &amp;quot;/etc/squid/domain_blacklist.txt&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;http_access deny all domain_blacklist&#039;&#039;&#039;&lt;br /&gt;
 http_access allow localnet&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/domain_blacklist.txt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 facebook.com&lt;br /&gt;
 twitter.com&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart squid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-5}}&lt;br /&gt;
&lt;br /&gt;
= Festplatten verschlüsseln =&lt;br /&gt;
&lt;br /&gt;
; Das Verschlüsseln mit &#039;&#039;&#039;cryptsetup&#039;&#039;&#039; löscht alle vorherigen Daten der Festplatte&lt;br /&gt;
* Neue Festplatte in VirtualBox erstellen und anhängen&lt;br /&gt;
* zu verschlüsselnde Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;fdisk /dev/sdX&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup luksFormat /dev/sdXx&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup open /dev/sdXx &#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Dateisystem auf der entschlüsselten Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;mkfs.ext4 /dev/mapper/&#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* beliebige Testdatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;echo &amp;quot;Hallo Welt&amp;quot; &amp;gt; encrypted.txt&#039;&#039;&#039;&lt;br /&gt;
* Nach Benutzen der Partition wieder verschlüsseln&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup close name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Separate VM für Monitoring/Scanning =&lt;br /&gt;
&lt;br /&gt;
# Hostname auf &#039;&#039;health&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.4/24&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
&lt;br /&gt;
= Checkmk =&lt;br /&gt;
&lt;br /&gt;
* Die Weboberfläche soll über [https://cmk.lab1xx.nux https://cmk.lab1&#039;&#039;xx&#039;&#039;.nux] erreichbar sein:&lt;br /&gt;
** DNS Eintrag&lt;br /&gt;
** HAProxy ACL&lt;br /&gt;
&lt;br /&gt;
* Download: https://checkmk.com/de/download?method=cmk&amp;amp;edition=cre&amp;amp;version=2.2.0b7&amp;amp;platform=debian&amp;amp;os=bullseye&amp;amp;type=cmk&lt;br /&gt;
* Anweisungen der Webseite folgen&lt;br /&gt;
* cmkadmin&#039;s Passwort auf 123Start$ ändern&lt;br /&gt;
* Rechner ins Monitoring hinzufügen&lt;br /&gt;
* AUR Paketmanager https://github.com/Jguer/yay&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58647</id>
		<title>Unix-/Linux Netz</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58647"/>
		<updated>2024-12-04T08:39:36Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Nur SSH aus LAN auf die Firewall zulassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Netzwerk der Schulung=&lt;br /&gt;
&lt;br /&gt;
* Die WAN-IP wird die 172.RNr.0.(100 + eigene Nr.)&lt;br /&gt;
* Die &#039;&#039;&#039;D&#039;&#039;&#039;e&#039;&#039;&#039;m&#039;&#039;&#039;ilitarisierte &#039;&#039;&#039;Z&#039;&#039;&#039;one (DMZ) enthält Services, die von außen erreichbar sein sollen&lt;br /&gt;
* Im LAN befindet sich unser Administratorrechner von dem wir unsere Rechner konfigurieren&lt;br /&gt;
* Das LAN soll Verbindungen ins Internet initiieren können, aber nicht direkt von außen erreichbar sein&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul2}}&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;xx&#039;&#039; in den folgenden Bildern durch die eigene Nummer ersetzen&lt;br /&gt;
;Benutzername für virtuelle Maschinen ist &#039;&#039;xinux&#039;&#039; oder &#039;&#039;root&#039;&#039;&lt;br /&gt;
;Passwort ist immer 123Start$&lt;br /&gt;
&lt;br /&gt;
= Vorbereiten der Firewall =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-0}}&lt;br /&gt;
&lt;br /&gt;
* Wir klonen den Rechner &amp;quot;Server Vorlage&amp;quot; und nennen ihn &amp;quot;Firewall&amp;quot;&lt;br /&gt;
* Dieser braucht 3 Netzwerkadapter:&lt;br /&gt;
# Netzwerkbrücke&lt;br /&gt;
# Internes Netzwerk &amp;quot;LAN&amp;quot;&lt;br /&gt;
# Internes Netzwerk &amp;quot;DMZ&amp;quot;&lt;br /&gt;
* Wir starten die Firewall und konfigurieren statische IP Adressen für alle 3 Netzwerkadapter&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/network/interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s3&lt;br /&gt;
 iface enp0s3 inet static&lt;br /&gt;
  address 172.RNr.0.1&#039;&#039;xx&#039;&#039;/16&lt;br /&gt;
  gateway 172.RNr.0.1&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s8&lt;br /&gt;
 iface enp0s8 inet static&lt;br /&gt;
  address 192.168.0.1/24&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s9&lt;br /&gt;
 iface enp0s9 inet static&lt;br /&gt;
  address 10.0.1&#039;&#039;xx&#039;&#039;.1/24&lt;br /&gt;
&lt;br /&gt;
* Interfaces runter und wieder hochfahren, um die neue Konfiguration zu laden&lt;br /&gt;
* &#039;&#039;&#039;ifdown -va&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ifup -va&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart networking&#039;&#039;&#039;&lt;br /&gt;
* Danach sollte der Befehl &#039;&#039;&#039;ip address show&#039;&#039;&#039; (oder &#039;&#039;&#039;ip a&#039;&#039;&#039;) die neuen IP Adressen anzeigen&lt;br /&gt;
&lt;br /&gt;
 1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&lt;br /&gt;
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;
     inet 127.0.0.1/8 scope host lo&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 ::1/128 scope host &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 2: enp0s3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1456 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:9b:79:a1 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;172.RNr.1.1&#039;&#039;xx&#039;&#039;/16&#039;&#039;&#039; brd 172.22.255.255 scope global enp0s3&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 2003:e5:173a:c401:a00:27ff:fe9b:79a1/64 scope global dynamic mngtmpaddr &lt;br /&gt;
        valid_lft 7134sec preferred_lft 1215sec&lt;br /&gt;
     inet6 fe80::a00:27ff:fe9b:79a1/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 3: enp0s8: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:15:03:b7 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;192.168.0.1/24&#039;&#039;&#039; brd 192.168.0.255 scope global enp0s8&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe15:3b7/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 4: enp0s9: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:31:01:09 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.1/24&#039;&#039;&#039; brd 10.0.100.255 scope global enp0s9&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe31:109/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
&lt;br /&gt;
= Workstation im LAN zum Systemadministrator machen =&lt;br /&gt;
&lt;br /&gt;
* Den Netzwerkadapter von VM &amp;quot;LAN Host&amp;quot; auf &amp;quot;Internes Netzwerk LAN&amp;quot; umstellen und die VM starten&lt;br /&gt;
* Wenn wir unsere Netzwerkkonfiguration anschauen, dann sehen wir keine IP Adresse, da noch kein DHCP läuft&lt;br /&gt;
* Deshalb geben wir uns eine temporäre IP, um per SSH auf die Firewall zu kommen&lt;br /&gt;
* &#039;&#039;&#039;systemctl stop NetworkManager&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ip address add 192.168.0.2/24 dev enp0s3&#039;&#039;&#039;&lt;br /&gt;
* Nun können wir die Firewall per SSH erreichen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* als erstes ändern wir den hostnamen der Firewall von &#039;&#039;debian&#039;&#039; zu &#039;&#039;firewall&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;hostnamectl set-hostname fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 127.0.0.1 localhost&lt;br /&gt;
 127.0.1.1 &#039;&#039;&#039;fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Ein erneutes einloggen updatet den Namen im Prompt&lt;br /&gt;
* als nächstes installieren wir einen [[DHCP]] Server, um Rechnern im LAN automatisch eine Netzwerkkonfiguration zu geben&lt;br /&gt;
* &#039;&#039;&#039;apt install isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Am Ende der Installation wird es eine Fehlermeldung geben, da systemd versucht den Dienst zu starten, obwohl noch keine Konfiguration da ist&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name-servers 1.1.1.1;&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet &#039;&#039;MAC Adresse vom Arch&#039;&#039;;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Dienst mit der neuen Konfiguration starten und überprüfen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl status isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Beim Neustart von Arch sollte dann automatisch die &#039;&#039;192.168.0.2&#039;&#039; bekommen (falls nicht MAC-Adresse überprüfen)&lt;br /&gt;
&lt;br /&gt;
= Firewall als Router konfigurieren =&lt;br /&gt;
&lt;br /&gt;
* Im Moment verwirft die Firewall alle Pakete mit IP-Adressen, die nicht für ihn selbst bestimmt sind&lt;br /&gt;
* Um die Pakete uns Default-Gateway weiterzuleiten muss der Kernelparameter &#039;&#039;net.ipv4.ip_forward&#039;&#039; gesetzt sein&lt;br /&gt;
* Temporär (bleibt nicht nach einem Reboot):&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=1&#039;&#039;&#039; &#039;&#039;# Einschalten&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=0&#039;&#039;&#039; &#039;&#039;# Ausschalten&#039;&#039;&lt;br /&gt;
* Für eine persistente Konfiguration muss dieser Parameter in der die Datei &#039;&#039;/etc/sysctl.conf&#039;&#039; stehen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/sysctl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to enable packet forwarding for IPv4&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;sysctl -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039;ource &#039;&#039;&#039;N&#039;&#039;&#039;etwork &#039;&#039;&#039;A&#039;&#039;&#039;ddress &#039;&#039;&#039;T&#039;&#039;&#039;ranslation muss noch geschehen, damit die Pakete mit IP Adressen aus einem privaten Netzwerk den Weg zurück finden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority 0;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
         oif enp0s3 masquerade&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl enable nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= SSH Schlüssel für passwortloses Login =&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Um nicht jedes mal das Passwort beim Login eingeben zu müssen kann man sich stattdessen mit einem privaten Schlüssel authentifizieren&lt;br /&gt;
* Wir erstellen einen Schlüssel mit RSA Verschlüsselung und erstmal ohne Passwortabfrage für den Benutz des Schlüssels&lt;br /&gt;
* &#039;&#039;&#039;ssh-keygen&#039;&#039;&#039; &#039;&#039;# 123Start$ als Passwort nehmen&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ssh-copy-id xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;scp ~/.ssh/id_rsa.pub xinux@192.168.0.1:~/.ssh/authorized_keys&#039;&#039;&#039;&lt;br /&gt;
* In der &#039;&#039;authorized_keys&#039;&#039; Datei können mehrere öffentliche Schlüssel stehen (pro Zeile ein Schlüssel)&lt;br /&gt;
* Es ist üblich SSH Login über Passwörter komplett auszuschalten sobald die SSH Schlüssel von den zugangsberechtigten Benutzern hinterlegt sind&lt;br /&gt;
* Normalerweise sind die Schlüssel passwortgeschützt.&lt;br /&gt;
* Damit man nicht jedes mal das Passwort dafür eingeben muss kann man einen [[SSH Agent]] nutzen&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
&lt;br /&gt;
* Wir wollen uns direkt als root einloggen können, weshalb die &#039;&#039;&#039;authorized_keys&#039;&#039;&#039; Datei auch im Home-Verzeichnis des root-Nutzers liegen muss&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mkdir &#039;&#039;.ssh&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cp &#039;&#039;~xinux/.ssh/authorized_keys&#039;&#039; &#039;&#039;.ssh/&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Um den SSH-Server abszusichern können wir den Port verlegen und nur schlüsselbasiertes Einloggen zulassen&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/ssh/sshd_config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Port 2222&lt;br /&gt;
 AddressFamily inet&lt;br /&gt;
 ListenAddress 192.168.0.1&lt;br /&gt;
 PubkeyAuthentication yes&lt;br /&gt;
 PasswordAuthentication no&lt;br /&gt;
 UsePAM no&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Nun sollten wir uns direkt als root anmelden können &lt;br /&gt;
* &#039;&#039;&#039;ssh -p 2222 root@192.168.0.1 &amp;quot;id &amp;amp;&amp;amp; hostname&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Um die Ameldung einfacher zu gestalten können wir unseren SSH-Client konfigurieren&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;~/.ssh/config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Host fw&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 	Hostname 192.168.0.1&lt;br /&gt;
 	User root&lt;br /&gt;
 	Port 2222&lt;br /&gt;
&lt;br /&gt;
* Jetzt kann man den Befehl folgendermaßen verkürzen:&lt;br /&gt;
* &#039;&#039;&#039;ssh fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= DHCP erweitern =&lt;br /&gt;
&lt;br /&gt;
* Um neue Rechner in der DMZ automatisch über LAN administrierbar zu machen, erweitern wir den DHCP Server auf der Firewall&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8 &#039;&#039;&#039;enp0s9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Die Subnetzdefinitionen folgen der Reihenfolge der Interfaces in &#039;&#039;/etc/default/isc-dhcp-server&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;subnet 10.0.1&#039;&#039;xx&#039;&#039;.0 netmask 255.255.255.0 {&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;range 10.0.1&#039;&#039;xx&#039;&#039;.50 10.0.1&#039;&#039;xx&#039;&#039;.100;&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;option routers 10.0.1&#039;&#039;xx&#039;&#039;.1;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet MAC Adresse vom Arch;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[DNS]] Server =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-1}}&lt;br /&gt;
&lt;br /&gt;
== Virtualbox ==&lt;br /&gt;
* Ein Klon von &amp;quot;Server Vorlage&amp;quot; mit Netzwerkadapter im internen Netzwerk &amp;quot;DMZ&amp;quot; erstellen&lt;br /&gt;
* Über die Systemlogs für &#039;&#039;&#039;DHCP&#039;&#039;&#039; auf der &#039;&#039;&#039;Firewall&#039;&#039;&#039; können wir die IP Adresse des DNS-Servers herausfinden&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
* &#039;&#039;&#039;journalctl -u isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Zurück zu Arch wechseln und über SSH auf den DNS Server einloggen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@10.0.&#039;&#039;(100 + eigene Nr.).&#039;&#039; &#039;&#039;yy&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
* Anschließend die IP Adresse in &#039;&#039;/etc/network/interfaces&#039;&#039; konfigurieren: 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2&lt;br /&gt;
* Hostname auf DNS: setzen (in &#039;&#039;/etc/hosts&#039;&#039; auch umändern)&lt;br /&gt;
* SSH Schlüssel hinterlegen&lt;br /&gt;
* Bind9 installieren&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;apt install bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
== Optionen festlegen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
         allow-recursion { 0.0.0.0/0; };&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zone definieren ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;lab(100 + eigene Nr.).nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zonendatei erstellen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab&#039;&#039;(100 + eigene Nr.)&#039;&#039;.nux. technik.xinux.de. (&#039;&#039;(Datum + Ver.nr.)&#039;&#039; 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns&lt;br /&gt;
 dns     IN A    10.0.(100 + eigene Nr.).2&lt;br /&gt;
 fw      IN A    10.0.(100 + eigene Nr.).1&lt;br /&gt;
&lt;br /&gt;
* Dienst neustarten und testen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short fw.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Der DNS-Server in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 53 UDP/TCP an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.0.1&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define dnsserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority -100; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Auflösen anderer Domänen über eine Pseudo Top Level Domain =&lt;br /&gt;
&lt;br /&gt;
== Dienst neustarten und DNS-Auflösung testen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short xinux.net&#039;&#039;&#039;&lt;br /&gt;
* Wenn das funktioniert dann den DNS Server im DHCP Server als Standard DNS Server und Suchdomäne eintragen (zur Firewall wechseln)&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 option domain-name-servers 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Arch neustarten und in &#039;&#039;/etc/resolv.conf&#039;&#039; nachschauen, ob die neue Konfiguration automatisch gezogen wurde&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart NetworkManager&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Bind9 Forwarder eintragen =&lt;br /&gt;
&lt;br /&gt;
== DNS Server der &#039;&#039;.nux&#039;&#039;-Domain ==&lt;br /&gt;
* Wenn jeder die DMZ der anderen erreichen kann, ist es möglich über eine Top Level Domain die anderen Domänen aufzulösen&lt;br /&gt;
* Dazu muss man auf den &#039;&#039;&#039;DNS Server&#039;&#039;&#039; einen vorkonfigurierten Pseudo Top Level Domain Nameserver als &#039;&#039;&#039;Forwarder&#039;&#039;&#039; eintragen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 forwarders { 172.RNr.0.100; }; //IP des Top Level Domain Nameservers&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Wenn man die Reverse Zone später auch auflösen will braucht man diese Zeile&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 empty-zones-enable no;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* Einmal alle Domänen durchtesten&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ping fw.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pseudo &#039;&#039;.nux&#039;&#039; Domain Server ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         empty-zones-enable no;&lt;br /&gt;
         allow-recursion  { 0.0.0.0/0; };&lt;br /&gt;
         allow-query  { 0.0.0.0/0; };&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
 };&lt;br /&gt;
* Zur Zonendefinition hinzufügen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 zone &amp;quot;0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 ...&lt;br /&gt;
* Zonendateien&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN      SOA     dns.nux. technik.xinux.de. (2023041809 14400 3600 3600000 86400)&lt;br /&gt;
 &lt;br /&gt;
 @       IN      NS      dns.nux.&lt;br /&gt;
 lab101          NS      dns.lab101.nux.&lt;br /&gt;
 lab102          NS      dns.lab102.nux.&lt;br /&gt;
 lab100          NS      dns.nux.&lt;br /&gt;
 &lt;br /&gt;
 dns     IN      A       172.RNr.0.100&lt;br /&gt;
 dns.lab101      A       172.RNr.0.1&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 dns.lab102      A       172.RNr.0.1&#039;&#039;xy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Reverse Lookup =&lt;br /&gt;
&lt;br /&gt;
* Für manche Dienste muss einer IP einen Domain Namen zugeordnet werden&lt;br /&gt;
* Dazu eine neue Zone definieren und eine neue Zonendatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;100.0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;100.0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim 100.0.10.in-addr.arpa&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab100.nux. technik.xinux.de. (2023050901 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns.lab100.nux.&lt;br /&gt;
 1       IN PTR  fw.lab100.nux.&lt;br /&gt;
 2       IN PTR  dns.lab100.nux.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Netz absichern =&lt;br /&gt;
&lt;br /&gt;
* Im Moment darf jeder auf die Firewall von jeden zugreifen (und damit alle dahinterliegenden Systeme)&lt;br /&gt;
* Um dies zu verhindern erstellen wir mit [[Nftables Netze absichern|nftables]] Firewall Regeln, die nur das nötigste zulassen&lt;br /&gt;
* Die Regeln werden von oben nach unten abgearbeitet&lt;br /&gt;
* Wenn keine Regel greift, dann zieht die &#039;&#039;Default Policy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Prerouting, Input, Forward, Output und Postrouting sind Punkte an denen wir Regeln erstellen können&lt;br /&gt;
&lt;br /&gt;
{{#drawio:nft-inet1}}&lt;br /&gt;
&lt;br /&gt;
== Nur SSH aus LAN auf die Firewall zulassen ==&lt;br /&gt;
&lt;br /&gt;
* Default Policy wird in allen Filterketten auf Drop gesetzt&lt;br /&gt;
* Wenn also keine Regel das Paket durchlässt, wird es verworfen&lt;br /&gt;
* Über Connection Tracking können wir uns auf die Regulierung neuer Verbindungen fokussieren&lt;br /&gt;
* Als erstes soll nur:&lt;br /&gt;
** Die Firewall mit sich selbst über das loopback Interface kommunizieren können (da es sonst zu komischen Problemen führen kann)&lt;br /&gt;
** &#039;&#039;Established&#039;&#039; und &#039;&#039;Related&#039;&#039; Pakete akzeptiert werden&lt;br /&gt;
** Neue Anfragen aus dem LAN auf TCP Port 2222 akzeptieren&lt;br /&gt;
** Firewall soll über HTTP bzw. HTTPS Programme herunterladen können&lt;br /&gt;
** Gedroppte Pakete sollen geloggt werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wanip = 172.RNr.0.1xx &lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 &#039;&#039;&#039;define wandev = enp0s3&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define landev = enp0s8&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define lan = 192.168.0.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif $landev tcp dport 2222 accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-input--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif $wandev tcp dport { 80, 443 } accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-output--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
 		ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 		ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Internetzugriff für LAN und Firewall ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/nftables.conf&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 define wanip = 172.22.0.1xx&lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 define wandev = &amp;quot;enp0s3&amp;quot;&lt;br /&gt;
 define landev = &amp;quot;enp0s8&amp;quot;&lt;br /&gt;
 define dmzdev = &amp;quot;enp0s9&amp;quot;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1xx.0/24&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
 		iif $landev ip saddr $lan tcp dport 2222 accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver tcp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver tcp  dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dmz tcp dport 22 accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
                 ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
                 ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;C&#039;&#039;&#039;onnection &#039;&#039;&#039;T&#039;&#039;&#039;racking &#039;&#039;&#039;T&#039;&#039;&#039;abelle ==&lt;br /&gt;
&lt;br /&gt;
* Das Tool &#039;&#039;&#039;conntrack&#039;&#039;&#039; installieren, um die CTT anschauen und leeren zu können&lt;br /&gt;
* &#039;&#039;&#039;apt install conntrack&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -F&#039;&#039;&#039; &#039;&#039;# Leert die Tabelle&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -L&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 tcp      6 432000 ESTABLISHED src=192.168.0.2 dst=192.168.0.2 sport=58178 dport=22 src=192.168.0.1 dst=192.168.0.2 sport=22 dport=58178 [ASSURED] mark=0 use=1&lt;br /&gt;
&lt;br /&gt;
= Webserver =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-2}}&lt;br /&gt;
&lt;br /&gt;
* Rechnern im LAN sollen Webseiten aufrufen können&lt;br /&gt;
* unsere DNS Server sollten andere Server im Internet und in den anderen DMZs befragen dürfen&lt;br /&gt;
* d.h. UDP Port 53 aus LAN und DMZ und TCP Ports 80 und 443 für LAN sollten freigeschalten werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 &#039;&#039;&#039;define dmzdev = enp0s9&#039;&#039;&#039;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 &#039;&#039;&#039;define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
             ct state established,related accept&lt;br /&gt;
             iif $landev tcp dport 22 accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             &#039;&#039;&#039;iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&#039;&#039;&#039;&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     table inet nat {&lt;br /&gt;
         chain postrouting {&lt;br /&gt;
             type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
             oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Ein Webserver in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 80/443 an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 define dmzdev = enp0s9&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.1.1&#039;&#039;xx&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define webserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter; policy drop;&lt;br /&gt;
                 iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif $landev tcp dport 22 accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&lt;br /&gt;
                 iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $webserver tcp dport 80 accept&#039;&#039;&#039;&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority 0; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* Der DNS Server soll uns erstmal auch als Webserver dienen&lt;br /&gt;
* &#039;&#039;&#039;apt install apache2&#039;&#039;&#039;&lt;br /&gt;
* Im Browser sollten die Webserver über die IPs der Firewalls erreichbar sein&lt;br /&gt;
&lt;br /&gt;
== Debug Möglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
* Falls sich die Firewall nicht so verhält wie erwartet, kann man:&lt;br /&gt;
** Connection Tracking Tabelle leeren/flushen: &#039;&#039;&#039;conntrack -F&#039;&#039;&#039;&lt;br /&gt;
** Über &#039;&#039;&#039;tail -f -n0 /var/log/syslog | grep nftables&#039;&#039;&#039; gedroppte Pakete anschauen (wenn die Log Regeln da sind)&lt;br /&gt;
** NAT Regeln überprüfen: &#039;&#039;&#039;tcpdump -i &#039;&#039;interface&#039;&#039; &#039;&#039;filter&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
** Auf Syntaxfehler überprüfen: &#039;&#039;&#039;nft -cf /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= LDAP Server einrichten =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-3}}&lt;br /&gt;
&lt;br /&gt;
* ein LDAP Server ermöglicht uns zentrale Benutzerverwaltung innerhalb einer Domäne&lt;br /&gt;
* die Benutzerdaten werden in einer Datenbank gespeichert und von Clients über &#039;&#039;&#039;TCP Port 389&#039;&#039;&#039; befragt&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;ldap&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
* eventuell muss auf der Firewall Port 80 und 443 für die DMZ freigeschaltet werden, damit die Pakete heruntergeladen werden können&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[Openldap Basic Config common]]&lt;br /&gt;
&lt;br /&gt;
= [[HAProxy]] für zentrale SSL Terminierung =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-4}}&lt;br /&gt;
&lt;br /&gt;
* Im Moment ist nur SSH verschlüsselt&lt;br /&gt;
* Pakete von HTTP Verbindungen zwischen den LAN und DMZ werden im Klartext verschickt&lt;br /&gt;
* &#039;&#039;&#039;Problem&#039;&#039;&#039;: Jemand der den Verkehr mitscheidet, kann alles lesen&lt;br /&gt;
* &#039;&#039;&#039;Lösung&#039;&#039;&#039;: Upgrade auf HTTPS mit [[Grundlagen Kryptografie | Zertifikaten]]&lt;br /&gt;
* [[SFTP-Server]] für den sicheren Transfer der Zertifikatsanträge&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;haproxy&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
# signiertes Wildcard-Zertifikat rüberkopieren&lt;br /&gt;
# privaten Zertifikatsschlüssel rüberkopieren&lt;br /&gt;
&lt;br /&gt;
* Signiertes Zertifikat vom SFTP Server holen&lt;br /&gt;
* &#039;&#039;&#039;sftp -P 9922 cert_req@172.RNr.1.100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;get cert/lab1&#039;&#039;xx&#039;&#039;.nux.crt&#039;&#039;&#039;&lt;br /&gt;
* Auf dem HAProxy die &#039;&#039;server.pem&#039;&#039; Datei erstellen&lt;br /&gt;
* &#039;&#039;&#039;cat lab1&#039;&#039;xx&#039;&#039;.nux.key lab1&#039;&#039;xx&#039;&#039;.nux.crt &amp;gt; /etc/haproxy/server.pem&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/haproxy/haproxy.cfg&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 frontend https_web_services&lt;br /&gt;
  bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
  timeout client 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  acl acl_web1 hdr_beg(host) -i web1&lt;br /&gt;
  acl acl_web2 hdr_beg(host) -i web2&lt;br /&gt;
  use_backend backend_web1 if acl_web1&lt;br /&gt;
  use_backend backend_web2 if acl_web2&lt;br /&gt;
  default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 #frontend https_frontend&lt;br /&gt;
 # bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
 # timeout client 50000&lt;br /&gt;
 # default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web1&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_dns 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web2&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_ldap 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend http_backend&lt;br /&gt;
  mode http&lt;br /&gt;
  balance roundrobin&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  server web_dns_2 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
  server web_ldap_2 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart haproxy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[Squid erste Schritte|Squid]] Proxy auf der Firewall =&lt;br /&gt;
&lt;br /&gt;
* [[Squid ACL Basic]]&lt;br /&gt;
* [[Iptables mit Squid Transparenter Proxy]]&lt;br /&gt;
* Mehr Kontrolle über die Domains, die LAN erreichen darf&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
 acl facebook url_regex -i facebook&lt;br /&gt;
 &lt;br /&gt;
 http_access deny facebook&lt;br /&gt;
 http_access allow all&lt;br /&gt;
 &lt;br /&gt;
 #nativer Zugriff&lt;br /&gt;
 http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 #transparenter Zugriff unverschlüsselt&lt;br /&gt;
 http_port 3128 intercept&lt;br /&gt;
 #transparenter Zugriff verschlüsselt &#039;&#039;&#039;wichtig https_port&#039;&#039;&#039;&lt;br /&gt;
 https_port 3129 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 &lt;br /&gt;
 ssl_bump bump all&lt;br /&gt;
 &lt;br /&gt;
 coredump_dir /var/spool/squid&lt;br /&gt;
 logfile_rotate 0&lt;br /&gt;
 &lt;br /&gt;
 cache_dir ufs /var/spool/squid 200 16 256&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;acl domain_blacklist dstdomain &amp;quot;/etc/squid/domain_blacklist.txt&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;http_access deny all domain_blacklist&#039;&#039;&#039;&lt;br /&gt;
 http_access allow localnet&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/domain_blacklist.txt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 facebook.com&lt;br /&gt;
 twitter.com&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart squid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-5}}&lt;br /&gt;
&lt;br /&gt;
= Festplatten verschlüsseln =&lt;br /&gt;
&lt;br /&gt;
; Das Verschlüsseln mit &#039;&#039;&#039;cryptsetup&#039;&#039;&#039; löscht alle vorherigen Daten der Festplatte&lt;br /&gt;
* Neue Festplatte in VirtualBox erstellen und anhängen&lt;br /&gt;
* zu verschlüsselnde Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;fdisk /dev/sdX&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup luksFormat /dev/sdXx&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup open /dev/sdXx &#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Dateisystem auf der entschlüsselten Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;mkfs.ext4 /dev/mapper/&#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* beliebige Testdatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;echo &amp;quot;Hallo Welt&amp;quot; &amp;gt; encrypted.txt&#039;&#039;&#039;&lt;br /&gt;
* Nach Benutzen der Partition wieder verschlüsseln&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup close name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Separate VM für Monitoring/Scanning =&lt;br /&gt;
&lt;br /&gt;
# Hostname auf &#039;&#039;health&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.4/24&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
&lt;br /&gt;
= Checkmk =&lt;br /&gt;
&lt;br /&gt;
* Die Weboberfläche soll über [https://cmk.lab1xx.nux https://cmk.lab1&#039;&#039;xx&#039;&#039;.nux] erreichbar sein:&lt;br /&gt;
** DNS Eintrag&lt;br /&gt;
** HAProxy ACL&lt;br /&gt;
&lt;br /&gt;
* Download: https://checkmk.com/de/download?method=cmk&amp;amp;edition=cre&amp;amp;version=2.2.0b7&amp;amp;platform=debian&amp;amp;os=bullseye&amp;amp;type=cmk&lt;br /&gt;
* Anweisungen der Webseite folgen&lt;br /&gt;
* cmkadmin&#039;s Passwort auf 123Start$ ändern&lt;br /&gt;
* Rechner ins Monitoring hinzufügen&lt;br /&gt;
* AUR Paketmanager https://github.com/Jguer/yay&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58646</id>
		<title>Unix-/Linux Netz</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58646"/>
		<updated>2024-12-04T08:38:43Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Nur SSH aus LAN auf die Firewall zulassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Netzwerk der Schulung=&lt;br /&gt;
&lt;br /&gt;
* Die WAN-IP wird die 172.RNr.0.(100 + eigene Nr.)&lt;br /&gt;
* Die &#039;&#039;&#039;D&#039;&#039;&#039;e&#039;&#039;&#039;m&#039;&#039;&#039;ilitarisierte &#039;&#039;&#039;Z&#039;&#039;&#039;one (DMZ) enthält Services, die von außen erreichbar sein sollen&lt;br /&gt;
* Im LAN befindet sich unser Administratorrechner von dem wir unsere Rechner konfigurieren&lt;br /&gt;
* Das LAN soll Verbindungen ins Internet initiieren können, aber nicht direkt von außen erreichbar sein&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul2}}&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;xx&#039;&#039; in den folgenden Bildern durch die eigene Nummer ersetzen&lt;br /&gt;
;Benutzername für virtuelle Maschinen ist &#039;&#039;xinux&#039;&#039; oder &#039;&#039;root&#039;&#039;&lt;br /&gt;
;Passwort ist immer 123Start$&lt;br /&gt;
&lt;br /&gt;
= Vorbereiten der Firewall =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-0}}&lt;br /&gt;
&lt;br /&gt;
* Wir klonen den Rechner &amp;quot;Server Vorlage&amp;quot; und nennen ihn &amp;quot;Firewall&amp;quot;&lt;br /&gt;
* Dieser braucht 3 Netzwerkadapter:&lt;br /&gt;
# Netzwerkbrücke&lt;br /&gt;
# Internes Netzwerk &amp;quot;LAN&amp;quot;&lt;br /&gt;
# Internes Netzwerk &amp;quot;DMZ&amp;quot;&lt;br /&gt;
* Wir starten die Firewall und konfigurieren statische IP Adressen für alle 3 Netzwerkadapter&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/network/interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s3&lt;br /&gt;
 iface enp0s3 inet static&lt;br /&gt;
  address 172.RNr.0.1&#039;&#039;xx&#039;&#039;/16&lt;br /&gt;
  gateway 172.RNr.0.1&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s8&lt;br /&gt;
 iface enp0s8 inet static&lt;br /&gt;
  address 192.168.0.1/24&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s9&lt;br /&gt;
 iface enp0s9 inet static&lt;br /&gt;
  address 10.0.1&#039;&#039;xx&#039;&#039;.1/24&lt;br /&gt;
&lt;br /&gt;
* Interfaces runter und wieder hochfahren, um die neue Konfiguration zu laden&lt;br /&gt;
* &#039;&#039;&#039;ifdown -va&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ifup -va&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart networking&#039;&#039;&#039;&lt;br /&gt;
* Danach sollte der Befehl &#039;&#039;&#039;ip address show&#039;&#039;&#039; (oder &#039;&#039;&#039;ip a&#039;&#039;&#039;) die neuen IP Adressen anzeigen&lt;br /&gt;
&lt;br /&gt;
 1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&lt;br /&gt;
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;
     inet 127.0.0.1/8 scope host lo&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 ::1/128 scope host &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 2: enp0s3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1456 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:9b:79:a1 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;172.RNr.1.1&#039;&#039;xx&#039;&#039;/16&#039;&#039;&#039; brd 172.22.255.255 scope global enp0s3&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 2003:e5:173a:c401:a00:27ff:fe9b:79a1/64 scope global dynamic mngtmpaddr &lt;br /&gt;
        valid_lft 7134sec preferred_lft 1215sec&lt;br /&gt;
     inet6 fe80::a00:27ff:fe9b:79a1/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 3: enp0s8: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:15:03:b7 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;192.168.0.1/24&#039;&#039;&#039; brd 192.168.0.255 scope global enp0s8&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe15:3b7/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 4: enp0s9: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:31:01:09 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.1/24&#039;&#039;&#039; brd 10.0.100.255 scope global enp0s9&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe31:109/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
&lt;br /&gt;
= Workstation im LAN zum Systemadministrator machen =&lt;br /&gt;
&lt;br /&gt;
* Den Netzwerkadapter von VM &amp;quot;LAN Host&amp;quot; auf &amp;quot;Internes Netzwerk LAN&amp;quot; umstellen und die VM starten&lt;br /&gt;
* Wenn wir unsere Netzwerkkonfiguration anschauen, dann sehen wir keine IP Adresse, da noch kein DHCP läuft&lt;br /&gt;
* Deshalb geben wir uns eine temporäre IP, um per SSH auf die Firewall zu kommen&lt;br /&gt;
* &#039;&#039;&#039;systemctl stop NetworkManager&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ip address add 192.168.0.2/24 dev enp0s3&#039;&#039;&#039;&lt;br /&gt;
* Nun können wir die Firewall per SSH erreichen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* als erstes ändern wir den hostnamen der Firewall von &#039;&#039;debian&#039;&#039; zu &#039;&#039;firewall&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;hostnamectl set-hostname fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 127.0.0.1 localhost&lt;br /&gt;
 127.0.1.1 &#039;&#039;&#039;fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Ein erneutes einloggen updatet den Namen im Prompt&lt;br /&gt;
* als nächstes installieren wir einen [[DHCP]] Server, um Rechnern im LAN automatisch eine Netzwerkkonfiguration zu geben&lt;br /&gt;
* &#039;&#039;&#039;apt install isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Am Ende der Installation wird es eine Fehlermeldung geben, da systemd versucht den Dienst zu starten, obwohl noch keine Konfiguration da ist&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name-servers 1.1.1.1;&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet &#039;&#039;MAC Adresse vom Arch&#039;&#039;;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Dienst mit der neuen Konfiguration starten und überprüfen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl status isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Beim Neustart von Arch sollte dann automatisch die &#039;&#039;192.168.0.2&#039;&#039; bekommen (falls nicht MAC-Adresse überprüfen)&lt;br /&gt;
&lt;br /&gt;
= Firewall als Router konfigurieren =&lt;br /&gt;
&lt;br /&gt;
* Im Moment verwirft die Firewall alle Pakete mit IP-Adressen, die nicht für ihn selbst bestimmt sind&lt;br /&gt;
* Um die Pakete uns Default-Gateway weiterzuleiten muss der Kernelparameter &#039;&#039;net.ipv4.ip_forward&#039;&#039; gesetzt sein&lt;br /&gt;
* Temporär (bleibt nicht nach einem Reboot):&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=1&#039;&#039;&#039; &#039;&#039;# Einschalten&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=0&#039;&#039;&#039; &#039;&#039;# Ausschalten&#039;&#039;&lt;br /&gt;
* Für eine persistente Konfiguration muss dieser Parameter in der die Datei &#039;&#039;/etc/sysctl.conf&#039;&#039; stehen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/sysctl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to enable packet forwarding for IPv4&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;sysctl -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039;ource &#039;&#039;&#039;N&#039;&#039;&#039;etwork &#039;&#039;&#039;A&#039;&#039;&#039;ddress &#039;&#039;&#039;T&#039;&#039;&#039;ranslation muss noch geschehen, damit die Pakete mit IP Adressen aus einem privaten Netzwerk den Weg zurück finden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority 0;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
         oif enp0s3 masquerade&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl enable nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= SSH Schlüssel für passwortloses Login =&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Um nicht jedes mal das Passwort beim Login eingeben zu müssen kann man sich stattdessen mit einem privaten Schlüssel authentifizieren&lt;br /&gt;
* Wir erstellen einen Schlüssel mit RSA Verschlüsselung und erstmal ohne Passwortabfrage für den Benutz des Schlüssels&lt;br /&gt;
* &#039;&#039;&#039;ssh-keygen&#039;&#039;&#039; &#039;&#039;# 123Start$ als Passwort nehmen&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ssh-copy-id xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;scp ~/.ssh/id_rsa.pub xinux@192.168.0.1:~/.ssh/authorized_keys&#039;&#039;&#039;&lt;br /&gt;
* In der &#039;&#039;authorized_keys&#039;&#039; Datei können mehrere öffentliche Schlüssel stehen (pro Zeile ein Schlüssel)&lt;br /&gt;
* Es ist üblich SSH Login über Passwörter komplett auszuschalten sobald die SSH Schlüssel von den zugangsberechtigten Benutzern hinterlegt sind&lt;br /&gt;
* Normalerweise sind die Schlüssel passwortgeschützt.&lt;br /&gt;
* Damit man nicht jedes mal das Passwort dafür eingeben muss kann man einen [[SSH Agent]] nutzen&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
&lt;br /&gt;
* Wir wollen uns direkt als root einloggen können, weshalb die &#039;&#039;&#039;authorized_keys&#039;&#039;&#039; Datei auch im Home-Verzeichnis des root-Nutzers liegen muss&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mkdir &#039;&#039;.ssh&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cp &#039;&#039;~xinux/.ssh/authorized_keys&#039;&#039; &#039;&#039;.ssh/&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Um den SSH-Server abszusichern können wir den Port verlegen und nur schlüsselbasiertes Einloggen zulassen&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/ssh/sshd_config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Port 2222&lt;br /&gt;
 AddressFamily inet&lt;br /&gt;
 ListenAddress 192.168.0.1&lt;br /&gt;
 PubkeyAuthentication yes&lt;br /&gt;
 PasswordAuthentication no&lt;br /&gt;
 UsePAM no&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Nun sollten wir uns direkt als root anmelden können &lt;br /&gt;
* &#039;&#039;&#039;ssh -p 2222 root@192.168.0.1 &amp;quot;id &amp;amp;&amp;amp; hostname&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Um die Ameldung einfacher zu gestalten können wir unseren SSH-Client konfigurieren&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;~/.ssh/config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Host fw&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 	Hostname 192.168.0.1&lt;br /&gt;
 	User root&lt;br /&gt;
 	Port 2222&lt;br /&gt;
&lt;br /&gt;
* Jetzt kann man den Befehl folgendermaßen verkürzen:&lt;br /&gt;
* &#039;&#039;&#039;ssh fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= DHCP erweitern =&lt;br /&gt;
&lt;br /&gt;
* Um neue Rechner in der DMZ automatisch über LAN administrierbar zu machen, erweitern wir den DHCP Server auf der Firewall&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8 &#039;&#039;&#039;enp0s9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Die Subnetzdefinitionen folgen der Reihenfolge der Interfaces in &#039;&#039;/etc/default/isc-dhcp-server&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;subnet 10.0.1&#039;&#039;xx&#039;&#039;.0 netmask 255.255.255.0 {&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;range 10.0.1&#039;&#039;xx&#039;&#039;.50 10.0.1&#039;&#039;xx&#039;&#039;.100;&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;option routers 10.0.1&#039;&#039;xx&#039;&#039;.1;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet MAC Adresse vom Arch;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[DNS]] Server =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-1}}&lt;br /&gt;
&lt;br /&gt;
== Virtualbox ==&lt;br /&gt;
* Ein Klon von &amp;quot;Server Vorlage&amp;quot; mit Netzwerkadapter im internen Netzwerk &amp;quot;DMZ&amp;quot; erstellen&lt;br /&gt;
* Über die Systemlogs für &#039;&#039;&#039;DHCP&#039;&#039;&#039; auf der &#039;&#039;&#039;Firewall&#039;&#039;&#039; können wir die IP Adresse des DNS-Servers herausfinden&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
* &#039;&#039;&#039;journalctl -u isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Zurück zu Arch wechseln und über SSH auf den DNS Server einloggen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@10.0.&#039;&#039;(100 + eigene Nr.).&#039;&#039; &#039;&#039;yy&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
* Anschließend die IP Adresse in &#039;&#039;/etc/network/interfaces&#039;&#039; konfigurieren: 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2&lt;br /&gt;
* Hostname auf DNS: setzen (in &#039;&#039;/etc/hosts&#039;&#039; auch umändern)&lt;br /&gt;
* SSH Schlüssel hinterlegen&lt;br /&gt;
* Bind9 installieren&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;apt install bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
== Optionen festlegen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
         allow-recursion { 0.0.0.0/0; };&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zone definieren ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;lab(100 + eigene Nr.).nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zonendatei erstellen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab&#039;&#039;(100 + eigene Nr.)&#039;&#039;.nux. technik.xinux.de. (&#039;&#039;(Datum + Ver.nr.)&#039;&#039; 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns&lt;br /&gt;
 dns     IN A    10.0.(100 + eigene Nr.).2&lt;br /&gt;
 fw      IN A    10.0.(100 + eigene Nr.).1&lt;br /&gt;
&lt;br /&gt;
* Dienst neustarten und testen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short fw.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Der DNS-Server in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 53 UDP/TCP an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.0.1&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define dnsserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority -100; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Auflösen anderer Domänen über eine Pseudo Top Level Domain =&lt;br /&gt;
&lt;br /&gt;
== Dienst neustarten und DNS-Auflösung testen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short xinux.net&#039;&#039;&#039;&lt;br /&gt;
* Wenn das funktioniert dann den DNS Server im DHCP Server als Standard DNS Server und Suchdomäne eintragen (zur Firewall wechseln)&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 option domain-name-servers 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Arch neustarten und in &#039;&#039;/etc/resolv.conf&#039;&#039; nachschauen, ob die neue Konfiguration automatisch gezogen wurde&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart NetworkManager&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Bind9 Forwarder eintragen =&lt;br /&gt;
&lt;br /&gt;
== DNS Server der &#039;&#039;.nux&#039;&#039;-Domain ==&lt;br /&gt;
* Wenn jeder die DMZ der anderen erreichen kann, ist es möglich über eine Top Level Domain die anderen Domänen aufzulösen&lt;br /&gt;
* Dazu muss man auf den &#039;&#039;&#039;DNS Server&#039;&#039;&#039; einen vorkonfigurierten Pseudo Top Level Domain Nameserver als &#039;&#039;&#039;Forwarder&#039;&#039;&#039; eintragen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 forwarders { 172.RNr.0.100; }; //IP des Top Level Domain Nameservers&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Wenn man die Reverse Zone später auch auflösen will braucht man diese Zeile&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 empty-zones-enable no;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* Einmal alle Domänen durchtesten&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ping fw.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pseudo &#039;&#039;.nux&#039;&#039; Domain Server ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         empty-zones-enable no;&lt;br /&gt;
         allow-recursion  { 0.0.0.0/0; };&lt;br /&gt;
         allow-query  { 0.0.0.0/0; };&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
 };&lt;br /&gt;
* Zur Zonendefinition hinzufügen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 zone &amp;quot;0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 ...&lt;br /&gt;
* Zonendateien&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN      SOA     dns.nux. technik.xinux.de. (2023041809 14400 3600 3600000 86400)&lt;br /&gt;
 &lt;br /&gt;
 @       IN      NS      dns.nux.&lt;br /&gt;
 lab101          NS      dns.lab101.nux.&lt;br /&gt;
 lab102          NS      dns.lab102.nux.&lt;br /&gt;
 lab100          NS      dns.nux.&lt;br /&gt;
 &lt;br /&gt;
 dns     IN      A       172.RNr.0.100&lt;br /&gt;
 dns.lab101      A       172.RNr.0.1&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 dns.lab102      A       172.RNr.0.1&#039;&#039;xy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Reverse Lookup =&lt;br /&gt;
&lt;br /&gt;
* Für manche Dienste muss einer IP einen Domain Namen zugeordnet werden&lt;br /&gt;
* Dazu eine neue Zone definieren und eine neue Zonendatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;100.0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;100.0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim 100.0.10.in-addr.arpa&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab100.nux. technik.xinux.de. (2023050901 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns.lab100.nux.&lt;br /&gt;
 1       IN PTR  fw.lab100.nux.&lt;br /&gt;
 2       IN PTR  dns.lab100.nux.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Netz absichern =&lt;br /&gt;
&lt;br /&gt;
* Im Moment darf jeder auf die Firewall von jeden zugreifen (und damit alle dahinterliegenden Systeme)&lt;br /&gt;
* Um dies zu verhindern erstellen wir mit [[Nftables Netze absichern|nftables]] Firewall Regeln, die nur das nötigste zulassen&lt;br /&gt;
* Die Regeln werden von oben nach unten abgearbeitet&lt;br /&gt;
* Wenn keine Regel greift, dann zieht die &#039;&#039;Default Policy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Prerouting, Input, Forward, Output und Postrouting sind Punkte an denen wir Regeln erstellen können&lt;br /&gt;
&lt;br /&gt;
{{#drawio:nft-inet1}}&lt;br /&gt;
&lt;br /&gt;
== Nur SSH aus LAN auf die Firewall zulassen ==&lt;br /&gt;
&lt;br /&gt;
* Default Policy wird in allen Filterketten auf Drop gesetzt&lt;br /&gt;
* Wenn also keine Regel das Paket durchlässt, wird es verworfen&lt;br /&gt;
* Über Connection Tracking können wir uns auf die Regulierung neuer Verbindungen fokussieren&lt;br /&gt;
* Als erstes soll nur:&lt;br /&gt;
** Die Firewall mit sich selbst über das loopback Interface kommunizieren können (da es sonst zu komischen Problemen führen kann)&lt;br /&gt;
** &#039;&#039;Established&#039;&#039; und &#039;&#039;Related&#039;&#039; Pakete akzeptiert werden&lt;br /&gt;
** Neue Anfragen aus dem LAN auf TCP Port 2222 akzeptieren&lt;br /&gt;
** Firewall soll über HTTP bzw. HTTPS Programme herunterladen können&lt;br /&gt;
** Gedroppte Pakete sollen geloggt werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wanip = 172.RNr.0.1xx &lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 &#039;&#039;&#039;define wandev = enp0s3&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define landev = enp0s8&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define lan = 192.168.0.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif $landev tcp dport 2222 accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-input--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif $wandev tcp dport { 80, 443 } accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-output--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 	table inet nat {&lt;br /&gt;
 		chain prerouting {&lt;br /&gt;
 			type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
 			ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 			ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		chain postrouting {&lt;br /&gt;
 			type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
 			oif $wandev masquerade&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Internetzugriff für LAN und Firewall ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/nftables.conf&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 define wanip = 172.22.0.1xx&lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 define wandev = &amp;quot;enp0s3&amp;quot;&lt;br /&gt;
 define landev = &amp;quot;enp0s8&amp;quot;&lt;br /&gt;
 define dmzdev = &amp;quot;enp0s9&amp;quot;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1xx.0/24&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
 		iif $landev ip saddr $lan tcp dport 2222 accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver tcp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver tcp  dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dmz tcp dport 22 accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
                 ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
                 ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;C&#039;&#039;&#039;onnection &#039;&#039;&#039;T&#039;&#039;&#039;racking &#039;&#039;&#039;T&#039;&#039;&#039;abelle ==&lt;br /&gt;
&lt;br /&gt;
* Das Tool &#039;&#039;&#039;conntrack&#039;&#039;&#039; installieren, um die CTT anschauen und leeren zu können&lt;br /&gt;
* &#039;&#039;&#039;apt install conntrack&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -F&#039;&#039;&#039; &#039;&#039;# Leert die Tabelle&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -L&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 tcp      6 432000 ESTABLISHED src=192.168.0.2 dst=192.168.0.2 sport=58178 dport=22 src=192.168.0.1 dst=192.168.0.2 sport=22 dport=58178 [ASSURED] mark=0 use=1&lt;br /&gt;
&lt;br /&gt;
= Webserver =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-2}}&lt;br /&gt;
&lt;br /&gt;
* Rechnern im LAN sollen Webseiten aufrufen können&lt;br /&gt;
* unsere DNS Server sollten andere Server im Internet und in den anderen DMZs befragen dürfen&lt;br /&gt;
* d.h. UDP Port 53 aus LAN und DMZ und TCP Ports 80 und 443 für LAN sollten freigeschalten werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 &#039;&#039;&#039;define dmzdev = enp0s9&#039;&#039;&#039;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 &#039;&#039;&#039;define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
             ct state established,related accept&lt;br /&gt;
             iif $landev tcp dport 22 accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             &#039;&#039;&#039;iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&#039;&#039;&#039;&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     table inet nat {&lt;br /&gt;
         chain postrouting {&lt;br /&gt;
             type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
             oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Ein Webserver in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 80/443 an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 define dmzdev = enp0s9&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.1.1&#039;&#039;xx&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define webserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter; policy drop;&lt;br /&gt;
                 iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif $landev tcp dport 22 accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&lt;br /&gt;
                 iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $webserver tcp dport 80 accept&#039;&#039;&#039;&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority 0; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* Der DNS Server soll uns erstmal auch als Webserver dienen&lt;br /&gt;
* &#039;&#039;&#039;apt install apache2&#039;&#039;&#039;&lt;br /&gt;
* Im Browser sollten die Webserver über die IPs der Firewalls erreichbar sein&lt;br /&gt;
&lt;br /&gt;
== Debug Möglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
* Falls sich die Firewall nicht so verhält wie erwartet, kann man:&lt;br /&gt;
** Connection Tracking Tabelle leeren/flushen: &#039;&#039;&#039;conntrack -F&#039;&#039;&#039;&lt;br /&gt;
** Über &#039;&#039;&#039;tail -f -n0 /var/log/syslog | grep nftables&#039;&#039;&#039; gedroppte Pakete anschauen (wenn die Log Regeln da sind)&lt;br /&gt;
** NAT Regeln überprüfen: &#039;&#039;&#039;tcpdump -i &#039;&#039;interface&#039;&#039; &#039;&#039;filter&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
** Auf Syntaxfehler überprüfen: &#039;&#039;&#039;nft -cf /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= LDAP Server einrichten =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-3}}&lt;br /&gt;
&lt;br /&gt;
* ein LDAP Server ermöglicht uns zentrale Benutzerverwaltung innerhalb einer Domäne&lt;br /&gt;
* die Benutzerdaten werden in einer Datenbank gespeichert und von Clients über &#039;&#039;&#039;TCP Port 389&#039;&#039;&#039; befragt&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;ldap&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
* eventuell muss auf der Firewall Port 80 und 443 für die DMZ freigeschaltet werden, damit die Pakete heruntergeladen werden können&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[Openldap Basic Config common]]&lt;br /&gt;
&lt;br /&gt;
= [[HAProxy]] für zentrale SSL Terminierung =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-4}}&lt;br /&gt;
&lt;br /&gt;
* Im Moment ist nur SSH verschlüsselt&lt;br /&gt;
* Pakete von HTTP Verbindungen zwischen den LAN und DMZ werden im Klartext verschickt&lt;br /&gt;
* &#039;&#039;&#039;Problem&#039;&#039;&#039;: Jemand der den Verkehr mitscheidet, kann alles lesen&lt;br /&gt;
* &#039;&#039;&#039;Lösung&#039;&#039;&#039;: Upgrade auf HTTPS mit [[Grundlagen Kryptografie | Zertifikaten]]&lt;br /&gt;
* [[SFTP-Server]] für den sicheren Transfer der Zertifikatsanträge&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;haproxy&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
# signiertes Wildcard-Zertifikat rüberkopieren&lt;br /&gt;
# privaten Zertifikatsschlüssel rüberkopieren&lt;br /&gt;
&lt;br /&gt;
* Signiertes Zertifikat vom SFTP Server holen&lt;br /&gt;
* &#039;&#039;&#039;sftp -P 9922 cert_req@172.RNr.1.100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;get cert/lab1&#039;&#039;xx&#039;&#039;.nux.crt&#039;&#039;&#039;&lt;br /&gt;
* Auf dem HAProxy die &#039;&#039;server.pem&#039;&#039; Datei erstellen&lt;br /&gt;
* &#039;&#039;&#039;cat lab1&#039;&#039;xx&#039;&#039;.nux.key lab1&#039;&#039;xx&#039;&#039;.nux.crt &amp;gt; /etc/haproxy/server.pem&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/haproxy/haproxy.cfg&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 frontend https_web_services&lt;br /&gt;
  bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
  timeout client 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  acl acl_web1 hdr_beg(host) -i web1&lt;br /&gt;
  acl acl_web2 hdr_beg(host) -i web2&lt;br /&gt;
  use_backend backend_web1 if acl_web1&lt;br /&gt;
  use_backend backend_web2 if acl_web2&lt;br /&gt;
  default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 #frontend https_frontend&lt;br /&gt;
 # bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
 # timeout client 50000&lt;br /&gt;
 # default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web1&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_dns 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web2&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_ldap 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend http_backend&lt;br /&gt;
  mode http&lt;br /&gt;
  balance roundrobin&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  server web_dns_2 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
  server web_ldap_2 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart haproxy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[Squid erste Schritte|Squid]] Proxy auf der Firewall =&lt;br /&gt;
&lt;br /&gt;
* [[Squid ACL Basic]]&lt;br /&gt;
* [[Iptables mit Squid Transparenter Proxy]]&lt;br /&gt;
* Mehr Kontrolle über die Domains, die LAN erreichen darf&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
 acl facebook url_regex -i facebook&lt;br /&gt;
 &lt;br /&gt;
 http_access deny facebook&lt;br /&gt;
 http_access allow all&lt;br /&gt;
 &lt;br /&gt;
 #nativer Zugriff&lt;br /&gt;
 http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 #transparenter Zugriff unverschlüsselt&lt;br /&gt;
 http_port 3128 intercept&lt;br /&gt;
 #transparenter Zugriff verschlüsselt &#039;&#039;&#039;wichtig https_port&#039;&#039;&#039;&lt;br /&gt;
 https_port 3129 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 &lt;br /&gt;
 ssl_bump bump all&lt;br /&gt;
 &lt;br /&gt;
 coredump_dir /var/spool/squid&lt;br /&gt;
 logfile_rotate 0&lt;br /&gt;
 &lt;br /&gt;
 cache_dir ufs /var/spool/squid 200 16 256&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;acl domain_blacklist dstdomain &amp;quot;/etc/squid/domain_blacklist.txt&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;http_access deny all domain_blacklist&#039;&#039;&#039;&lt;br /&gt;
 http_access allow localnet&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/domain_blacklist.txt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 facebook.com&lt;br /&gt;
 twitter.com&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart squid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-5}}&lt;br /&gt;
&lt;br /&gt;
= Festplatten verschlüsseln =&lt;br /&gt;
&lt;br /&gt;
; Das Verschlüsseln mit &#039;&#039;&#039;cryptsetup&#039;&#039;&#039; löscht alle vorherigen Daten der Festplatte&lt;br /&gt;
* Neue Festplatte in VirtualBox erstellen und anhängen&lt;br /&gt;
* zu verschlüsselnde Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;fdisk /dev/sdX&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup luksFormat /dev/sdXx&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup open /dev/sdXx &#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Dateisystem auf der entschlüsselten Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;mkfs.ext4 /dev/mapper/&#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* beliebige Testdatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;echo &amp;quot;Hallo Welt&amp;quot; &amp;gt; encrypted.txt&#039;&#039;&#039;&lt;br /&gt;
* Nach Benutzen der Partition wieder verschlüsseln&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup close name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Separate VM für Monitoring/Scanning =&lt;br /&gt;
&lt;br /&gt;
# Hostname auf &#039;&#039;health&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.4/24&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
&lt;br /&gt;
= Checkmk =&lt;br /&gt;
&lt;br /&gt;
* Die Weboberfläche soll über [https://cmk.lab1xx.nux https://cmk.lab1&#039;&#039;xx&#039;&#039;.nux] erreichbar sein:&lt;br /&gt;
** DNS Eintrag&lt;br /&gt;
** HAProxy ACL&lt;br /&gt;
&lt;br /&gt;
* Download: https://checkmk.com/de/download?method=cmk&amp;amp;edition=cre&amp;amp;version=2.2.0b7&amp;amp;platform=debian&amp;amp;os=bullseye&amp;amp;type=cmk&lt;br /&gt;
* Anweisungen der Webseite folgen&lt;br /&gt;
* cmkadmin&#039;s Passwort auf 123Start$ ändern&lt;br /&gt;
* Rechner ins Monitoring hinzufügen&lt;br /&gt;
* AUR Paketmanager https://github.com/Jguer/yay&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58645</id>
		<title>Unix-/Linux Netz</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58645"/>
		<updated>2024-12-04T08:38:28Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Nur SSH aus LAN auf die Firewall zulassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Netzwerk der Schulung=&lt;br /&gt;
&lt;br /&gt;
* Die WAN-IP wird die 172.RNr.0.(100 + eigene Nr.)&lt;br /&gt;
* Die &#039;&#039;&#039;D&#039;&#039;&#039;e&#039;&#039;&#039;m&#039;&#039;&#039;ilitarisierte &#039;&#039;&#039;Z&#039;&#039;&#039;one (DMZ) enthält Services, die von außen erreichbar sein sollen&lt;br /&gt;
* Im LAN befindet sich unser Administratorrechner von dem wir unsere Rechner konfigurieren&lt;br /&gt;
* Das LAN soll Verbindungen ins Internet initiieren können, aber nicht direkt von außen erreichbar sein&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul2}}&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;xx&#039;&#039; in den folgenden Bildern durch die eigene Nummer ersetzen&lt;br /&gt;
;Benutzername für virtuelle Maschinen ist &#039;&#039;xinux&#039;&#039; oder &#039;&#039;root&#039;&#039;&lt;br /&gt;
;Passwort ist immer 123Start$&lt;br /&gt;
&lt;br /&gt;
= Vorbereiten der Firewall =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-0}}&lt;br /&gt;
&lt;br /&gt;
* Wir klonen den Rechner &amp;quot;Server Vorlage&amp;quot; und nennen ihn &amp;quot;Firewall&amp;quot;&lt;br /&gt;
* Dieser braucht 3 Netzwerkadapter:&lt;br /&gt;
# Netzwerkbrücke&lt;br /&gt;
# Internes Netzwerk &amp;quot;LAN&amp;quot;&lt;br /&gt;
# Internes Netzwerk &amp;quot;DMZ&amp;quot;&lt;br /&gt;
* Wir starten die Firewall und konfigurieren statische IP Adressen für alle 3 Netzwerkadapter&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/network/interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s3&lt;br /&gt;
 iface enp0s3 inet static&lt;br /&gt;
  address 172.RNr.0.1&#039;&#039;xx&#039;&#039;/16&lt;br /&gt;
  gateway 172.RNr.0.1&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s8&lt;br /&gt;
 iface enp0s8 inet static&lt;br /&gt;
  address 192.168.0.1/24&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s9&lt;br /&gt;
 iface enp0s9 inet static&lt;br /&gt;
  address 10.0.1&#039;&#039;xx&#039;&#039;.1/24&lt;br /&gt;
&lt;br /&gt;
* Interfaces runter und wieder hochfahren, um die neue Konfiguration zu laden&lt;br /&gt;
* &#039;&#039;&#039;ifdown -va&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ifup -va&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart networking&#039;&#039;&#039;&lt;br /&gt;
* Danach sollte der Befehl &#039;&#039;&#039;ip address show&#039;&#039;&#039; (oder &#039;&#039;&#039;ip a&#039;&#039;&#039;) die neuen IP Adressen anzeigen&lt;br /&gt;
&lt;br /&gt;
 1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&lt;br /&gt;
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;
     inet 127.0.0.1/8 scope host lo&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 ::1/128 scope host &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 2: enp0s3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1456 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:9b:79:a1 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;172.RNr.1.1&#039;&#039;xx&#039;&#039;/16&#039;&#039;&#039; brd 172.22.255.255 scope global enp0s3&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 2003:e5:173a:c401:a00:27ff:fe9b:79a1/64 scope global dynamic mngtmpaddr &lt;br /&gt;
        valid_lft 7134sec preferred_lft 1215sec&lt;br /&gt;
     inet6 fe80::a00:27ff:fe9b:79a1/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 3: enp0s8: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:15:03:b7 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;192.168.0.1/24&#039;&#039;&#039; brd 192.168.0.255 scope global enp0s8&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe15:3b7/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 4: enp0s9: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:31:01:09 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.1/24&#039;&#039;&#039; brd 10.0.100.255 scope global enp0s9&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe31:109/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
&lt;br /&gt;
= Workstation im LAN zum Systemadministrator machen =&lt;br /&gt;
&lt;br /&gt;
* Den Netzwerkadapter von VM &amp;quot;LAN Host&amp;quot; auf &amp;quot;Internes Netzwerk LAN&amp;quot; umstellen und die VM starten&lt;br /&gt;
* Wenn wir unsere Netzwerkkonfiguration anschauen, dann sehen wir keine IP Adresse, da noch kein DHCP läuft&lt;br /&gt;
* Deshalb geben wir uns eine temporäre IP, um per SSH auf die Firewall zu kommen&lt;br /&gt;
* &#039;&#039;&#039;systemctl stop NetworkManager&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ip address add 192.168.0.2/24 dev enp0s3&#039;&#039;&#039;&lt;br /&gt;
* Nun können wir die Firewall per SSH erreichen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* als erstes ändern wir den hostnamen der Firewall von &#039;&#039;debian&#039;&#039; zu &#039;&#039;firewall&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;hostnamectl set-hostname fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 127.0.0.1 localhost&lt;br /&gt;
 127.0.1.1 &#039;&#039;&#039;fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Ein erneutes einloggen updatet den Namen im Prompt&lt;br /&gt;
* als nächstes installieren wir einen [[DHCP]] Server, um Rechnern im LAN automatisch eine Netzwerkkonfiguration zu geben&lt;br /&gt;
* &#039;&#039;&#039;apt install isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Am Ende der Installation wird es eine Fehlermeldung geben, da systemd versucht den Dienst zu starten, obwohl noch keine Konfiguration da ist&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name-servers 1.1.1.1;&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet &#039;&#039;MAC Adresse vom Arch&#039;&#039;;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Dienst mit der neuen Konfiguration starten und überprüfen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl status isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Beim Neustart von Arch sollte dann automatisch die &#039;&#039;192.168.0.2&#039;&#039; bekommen (falls nicht MAC-Adresse überprüfen)&lt;br /&gt;
&lt;br /&gt;
= Firewall als Router konfigurieren =&lt;br /&gt;
&lt;br /&gt;
* Im Moment verwirft die Firewall alle Pakete mit IP-Adressen, die nicht für ihn selbst bestimmt sind&lt;br /&gt;
* Um die Pakete uns Default-Gateway weiterzuleiten muss der Kernelparameter &#039;&#039;net.ipv4.ip_forward&#039;&#039; gesetzt sein&lt;br /&gt;
* Temporär (bleibt nicht nach einem Reboot):&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=1&#039;&#039;&#039; &#039;&#039;# Einschalten&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=0&#039;&#039;&#039; &#039;&#039;# Ausschalten&#039;&#039;&lt;br /&gt;
* Für eine persistente Konfiguration muss dieser Parameter in der die Datei &#039;&#039;/etc/sysctl.conf&#039;&#039; stehen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/sysctl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to enable packet forwarding for IPv4&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;sysctl -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039;ource &#039;&#039;&#039;N&#039;&#039;&#039;etwork &#039;&#039;&#039;A&#039;&#039;&#039;ddress &#039;&#039;&#039;T&#039;&#039;&#039;ranslation muss noch geschehen, damit die Pakete mit IP Adressen aus einem privaten Netzwerk den Weg zurück finden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority 0;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
         oif enp0s3 masquerade&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl enable nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= SSH Schlüssel für passwortloses Login =&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Um nicht jedes mal das Passwort beim Login eingeben zu müssen kann man sich stattdessen mit einem privaten Schlüssel authentifizieren&lt;br /&gt;
* Wir erstellen einen Schlüssel mit RSA Verschlüsselung und erstmal ohne Passwortabfrage für den Benutz des Schlüssels&lt;br /&gt;
* &#039;&#039;&#039;ssh-keygen&#039;&#039;&#039; &#039;&#039;# 123Start$ als Passwort nehmen&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ssh-copy-id xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;scp ~/.ssh/id_rsa.pub xinux@192.168.0.1:~/.ssh/authorized_keys&#039;&#039;&#039;&lt;br /&gt;
* In der &#039;&#039;authorized_keys&#039;&#039; Datei können mehrere öffentliche Schlüssel stehen (pro Zeile ein Schlüssel)&lt;br /&gt;
* Es ist üblich SSH Login über Passwörter komplett auszuschalten sobald die SSH Schlüssel von den zugangsberechtigten Benutzern hinterlegt sind&lt;br /&gt;
* Normalerweise sind die Schlüssel passwortgeschützt.&lt;br /&gt;
* Damit man nicht jedes mal das Passwort dafür eingeben muss kann man einen [[SSH Agent]] nutzen&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
&lt;br /&gt;
* Wir wollen uns direkt als root einloggen können, weshalb die &#039;&#039;&#039;authorized_keys&#039;&#039;&#039; Datei auch im Home-Verzeichnis des root-Nutzers liegen muss&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mkdir &#039;&#039;.ssh&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cp &#039;&#039;~xinux/.ssh/authorized_keys&#039;&#039; &#039;&#039;.ssh/&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Um den SSH-Server abszusichern können wir den Port verlegen und nur schlüsselbasiertes Einloggen zulassen&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/ssh/sshd_config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Port 2222&lt;br /&gt;
 AddressFamily inet&lt;br /&gt;
 ListenAddress 192.168.0.1&lt;br /&gt;
 PubkeyAuthentication yes&lt;br /&gt;
 PasswordAuthentication no&lt;br /&gt;
 UsePAM no&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Nun sollten wir uns direkt als root anmelden können &lt;br /&gt;
* &#039;&#039;&#039;ssh -p 2222 root@192.168.0.1 &amp;quot;id &amp;amp;&amp;amp; hostname&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Um die Ameldung einfacher zu gestalten können wir unseren SSH-Client konfigurieren&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;~/.ssh/config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Host fw&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 	Hostname 192.168.0.1&lt;br /&gt;
 	User root&lt;br /&gt;
 	Port 2222&lt;br /&gt;
&lt;br /&gt;
* Jetzt kann man den Befehl folgendermaßen verkürzen:&lt;br /&gt;
* &#039;&#039;&#039;ssh fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= DHCP erweitern =&lt;br /&gt;
&lt;br /&gt;
* Um neue Rechner in der DMZ automatisch über LAN administrierbar zu machen, erweitern wir den DHCP Server auf der Firewall&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8 &#039;&#039;&#039;enp0s9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Die Subnetzdefinitionen folgen der Reihenfolge der Interfaces in &#039;&#039;/etc/default/isc-dhcp-server&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;subnet 10.0.1&#039;&#039;xx&#039;&#039;.0 netmask 255.255.255.0 {&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;range 10.0.1&#039;&#039;xx&#039;&#039;.50 10.0.1&#039;&#039;xx&#039;&#039;.100;&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;option routers 10.0.1&#039;&#039;xx&#039;&#039;.1;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet MAC Adresse vom Arch;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[DNS]] Server =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-1}}&lt;br /&gt;
&lt;br /&gt;
== Virtualbox ==&lt;br /&gt;
* Ein Klon von &amp;quot;Server Vorlage&amp;quot; mit Netzwerkadapter im internen Netzwerk &amp;quot;DMZ&amp;quot; erstellen&lt;br /&gt;
* Über die Systemlogs für &#039;&#039;&#039;DHCP&#039;&#039;&#039; auf der &#039;&#039;&#039;Firewall&#039;&#039;&#039; können wir die IP Adresse des DNS-Servers herausfinden&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
* &#039;&#039;&#039;journalctl -u isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Zurück zu Arch wechseln und über SSH auf den DNS Server einloggen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@10.0.&#039;&#039;(100 + eigene Nr.).&#039;&#039; &#039;&#039;yy&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
* Anschließend die IP Adresse in &#039;&#039;/etc/network/interfaces&#039;&#039; konfigurieren: 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2&lt;br /&gt;
* Hostname auf DNS: setzen (in &#039;&#039;/etc/hosts&#039;&#039; auch umändern)&lt;br /&gt;
* SSH Schlüssel hinterlegen&lt;br /&gt;
* Bind9 installieren&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;apt install bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
== Optionen festlegen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
         allow-recursion { 0.0.0.0/0; };&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zone definieren ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;lab(100 + eigene Nr.).nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zonendatei erstellen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab&#039;&#039;(100 + eigene Nr.)&#039;&#039;.nux. technik.xinux.de. (&#039;&#039;(Datum + Ver.nr.)&#039;&#039; 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns&lt;br /&gt;
 dns     IN A    10.0.(100 + eigene Nr.).2&lt;br /&gt;
 fw      IN A    10.0.(100 + eigene Nr.).1&lt;br /&gt;
&lt;br /&gt;
* Dienst neustarten und testen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short fw.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Der DNS-Server in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 53 UDP/TCP an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.0.1&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define dnsserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority -100; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Auflösen anderer Domänen über eine Pseudo Top Level Domain =&lt;br /&gt;
&lt;br /&gt;
== Dienst neustarten und DNS-Auflösung testen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short xinux.net&#039;&#039;&#039;&lt;br /&gt;
* Wenn das funktioniert dann den DNS Server im DHCP Server als Standard DNS Server und Suchdomäne eintragen (zur Firewall wechseln)&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 option domain-name-servers 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Arch neustarten und in &#039;&#039;/etc/resolv.conf&#039;&#039; nachschauen, ob die neue Konfiguration automatisch gezogen wurde&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart NetworkManager&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Bind9 Forwarder eintragen =&lt;br /&gt;
&lt;br /&gt;
== DNS Server der &#039;&#039;.nux&#039;&#039;-Domain ==&lt;br /&gt;
* Wenn jeder die DMZ der anderen erreichen kann, ist es möglich über eine Top Level Domain die anderen Domänen aufzulösen&lt;br /&gt;
* Dazu muss man auf den &#039;&#039;&#039;DNS Server&#039;&#039;&#039; einen vorkonfigurierten Pseudo Top Level Domain Nameserver als &#039;&#039;&#039;Forwarder&#039;&#039;&#039; eintragen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 forwarders { 172.RNr.0.100; }; //IP des Top Level Domain Nameservers&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Wenn man die Reverse Zone später auch auflösen will braucht man diese Zeile&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 empty-zones-enable no;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* Einmal alle Domänen durchtesten&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ping fw.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pseudo &#039;&#039;.nux&#039;&#039; Domain Server ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         empty-zones-enable no;&lt;br /&gt;
         allow-recursion  { 0.0.0.0/0; };&lt;br /&gt;
         allow-query  { 0.0.0.0/0; };&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
 };&lt;br /&gt;
* Zur Zonendefinition hinzufügen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 zone &amp;quot;0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 ...&lt;br /&gt;
* Zonendateien&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN      SOA     dns.nux. technik.xinux.de. (2023041809 14400 3600 3600000 86400)&lt;br /&gt;
 &lt;br /&gt;
 @       IN      NS      dns.nux.&lt;br /&gt;
 lab101          NS      dns.lab101.nux.&lt;br /&gt;
 lab102          NS      dns.lab102.nux.&lt;br /&gt;
 lab100          NS      dns.nux.&lt;br /&gt;
 &lt;br /&gt;
 dns     IN      A       172.RNr.0.100&lt;br /&gt;
 dns.lab101      A       172.RNr.0.1&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 dns.lab102      A       172.RNr.0.1&#039;&#039;xy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Reverse Lookup =&lt;br /&gt;
&lt;br /&gt;
* Für manche Dienste muss einer IP einen Domain Namen zugeordnet werden&lt;br /&gt;
* Dazu eine neue Zone definieren und eine neue Zonendatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;100.0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;100.0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim 100.0.10.in-addr.arpa&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab100.nux. technik.xinux.de. (2023050901 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns.lab100.nux.&lt;br /&gt;
 1       IN PTR  fw.lab100.nux.&lt;br /&gt;
 2       IN PTR  dns.lab100.nux.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Netz absichern =&lt;br /&gt;
&lt;br /&gt;
* Im Moment darf jeder auf die Firewall von jeden zugreifen (und damit alle dahinterliegenden Systeme)&lt;br /&gt;
* Um dies zu verhindern erstellen wir mit [[Nftables Netze absichern|nftables]] Firewall Regeln, die nur das nötigste zulassen&lt;br /&gt;
* Die Regeln werden von oben nach unten abgearbeitet&lt;br /&gt;
* Wenn keine Regel greift, dann zieht die &#039;&#039;Default Policy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Prerouting, Input, Forward, Output und Postrouting sind Punkte an denen wir Regeln erstellen können&lt;br /&gt;
&lt;br /&gt;
{{#drawio:nft-inet1}}&lt;br /&gt;
&lt;br /&gt;
== Nur SSH aus LAN auf die Firewall zulassen ==&lt;br /&gt;
&lt;br /&gt;
* Default Policy wird in allen Filterketten auf Drop gesetzt&lt;br /&gt;
* Wenn also keine Regel das Paket durchlässt, wird es verworfen&lt;br /&gt;
* Über Connection Tracking können wir uns auf die Regulierung neuer Verbindungen fokussieren&lt;br /&gt;
* Als erstes soll nur:&lt;br /&gt;
** Die Firewall mit sich selbst über das loopback Interface kommunizieren können (da es sonst zu komischen Problemen führen kann)&lt;br /&gt;
** &#039;&#039;Established&#039;&#039; und &#039;&#039;Related&#039;&#039; Pakete akzeptiert werden&lt;br /&gt;
** Neue Anfragen aus dem LAN auf TCP Port 2222 akzeptieren&lt;br /&gt;
** Firewall soll über HTTP bzw. HTTPS Programme herunterladen können&lt;br /&gt;
** Gedroppte Pakete sollen geloggt werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wanip = 172.RNr.0.1xx &lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 &#039;&#039;&#039;define wandev = enp0s3&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define landev = enp0s8&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define lan = 192.168.0.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif $landev tcp dport 2222 accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-input--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif $wandev tcp dport { 80, 443 } accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-output--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 	table inet nat {&lt;br /&gt;
 		chain prerouting {&lt;br /&gt;
 			type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
 			ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 			ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		chain postrouting {&lt;br /&gt;
 			type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
 			oif $wandev masquerade&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Internetzugriff für LAN und Firewall ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/nftables.conf&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 define wanip = 172.22.0.1xx&lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 define wandev = &amp;quot;enp0s3&amp;quot;&lt;br /&gt;
 define landev = &amp;quot;enp0s8&amp;quot;&lt;br /&gt;
 define dmzdev = &amp;quot;enp0s9&amp;quot;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1xx.0/24&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
 		iif $landev ip saddr $lan tcp dport 2222 accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver tcp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver tcp  dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dmz tcp dport 22 accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
                 ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
                 ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;C&#039;&#039;&#039;onnection &#039;&#039;&#039;T&#039;&#039;&#039;racking &#039;&#039;&#039;T&#039;&#039;&#039;abelle ==&lt;br /&gt;
&lt;br /&gt;
* Das Tool &#039;&#039;&#039;conntrack&#039;&#039;&#039; installieren, um die CTT anschauen und leeren zu können&lt;br /&gt;
* &#039;&#039;&#039;apt install conntrack&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -F&#039;&#039;&#039; &#039;&#039;# Leert die Tabelle&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -L&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 tcp      6 432000 ESTABLISHED src=192.168.0.2 dst=192.168.0.2 sport=58178 dport=22 src=192.168.0.1 dst=192.168.0.2 sport=22 dport=58178 [ASSURED] mark=0 use=1&lt;br /&gt;
&lt;br /&gt;
= Webserver =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-2}}&lt;br /&gt;
&lt;br /&gt;
* Rechnern im LAN sollen Webseiten aufrufen können&lt;br /&gt;
* unsere DNS Server sollten andere Server im Internet und in den anderen DMZs befragen dürfen&lt;br /&gt;
* d.h. UDP Port 53 aus LAN und DMZ und TCP Ports 80 und 443 für LAN sollten freigeschalten werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 &#039;&#039;&#039;define dmzdev = enp0s9&#039;&#039;&#039;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 &#039;&#039;&#039;define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
             ct state established,related accept&lt;br /&gt;
             iif $landev tcp dport 22 accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             &#039;&#039;&#039;iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&#039;&#039;&#039;&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     table inet nat {&lt;br /&gt;
         chain postrouting {&lt;br /&gt;
             type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
             oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Ein Webserver in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 80/443 an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 define dmzdev = enp0s9&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.1.1&#039;&#039;xx&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define webserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter; policy drop;&lt;br /&gt;
                 iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif $landev tcp dport 22 accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&lt;br /&gt;
                 iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $webserver tcp dport 80 accept&#039;&#039;&#039;&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority 0; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* Der DNS Server soll uns erstmal auch als Webserver dienen&lt;br /&gt;
* &#039;&#039;&#039;apt install apache2&#039;&#039;&#039;&lt;br /&gt;
* Im Browser sollten die Webserver über die IPs der Firewalls erreichbar sein&lt;br /&gt;
&lt;br /&gt;
== Debug Möglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
* Falls sich die Firewall nicht so verhält wie erwartet, kann man:&lt;br /&gt;
** Connection Tracking Tabelle leeren/flushen: &#039;&#039;&#039;conntrack -F&#039;&#039;&#039;&lt;br /&gt;
** Über &#039;&#039;&#039;tail -f -n0 /var/log/syslog | grep nftables&#039;&#039;&#039; gedroppte Pakete anschauen (wenn die Log Regeln da sind)&lt;br /&gt;
** NAT Regeln überprüfen: &#039;&#039;&#039;tcpdump -i &#039;&#039;interface&#039;&#039; &#039;&#039;filter&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
** Auf Syntaxfehler überprüfen: &#039;&#039;&#039;nft -cf /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= LDAP Server einrichten =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-3}}&lt;br /&gt;
&lt;br /&gt;
* ein LDAP Server ermöglicht uns zentrale Benutzerverwaltung innerhalb einer Domäne&lt;br /&gt;
* die Benutzerdaten werden in einer Datenbank gespeichert und von Clients über &#039;&#039;&#039;TCP Port 389&#039;&#039;&#039; befragt&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;ldap&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
* eventuell muss auf der Firewall Port 80 und 443 für die DMZ freigeschaltet werden, damit die Pakete heruntergeladen werden können&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[Openldap Basic Config common]]&lt;br /&gt;
&lt;br /&gt;
= [[HAProxy]] für zentrale SSL Terminierung =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-4}}&lt;br /&gt;
&lt;br /&gt;
* Im Moment ist nur SSH verschlüsselt&lt;br /&gt;
* Pakete von HTTP Verbindungen zwischen den LAN und DMZ werden im Klartext verschickt&lt;br /&gt;
* &#039;&#039;&#039;Problem&#039;&#039;&#039;: Jemand der den Verkehr mitscheidet, kann alles lesen&lt;br /&gt;
* &#039;&#039;&#039;Lösung&#039;&#039;&#039;: Upgrade auf HTTPS mit [[Grundlagen Kryptografie | Zertifikaten]]&lt;br /&gt;
* [[SFTP-Server]] für den sicheren Transfer der Zertifikatsanträge&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;haproxy&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
# signiertes Wildcard-Zertifikat rüberkopieren&lt;br /&gt;
# privaten Zertifikatsschlüssel rüberkopieren&lt;br /&gt;
&lt;br /&gt;
* Signiertes Zertifikat vom SFTP Server holen&lt;br /&gt;
* &#039;&#039;&#039;sftp -P 9922 cert_req@172.RNr.1.100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;get cert/lab1&#039;&#039;xx&#039;&#039;.nux.crt&#039;&#039;&#039;&lt;br /&gt;
* Auf dem HAProxy die &#039;&#039;server.pem&#039;&#039; Datei erstellen&lt;br /&gt;
* &#039;&#039;&#039;cat lab1&#039;&#039;xx&#039;&#039;.nux.key lab1&#039;&#039;xx&#039;&#039;.nux.crt &amp;gt; /etc/haproxy/server.pem&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/haproxy/haproxy.cfg&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 frontend https_web_services&lt;br /&gt;
  bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
  timeout client 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  acl acl_web1 hdr_beg(host) -i web1&lt;br /&gt;
  acl acl_web2 hdr_beg(host) -i web2&lt;br /&gt;
  use_backend backend_web1 if acl_web1&lt;br /&gt;
  use_backend backend_web2 if acl_web2&lt;br /&gt;
  default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 #frontend https_frontend&lt;br /&gt;
 # bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
 # timeout client 50000&lt;br /&gt;
 # default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web1&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_dns 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web2&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_ldap 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend http_backend&lt;br /&gt;
  mode http&lt;br /&gt;
  balance roundrobin&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  server web_dns_2 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
  server web_ldap_2 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart haproxy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[Squid erste Schritte|Squid]] Proxy auf der Firewall =&lt;br /&gt;
&lt;br /&gt;
* [[Squid ACL Basic]]&lt;br /&gt;
* [[Iptables mit Squid Transparenter Proxy]]&lt;br /&gt;
* Mehr Kontrolle über die Domains, die LAN erreichen darf&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
 acl facebook url_regex -i facebook&lt;br /&gt;
 &lt;br /&gt;
 http_access deny facebook&lt;br /&gt;
 http_access allow all&lt;br /&gt;
 &lt;br /&gt;
 #nativer Zugriff&lt;br /&gt;
 http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 #transparenter Zugriff unverschlüsselt&lt;br /&gt;
 http_port 3128 intercept&lt;br /&gt;
 #transparenter Zugriff verschlüsselt &#039;&#039;&#039;wichtig https_port&#039;&#039;&#039;&lt;br /&gt;
 https_port 3129 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 &lt;br /&gt;
 ssl_bump bump all&lt;br /&gt;
 &lt;br /&gt;
 coredump_dir /var/spool/squid&lt;br /&gt;
 logfile_rotate 0&lt;br /&gt;
 &lt;br /&gt;
 cache_dir ufs /var/spool/squid 200 16 256&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;acl domain_blacklist dstdomain &amp;quot;/etc/squid/domain_blacklist.txt&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;http_access deny all domain_blacklist&#039;&#039;&#039;&lt;br /&gt;
 http_access allow localnet&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/domain_blacklist.txt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 facebook.com&lt;br /&gt;
 twitter.com&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart squid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-5}}&lt;br /&gt;
&lt;br /&gt;
= Festplatten verschlüsseln =&lt;br /&gt;
&lt;br /&gt;
; Das Verschlüsseln mit &#039;&#039;&#039;cryptsetup&#039;&#039;&#039; löscht alle vorherigen Daten der Festplatte&lt;br /&gt;
* Neue Festplatte in VirtualBox erstellen und anhängen&lt;br /&gt;
* zu verschlüsselnde Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;fdisk /dev/sdX&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup luksFormat /dev/sdXx&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup open /dev/sdXx &#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Dateisystem auf der entschlüsselten Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;mkfs.ext4 /dev/mapper/&#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* beliebige Testdatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;echo &amp;quot;Hallo Welt&amp;quot; &amp;gt; encrypted.txt&#039;&#039;&#039;&lt;br /&gt;
* Nach Benutzen der Partition wieder verschlüsseln&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup close name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Separate VM für Monitoring/Scanning =&lt;br /&gt;
&lt;br /&gt;
# Hostname auf &#039;&#039;health&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.4/24&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
&lt;br /&gt;
= Checkmk =&lt;br /&gt;
&lt;br /&gt;
* Die Weboberfläche soll über [https://cmk.lab1xx.nux https://cmk.lab1&#039;&#039;xx&#039;&#039;.nux] erreichbar sein:&lt;br /&gt;
** DNS Eintrag&lt;br /&gt;
** HAProxy ACL&lt;br /&gt;
&lt;br /&gt;
* Download: https://checkmk.com/de/download?method=cmk&amp;amp;edition=cre&amp;amp;version=2.2.0b7&amp;amp;platform=debian&amp;amp;os=bullseye&amp;amp;type=cmk&lt;br /&gt;
* Anweisungen der Webseite folgen&lt;br /&gt;
* cmkadmin&#039;s Passwort auf 123Start$ ändern&lt;br /&gt;
* Rechner ins Monitoring hinzufügen&lt;br /&gt;
* AUR Paketmanager https://github.com/Jguer/yay&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58644</id>
		<title>Unix-/Linux Netz</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58644"/>
		<updated>2024-12-04T08:37:20Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Nur SSH aus LAN auf die Firewall zulassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Netzwerk der Schulung=&lt;br /&gt;
&lt;br /&gt;
* Die WAN-IP wird die 172.RNr.0.(100 + eigene Nr.)&lt;br /&gt;
* Die &#039;&#039;&#039;D&#039;&#039;&#039;e&#039;&#039;&#039;m&#039;&#039;&#039;ilitarisierte &#039;&#039;&#039;Z&#039;&#039;&#039;one (DMZ) enthält Services, die von außen erreichbar sein sollen&lt;br /&gt;
* Im LAN befindet sich unser Administratorrechner von dem wir unsere Rechner konfigurieren&lt;br /&gt;
* Das LAN soll Verbindungen ins Internet initiieren können, aber nicht direkt von außen erreichbar sein&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul2}}&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;xx&#039;&#039; in den folgenden Bildern durch die eigene Nummer ersetzen&lt;br /&gt;
;Benutzername für virtuelle Maschinen ist &#039;&#039;xinux&#039;&#039; oder &#039;&#039;root&#039;&#039;&lt;br /&gt;
;Passwort ist immer 123Start$&lt;br /&gt;
&lt;br /&gt;
= Vorbereiten der Firewall =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-0}}&lt;br /&gt;
&lt;br /&gt;
* Wir klonen den Rechner &amp;quot;Server Vorlage&amp;quot; und nennen ihn &amp;quot;Firewall&amp;quot;&lt;br /&gt;
* Dieser braucht 3 Netzwerkadapter:&lt;br /&gt;
# Netzwerkbrücke&lt;br /&gt;
# Internes Netzwerk &amp;quot;LAN&amp;quot;&lt;br /&gt;
# Internes Netzwerk &amp;quot;DMZ&amp;quot;&lt;br /&gt;
* Wir starten die Firewall und konfigurieren statische IP Adressen für alle 3 Netzwerkadapter&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/network/interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s3&lt;br /&gt;
 iface enp0s3 inet static&lt;br /&gt;
  address 172.RNr.0.1&#039;&#039;xx&#039;&#039;/16&lt;br /&gt;
  gateway 172.RNr.0.1&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s8&lt;br /&gt;
 iface enp0s8 inet static&lt;br /&gt;
  address 192.168.0.1/24&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s9&lt;br /&gt;
 iface enp0s9 inet static&lt;br /&gt;
  address 10.0.1&#039;&#039;xx&#039;&#039;.1/24&lt;br /&gt;
&lt;br /&gt;
* Interfaces runter und wieder hochfahren, um die neue Konfiguration zu laden&lt;br /&gt;
* &#039;&#039;&#039;ifdown -va&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ifup -va&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart networking&#039;&#039;&#039;&lt;br /&gt;
* Danach sollte der Befehl &#039;&#039;&#039;ip address show&#039;&#039;&#039; (oder &#039;&#039;&#039;ip a&#039;&#039;&#039;) die neuen IP Adressen anzeigen&lt;br /&gt;
&lt;br /&gt;
 1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&lt;br /&gt;
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;
     inet 127.0.0.1/8 scope host lo&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 ::1/128 scope host &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 2: enp0s3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1456 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:9b:79:a1 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;172.RNr.1.1&#039;&#039;xx&#039;&#039;/16&#039;&#039;&#039; brd 172.22.255.255 scope global enp0s3&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 2003:e5:173a:c401:a00:27ff:fe9b:79a1/64 scope global dynamic mngtmpaddr &lt;br /&gt;
        valid_lft 7134sec preferred_lft 1215sec&lt;br /&gt;
     inet6 fe80::a00:27ff:fe9b:79a1/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 3: enp0s8: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:15:03:b7 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;192.168.0.1/24&#039;&#039;&#039; brd 192.168.0.255 scope global enp0s8&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe15:3b7/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 4: enp0s9: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:31:01:09 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.1/24&#039;&#039;&#039; brd 10.0.100.255 scope global enp0s9&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe31:109/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
&lt;br /&gt;
= Workstation im LAN zum Systemadministrator machen =&lt;br /&gt;
&lt;br /&gt;
* Den Netzwerkadapter von VM &amp;quot;LAN Host&amp;quot; auf &amp;quot;Internes Netzwerk LAN&amp;quot; umstellen und die VM starten&lt;br /&gt;
* Wenn wir unsere Netzwerkkonfiguration anschauen, dann sehen wir keine IP Adresse, da noch kein DHCP läuft&lt;br /&gt;
* Deshalb geben wir uns eine temporäre IP, um per SSH auf die Firewall zu kommen&lt;br /&gt;
* &#039;&#039;&#039;systemctl stop NetworkManager&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ip address add 192.168.0.2/24 dev enp0s3&#039;&#039;&#039;&lt;br /&gt;
* Nun können wir die Firewall per SSH erreichen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* als erstes ändern wir den hostnamen der Firewall von &#039;&#039;debian&#039;&#039; zu &#039;&#039;firewall&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;hostnamectl set-hostname fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 127.0.0.1 localhost&lt;br /&gt;
 127.0.1.1 &#039;&#039;&#039;fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Ein erneutes einloggen updatet den Namen im Prompt&lt;br /&gt;
* als nächstes installieren wir einen [[DHCP]] Server, um Rechnern im LAN automatisch eine Netzwerkkonfiguration zu geben&lt;br /&gt;
* &#039;&#039;&#039;apt install isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Am Ende der Installation wird es eine Fehlermeldung geben, da systemd versucht den Dienst zu starten, obwohl noch keine Konfiguration da ist&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name-servers 1.1.1.1;&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet &#039;&#039;MAC Adresse vom Arch&#039;&#039;;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Dienst mit der neuen Konfiguration starten und überprüfen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl status isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Beim Neustart von Arch sollte dann automatisch die &#039;&#039;192.168.0.2&#039;&#039; bekommen (falls nicht MAC-Adresse überprüfen)&lt;br /&gt;
&lt;br /&gt;
= Firewall als Router konfigurieren =&lt;br /&gt;
&lt;br /&gt;
* Im Moment verwirft die Firewall alle Pakete mit IP-Adressen, die nicht für ihn selbst bestimmt sind&lt;br /&gt;
* Um die Pakete uns Default-Gateway weiterzuleiten muss der Kernelparameter &#039;&#039;net.ipv4.ip_forward&#039;&#039; gesetzt sein&lt;br /&gt;
* Temporär (bleibt nicht nach einem Reboot):&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=1&#039;&#039;&#039; &#039;&#039;# Einschalten&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=0&#039;&#039;&#039; &#039;&#039;# Ausschalten&#039;&#039;&lt;br /&gt;
* Für eine persistente Konfiguration muss dieser Parameter in der die Datei &#039;&#039;/etc/sysctl.conf&#039;&#039; stehen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/sysctl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to enable packet forwarding for IPv4&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;sysctl -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039;ource &#039;&#039;&#039;N&#039;&#039;&#039;etwork &#039;&#039;&#039;A&#039;&#039;&#039;ddress &#039;&#039;&#039;T&#039;&#039;&#039;ranslation muss noch geschehen, damit die Pakete mit IP Adressen aus einem privaten Netzwerk den Weg zurück finden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority 0;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
         oif enp0s3 masquerade&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl enable nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= SSH Schlüssel für passwortloses Login =&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Um nicht jedes mal das Passwort beim Login eingeben zu müssen kann man sich stattdessen mit einem privaten Schlüssel authentifizieren&lt;br /&gt;
* Wir erstellen einen Schlüssel mit RSA Verschlüsselung und erstmal ohne Passwortabfrage für den Benutz des Schlüssels&lt;br /&gt;
* &#039;&#039;&#039;ssh-keygen&#039;&#039;&#039; &#039;&#039;# 123Start$ als Passwort nehmen&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ssh-copy-id xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;scp ~/.ssh/id_rsa.pub xinux@192.168.0.1:~/.ssh/authorized_keys&#039;&#039;&#039;&lt;br /&gt;
* In der &#039;&#039;authorized_keys&#039;&#039; Datei können mehrere öffentliche Schlüssel stehen (pro Zeile ein Schlüssel)&lt;br /&gt;
* Es ist üblich SSH Login über Passwörter komplett auszuschalten sobald die SSH Schlüssel von den zugangsberechtigten Benutzern hinterlegt sind&lt;br /&gt;
* Normalerweise sind die Schlüssel passwortgeschützt.&lt;br /&gt;
* Damit man nicht jedes mal das Passwort dafür eingeben muss kann man einen [[SSH Agent]] nutzen&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
&lt;br /&gt;
* Wir wollen uns direkt als root einloggen können, weshalb die &#039;&#039;&#039;authorized_keys&#039;&#039;&#039; Datei auch im Home-Verzeichnis des root-Nutzers liegen muss&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mkdir &#039;&#039;.ssh&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cp &#039;&#039;~xinux/.ssh/authorized_keys&#039;&#039; &#039;&#039;.ssh/&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Um den SSH-Server abszusichern können wir den Port verlegen und nur schlüsselbasiertes Einloggen zulassen&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/ssh/sshd_config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Port 2222&lt;br /&gt;
 AddressFamily inet&lt;br /&gt;
 ListenAddress 192.168.0.1&lt;br /&gt;
 PubkeyAuthentication yes&lt;br /&gt;
 PasswordAuthentication no&lt;br /&gt;
 UsePAM no&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Nun sollten wir uns direkt als root anmelden können &lt;br /&gt;
* &#039;&#039;&#039;ssh -p 2222 root@192.168.0.1 &amp;quot;id &amp;amp;&amp;amp; hostname&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Um die Ameldung einfacher zu gestalten können wir unseren SSH-Client konfigurieren&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;~/.ssh/config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Host fw&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 	Hostname 192.168.0.1&lt;br /&gt;
 	User root&lt;br /&gt;
 	Port 2222&lt;br /&gt;
&lt;br /&gt;
* Jetzt kann man den Befehl folgendermaßen verkürzen:&lt;br /&gt;
* &#039;&#039;&#039;ssh fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= DHCP erweitern =&lt;br /&gt;
&lt;br /&gt;
* Um neue Rechner in der DMZ automatisch über LAN administrierbar zu machen, erweitern wir den DHCP Server auf der Firewall&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8 &#039;&#039;&#039;enp0s9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Die Subnetzdefinitionen folgen der Reihenfolge der Interfaces in &#039;&#039;/etc/default/isc-dhcp-server&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;subnet 10.0.1&#039;&#039;xx&#039;&#039;.0 netmask 255.255.255.0 {&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;range 10.0.1&#039;&#039;xx&#039;&#039;.50 10.0.1&#039;&#039;xx&#039;&#039;.100;&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;option routers 10.0.1&#039;&#039;xx&#039;&#039;.1;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet MAC Adresse vom Arch;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[DNS]] Server =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-1}}&lt;br /&gt;
&lt;br /&gt;
== Virtualbox ==&lt;br /&gt;
* Ein Klon von &amp;quot;Server Vorlage&amp;quot; mit Netzwerkadapter im internen Netzwerk &amp;quot;DMZ&amp;quot; erstellen&lt;br /&gt;
* Über die Systemlogs für &#039;&#039;&#039;DHCP&#039;&#039;&#039; auf der &#039;&#039;&#039;Firewall&#039;&#039;&#039; können wir die IP Adresse des DNS-Servers herausfinden&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
* &#039;&#039;&#039;journalctl -u isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Zurück zu Arch wechseln und über SSH auf den DNS Server einloggen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@10.0.&#039;&#039;(100 + eigene Nr.).&#039;&#039; &#039;&#039;yy&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
* Anschließend die IP Adresse in &#039;&#039;/etc/network/interfaces&#039;&#039; konfigurieren: 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2&lt;br /&gt;
* Hostname auf DNS: setzen (in &#039;&#039;/etc/hosts&#039;&#039; auch umändern)&lt;br /&gt;
* SSH Schlüssel hinterlegen&lt;br /&gt;
* Bind9 installieren&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;apt install bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
== Optionen festlegen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
         allow-recursion { 0.0.0.0/0; };&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zone definieren ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;lab(100 + eigene Nr.).nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zonendatei erstellen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab&#039;&#039;(100 + eigene Nr.)&#039;&#039;.nux. technik.xinux.de. (&#039;&#039;(Datum + Ver.nr.)&#039;&#039; 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns&lt;br /&gt;
 dns     IN A    10.0.(100 + eigene Nr.).2&lt;br /&gt;
 fw      IN A    10.0.(100 + eigene Nr.).1&lt;br /&gt;
&lt;br /&gt;
* Dienst neustarten und testen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short fw.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Der DNS-Server in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 53 UDP/TCP an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.0.1&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define dnsserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority -100; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Auflösen anderer Domänen über eine Pseudo Top Level Domain =&lt;br /&gt;
&lt;br /&gt;
== Dienst neustarten und DNS-Auflösung testen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short xinux.net&#039;&#039;&#039;&lt;br /&gt;
* Wenn das funktioniert dann den DNS Server im DHCP Server als Standard DNS Server und Suchdomäne eintragen (zur Firewall wechseln)&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 option domain-name-servers 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Arch neustarten und in &#039;&#039;/etc/resolv.conf&#039;&#039; nachschauen, ob die neue Konfiguration automatisch gezogen wurde&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart NetworkManager&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Bind9 Forwarder eintragen =&lt;br /&gt;
&lt;br /&gt;
== DNS Server der &#039;&#039;.nux&#039;&#039;-Domain ==&lt;br /&gt;
* Wenn jeder die DMZ der anderen erreichen kann, ist es möglich über eine Top Level Domain die anderen Domänen aufzulösen&lt;br /&gt;
* Dazu muss man auf den &#039;&#039;&#039;DNS Server&#039;&#039;&#039; einen vorkonfigurierten Pseudo Top Level Domain Nameserver als &#039;&#039;&#039;Forwarder&#039;&#039;&#039; eintragen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 forwarders { 172.RNr.0.100; }; //IP des Top Level Domain Nameservers&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Wenn man die Reverse Zone später auch auflösen will braucht man diese Zeile&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 empty-zones-enable no;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* Einmal alle Domänen durchtesten&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ping fw.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pseudo &#039;&#039;.nux&#039;&#039; Domain Server ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         empty-zones-enable no;&lt;br /&gt;
         allow-recursion  { 0.0.0.0/0; };&lt;br /&gt;
         allow-query  { 0.0.0.0/0; };&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
 };&lt;br /&gt;
* Zur Zonendefinition hinzufügen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 zone &amp;quot;0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 ...&lt;br /&gt;
* Zonendateien&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN      SOA     dns.nux. technik.xinux.de. (2023041809 14400 3600 3600000 86400)&lt;br /&gt;
 &lt;br /&gt;
 @       IN      NS      dns.nux.&lt;br /&gt;
 lab101          NS      dns.lab101.nux.&lt;br /&gt;
 lab102          NS      dns.lab102.nux.&lt;br /&gt;
 lab100          NS      dns.nux.&lt;br /&gt;
 &lt;br /&gt;
 dns     IN      A       172.RNr.0.100&lt;br /&gt;
 dns.lab101      A       172.RNr.0.1&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 dns.lab102      A       172.RNr.0.1&#039;&#039;xy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Reverse Lookup =&lt;br /&gt;
&lt;br /&gt;
* Für manche Dienste muss einer IP einen Domain Namen zugeordnet werden&lt;br /&gt;
* Dazu eine neue Zone definieren und eine neue Zonendatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;100.0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;100.0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim 100.0.10.in-addr.arpa&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab100.nux. technik.xinux.de. (2023050901 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns.lab100.nux.&lt;br /&gt;
 1       IN PTR  fw.lab100.nux.&lt;br /&gt;
 2       IN PTR  dns.lab100.nux.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Netz absichern =&lt;br /&gt;
&lt;br /&gt;
* Im Moment darf jeder auf die Firewall von jeden zugreifen (und damit alle dahinterliegenden Systeme)&lt;br /&gt;
* Um dies zu verhindern erstellen wir mit [[Nftables Netze absichern|nftables]] Firewall Regeln, die nur das nötigste zulassen&lt;br /&gt;
* Die Regeln werden von oben nach unten abgearbeitet&lt;br /&gt;
* Wenn keine Regel greift, dann zieht die &#039;&#039;Default Policy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Prerouting, Input, Forward, Output und Postrouting sind Punkte an denen wir Regeln erstellen können&lt;br /&gt;
&lt;br /&gt;
{{#drawio:nft-inet1}}&lt;br /&gt;
&lt;br /&gt;
== Nur SSH aus LAN auf die Firewall zulassen ==&lt;br /&gt;
&lt;br /&gt;
* Default Policy wird in allen Filterketten auf Drop gesetzt&lt;br /&gt;
* Wenn also keine Regel das Paket durchlässt, wird es verworfen&lt;br /&gt;
* Über Connection Tracking können wir uns auf die Regulierung neuer Verbindungen fokussieren&lt;br /&gt;
* Als erstes soll nur:&lt;br /&gt;
** Die Firewall mit sich selbst über das loopback Interface kommunizieren können (da es sonst zu komischen Problemen führen kann)&lt;br /&gt;
** &#039;&#039;Established&#039;&#039; und &#039;&#039;Related&#039;&#039; Pakete akzeptiert werden&lt;br /&gt;
** Neue Anfragen aus dem LAN auf TCP Port 2222 akzeptieren&lt;br /&gt;
** Firewall soll über HTTP bzw. HTTPS Programme herunterladen können&lt;br /&gt;
** Gedroppte Pakete sollen geloggt werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wanip = 172.RNr.0.1xx &lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 &#039;&#039;&#039;define wandev = enp0s3&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define landev = enp0s8&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define lan = 192.168.0.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif $landev tcp dport 2222 accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-input--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif $wandev tcp dport { 80, 443 } accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-output--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 	table inet nat {&lt;br /&gt;
 		chain prerouting {&lt;br /&gt;
 			type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
 			ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 			ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		chain postrouting {&lt;br /&gt;
 			type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
 			oif $wandev masquerade&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Internetzugriff für LAN und Firewall ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/nftables.conf&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 define wanip = 172.22.0.1xx&lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 define wandev = &amp;quot;enp0s3&amp;quot;&lt;br /&gt;
 define landev = &amp;quot;enp0s8&amp;quot;&lt;br /&gt;
 define dmzdev = &amp;quot;enp0s9&amp;quot;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1xx.0/24&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
 		iif $landev ip saddr $lan tcp dport 2222 accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver tcp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver tcp  dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dmz tcp dport 22 accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
                 ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
                 ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;C&#039;&#039;&#039;onnection &#039;&#039;&#039;T&#039;&#039;&#039;racking &#039;&#039;&#039;T&#039;&#039;&#039;abelle ==&lt;br /&gt;
&lt;br /&gt;
* Das Tool &#039;&#039;&#039;conntrack&#039;&#039;&#039; installieren, um die CTT anschauen und leeren zu können&lt;br /&gt;
* &#039;&#039;&#039;apt install conntrack&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -F&#039;&#039;&#039; &#039;&#039;# Leert die Tabelle&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -L&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 tcp      6 432000 ESTABLISHED src=192.168.0.2 dst=192.168.0.2 sport=58178 dport=22 src=192.168.0.1 dst=192.168.0.2 sport=22 dport=58178 [ASSURED] mark=0 use=1&lt;br /&gt;
&lt;br /&gt;
= Webserver =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-2}}&lt;br /&gt;
&lt;br /&gt;
* Rechnern im LAN sollen Webseiten aufrufen können&lt;br /&gt;
* unsere DNS Server sollten andere Server im Internet und in den anderen DMZs befragen dürfen&lt;br /&gt;
* d.h. UDP Port 53 aus LAN und DMZ und TCP Ports 80 und 443 für LAN sollten freigeschalten werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 &#039;&#039;&#039;define dmzdev = enp0s9&#039;&#039;&#039;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 &#039;&#039;&#039;define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
             ct state established,related accept&lt;br /&gt;
             iif $landev tcp dport 22 accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             &#039;&#039;&#039;iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&#039;&#039;&#039;&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     table inet nat {&lt;br /&gt;
         chain postrouting {&lt;br /&gt;
             type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
             oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Ein Webserver in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 80/443 an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 define dmzdev = enp0s9&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.1.1&#039;&#039;xx&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define webserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter; policy drop;&lt;br /&gt;
                 iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif $landev tcp dport 22 accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&lt;br /&gt;
                 iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $webserver tcp dport 80 accept&#039;&#039;&#039;&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority 0; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* Der DNS Server soll uns erstmal auch als Webserver dienen&lt;br /&gt;
* &#039;&#039;&#039;apt install apache2&#039;&#039;&#039;&lt;br /&gt;
* Im Browser sollten die Webserver über die IPs der Firewalls erreichbar sein&lt;br /&gt;
&lt;br /&gt;
== Debug Möglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
* Falls sich die Firewall nicht so verhält wie erwartet, kann man:&lt;br /&gt;
** Connection Tracking Tabelle leeren/flushen: &#039;&#039;&#039;conntrack -F&#039;&#039;&#039;&lt;br /&gt;
** Über &#039;&#039;&#039;tail -f -n0 /var/log/syslog | grep nftables&#039;&#039;&#039; gedroppte Pakete anschauen (wenn die Log Regeln da sind)&lt;br /&gt;
** NAT Regeln überprüfen: &#039;&#039;&#039;tcpdump -i &#039;&#039;interface&#039;&#039; &#039;&#039;filter&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
** Auf Syntaxfehler überprüfen: &#039;&#039;&#039;nft -cf /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= LDAP Server einrichten =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-3}}&lt;br /&gt;
&lt;br /&gt;
* ein LDAP Server ermöglicht uns zentrale Benutzerverwaltung innerhalb einer Domäne&lt;br /&gt;
* die Benutzerdaten werden in einer Datenbank gespeichert und von Clients über &#039;&#039;&#039;TCP Port 389&#039;&#039;&#039; befragt&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;ldap&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
* eventuell muss auf der Firewall Port 80 und 443 für die DMZ freigeschaltet werden, damit die Pakete heruntergeladen werden können&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[Openldap Basic Config common]]&lt;br /&gt;
&lt;br /&gt;
= [[HAProxy]] für zentrale SSL Terminierung =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-4}}&lt;br /&gt;
&lt;br /&gt;
* Im Moment ist nur SSH verschlüsselt&lt;br /&gt;
* Pakete von HTTP Verbindungen zwischen den LAN und DMZ werden im Klartext verschickt&lt;br /&gt;
* &#039;&#039;&#039;Problem&#039;&#039;&#039;: Jemand der den Verkehr mitscheidet, kann alles lesen&lt;br /&gt;
* &#039;&#039;&#039;Lösung&#039;&#039;&#039;: Upgrade auf HTTPS mit [[Grundlagen Kryptografie | Zertifikaten]]&lt;br /&gt;
* [[SFTP-Server]] für den sicheren Transfer der Zertifikatsanträge&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;haproxy&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
# signiertes Wildcard-Zertifikat rüberkopieren&lt;br /&gt;
# privaten Zertifikatsschlüssel rüberkopieren&lt;br /&gt;
&lt;br /&gt;
* Signiertes Zertifikat vom SFTP Server holen&lt;br /&gt;
* &#039;&#039;&#039;sftp -P 9922 cert_req@172.RNr.1.100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;get cert/lab1&#039;&#039;xx&#039;&#039;.nux.crt&#039;&#039;&#039;&lt;br /&gt;
* Auf dem HAProxy die &#039;&#039;server.pem&#039;&#039; Datei erstellen&lt;br /&gt;
* &#039;&#039;&#039;cat lab1&#039;&#039;xx&#039;&#039;.nux.key lab1&#039;&#039;xx&#039;&#039;.nux.crt &amp;gt; /etc/haproxy/server.pem&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/haproxy/haproxy.cfg&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 frontend https_web_services&lt;br /&gt;
  bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
  timeout client 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  acl acl_web1 hdr_beg(host) -i web1&lt;br /&gt;
  acl acl_web2 hdr_beg(host) -i web2&lt;br /&gt;
  use_backend backend_web1 if acl_web1&lt;br /&gt;
  use_backend backend_web2 if acl_web2&lt;br /&gt;
  default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 #frontend https_frontend&lt;br /&gt;
 # bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
 # timeout client 50000&lt;br /&gt;
 # default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web1&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_dns 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web2&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_ldap 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend http_backend&lt;br /&gt;
  mode http&lt;br /&gt;
  balance roundrobin&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  server web_dns_2 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
  server web_ldap_2 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart haproxy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[Squid erste Schritte|Squid]] Proxy auf der Firewall =&lt;br /&gt;
&lt;br /&gt;
* [[Squid ACL Basic]]&lt;br /&gt;
* [[Iptables mit Squid Transparenter Proxy]]&lt;br /&gt;
* Mehr Kontrolle über die Domains, die LAN erreichen darf&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
 acl facebook url_regex -i facebook&lt;br /&gt;
 &lt;br /&gt;
 http_access deny facebook&lt;br /&gt;
 http_access allow all&lt;br /&gt;
 &lt;br /&gt;
 #nativer Zugriff&lt;br /&gt;
 http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 #transparenter Zugriff unverschlüsselt&lt;br /&gt;
 http_port 3128 intercept&lt;br /&gt;
 #transparenter Zugriff verschlüsselt &#039;&#039;&#039;wichtig https_port&#039;&#039;&#039;&lt;br /&gt;
 https_port 3129 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 &lt;br /&gt;
 ssl_bump bump all&lt;br /&gt;
 &lt;br /&gt;
 coredump_dir /var/spool/squid&lt;br /&gt;
 logfile_rotate 0&lt;br /&gt;
 &lt;br /&gt;
 cache_dir ufs /var/spool/squid 200 16 256&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;acl domain_blacklist dstdomain &amp;quot;/etc/squid/domain_blacklist.txt&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;http_access deny all domain_blacklist&#039;&#039;&#039;&lt;br /&gt;
 http_access allow localnet&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/domain_blacklist.txt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 facebook.com&lt;br /&gt;
 twitter.com&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart squid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-5}}&lt;br /&gt;
&lt;br /&gt;
= Festplatten verschlüsseln =&lt;br /&gt;
&lt;br /&gt;
; Das Verschlüsseln mit &#039;&#039;&#039;cryptsetup&#039;&#039;&#039; löscht alle vorherigen Daten der Festplatte&lt;br /&gt;
* Neue Festplatte in VirtualBox erstellen und anhängen&lt;br /&gt;
* zu verschlüsselnde Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;fdisk /dev/sdX&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup luksFormat /dev/sdXx&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup open /dev/sdXx &#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Dateisystem auf der entschlüsselten Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;mkfs.ext4 /dev/mapper/&#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* beliebige Testdatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;echo &amp;quot;Hallo Welt&amp;quot; &amp;gt; encrypted.txt&#039;&#039;&#039;&lt;br /&gt;
* Nach Benutzen der Partition wieder verschlüsseln&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup close name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Separate VM für Monitoring/Scanning =&lt;br /&gt;
&lt;br /&gt;
# Hostname auf &#039;&#039;health&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.4/24&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
&lt;br /&gt;
= Checkmk =&lt;br /&gt;
&lt;br /&gt;
* Die Weboberfläche soll über [https://cmk.lab1xx.nux https://cmk.lab1&#039;&#039;xx&#039;&#039;.nux] erreichbar sein:&lt;br /&gt;
** DNS Eintrag&lt;br /&gt;
** HAProxy ACL&lt;br /&gt;
&lt;br /&gt;
* Download: https://checkmk.com/de/download?method=cmk&amp;amp;edition=cre&amp;amp;version=2.2.0b7&amp;amp;platform=debian&amp;amp;os=bullseye&amp;amp;type=cmk&lt;br /&gt;
* Anweisungen der Webseite folgen&lt;br /&gt;
* cmkadmin&#039;s Passwort auf 123Start$ ändern&lt;br /&gt;
* Rechner ins Monitoring hinzufügen&lt;br /&gt;
* AUR Paketmanager https://github.com/Jguer/yay&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58643</id>
		<title>Unix-/Linux Netz</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58643"/>
		<updated>2024-12-04T08:20:49Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Nur SSH aus LAN auf die Firewall zulassen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Netzwerk der Schulung=&lt;br /&gt;
&lt;br /&gt;
* Die WAN-IP wird die 172.RNr.0.(100 + eigene Nr.)&lt;br /&gt;
* Die &#039;&#039;&#039;D&#039;&#039;&#039;e&#039;&#039;&#039;m&#039;&#039;&#039;ilitarisierte &#039;&#039;&#039;Z&#039;&#039;&#039;one (DMZ) enthält Services, die von außen erreichbar sein sollen&lt;br /&gt;
* Im LAN befindet sich unser Administratorrechner von dem wir unsere Rechner konfigurieren&lt;br /&gt;
* Das LAN soll Verbindungen ins Internet initiieren können, aber nicht direkt von außen erreichbar sein&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul2}}&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;xx&#039;&#039; in den folgenden Bildern durch die eigene Nummer ersetzen&lt;br /&gt;
;Benutzername für virtuelle Maschinen ist &#039;&#039;xinux&#039;&#039; oder &#039;&#039;root&#039;&#039;&lt;br /&gt;
;Passwort ist immer 123Start$&lt;br /&gt;
&lt;br /&gt;
= Vorbereiten der Firewall =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-0}}&lt;br /&gt;
&lt;br /&gt;
* Wir klonen den Rechner &amp;quot;Server Vorlage&amp;quot; und nennen ihn &amp;quot;Firewall&amp;quot;&lt;br /&gt;
* Dieser braucht 3 Netzwerkadapter:&lt;br /&gt;
# Netzwerkbrücke&lt;br /&gt;
# Internes Netzwerk &amp;quot;LAN&amp;quot;&lt;br /&gt;
# Internes Netzwerk &amp;quot;DMZ&amp;quot;&lt;br /&gt;
* Wir starten die Firewall und konfigurieren statische IP Adressen für alle 3 Netzwerkadapter&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/network/interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s3&lt;br /&gt;
 iface enp0s3 inet static&lt;br /&gt;
  address 172.RNr.0.1&#039;&#039;xx&#039;&#039;/16&lt;br /&gt;
  gateway 172.RNr.0.1&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s8&lt;br /&gt;
 iface enp0s8 inet static&lt;br /&gt;
  address 192.168.0.1/24&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s9&lt;br /&gt;
 iface enp0s9 inet static&lt;br /&gt;
  address 10.0.1&#039;&#039;xx&#039;&#039;.1/24&lt;br /&gt;
&lt;br /&gt;
* Interfaces runter und wieder hochfahren, um die neue Konfiguration zu laden&lt;br /&gt;
* &#039;&#039;&#039;ifdown -va&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ifup -va&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart networking&#039;&#039;&#039;&lt;br /&gt;
* Danach sollte der Befehl &#039;&#039;&#039;ip address show&#039;&#039;&#039; (oder &#039;&#039;&#039;ip a&#039;&#039;&#039;) die neuen IP Adressen anzeigen&lt;br /&gt;
&lt;br /&gt;
 1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&lt;br /&gt;
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;
     inet 127.0.0.1/8 scope host lo&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 ::1/128 scope host &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 2: enp0s3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1456 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:9b:79:a1 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;172.RNr.1.1&#039;&#039;xx&#039;&#039;/16&#039;&#039;&#039; brd 172.22.255.255 scope global enp0s3&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 2003:e5:173a:c401:a00:27ff:fe9b:79a1/64 scope global dynamic mngtmpaddr &lt;br /&gt;
        valid_lft 7134sec preferred_lft 1215sec&lt;br /&gt;
     inet6 fe80::a00:27ff:fe9b:79a1/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 3: enp0s8: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:15:03:b7 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;192.168.0.1/24&#039;&#039;&#039; brd 192.168.0.255 scope global enp0s8&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe15:3b7/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 4: enp0s9: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:31:01:09 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.1/24&#039;&#039;&#039; brd 10.0.100.255 scope global enp0s9&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe31:109/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
&lt;br /&gt;
= Workstation im LAN zum Systemadministrator machen =&lt;br /&gt;
&lt;br /&gt;
* Den Netzwerkadapter von VM &amp;quot;LAN Host&amp;quot; auf &amp;quot;Internes Netzwerk LAN&amp;quot; umstellen und die VM starten&lt;br /&gt;
* Wenn wir unsere Netzwerkkonfiguration anschauen, dann sehen wir keine IP Adresse, da noch kein DHCP läuft&lt;br /&gt;
* Deshalb geben wir uns eine temporäre IP, um per SSH auf die Firewall zu kommen&lt;br /&gt;
* &#039;&#039;&#039;systemctl stop NetworkManager&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ip address add 192.168.0.2/24 dev enp0s3&#039;&#039;&#039;&lt;br /&gt;
* Nun können wir die Firewall per SSH erreichen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* als erstes ändern wir den hostnamen der Firewall von &#039;&#039;debian&#039;&#039; zu &#039;&#039;firewall&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;hostnamectl set-hostname fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 127.0.0.1 localhost&lt;br /&gt;
 127.0.1.1 &#039;&#039;&#039;fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Ein erneutes einloggen updatet den Namen im Prompt&lt;br /&gt;
* als nächstes installieren wir einen [[DHCP]] Server, um Rechnern im LAN automatisch eine Netzwerkkonfiguration zu geben&lt;br /&gt;
* &#039;&#039;&#039;apt install isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Am Ende der Installation wird es eine Fehlermeldung geben, da systemd versucht den Dienst zu starten, obwohl noch keine Konfiguration da ist&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name-servers 1.1.1.1;&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet &#039;&#039;MAC Adresse vom Arch&#039;&#039;;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Dienst mit der neuen Konfiguration starten und überprüfen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl status isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Beim Neustart von Arch sollte dann automatisch die &#039;&#039;192.168.0.2&#039;&#039; bekommen (falls nicht MAC-Adresse überprüfen)&lt;br /&gt;
&lt;br /&gt;
= Firewall als Router konfigurieren =&lt;br /&gt;
&lt;br /&gt;
* Im Moment verwirft die Firewall alle Pakete mit IP-Adressen, die nicht für ihn selbst bestimmt sind&lt;br /&gt;
* Um die Pakete uns Default-Gateway weiterzuleiten muss der Kernelparameter &#039;&#039;net.ipv4.ip_forward&#039;&#039; gesetzt sein&lt;br /&gt;
* Temporär (bleibt nicht nach einem Reboot):&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=1&#039;&#039;&#039; &#039;&#039;# Einschalten&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=0&#039;&#039;&#039; &#039;&#039;# Ausschalten&#039;&#039;&lt;br /&gt;
* Für eine persistente Konfiguration muss dieser Parameter in der die Datei &#039;&#039;/etc/sysctl.conf&#039;&#039; stehen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/sysctl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to enable packet forwarding for IPv4&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;sysctl -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039;ource &#039;&#039;&#039;N&#039;&#039;&#039;etwork &#039;&#039;&#039;A&#039;&#039;&#039;ddress &#039;&#039;&#039;T&#039;&#039;&#039;ranslation muss noch geschehen, damit die Pakete mit IP Adressen aus einem privaten Netzwerk den Weg zurück finden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority 0;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
         oif enp0s3 masquerade&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl enable nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= SSH Schlüssel für passwortloses Login =&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Um nicht jedes mal das Passwort beim Login eingeben zu müssen kann man sich stattdessen mit einem privaten Schlüssel authentifizieren&lt;br /&gt;
* Wir erstellen einen Schlüssel mit RSA Verschlüsselung und erstmal ohne Passwortabfrage für den Benutz des Schlüssels&lt;br /&gt;
* &#039;&#039;&#039;ssh-keygen&#039;&#039;&#039; &#039;&#039;# 123Start$ als Passwort nehmen&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ssh-copy-id xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;scp ~/.ssh/id_rsa.pub xinux@192.168.0.1:~/.ssh/authorized_keys&#039;&#039;&#039;&lt;br /&gt;
* In der &#039;&#039;authorized_keys&#039;&#039; Datei können mehrere öffentliche Schlüssel stehen (pro Zeile ein Schlüssel)&lt;br /&gt;
* Es ist üblich SSH Login über Passwörter komplett auszuschalten sobald die SSH Schlüssel von den zugangsberechtigten Benutzern hinterlegt sind&lt;br /&gt;
* Normalerweise sind die Schlüssel passwortgeschützt.&lt;br /&gt;
* Damit man nicht jedes mal das Passwort dafür eingeben muss kann man einen [[SSH Agent]] nutzen&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
&lt;br /&gt;
* Wir wollen uns direkt als root einloggen können, weshalb die &#039;&#039;&#039;authorized_keys&#039;&#039;&#039; Datei auch im Home-Verzeichnis des root-Nutzers liegen muss&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mkdir &#039;&#039;.ssh&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cp &#039;&#039;~xinux/.ssh/authorized_keys&#039;&#039; &#039;&#039;.ssh/&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Um den SSH-Server abszusichern können wir den Port verlegen und nur schlüsselbasiertes Einloggen zulassen&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/ssh/sshd_config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Port 2222&lt;br /&gt;
 AddressFamily inet&lt;br /&gt;
 ListenAddress 192.168.0.1&lt;br /&gt;
 PubkeyAuthentication yes&lt;br /&gt;
 PasswordAuthentication no&lt;br /&gt;
 UsePAM no&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Nun sollten wir uns direkt als root anmelden können &lt;br /&gt;
* &#039;&#039;&#039;ssh -p 2222 root@192.168.0.1 &amp;quot;id &amp;amp;&amp;amp; hostname&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Um die Ameldung einfacher zu gestalten können wir unseren SSH-Client konfigurieren&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;~/.ssh/config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Host fw&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 	Hostname 192.168.0.1&lt;br /&gt;
 	User root&lt;br /&gt;
 	Port 2222&lt;br /&gt;
&lt;br /&gt;
* Jetzt kann man den Befehl folgendermaßen verkürzen:&lt;br /&gt;
* &#039;&#039;&#039;ssh fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= DHCP erweitern =&lt;br /&gt;
&lt;br /&gt;
* Um neue Rechner in der DMZ automatisch über LAN administrierbar zu machen, erweitern wir den DHCP Server auf der Firewall&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8 &#039;&#039;&#039;enp0s9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Die Subnetzdefinitionen folgen der Reihenfolge der Interfaces in &#039;&#039;/etc/default/isc-dhcp-server&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;subnet 10.0.1&#039;&#039;xx&#039;&#039;.0 netmask 255.255.255.0 {&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;range 10.0.1&#039;&#039;xx&#039;&#039;.50 10.0.1&#039;&#039;xx&#039;&#039;.100;&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;option routers 10.0.1&#039;&#039;xx&#039;&#039;.1;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet MAC Adresse vom Arch;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[DNS]] Server =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-1}}&lt;br /&gt;
&lt;br /&gt;
== Virtualbox ==&lt;br /&gt;
* Ein Klon von &amp;quot;Server Vorlage&amp;quot; mit Netzwerkadapter im internen Netzwerk &amp;quot;DMZ&amp;quot; erstellen&lt;br /&gt;
* Über die Systemlogs für &#039;&#039;&#039;DHCP&#039;&#039;&#039; auf der &#039;&#039;&#039;Firewall&#039;&#039;&#039; können wir die IP Adresse des DNS-Servers herausfinden&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
* &#039;&#039;&#039;journalctl -u isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Zurück zu Arch wechseln und über SSH auf den DNS Server einloggen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@10.0.&#039;&#039;(100 + eigene Nr.).&#039;&#039; &#039;&#039;yy&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
* Anschließend die IP Adresse in &#039;&#039;/etc/network/interfaces&#039;&#039; konfigurieren: 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2&lt;br /&gt;
* Hostname auf DNS: setzen (in &#039;&#039;/etc/hosts&#039;&#039; auch umändern)&lt;br /&gt;
* SSH Schlüssel hinterlegen&lt;br /&gt;
* Bind9 installieren&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;apt install bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
== Optionen festlegen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
         allow-recursion { 0.0.0.0/0; };&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zone definieren ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;lab(100 + eigene Nr.).nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zonendatei erstellen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab&#039;&#039;(100 + eigene Nr.)&#039;&#039;.nux. technik.xinux.de. (&#039;&#039;(Datum + Ver.nr.)&#039;&#039; 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns&lt;br /&gt;
 dns     IN A    10.0.(100 + eigene Nr.).2&lt;br /&gt;
 fw      IN A    10.0.(100 + eigene Nr.).1&lt;br /&gt;
&lt;br /&gt;
* Dienst neustarten und testen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short fw.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Der DNS-Server in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 53 UDP/TCP an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.0.1&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define dnsserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority -100; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Auflösen anderer Domänen über eine Pseudo Top Level Domain =&lt;br /&gt;
&lt;br /&gt;
== Dienst neustarten und DNS-Auflösung testen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short xinux.net&#039;&#039;&#039;&lt;br /&gt;
* Wenn das funktioniert dann den DNS Server im DHCP Server als Standard DNS Server und Suchdomäne eintragen (zur Firewall wechseln)&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 option domain-name-servers 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Arch neustarten und in &#039;&#039;/etc/resolv.conf&#039;&#039; nachschauen, ob die neue Konfiguration automatisch gezogen wurde&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart NetworkManager&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Bind9 Forwarder eintragen =&lt;br /&gt;
&lt;br /&gt;
== DNS Server der &#039;&#039;.nux&#039;&#039;-Domain ==&lt;br /&gt;
* Wenn jeder die DMZ der anderen erreichen kann, ist es möglich über eine Top Level Domain die anderen Domänen aufzulösen&lt;br /&gt;
* Dazu muss man auf den &#039;&#039;&#039;DNS Server&#039;&#039;&#039; einen vorkonfigurierten Pseudo Top Level Domain Nameserver als &#039;&#039;&#039;Forwarder&#039;&#039;&#039; eintragen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 forwarders { 172.RNr.0.100; }; //IP des Top Level Domain Nameservers&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Wenn man die Reverse Zone später auch auflösen will braucht man diese Zeile&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 empty-zones-enable no;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* Einmal alle Domänen durchtesten&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ping fw.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pseudo &#039;&#039;.nux&#039;&#039; Domain Server ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         empty-zones-enable no;&lt;br /&gt;
         allow-recursion  { 0.0.0.0/0; };&lt;br /&gt;
         allow-query  { 0.0.0.0/0; };&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
 };&lt;br /&gt;
* Zur Zonendefinition hinzufügen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 zone &amp;quot;0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 ...&lt;br /&gt;
* Zonendateien&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN      SOA     dns.nux. technik.xinux.de. (2023041809 14400 3600 3600000 86400)&lt;br /&gt;
 &lt;br /&gt;
 @       IN      NS      dns.nux.&lt;br /&gt;
 lab101          NS      dns.lab101.nux.&lt;br /&gt;
 lab102          NS      dns.lab102.nux.&lt;br /&gt;
 lab100          NS      dns.nux.&lt;br /&gt;
 &lt;br /&gt;
 dns     IN      A       172.RNr.0.100&lt;br /&gt;
 dns.lab101      A       172.RNr.0.1&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 dns.lab102      A       172.RNr.0.1&#039;&#039;xy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Reverse Lookup =&lt;br /&gt;
&lt;br /&gt;
* Für manche Dienste muss einer IP einen Domain Namen zugeordnet werden&lt;br /&gt;
* Dazu eine neue Zone definieren und eine neue Zonendatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;100.0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;100.0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim 100.0.10.in-addr.arpa&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab100.nux. technik.xinux.de. (2023050901 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns.lab100.nux.&lt;br /&gt;
 1       IN PTR  fw.lab100.nux.&lt;br /&gt;
 2       IN PTR  dns.lab100.nux.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Netz absichern =&lt;br /&gt;
&lt;br /&gt;
* Im Moment darf jeder auf die Firewall von jeden zugreifen (und damit alle dahinterliegenden Systeme)&lt;br /&gt;
* Um dies zu verhindern erstellen wir mit [[Nftables Netze absichern|nftables]] Firewall Regeln, die nur das nötigste zulassen&lt;br /&gt;
* Die Regeln werden von oben nach unten abgearbeitet&lt;br /&gt;
* Wenn keine Regel greift, dann zieht die &#039;&#039;Default Policy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Prerouting, Input, Forward, Output und Postrouting sind Punkte an denen wir Regeln erstellen können&lt;br /&gt;
&lt;br /&gt;
{{#drawio:nft-inet1}}&lt;br /&gt;
&lt;br /&gt;
== Nur SSH aus LAN auf die Firewall zulassen ==&lt;br /&gt;
&lt;br /&gt;
* Default Policy wird in allen Filterketten auf Drop gesetzt&lt;br /&gt;
* Wenn also keine Regel das Paket durchlässt, wird es verworfen&lt;br /&gt;
* Über Connection Tracking können wir uns auf die Regulierung neuer Verbindungen fokussieren&lt;br /&gt;
* Als erstes soll nur:&lt;br /&gt;
** Die Firewall mit sich selbst über das loopback Interface kommunizieren können (da es sonst zu komischen Problemen führen kann)&lt;br /&gt;
** &#039;&#039;Established&#039;&#039; und &#039;&#039;Related&#039;&#039; Pakete akzeptiert werden&lt;br /&gt;
** Neue Anfragen aus dem LAN auf TCP Port 2222 akzeptieren&lt;br /&gt;
** Firewall soll über HTTP bzw. HTTPS Programme herunterladen können&lt;br /&gt;
** Gedroppte Pakete sollen geloggt werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wanip = 172.RNr.0.1xx &lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 &#039;&#039;&#039;define wandev = enp0s3&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define landev = enp0s8&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define lan = 192.168.0.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif $landev tcp dport 2222 accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-input--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif $wandev tcp dport { 80, 443 } accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-output--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	table inet nat {&lt;br /&gt;
 		chain prerouting {&lt;br /&gt;
 			type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
 			ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 			ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		chain postrouting {&lt;br /&gt;
 			type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
 			oif $wandev masquerade&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Internetzugriff für LAN und Firewall ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/nftables.conf&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 define wanip = 172.22.0.1xx&lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 define wandev = &amp;quot;enp0s3&amp;quot;&lt;br /&gt;
 define landev = &amp;quot;enp0s8&amp;quot;&lt;br /&gt;
 define dmzdev = &amp;quot;enp0s9&amp;quot;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1xx.0/24&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
 		iif $landev ip saddr $lan tcp dport 2222 accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver tcp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver tcp  dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dmz tcp dport 22 accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
                 ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
                 ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;C&#039;&#039;&#039;onnection &#039;&#039;&#039;T&#039;&#039;&#039;racking &#039;&#039;&#039;T&#039;&#039;&#039;abelle ==&lt;br /&gt;
&lt;br /&gt;
* Das Tool &#039;&#039;&#039;conntrack&#039;&#039;&#039; installieren, um die CTT anschauen und leeren zu können&lt;br /&gt;
* &#039;&#039;&#039;apt install conntrack&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -F&#039;&#039;&#039; &#039;&#039;# Leert die Tabelle&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -L&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 tcp      6 432000 ESTABLISHED src=192.168.0.2 dst=192.168.0.2 sport=58178 dport=22 src=192.168.0.1 dst=192.168.0.2 sport=22 dport=58178 [ASSURED] mark=0 use=1&lt;br /&gt;
&lt;br /&gt;
= Webserver =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-2}}&lt;br /&gt;
&lt;br /&gt;
* Rechnern im LAN sollen Webseiten aufrufen können&lt;br /&gt;
* unsere DNS Server sollten andere Server im Internet und in den anderen DMZs befragen dürfen&lt;br /&gt;
* d.h. UDP Port 53 aus LAN und DMZ und TCP Ports 80 und 443 für LAN sollten freigeschalten werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 &#039;&#039;&#039;define dmzdev = enp0s9&#039;&#039;&#039;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 &#039;&#039;&#039;define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
             ct state established,related accept&lt;br /&gt;
             iif $landev tcp dport 22 accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             &#039;&#039;&#039;iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&#039;&#039;&#039;&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     table inet nat {&lt;br /&gt;
         chain postrouting {&lt;br /&gt;
             type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
             oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Ein Webserver in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 80/443 an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 define dmzdev = enp0s9&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.1.1&#039;&#039;xx&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define webserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter; policy drop;&lt;br /&gt;
                 iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif $landev tcp dport 22 accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&lt;br /&gt;
                 iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $webserver tcp dport 80 accept&#039;&#039;&#039;&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority 0; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* Der DNS Server soll uns erstmal auch als Webserver dienen&lt;br /&gt;
* &#039;&#039;&#039;apt install apache2&#039;&#039;&#039;&lt;br /&gt;
* Im Browser sollten die Webserver über die IPs der Firewalls erreichbar sein&lt;br /&gt;
&lt;br /&gt;
== Debug Möglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
* Falls sich die Firewall nicht so verhält wie erwartet, kann man:&lt;br /&gt;
** Connection Tracking Tabelle leeren/flushen: &#039;&#039;&#039;conntrack -F&#039;&#039;&#039;&lt;br /&gt;
** Über &#039;&#039;&#039;tail -f -n0 /var/log/syslog | grep nftables&#039;&#039;&#039; gedroppte Pakete anschauen (wenn die Log Regeln da sind)&lt;br /&gt;
** NAT Regeln überprüfen: &#039;&#039;&#039;tcpdump -i &#039;&#039;interface&#039;&#039; &#039;&#039;filter&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
** Auf Syntaxfehler überprüfen: &#039;&#039;&#039;nft -cf /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= LDAP Server einrichten =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-3}}&lt;br /&gt;
&lt;br /&gt;
* ein LDAP Server ermöglicht uns zentrale Benutzerverwaltung innerhalb einer Domäne&lt;br /&gt;
* die Benutzerdaten werden in einer Datenbank gespeichert und von Clients über &#039;&#039;&#039;TCP Port 389&#039;&#039;&#039; befragt&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;ldap&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
* eventuell muss auf der Firewall Port 80 und 443 für die DMZ freigeschaltet werden, damit die Pakete heruntergeladen werden können&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[Openldap Basic Config common]]&lt;br /&gt;
&lt;br /&gt;
= [[HAProxy]] für zentrale SSL Terminierung =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-4}}&lt;br /&gt;
&lt;br /&gt;
* Im Moment ist nur SSH verschlüsselt&lt;br /&gt;
* Pakete von HTTP Verbindungen zwischen den LAN und DMZ werden im Klartext verschickt&lt;br /&gt;
* &#039;&#039;&#039;Problem&#039;&#039;&#039;: Jemand der den Verkehr mitscheidet, kann alles lesen&lt;br /&gt;
* &#039;&#039;&#039;Lösung&#039;&#039;&#039;: Upgrade auf HTTPS mit [[Grundlagen Kryptografie | Zertifikaten]]&lt;br /&gt;
* [[SFTP-Server]] für den sicheren Transfer der Zertifikatsanträge&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;haproxy&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
# signiertes Wildcard-Zertifikat rüberkopieren&lt;br /&gt;
# privaten Zertifikatsschlüssel rüberkopieren&lt;br /&gt;
&lt;br /&gt;
* Signiertes Zertifikat vom SFTP Server holen&lt;br /&gt;
* &#039;&#039;&#039;sftp -P 9922 cert_req@172.RNr.1.100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;get cert/lab1&#039;&#039;xx&#039;&#039;.nux.crt&#039;&#039;&#039;&lt;br /&gt;
* Auf dem HAProxy die &#039;&#039;server.pem&#039;&#039; Datei erstellen&lt;br /&gt;
* &#039;&#039;&#039;cat lab1&#039;&#039;xx&#039;&#039;.nux.key lab1&#039;&#039;xx&#039;&#039;.nux.crt &amp;gt; /etc/haproxy/server.pem&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/haproxy/haproxy.cfg&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 frontend https_web_services&lt;br /&gt;
  bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
  timeout client 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  acl acl_web1 hdr_beg(host) -i web1&lt;br /&gt;
  acl acl_web2 hdr_beg(host) -i web2&lt;br /&gt;
  use_backend backend_web1 if acl_web1&lt;br /&gt;
  use_backend backend_web2 if acl_web2&lt;br /&gt;
  default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 #frontend https_frontend&lt;br /&gt;
 # bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
 # timeout client 50000&lt;br /&gt;
 # default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web1&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_dns 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web2&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_ldap 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend http_backend&lt;br /&gt;
  mode http&lt;br /&gt;
  balance roundrobin&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  server web_dns_2 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
  server web_ldap_2 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart haproxy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[Squid erste Schritte|Squid]] Proxy auf der Firewall =&lt;br /&gt;
&lt;br /&gt;
* [[Squid ACL Basic]]&lt;br /&gt;
* [[Iptables mit Squid Transparenter Proxy]]&lt;br /&gt;
* Mehr Kontrolle über die Domains, die LAN erreichen darf&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
 acl facebook url_regex -i facebook&lt;br /&gt;
 &lt;br /&gt;
 http_access deny facebook&lt;br /&gt;
 http_access allow all&lt;br /&gt;
 &lt;br /&gt;
 #nativer Zugriff&lt;br /&gt;
 http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 #transparenter Zugriff unverschlüsselt&lt;br /&gt;
 http_port 3128 intercept&lt;br /&gt;
 #transparenter Zugriff verschlüsselt &#039;&#039;&#039;wichtig https_port&#039;&#039;&#039;&lt;br /&gt;
 https_port 3129 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 &lt;br /&gt;
 ssl_bump bump all&lt;br /&gt;
 &lt;br /&gt;
 coredump_dir /var/spool/squid&lt;br /&gt;
 logfile_rotate 0&lt;br /&gt;
 &lt;br /&gt;
 cache_dir ufs /var/spool/squid 200 16 256&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;acl domain_blacklist dstdomain &amp;quot;/etc/squid/domain_blacklist.txt&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;http_access deny all domain_blacklist&#039;&#039;&#039;&lt;br /&gt;
 http_access allow localnet&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/domain_blacklist.txt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 facebook.com&lt;br /&gt;
 twitter.com&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart squid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-5}}&lt;br /&gt;
&lt;br /&gt;
= Festplatten verschlüsseln =&lt;br /&gt;
&lt;br /&gt;
; Das Verschlüsseln mit &#039;&#039;&#039;cryptsetup&#039;&#039;&#039; löscht alle vorherigen Daten der Festplatte&lt;br /&gt;
* Neue Festplatte in VirtualBox erstellen und anhängen&lt;br /&gt;
* zu verschlüsselnde Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;fdisk /dev/sdX&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup luksFormat /dev/sdXx&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup open /dev/sdXx &#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Dateisystem auf der entschlüsselten Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;mkfs.ext4 /dev/mapper/&#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* beliebige Testdatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;echo &amp;quot;Hallo Welt&amp;quot; &amp;gt; encrypted.txt&#039;&#039;&#039;&lt;br /&gt;
* Nach Benutzen der Partition wieder verschlüsseln&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup close name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Separate VM für Monitoring/Scanning =&lt;br /&gt;
&lt;br /&gt;
# Hostname auf &#039;&#039;health&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.4/24&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
&lt;br /&gt;
= Checkmk =&lt;br /&gt;
&lt;br /&gt;
* Die Weboberfläche soll über [https://cmk.lab1xx.nux https://cmk.lab1&#039;&#039;xx&#039;&#039;.nux] erreichbar sein:&lt;br /&gt;
** DNS Eintrag&lt;br /&gt;
** HAProxy ACL&lt;br /&gt;
&lt;br /&gt;
* Download: https://checkmk.com/de/download?method=cmk&amp;amp;edition=cre&amp;amp;version=2.2.0b7&amp;amp;platform=debian&amp;amp;os=bullseye&amp;amp;type=cmk&lt;br /&gt;
* Anweisungen der Webseite folgen&lt;br /&gt;
* cmkadmin&#039;s Passwort auf 123Start$ ändern&lt;br /&gt;
* Rechner ins Monitoring hinzufügen&lt;br /&gt;
* AUR Paketmanager https://github.com/Jguer/yay&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58642</id>
		<title>Unix-/Linux Netz</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Unix-/Linux_Netz&amp;diff=58642"/>
		<updated>2024-12-03T13:05:17Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Destination NAT  und Portforwarding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Netzwerk der Schulung=&lt;br /&gt;
&lt;br /&gt;
* Die WAN-IP wird die 172.RNr.0.(100 + eigene Nr.)&lt;br /&gt;
* Die &#039;&#039;&#039;D&#039;&#039;&#039;e&#039;&#039;&#039;m&#039;&#039;&#039;ilitarisierte &#039;&#039;&#039;Z&#039;&#039;&#039;one (DMZ) enthält Services, die von außen erreichbar sein sollen&lt;br /&gt;
* Im LAN befindet sich unser Administratorrechner von dem wir unsere Rechner konfigurieren&lt;br /&gt;
* Das LAN soll Verbindungen ins Internet initiieren können, aber nicht direkt von außen erreichbar sein&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul2}}&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;xx&#039;&#039; in den folgenden Bildern durch die eigene Nummer ersetzen&lt;br /&gt;
;Benutzername für virtuelle Maschinen ist &#039;&#039;xinux&#039;&#039; oder &#039;&#039;root&#039;&#039;&lt;br /&gt;
;Passwort ist immer 123Start$&lt;br /&gt;
&lt;br /&gt;
= Vorbereiten der Firewall =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-0}}&lt;br /&gt;
&lt;br /&gt;
* Wir klonen den Rechner &amp;quot;Server Vorlage&amp;quot; und nennen ihn &amp;quot;Firewall&amp;quot;&lt;br /&gt;
* Dieser braucht 3 Netzwerkadapter:&lt;br /&gt;
# Netzwerkbrücke&lt;br /&gt;
# Internes Netzwerk &amp;quot;LAN&amp;quot;&lt;br /&gt;
# Internes Netzwerk &amp;quot;DMZ&amp;quot;&lt;br /&gt;
* Wir starten die Firewall und konfigurieren statische IP Adressen für alle 3 Netzwerkadapter&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/network/interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s3&lt;br /&gt;
 iface enp0s3 inet static&lt;br /&gt;
  address 172.RNr.0.1&#039;&#039;xx&#039;&#039;/16&lt;br /&gt;
  gateway 172.RNr.0.1&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s8&lt;br /&gt;
 iface enp0s8 inet static&lt;br /&gt;
  address 192.168.0.1/24&lt;br /&gt;
 &lt;br /&gt;
 auto enp0s9&lt;br /&gt;
 iface enp0s9 inet static&lt;br /&gt;
  address 10.0.1&#039;&#039;xx&#039;&#039;.1/24&lt;br /&gt;
&lt;br /&gt;
* Interfaces runter und wieder hochfahren, um die neue Konfiguration zu laden&lt;br /&gt;
* &#039;&#039;&#039;ifdown -va&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ifup -va&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart networking&#039;&#039;&#039;&lt;br /&gt;
* Danach sollte der Befehl &#039;&#039;&#039;ip address show&#039;&#039;&#039; (oder &#039;&#039;&#039;ip a&#039;&#039;&#039;) die neuen IP Adressen anzeigen&lt;br /&gt;
&lt;br /&gt;
 1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000&lt;br /&gt;
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;
     inet 127.0.0.1/8 scope host lo&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 ::1/128 scope host &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 2: enp0s3: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1456 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:9b:79:a1 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;172.RNr.1.1&#039;&#039;xx&#039;&#039;/16&#039;&#039;&#039; brd 172.22.255.255 scope global enp0s3&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 2003:e5:173a:c401:a00:27ff:fe9b:79a1/64 scope global dynamic mngtmpaddr &lt;br /&gt;
        valid_lft 7134sec preferred_lft 1215sec&lt;br /&gt;
     inet6 fe80::a00:27ff:fe9b:79a1/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 3: enp0s8: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:15:03:b7 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;192.168.0.1/24&#039;&#039;&#039; brd 192.168.0.255 scope global enp0s8&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe15:3b7/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
 4: enp0s9: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
     link/ether 08:00:27:31:01:09 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
     inet &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.1/24&#039;&#039;&#039; brd 10.0.100.255 scope global enp0s9&lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
     inet6 fe80::a00:27ff:fe31:109/64 scope link &lt;br /&gt;
        valid_lft forever preferred_lft forever&lt;br /&gt;
&lt;br /&gt;
= Workstation im LAN zum Systemadministrator machen =&lt;br /&gt;
&lt;br /&gt;
* Den Netzwerkadapter von VM &amp;quot;LAN Host&amp;quot; auf &amp;quot;Internes Netzwerk LAN&amp;quot; umstellen und die VM starten&lt;br /&gt;
* Wenn wir unsere Netzwerkkonfiguration anschauen, dann sehen wir keine IP Adresse, da noch kein DHCP läuft&lt;br /&gt;
* Deshalb geben wir uns eine temporäre IP, um per SSH auf die Firewall zu kommen&lt;br /&gt;
* &#039;&#039;&#039;systemctl stop NetworkManager&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ip address add 192.168.0.2/24 dev enp0s3&#039;&#039;&#039;&lt;br /&gt;
* Nun können wir die Firewall per SSH erreichen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* als erstes ändern wir den hostnamen der Firewall von &#039;&#039;debian&#039;&#039; zu &#039;&#039;firewall&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;hostnamectl set-hostname fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 127.0.0.1 localhost&lt;br /&gt;
 127.0.1.1 &#039;&#039;&#039;fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Ein erneutes einloggen updatet den Namen im Prompt&lt;br /&gt;
* als nächstes installieren wir einen [[DHCP]] Server, um Rechnern im LAN automatisch eine Netzwerkkonfiguration zu geben&lt;br /&gt;
* &#039;&#039;&#039;apt install isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Am Ende der Installation wird es eine Fehlermeldung geben, da systemd versucht den Dienst zu starten, obwohl noch keine Konfiguration da ist&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name-servers 1.1.1.1;&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet &#039;&#039;MAC Adresse vom Arch&#039;&#039;;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Dienst mit der neuen Konfiguration starten und überprüfen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl status isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Beim Neustart von Arch sollte dann automatisch die &#039;&#039;192.168.0.2&#039;&#039; bekommen (falls nicht MAC-Adresse überprüfen)&lt;br /&gt;
&lt;br /&gt;
= Firewall als Router konfigurieren =&lt;br /&gt;
&lt;br /&gt;
* Im Moment verwirft die Firewall alle Pakete mit IP-Adressen, die nicht für ihn selbst bestimmt sind&lt;br /&gt;
* Um die Pakete uns Default-Gateway weiterzuleiten muss der Kernelparameter &#039;&#039;net.ipv4.ip_forward&#039;&#039; gesetzt sein&lt;br /&gt;
* Temporär (bleibt nicht nach einem Reboot):&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=1&#039;&#039;&#039; &#039;&#039;# Einschalten&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;sysctl -w net.ipv4.ip_forward=0&#039;&#039;&#039; &#039;&#039;# Ausschalten&#039;&#039;&lt;br /&gt;
* Für eine persistente Konfiguration muss dieser Parameter in der die Datei &#039;&#039;/etc/sysctl.conf&#039;&#039; stehen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/sysctl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to enable packet forwarding for IPv4&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;sysctl -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;S&#039;&#039;&#039;ource &#039;&#039;&#039;N&#039;&#039;&#039;etwork &#039;&#039;&#039;A&#039;&#039;&#039;ddress &#039;&#039;&#039;T&#039;&#039;&#039;ranslation muss noch geschehen, damit die Pakete mit IP Adressen aus einem privaten Netzwerk den Weg zurück finden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority 0;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority 0;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
     chain postrouting {&lt;br /&gt;
         type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
         oif enp0s3 masquerade&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;systemctl enable nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= SSH Schlüssel für passwortloses Login =&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Um nicht jedes mal das Passwort beim Login eingeben zu müssen kann man sich stattdessen mit einem privaten Schlüssel authentifizieren&lt;br /&gt;
* Wir erstellen einen Schlüssel mit RSA Verschlüsselung und erstmal ohne Passwortabfrage für den Benutz des Schlüssels&lt;br /&gt;
* &#039;&#039;&#039;ssh-keygen&#039;&#039;&#039; &#039;&#039;# 123Start$ als Passwort nehmen&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ssh-copy-id xinux@192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;scp ~/.ssh/id_rsa.pub xinux@192.168.0.1:~/.ssh/authorized_keys&#039;&#039;&#039;&lt;br /&gt;
* In der &#039;&#039;authorized_keys&#039;&#039; Datei können mehrere öffentliche Schlüssel stehen (pro Zeile ein Schlüssel)&lt;br /&gt;
* Es ist üblich SSH Login über Passwörter komplett auszuschalten sobald die SSH Schlüssel von den zugangsberechtigten Benutzern hinterlegt sind&lt;br /&gt;
* Normalerweise sind die Schlüssel passwortgeschützt.&lt;br /&gt;
* Damit man nicht jedes mal das Passwort dafür eingeben muss kann man einen [[SSH Agent]] nutzen&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
&lt;br /&gt;
* Wir wollen uns direkt als root einloggen können, weshalb die &#039;&#039;&#039;authorized_keys&#039;&#039;&#039; Datei auch im Home-Verzeichnis des root-Nutzers liegen muss&lt;br /&gt;
* &#039;&#039;&#039;sudo -i&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;mkdir &#039;&#039;.ssh&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cp &#039;&#039;~xinux/.ssh/authorized_keys&#039;&#039; &#039;&#039;.ssh/&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Um den SSH-Server abszusichern können wir den Port verlegen und nur schlüsselbasiertes Einloggen zulassen&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/ssh/sshd_config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Port 2222&lt;br /&gt;
 AddressFamily inet&lt;br /&gt;
 ListenAddress 192.168.0.1&lt;br /&gt;
 PubkeyAuthentication yes&lt;br /&gt;
 PasswordAuthentication no&lt;br /&gt;
 UsePAM no&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LAN ==&lt;br /&gt;
&lt;br /&gt;
* Nun sollten wir uns direkt als root anmelden können &lt;br /&gt;
* &#039;&#039;&#039;ssh -p 2222 root@192.168.0.1 &amp;quot;id &amp;amp;&amp;amp; hostname&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Um die Ameldung einfacher zu gestalten können wir unseren SSH-Client konfigurieren&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;~/.ssh/config&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Host fw&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 	Hostname 192.168.0.1&lt;br /&gt;
 	User root&lt;br /&gt;
 	Port 2222&lt;br /&gt;
&lt;br /&gt;
* Jetzt kann man den Befehl folgendermaßen verkürzen:&lt;br /&gt;
* &#039;&#039;&#039;ssh fw&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= DHCP erweitern =&lt;br /&gt;
&lt;br /&gt;
* Um neue Rechner in der DMZ automatisch über LAN administrierbar zu machen, erweitern wir den DHCP Server auf der Firewall&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/default/isc-dhcp-server&lt;br /&gt;
&lt;br /&gt;
 DHCPDv4_CONF=/etc/dhcp/dhcpd.conf&lt;br /&gt;
 INTERFACESv4=&amp;quot;enp0s8 &#039;&#039;&#039;enp0s9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Die Subnetzdefinitionen folgen der Reihenfolge der Interfaces in &#039;&#039;/etc/default/isc-dhcp-server&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 authoritative;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
     range 192.168.0.50 192.168.0.100;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;subnet 10.0.1&#039;&#039;xx&#039;&#039;.0 netmask 255.255.255.0 {&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;range 10.0.1&#039;&#039;xx&#039;&#039;.50 10.0.1&#039;&#039;xx&#039;&#039;.100;&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;option routers 10.0.1&#039;&#039;xx&#039;&#039;.1;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 # Feste IP-Adresse für eine bestimmte MAC-Adresse&lt;br /&gt;
 host controller {&lt;br /&gt;
     hardware ethernet MAC Adresse vom Arch;&lt;br /&gt;
     fixed-address 192.168.0.2;&lt;br /&gt;
     option routers 192.168.0.1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[DNS]] Server =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-1}}&lt;br /&gt;
&lt;br /&gt;
== Virtualbox ==&lt;br /&gt;
* Ein Klon von &amp;quot;Server Vorlage&amp;quot; mit Netzwerkadapter im internen Netzwerk &amp;quot;DMZ&amp;quot; erstellen&lt;br /&gt;
* Über die Systemlogs für &#039;&#039;&#039;DHCP&#039;&#039;&#039; auf der &#039;&#039;&#039;Firewall&#039;&#039;&#039; können wir die IP Adresse des DNS-Servers herausfinden&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
* &#039;&#039;&#039;journalctl -u isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Zurück zu Arch wechseln und über SSH auf den DNS Server einloggen&lt;br /&gt;
* &#039;&#039;&#039;ssh xinux@10.0.&#039;&#039;(100 + eigene Nr.).&#039;&#039; &#039;&#039;yy&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== DNS ==&lt;br /&gt;
* Anschließend die IP Adresse in &#039;&#039;/etc/network/interfaces&#039;&#039; konfigurieren: 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2&lt;br /&gt;
* Hostname auf DNS: setzen (in &#039;&#039;/etc/hosts&#039;&#039; auch umändern)&lt;br /&gt;
* SSH Schlüssel hinterlegen&lt;br /&gt;
* Bind9 installieren&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 1.1.1.1&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;apt install bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/resolv.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 nameserver 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
== Optionen festlegen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
         allow-recursion { 0.0.0.0/0; };&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zone definieren ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;lab(100 + eigene Nr.).nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Zonendatei erstellen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab&#039;&#039;(100 + eigene Nr.)&#039;&#039;.nux. technik.xinux.de. (&#039;&#039;(Datum + Ver.nr.)&#039;&#039; 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns&lt;br /&gt;
 dns     IN A    10.0.(100 + eigene Nr.).2&lt;br /&gt;
 fw      IN A    10.0.(100 + eigene Nr.).1&lt;br /&gt;
&lt;br /&gt;
* Dienst neustarten und testen&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short fw.lab1&#039;&#039;xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Der DNS-Server in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 53 UDP/TCP an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.0.1&#039;&#039;xx&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define dnsserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority -100; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Auflösen anderer Domänen über eine Pseudo Top Level Domain =&lt;br /&gt;
&lt;br /&gt;
== Dienst neustarten und DNS-Auflösung testen ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab(100 + eigene Nr.).nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;dig +short xinux.net&#039;&#039;&#039;&lt;br /&gt;
* Wenn das funktioniert dann den DNS Server im DHCP Server als Standard DNS Server und Suchdomäne eintragen (zur Firewall wechseln)&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/dhcp/dhcpd.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 option domain-name &amp;quot;lab(100 + eigene Nr.).nux&amp;quot;;&lt;br /&gt;
 option domain-name-servers 10.0.&#039;&#039;(100 + eigene Nr.)&#039;&#039;.2;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart isc-dhcp-server&#039;&#039;&#039;&lt;br /&gt;
* Arch neustarten und in &#039;&#039;/etc/resolv.conf&#039;&#039; nachschauen, ob die neue Konfiguration automatisch gezogen wurde&lt;br /&gt;
* bzw.&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart NetworkManager&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Bind9 Forwarder eintragen =&lt;br /&gt;
&lt;br /&gt;
== DNS Server der &#039;&#039;.nux&#039;&#039;-Domain ==&lt;br /&gt;
* Wenn jeder die DMZ der anderen erreichen kann, ist es möglich über eine Top Level Domain die anderen Domänen aufzulösen&lt;br /&gt;
* Dazu muss man auf den &#039;&#039;&#039;DNS Server&#039;&#039;&#039; einen vorkonfigurierten Pseudo Top Level Domain Nameserver als &#039;&#039;&#039;Forwarder&#039;&#039;&#039; eintragen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 forwarders { 172.RNr.0.100; }; //IP des Top Level Domain Nameservers&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* Wenn man die Reverse Zone später auch auflösen will braucht man diese Zeile&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 empty-zones-enable no;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
* Einmal alle Domänen durchtesten&lt;br /&gt;
* &#039;&#039;&#039;dig +short dns.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ping fw.lab&#039;&#039;1xx&#039;&#039;.nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pseudo &#039;&#039;.nux&#039;&#039; Domain Server ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.options&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 options {&lt;br /&gt;
         directory &amp;quot;/var/cache/bind&amp;quot;;&lt;br /&gt;
         empty-zones-enable no;&lt;br /&gt;
         allow-recursion  { 0.0.0.0/0; };&lt;br /&gt;
         allow-query  { 0.0.0.0/0; };&lt;br /&gt;
         dnssec-validation no;&lt;br /&gt;
 };&lt;br /&gt;
* Zur Zonendefinition hinzufügen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;nux&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;nux&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 zone &amp;quot;0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 ...&lt;br /&gt;
* Zonendateien&lt;br /&gt;
* &#039;&#039;&#039;vim /var/cache/bind/nux&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN      SOA     dns.nux. technik.xinux.de. (2023041809 14400 3600 3600000 86400)&lt;br /&gt;
 &lt;br /&gt;
 @       IN      NS      dns.nux.&lt;br /&gt;
 lab101          NS      dns.lab101.nux.&lt;br /&gt;
 lab102          NS      dns.lab102.nux.&lt;br /&gt;
 lab100          NS      dns.nux.&lt;br /&gt;
 &lt;br /&gt;
 dns     IN      A       172.RNr.0.100&lt;br /&gt;
 dns.lab101      A       172.RNr.0.1&#039;&#039;xx&#039;&#039;&lt;br /&gt;
 dns.lab102      A       172.RNr.0.1&#039;&#039;xy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Reverse Lookup =&lt;br /&gt;
&lt;br /&gt;
* Für manche Dienste muss einer IP einen Domain Namen zugeordnet werden&lt;br /&gt;
* Dazu eine neue Zone definieren und eine neue Zonendatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/bind/named.conf.local&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;100.0.10.in-addr.arpa&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;100.0.10.in-addr.arpa&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim 100.0.10.in-addr.arpa&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 $TTL 300&lt;br /&gt;
 @       IN SOA  dns.lab100.nux. technik.xinux.de. (2023050901 14400 3600 3600000 86400)&lt;br /&gt;
         IN NS   dns.lab100.nux.&lt;br /&gt;
 1       IN PTR  fw.lab100.nux.&lt;br /&gt;
 2       IN PTR  dns.lab100.nux.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart bind9&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Netz absichern =&lt;br /&gt;
&lt;br /&gt;
* Im Moment darf jeder auf die Firewall von jeden zugreifen (und damit alle dahinterliegenden Systeme)&lt;br /&gt;
* Um dies zu verhindern erstellen wir mit [[Nftables Netze absichern|nftables]] Firewall Regeln, die nur das nötigste zulassen&lt;br /&gt;
* Die Regeln werden von oben nach unten abgearbeitet&lt;br /&gt;
* Wenn keine Regel greift, dann zieht die &#039;&#039;Default Policy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
; Prerouting, Input, Forward, Output und Postrouting sind Punkte an denen wir Regeln erstellen können&lt;br /&gt;
&lt;br /&gt;
{{#drawio:nft-inet1}}&lt;br /&gt;
&lt;br /&gt;
== Nur SSH aus LAN auf die Firewall zulassen ==&lt;br /&gt;
&lt;br /&gt;
* Default Policy wird in allen Filterketten auf Drop gesetzt&lt;br /&gt;
* Wenn also keine Regel das Paket durchlässt, wird es verworfen&lt;br /&gt;
* Über Connection Tracking können wir uns auf die Regulierung neuer Verbindungen fokussieren&lt;br /&gt;
* Als erstes soll nur:&lt;br /&gt;
** Die Firewall mit sich selbst über das loopback Interface kommunizieren können (da es sonst zu komischen Problemen führen kann)&lt;br /&gt;
** &#039;&#039;Etablished&#039;&#039; und &#039;&#039;Related&#039;&#039; Pakete akzeptiert werden&lt;br /&gt;
** Neue Anfragen aus dem LAN auf TCP Port 2222 akzeptieren&lt;br /&gt;
** Firewall soll über HTTP bzw. HTTPS Programme herunterladen können&lt;br /&gt;
** Gedroppte Pakete sollen geloggt werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wanip = 172.RNr.0.1xx &lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 &#039;&#039;&#039;define wandev = enp0s3&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define landev = enp0s8&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define lan = 192.168.0.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;iif $landev tcp dport 2222 accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-input--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority filter; &#039;&#039;&#039;policy drop;&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif &amp;quot;lo&amp;quot; accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;ct state established,related accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;oif $wandev tcp dport { 80, 443 } accept&#039;&#039;&#039;&lt;br /&gt;
 		&#039;&#039;&#039;log prefix &amp;quot;--nftables-drop-output--&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	table inet nat {&lt;br /&gt;
 		chain prerouting {&lt;br /&gt;
 			type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
 			ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 			ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		chain postrouting {&lt;br /&gt;
 			type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
 			oif $wandev masquerade&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Internetzugriff für LAN und Firewall ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/nftables.conf&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 &lt;br /&gt;
 define wanip = 172.22.0.1xx&lt;br /&gt;
 define dnsserver = 10.0.1xx.2&lt;br /&gt;
 define wandev = &amp;quot;enp0s3&amp;quot;&lt;br /&gt;
 define landev = &amp;quot;enp0s8&amp;quot;&lt;br /&gt;
 define dmzdev = &amp;quot;enp0s9&amp;quot;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1xx.0/24&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
 	chain input {&lt;br /&gt;
 		type filter hook input priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
 		iif $landev ip saddr $lan tcp dport 2222 accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain forward {&lt;br /&gt;
 		type filter hook forward priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver tcp dport 53 accept&lt;br /&gt;
 		iif $wandev ip daddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver tcp  dport 53 accept&lt;br /&gt;
 		iif $dmzdev ip saddr $dnsserver udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		iif $landev ip saddr $lan oif $dmzdev ip daddr $dmz tcp dport 22 accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 	chain output {&lt;br /&gt;
 		type filter hook output priority 0; policy drop;&lt;br /&gt;
 		ct state { &amp;quot;established&amp;quot;, &amp;quot;related&amp;quot; } accept&lt;br /&gt;
 		icmp type echo-request accept&lt;br /&gt;
 		udp dport 53 accept&lt;br /&gt;
 		oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
 		log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
 	chain prerouting {&lt;br /&gt;
 		type nat hook prerouting priority -100; policy accept;&lt;br /&gt;
                 ip daddr $wanip tcp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
                 ip daddr $wanip udp dport 53 dnat ip to $dnsserver:53&lt;br /&gt;
 	}&lt;br /&gt;
 	chain postrouting {&lt;br /&gt;
 		type nat hook postrouting priority 100; policy accept;&lt;br /&gt;
 		oif $wandev masquerade&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;C&#039;&#039;&#039;onnection &#039;&#039;&#039;T&#039;&#039;&#039;racking &#039;&#039;&#039;T&#039;&#039;&#039;abelle ==&lt;br /&gt;
&lt;br /&gt;
* Das Tool &#039;&#039;&#039;conntrack&#039;&#039;&#039; installieren, um die CTT anschauen und leeren zu können&lt;br /&gt;
* &#039;&#039;&#039;apt install conntrack&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -F&#039;&#039;&#039; &#039;&#039;# Leert die Tabelle&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;conntrack -L&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 tcp      6 432000 ESTABLISHED src=192.168.0.2 dst=192.168.0.2 sport=58178 dport=22 src=192.168.0.1 dst=192.168.0.2 sport=22 dport=58178 [ASSURED] mark=0 use=1&lt;br /&gt;
&lt;br /&gt;
= Webserver =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-2}}&lt;br /&gt;
&lt;br /&gt;
* Rechnern im LAN sollen Webseiten aufrufen können&lt;br /&gt;
* unsere DNS Server sollten andere Server im Internet und in den anderen DMZs befragen dürfen&lt;br /&gt;
* d.h. UDP Port 53 aus LAN und DMZ und TCP Ports 80 und 443 für LAN sollten freigeschalten werden&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 &#039;&#039;&#039;define dmzdev = enp0s9&#039;&#039;&#039;&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 &#039;&#039;&#039;define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
     chain input {&lt;br /&gt;
         type filter hook input priority filter; policy drop;&lt;br /&gt;
         iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
             ct state established,related accept&lt;br /&gt;
             iif $landev tcp dport 22 accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain forward {&lt;br /&gt;
         type filter hook forward priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             &#039;&#039;&#039;iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&#039;&#039;&#039;&lt;br /&gt;
             &#039;&#039;&#039;iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&#039;&#039;&#039;&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
     chain output {&lt;br /&gt;
         type filter hook output priority filter; policy drop;&lt;br /&gt;
         ct state established,related accept&lt;br /&gt;
             oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
             log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     table inet nat {&lt;br /&gt;
         chain postrouting {&lt;br /&gt;
             type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
             oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;D&#039;&#039;&#039;estination NAT  und Portforwarding ==&lt;br /&gt;
&lt;br /&gt;
* Ein Webserver in der DMZ soll öffentlich erreichbar sein&lt;br /&gt;
* Das Internet kennt aber nur unsere WAN IP&lt;br /&gt;
* Wir erwarten, dass solche Anfragen auf Port 80/443 an unsere Firewall ankommen&lt;br /&gt;
* Die Zieladresse soll dann in der Prerouting Kette auf die des Webserver umgeschrieben werden&lt;br /&gt;
* Dadurch geht das Paket in die Forward Kette anstatt der Input Kette&lt;br /&gt;
* Also muss dort die entsprechende Regel zum Freischalten stehen&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 flush ruleset&lt;br /&gt;
 define wandev = enp0s3&lt;br /&gt;
 define landev = enp0s8&lt;br /&gt;
 define dmzdev = enp0s9&lt;br /&gt;
 define lan = 192.168.0.0/24&lt;br /&gt;
 define dmz = 10.0.1&#039;&#039;xx&#039;&#039;.0/24&lt;br /&gt;
 &#039;&#039;&#039;define wanip = 172.RNr.1.1&#039;&#039;xx&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;define webserver = 10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
         chain input {&lt;br /&gt;
                 type filter hook input priority filter; policy drop;&lt;br /&gt;
                 iif &amp;quot;lo&amp;quot; accept&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif $landev tcp dport 22 accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-input--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain forward {&lt;br /&gt;
                 type filter hook forward priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 iif { $dmzdev, $landev } ip saddr { $dmz, $lan } udp dport 53 oif { $dmzdev, $wandev } accept&lt;br /&gt;
                 iif $landev ip saddr $lan tcp dport { 80, 443 } oif $wandev accept&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $webserver tcp dport 80 accept&#039;&#039;&#039;&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-forward--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
         chain output {&lt;br /&gt;
                 type filter hook output priority filter; policy drop;&lt;br /&gt;
                 ct state established,related accept&lt;br /&gt;
                 oif $wandev tcp dport { 80, 443 } accept&lt;br /&gt;
                 log prefix &amp;quot;--nftables-drop-output--&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
 table inet nat {&lt;br /&gt;
         &#039;&#039;&#039;chain prerouting {&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;type nat hook prerouting priority 0; policy accept;&#039;&#039;&#039;&lt;br /&gt;
                 &#039;&#039;&#039;ip daddr $wanip tcp dport 80 dnat ip to $webserver:80&#039;&#039;&#039;&lt;br /&gt;
         &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
         chain postrouting {&lt;br /&gt;
                 type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
                 oif $wandev masquerade&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart nftables&#039;&#039;&#039;&lt;br /&gt;
* Der DNS Server soll uns erstmal auch als Webserver dienen&lt;br /&gt;
* &#039;&#039;&#039;apt install apache2&#039;&#039;&#039;&lt;br /&gt;
* Im Browser sollten die Webserver über die IPs der Firewalls erreichbar sein&lt;br /&gt;
&lt;br /&gt;
== Debug Möglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
* Falls sich die Firewall nicht so verhält wie erwartet, kann man:&lt;br /&gt;
** Connection Tracking Tabelle leeren/flushen: &#039;&#039;&#039;conntrack -F&#039;&#039;&#039;&lt;br /&gt;
** Über &#039;&#039;&#039;tail -f -n0 /var/log/syslog | grep nftables&#039;&#039;&#039; gedroppte Pakete anschauen (wenn die Log Regeln da sind)&lt;br /&gt;
** NAT Regeln überprüfen: &#039;&#039;&#039;tcpdump -i &#039;&#039;interface&#039;&#039; &#039;&#039;filter&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
** Auf Syntaxfehler überprüfen: &#039;&#039;&#039;nft -cf /etc/nftables.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= LDAP Server einrichten =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-3}}&lt;br /&gt;
&lt;br /&gt;
* ein LDAP Server ermöglicht uns zentrale Benutzerverwaltung innerhalb einer Domäne&lt;br /&gt;
* die Benutzerdaten werden in einer Datenbank gespeichert und von Clients über &#039;&#039;&#039;TCP Port 389&#039;&#039;&#039; befragt&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;ldap&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
* eventuell muss auf der Firewall Port 80 und 443 für die DMZ freigeschaltet werden, damit die Pakete heruntergeladen werden können&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[Openldap Basic Config common]]&lt;br /&gt;
&lt;br /&gt;
= [[HAProxy]] für zentrale SSL Terminierung =&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-4}}&lt;br /&gt;
&lt;br /&gt;
* Im Moment ist nur SSH verschlüsselt&lt;br /&gt;
* Pakete von HTTP Verbindungen zwischen den LAN und DMZ werden im Klartext verschickt&lt;br /&gt;
* &#039;&#039;&#039;Problem&#039;&#039;&#039;: Jemand der den Verkehr mitscheidet, kann alles lesen&lt;br /&gt;
* &#039;&#039;&#039;Lösung&#039;&#039;&#039;: Upgrade auf HTTPS mit [[Grundlagen Kryptografie | Zertifikaten]]&lt;br /&gt;
* [[SFTP-Server]] für den sicheren Transfer der Zertifikatsanträge&lt;br /&gt;
* eine neue VM vom Template klonen und Grundeinstellungen vornehmen:&lt;br /&gt;
# Hostname auf &#039;&#039;haproxy&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.2&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
# signiertes Wildcard-Zertifikat rüberkopieren&lt;br /&gt;
# privaten Zertifikatsschlüssel rüberkopieren&lt;br /&gt;
&lt;br /&gt;
* Signiertes Zertifikat vom SFTP Server holen&lt;br /&gt;
* &#039;&#039;&#039;sftp -P 9922 cert_req@172.RNr.1.100&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;get cert/lab1&#039;&#039;xx&#039;&#039;.nux.crt&#039;&#039;&#039;&lt;br /&gt;
* Auf dem HAProxy die &#039;&#039;server.pem&#039;&#039; Datei erstellen&lt;br /&gt;
* &#039;&#039;&#039;cat lab1&#039;&#039;xx&#039;&#039;.nux.key lab1&#039;&#039;xx&#039;&#039;.nux.crt &amp;gt; /etc/haproxy/server.pem&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/haproxy/haproxy.cfg&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 frontend https_web_services&lt;br /&gt;
  bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
  timeout client 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  acl acl_web1 hdr_beg(host) -i web1&lt;br /&gt;
  acl acl_web2 hdr_beg(host) -i web2&lt;br /&gt;
  use_backend backend_web1 if acl_web1&lt;br /&gt;
  use_backend backend_web2 if acl_web2&lt;br /&gt;
  default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 #frontend https_frontend&lt;br /&gt;
 # bind 10.0.1&#039;&#039;xx&#039;&#039;.2:443 name localhost_443 ssl crt /etc/haproxy/server.pem&lt;br /&gt;
 # timeout client 50000&lt;br /&gt;
 # default_backend http_backend&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web1&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_dns 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend backend_web2&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  mode http&lt;br /&gt;
  server web_ldap 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
 &lt;br /&gt;
 backend http_backend&lt;br /&gt;
  mode http&lt;br /&gt;
  balance roundrobin&lt;br /&gt;
  timeout connect 5000&lt;br /&gt;
  timeout server 50000&lt;br /&gt;
  server web_dns_2 10.0.1&#039;&#039;xx&#039;&#039;.2:80 check&lt;br /&gt;
  server web_ldap_2 10.0.1&#039;&#039;xx&#039;&#039;.3:80 check&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart haproxy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= [[Squid erste Schritte|Squid]] Proxy auf der Firewall =&lt;br /&gt;
&lt;br /&gt;
* [[Squid ACL Basic]]&lt;br /&gt;
* [[Iptables mit Squid Transparenter Proxy]]&lt;br /&gt;
* Mehr Kontrolle über die Domains, die LAN erreichen darf&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
 acl facebook url_regex -i facebook&lt;br /&gt;
 &lt;br /&gt;
 http_access deny facebook&lt;br /&gt;
 http_access allow all&lt;br /&gt;
 &lt;br /&gt;
 #nativer Zugriff&lt;br /&gt;
 http_port 3128 ssl-bump cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 #transparenter Zugriff unverschlüsselt&lt;br /&gt;
 http_port 3128 intercept&lt;br /&gt;
 #transparenter Zugriff verschlüsselt &#039;&#039;&#039;wichtig https_port&#039;&#039;&#039;&lt;br /&gt;
 https_port 3129 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1,SINGLE_DH_USE,SINGLE_ECDH_USE&lt;br /&gt;
 &lt;br /&gt;
 ssl_bump bump all&lt;br /&gt;
 &lt;br /&gt;
 coredump_dir /var/spool/squid&lt;br /&gt;
 logfile_rotate 0&lt;br /&gt;
 &lt;br /&gt;
 cache_dir ufs /var/spool/squid 200 16 256&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/squid.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;acl domain_blacklist dstdomain &amp;quot;/etc/squid/domain_blacklist.txt&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
 ...&lt;br /&gt;
 &#039;&#039;&#039;http_access deny all domain_blacklist&#039;&#039;&#039;&lt;br /&gt;
 http_access allow localnet&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vim /etc/squid/domain_blacklist.txt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 facebook.com&lt;br /&gt;
 twitter.com&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart squid&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{#drawio:ul-tag-5}}&lt;br /&gt;
&lt;br /&gt;
= Festplatten verschlüsseln =&lt;br /&gt;
&lt;br /&gt;
; Das Verschlüsseln mit &#039;&#039;&#039;cryptsetup&#039;&#039;&#039; löscht alle vorherigen Daten der Festplatte&lt;br /&gt;
* Neue Festplatte in VirtualBox erstellen und anhängen&lt;br /&gt;
* zu verschlüsselnde Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;fdisk /dev/sdX&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup luksFormat /dev/sdXx&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup open /dev/sdXx &#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Dateisystem auf der entschlüsselten Partition anlegen&lt;br /&gt;
* &#039;&#039;&#039;mkfs.ext4 /dev/mapper/&#039;&#039;name&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* beliebige Testdatei erstellen&lt;br /&gt;
* &#039;&#039;&#039;echo &amp;quot;Hallo Welt&amp;quot; &amp;gt; encrypted.txt&#039;&#039;&#039;&lt;br /&gt;
* Nach Benutzen der Partition wieder verschlüsseln&lt;br /&gt;
* &#039;&#039;&#039;cryptsetup close name&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Separate VM für Monitoring/Scanning =&lt;br /&gt;
&lt;br /&gt;
# Hostname auf &#039;&#039;health&#039;&#039; setzen&lt;br /&gt;
# statische IP vergeben &#039;&#039;&#039;10.0.1&#039;&#039;xx&#039;&#039;.4/24&#039;&#039;&#039;&lt;br /&gt;
# SSH Schlüssel hinterlegen&lt;br /&gt;
# Eintrag im DNS Server vornehmen&lt;br /&gt;
&lt;br /&gt;
= Checkmk =&lt;br /&gt;
&lt;br /&gt;
* Die Weboberfläche soll über [https://cmk.lab1xx.nux https://cmk.lab1&#039;&#039;xx&#039;&#039;.nux] erreichbar sein:&lt;br /&gt;
** DNS Eintrag&lt;br /&gt;
** HAProxy ACL&lt;br /&gt;
&lt;br /&gt;
* Download: https://checkmk.com/de/download?method=cmk&amp;amp;edition=cre&amp;amp;version=2.2.0b7&amp;amp;platform=debian&amp;amp;os=bullseye&amp;amp;type=cmk&lt;br /&gt;
* Anweisungen der Webseite folgen&lt;br /&gt;
* cmkadmin&#039;s Passwort auf 123Start$ ändern&lt;br /&gt;
* Rechner ins Monitoring hinzufügen&lt;br /&gt;
* AUR Paketmanager https://github.com/Jguer/yay&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Kea_DHCPv4&amp;diff=58641</id>
		<title>Kea DHCPv4</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Kea_DHCPv4&amp;diff=58641"/>
		<updated>2024-12-03T10:52:07Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:DHCP]]&lt;br /&gt;
[[Kategorie:Kea]]&lt;br /&gt;
= Installation =&lt;br /&gt;
* Die Installation und Konfiguration nimmt an das [[:Kategorie:Debian|Debian]] 12 verwendet wird&lt;br /&gt;
* &#039;&#039;&#039;apt install kea&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Konfiguration =&lt;br /&gt;
* Die Konfigurationsprache ist im JSON-Format&lt;br /&gt;
* Die folgende Konfiguration nimmt an, dass auf &#039;&#039;enp0s8&#039;&#039; DHCP-Anfragen kommen&lt;br /&gt;
* &#039;&#039;enp0s8 sollte eine IP-Adresse im Netz 192.168.0.0/24 haben, damit der IP-Adressen aus dem angegeben Subnetz vergeben kann&lt;br /&gt;
* Die Konfigurationen sind für 2 Stunden (7200 Sekunden) gültig&lt;br /&gt;
* Es werden IP-Adressen von 192.168.0.100 bis .200 vergeben&lt;br /&gt;
* Die Clients bekommen 1.1.1.1 und 8.8.8.8 als DNS-Server&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;/etc/kea/kea-dhcp4.conf&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Dhcp4&amp;quot;: {&lt;br /&gt;
    &amp;quot;interfaces-config&amp;quot;: {&lt;br /&gt;
      &amp;quot;interfaces&amp;quot;: [&lt;br /&gt;
        &amp;quot;enp0s8&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;control-socket&amp;quot;: {&lt;br /&gt;
        &amp;quot;socket-type&amp;quot;: &amp;quot;unix&amp;quot;,&lt;br /&gt;
        &amp;quot;socket-name&amp;quot;: &amp;quot;/run/kea/kea4-ctrl-socket&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;lease-database&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;memfile&amp;quot;,&lt;br /&gt;
      &amp;quot;persist&amp;quot;: true&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;valid-lifetime&amp;quot;: 7200,&lt;br /&gt;
    &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;domain-name-servers&amp;quot;,&lt;br /&gt;
        &amp;quot;data&amp;quot;: &amp;quot;1.1.1.1, 8.8.8.8&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;subnet4&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subnet&amp;quot;: &amp;quot;192.168.0.0/24&amp;quot;,&lt;br /&gt;
        &amp;quot;pools&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;pool&amp;quot;: &amp;quot;192.168.0.100 - 192.168.0.200&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;reservations&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;hw-address&amp;quot;: &amp;quot;fe:fe:fe:fe:fe:fe&amp;quot;,&lt;br /&gt;
            &amp;quot;ip-address&amp;quot;: &amp;quot;192.168.0.2&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;option-data&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;routers&amp;quot;,&lt;br /&gt;
            &amp;quot;data&amp;quot;: &amp;quot;192.168.0.1&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;systemctl restart kea-dhcp4-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Logging =&lt;br /&gt;
* Für die letzten 20 Zeilen des Dienstes kann [[journalctl]] befragt werden&lt;br /&gt;
* &#039;&#039;&#039;journalctl -u kea-dhcp4-server -n 20&#039;&#039;&#039;&lt;br /&gt;
* Eine Datenbank der Leases liegt unter &#039;&#039;/var/lib/kea/kea-leases4.csv&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;tail &#039;&#039;/var/lib/kea/kea-leases4.csv&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Debugging =&lt;br /&gt;
* &#039;&#039;&#039;kea-dhcp4 -t &#039;&#039;/pfad/zur/config&#039;&#039; &#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Datei:Ul-tag-1.drawio.png&amp;diff=58629</id>
		<title>Datei:Ul-tag-1.drawio.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Datei:Ul-tag-1.drawio.png&amp;diff=58629"/>
		<updated>2024-12-02T16:25:05Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: Linkai.zhang lud eine neue Version von Datei:Ul-tag-1.drawio.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Datei:Ul-tag-5.drawio.png&amp;diff=58628</id>
		<title>Datei:Ul-tag-5.drawio.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Datei:Ul-tag-5.drawio.png&amp;diff=58628"/>
		<updated>2024-12-02T08:09:07Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: Linkai.zhang lud eine neue Version von Datei:Ul-tag-5.drawio.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Datei:Ul-tag-4.drawio.png&amp;diff=58627</id>
		<title>Datei:Ul-tag-4.drawio.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Datei:Ul-tag-4.drawio.png&amp;diff=58627"/>
		<updated>2024-12-02T08:08:54Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: Linkai.zhang lud eine neue Version von Datei:Ul-tag-4.drawio.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Datei:Ul-tag-3.drawio.png&amp;diff=58626</id>
		<title>Datei:Ul-tag-3.drawio.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Datei:Ul-tag-3.drawio.png&amp;diff=58626"/>
		<updated>2024-12-02T08:08:42Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: Linkai.zhang lud eine neue Version von Datei:Ul-tag-3.drawio.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Datei:Ul-tag-2.drawio.png&amp;diff=58625</id>
		<title>Datei:Ul-tag-2.drawio.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Datei:Ul-tag-2.drawio.png&amp;diff=58625"/>
		<updated>2024-12-02T08:08:29Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: Linkai.zhang lud eine neue Version von Datei:Ul-tag-2.drawio.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Datei:Ul-tag-1.drawio.png&amp;diff=58624</id>
		<title>Datei:Ul-tag-1.drawio.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Datei:Ul-tag-1.drawio.png&amp;diff=58624"/>
		<updated>2024-12-02T08:06:44Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: Linkai.zhang lud eine neue Version von Datei:Ul-tag-1.drawio.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Encryption_auf_dem_Windows_Host_erstellen&amp;diff=58614</id>
		<title>Encryption auf dem Windows Host erstellen</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Encryption_auf_dem_Windows_Host_erstellen&amp;diff=58614"/>
		<updated>2024-11-28T08:51:06Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Encryption auf dem Host erstellen=&lt;br /&gt;
*Die Datein &amp;quot;check_mk.user.yml&amp;quot; anlegen oder bearbeiten&lt;br /&gt;
**C:\ProgramData\checkmk\agent\check_mk.user.yml&lt;br /&gt;
***Inhalt:&lt;br /&gt;
 global:&lt;br /&gt;
  enabled: yes&lt;br /&gt;
  encrypted: yes&lt;br /&gt;
  passphrase: P@ssw0rd&lt;br /&gt;
&lt;br /&gt;
=Überprüfen und Aktivieren=&lt;br /&gt;
*Passphrase und aktivierte Verschlüsselung sollte in der Konfiguration auftauchen&lt;br /&gt;
*C:\Program Files x86\checkmk\service&amp;gt; .\check_mk_agent.exe showconfig&lt;br /&gt;
*C:\Program Files x86\checkmk\service&amp;gt; .\check_mk_agent.exe test&lt;br /&gt;
*Windows neustarten, damit der Agent verschlüsselt kommuniziert&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Encryption_auf_dem_Windows_Host_erstellen&amp;diff=58613</id>
		<title>Encryption auf dem Windows Host erstellen</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Encryption_auf_dem_Windows_Host_erstellen&amp;diff=58613"/>
		<updated>2024-11-28T08:50:29Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Encryption auf dem Host erstellen=&lt;br /&gt;
*Die Datein &amp;quot;check_mk.user.yml&amp;quot; anlegen oder bearbeiten&lt;br /&gt;
**C:\ProgramData\checkmk\agent\check_mk.user.yml&lt;br /&gt;
***Inhalt:&lt;br /&gt;
 global:&lt;br /&gt;
  enabled: yes&lt;br /&gt;
  encrypted: yes&lt;br /&gt;
  passphrase: P@ssw0rd&lt;br /&gt;
&lt;br /&gt;
=Überprüfen und Aktivieren=&lt;br /&gt;
*Passphrase und aktivierte Verschlüsselung sollte in der Konfiguration auftauchen&lt;br /&gt;
*C:\Program Files x86\checkmk\service&amp;gt; .\check_mk_agent.exe showconfig&lt;br /&gt;
*Windows neustarten, damit der Agent verschlüsselt kommuniziert&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Linux-Hardware-Inventarisierung&amp;diff=58484</id>
		<title>Linux-Hardware-Inventarisierung</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Linux-Hardware-Inventarisierung&amp;diff=58484"/>
		<updated>2024-11-25T10:02:00Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[uname]]&lt;br /&gt;
*[[hostnamectl]]&lt;br /&gt;
*[[lshw]]&lt;br /&gt;
*[[lspci]]&lt;br /&gt;
*[[lsusb]]&lt;br /&gt;
*[[free]]&lt;br /&gt;
*[[top]]&lt;br /&gt;
*[[bashtop]]&lt;br /&gt;
*[[hardinfo]] (Alles unter einem Dach)&lt;br /&gt;
*[[Linux df]]&lt;br /&gt;
*[[Linux du]]&lt;br /&gt;
*[[neofetch]]&lt;br /&gt;
*[[Ip addr]]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Linux-Hardware-Inventarisierung&amp;diff=58483</id>
		<title>Linux-Hardware-Inventarisierung</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Linux-Hardware-Inventarisierung&amp;diff=58483"/>
		<updated>2024-11-25T10:01:45Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[uname]]&lt;br /&gt;
*[[hostnamectl]]&lt;br /&gt;
*[[lshw]]&lt;br /&gt;
*[[lspci]]&lt;br /&gt;
*[[lsusb]]&lt;br /&gt;
*[[free]]&lt;br /&gt;
*[[top]]&lt;br /&gt;
*[[bashtop]]&lt;br /&gt;
*[[hardinfo]] (Alles unter einem Dach)&lt;br /&gt;
*[[Linux df]]&lt;br /&gt;
*[[Linux du]]&lt;br /&gt;
*[[neofetch]]&lt;br /&gt;
*[[ip]]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58481</id>
		<title>Analyse und Monitoring von Netzwerken - Skript</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58481"/>
		<updated>2024-11-24T20:52:22Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Monitoring */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Vorbereitung =&lt;br /&gt;
* Wir haben zwei GNS3 Labore unter Hyper-V virtualisiert&lt;br /&gt;
* Beide Labore teilen sich zum Großteil diesselben VMs&lt;br /&gt;
* Machen Sie daher Snapshots von den VMs, damit die Labore für die Analysen auf ihren ursprünglichen Zustand wiederhergestellt werden können&lt;br /&gt;
* Die Lizenzen für die Windows-VMs sind abgelaufen und fahren daher automatisch herunter: [[Windows fährt automatisch herunter|Fix]]&lt;br /&gt;
* Die folgenden Schritte können für beide Labore benutzt werden&lt;br /&gt;
&lt;br /&gt;
= Hardwareinventarisierung =&lt;br /&gt;
* Benutzen Sie passende Werkzeuge auf den VMs, um Hardware wie CPU, RAM oder Netzwerkkarten zu dokumentieren&lt;br /&gt;
* Ein Beispiel-Schema finden Sie hier: [https://xinux.net/images/0/07/Hardware-Inventarisierung2.xlsx Excel Tabelle]&lt;br /&gt;
&lt;br /&gt;
= Physische Netzwerktopologie =&lt;br /&gt;
* Benutzen Sie MS Visio, um die Netzwerkverbindungen zu dokumentieren&lt;br /&gt;
&lt;br /&gt;
= Logische Netzwerktopologie =&lt;br /&gt;
* Nutzen Sie Tools wie tracert, ping oder nmap, um die Routen herauszufinden&lt;br /&gt;
* Dokumentieren Sie die Netzwerktopologie mit Visio&lt;br /&gt;
&lt;br /&gt;
= Schwachstellenanalyse =&lt;br /&gt;
&lt;br /&gt;
== nmap ==&lt;br /&gt;
* Überprüfen Sie, ob alle Maschinen vom Kali-Host aus erreichbar sind (Ping)&lt;br /&gt;
* Scannen Sie vom Kali-Host aus die anderen VMs im Labor auf:&lt;br /&gt;
** Ports&lt;br /&gt;
** Dienste&lt;br /&gt;
** Operations System&lt;br /&gt;
** Schwachstellen&lt;br /&gt;
* Speichern Sie die Ergebnisse in einer Textdatei&lt;br /&gt;
&lt;br /&gt;
== Greenbone ==&lt;br /&gt;
* Machen Sie sich mit der Oberfläche von Greenbone vertraut&lt;br /&gt;
* Legen Sie eine Aufgabe für Greenbone an, der die anderen Hosts täglich um 21:00 Uhr auf Schwachstellen scannt&lt;br /&gt;
&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
== SNMP ==&lt;br /&gt;
* Aktivieren Sie den SNMP-Dienst auf allen VMs&lt;br /&gt;
* Fügen Sie die Hosts zum Monitoring in LibreNMS zu&lt;br /&gt;
&lt;br /&gt;
== Checmk MK ==&lt;br /&gt;
* Installieren Sie den Checkmk-Agenten auf den Windows- und Linux-Hosts&lt;br /&gt;
* Fügen Sie die Hosts zum Monitoring hinzu&lt;br /&gt;
* Um Cisco-Geräte zu monitoren, kann SNMP verwendet werden&lt;br /&gt;
* Verschlüsseln Sie die Übertragung der Monitoring-Daten&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Grafana == --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58480</id>
		<title>Analyse und Monitoring von Netzwerken - Skript</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58480"/>
		<updated>2024-11-24T20:21:25Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Checmk MK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Vorbereitung =&lt;br /&gt;
* Wir haben zwei GNS3 Labore unter Hyper-V virtualisiert&lt;br /&gt;
* Beide Labore teilen sich zum Großteil diesselben VMs&lt;br /&gt;
* Machen Sie daher Snapshots von den VMs, damit die Labore für die Analysen auf ihren ursprünglichen Zustand wiederhergestellt werden können&lt;br /&gt;
* Die Lizenzen für die Windows-VMs sind abgelaufen und fahren daher automatisch herunter: [[Windows fährt automatisch herunter|Fix]]&lt;br /&gt;
* Die folgenden Schritte können für beide Labore benutzt werden&lt;br /&gt;
&lt;br /&gt;
= Hardwareinventarisierung =&lt;br /&gt;
* Benutzen Sie passende Werkzeuge auf den VMs, um Hardware wie CPU, RAM oder Netzwerkkarten zu dokumentieren&lt;br /&gt;
* Ein Beispiel-Schema finden Sie hier: [https://xinux.net/images/0/07/Hardware-Inventarisierung2.xlsx Excel Tabelle]&lt;br /&gt;
&lt;br /&gt;
= Physische Netzwerktopologie =&lt;br /&gt;
* Benutzen Sie MS Visio, um die Netzwerkverbindungen zu dokumentieren&lt;br /&gt;
&lt;br /&gt;
= Logische Netzwerktopologie =&lt;br /&gt;
* Nutzen Sie Tools wie tracert, ping oder nmap, um die Routen herauszufinden&lt;br /&gt;
* Dokumentieren Sie die Netzwerktopologie mit Visio&lt;br /&gt;
&lt;br /&gt;
= Schwachstellenanalyse =&lt;br /&gt;
&lt;br /&gt;
== nmap ==&lt;br /&gt;
* Überprüfen Sie, ob alle Maschinen vom Kali-Host aus erreichbar sind (Ping)&lt;br /&gt;
* Scannen Sie vom Kali-Host aus die anderen VMs im Labor auf:&lt;br /&gt;
** Ports&lt;br /&gt;
** Dienste&lt;br /&gt;
** Operations System&lt;br /&gt;
** Schwachstellen&lt;br /&gt;
* Speichern Sie die Ergebnisse in einer Textdatei&lt;br /&gt;
&lt;br /&gt;
== Greenbone ==&lt;br /&gt;
* Machen Sie sich mit der Oberfläche von Greenbone vertraut&lt;br /&gt;
* Legen Sie eine Aufgabe für Greenbone an, der die anderen Hosts täglich um 21:00 Uhr auf Schwachstellen scannt&lt;br /&gt;
&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
== SNMP ==&lt;br /&gt;
* Aktivieren Sie den SNMP-Dienst auf allen VMs&lt;br /&gt;
* Fügen Sie die Hosts zum Monitoring in LibreNMS zu&lt;br /&gt;
&lt;br /&gt;
== Checmk MK ==&lt;br /&gt;
* Installieren Sie den Checkmk-Agenten auf den Windows- und Linux-Hosts&lt;br /&gt;
* Fügen Sie die Hosts zum Monitoring hinzu&lt;br /&gt;
* Um Cisco-Geräte zu monitoren, kann SNMP verwendet werden&lt;br /&gt;
* Verschlüsseln Sie die Übertragung der Monitoring-Daten&lt;br /&gt;
&lt;br /&gt;
== Grafana ==&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58479</id>
		<title>Analyse und Monitoring von Netzwerken - Skript</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58479"/>
		<updated>2024-11-24T20:17:41Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* SNMP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Vorbereitung =&lt;br /&gt;
* Wir haben zwei GNS3 Labore unter Hyper-V virtualisiert&lt;br /&gt;
* Beide Labore teilen sich zum Großteil diesselben VMs&lt;br /&gt;
* Machen Sie daher Snapshots von den VMs, damit die Labore für die Analysen auf ihren ursprünglichen Zustand wiederhergestellt werden können&lt;br /&gt;
* Die Lizenzen für die Windows-VMs sind abgelaufen und fahren daher automatisch herunter: [[Windows fährt automatisch herunter|Fix]]&lt;br /&gt;
* Die folgenden Schritte können für beide Labore benutzt werden&lt;br /&gt;
&lt;br /&gt;
= Hardwareinventarisierung =&lt;br /&gt;
* Benutzen Sie passende Werkzeuge auf den VMs, um Hardware wie CPU, RAM oder Netzwerkkarten zu dokumentieren&lt;br /&gt;
* Ein Beispiel-Schema finden Sie hier: [https://xinux.net/images/0/07/Hardware-Inventarisierung2.xlsx Excel Tabelle]&lt;br /&gt;
&lt;br /&gt;
= Physische Netzwerktopologie =&lt;br /&gt;
* Benutzen Sie MS Visio, um die Netzwerkverbindungen zu dokumentieren&lt;br /&gt;
&lt;br /&gt;
= Logische Netzwerktopologie =&lt;br /&gt;
* Nutzen Sie Tools wie tracert, ping oder nmap, um die Routen herauszufinden&lt;br /&gt;
* Dokumentieren Sie die Netzwerktopologie mit Visio&lt;br /&gt;
&lt;br /&gt;
= Schwachstellenanalyse =&lt;br /&gt;
&lt;br /&gt;
== nmap ==&lt;br /&gt;
* Überprüfen Sie, ob alle Maschinen vom Kali-Host aus erreichbar sind (Ping)&lt;br /&gt;
* Scannen Sie vom Kali-Host aus die anderen VMs im Labor auf:&lt;br /&gt;
** Ports&lt;br /&gt;
** Dienste&lt;br /&gt;
** Operations System&lt;br /&gt;
** Schwachstellen&lt;br /&gt;
* Speichern Sie die Ergebnisse in einer Textdatei&lt;br /&gt;
&lt;br /&gt;
== Greenbone ==&lt;br /&gt;
* Machen Sie sich mit der Oberfläche von Greenbone vertraut&lt;br /&gt;
* Legen Sie eine Aufgabe für Greenbone an, der die anderen Hosts täglich um 21:00 Uhr auf Schwachstellen scannt&lt;br /&gt;
&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
== SNMP ==&lt;br /&gt;
* Aktivieren Sie den SNMP-Dienst auf allen VMs&lt;br /&gt;
* Fügen Sie die Hosts zum Monitoring in LibreNMS zu&lt;br /&gt;
&lt;br /&gt;
== Checmk MK ==&lt;br /&gt;
&lt;br /&gt;
== Grafana ==&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58478</id>
		<title>Analyse und Monitoring von Netzwerken - Skript</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58478"/>
		<updated>2024-11-24T20:14:19Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Logische Netzwerktopologie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Vorbereitung =&lt;br /&gt;
* Wir haben zwei GNS3 Labore unter Hyper-V virtualisiert&lt;br /&gt;
* Beide Labore teilen sich zum Großteil diesselben VMs&lt;br /&gt;
* Machen Sie daher Snapshots von den VMs, damit die Labore für die Analysen auf ihren ursprünglichen Zustand wiederhergestellt werden können&lt;br /&gt;
* Die Lizenzen für die Windows-VMs sind abgelaufen und fahren daher automatisch herunter: [[Windows fährt automatisch herunter|Fix]]&lt;br /&gt;
* Die folgenden Schritte können für beide Labore benutzt werden&lt;br /&gt;
&lt;br /&gt;
= Hardwareinventarisierung =&lt;br /&gt;
* Benutzen Sie passende Werkzeuge auf den VMs, um Hardware wie CPU, RAM oder Netzwerkkarten zu dokumentieren&lt;br /&gt;
* Ein Beispiel-Schema finden Sie hier: [https://xinux.net/images/0/07/Hardware-Inventarisierung2.xlsx Excel Tabelle]&lt;br /&gt;
&lt;br /&gt;
= Physische Netzwerktopologie =&lt;br /&gt;
* Benutzen Sie MS Visio, um die Netzwerkverbindungen zu dokumentieren&lt;br /&gt;
&lt;br /&gt;
= Logische Netzwerktopologie =&lt;br /&gt;
* Nutzen Sie Tools wie tracert, ping oder nmap, um die Routen herauszufinden&lt;br /&gt;
* Dokumentieren Sie die Netzwerktopologie mit Visio&lt;br /&gt;
&lt;br /&gt;
= Schwachstellenanalyse =&lt;br /&gt;
&lt;br /&gt;
== nmap ==&lt;br /&gt;
* Überprüfen Sie, ob alle Maschinen vom Kali-Host aus erreichbar sind (Ping)&lt;br /&gt;
* Scannen Sie vom Kali-Host aus die anderen VMs im Labor auf:&lt;br /&gt;
** Ports&lt;br /&gt;
** Dienste&lt;br /&gt;
** Operations System&lt;br /&gt;
** Schwachstellen&lt;br /&gt;
* Speichern Sie die Ergebnisse in einer Textdatei&lt;br /&gt;
&lt;br /&gt;
== Greenbone ==&lt;br /&gt;
* Machen Sie sich mit der Oberfläche von Greenbone vertraut&lt;br /&gt;
* Legen Sie eine Aufgabe für Greenbone an, der die anderen Hosts täglich um 21:00 Uhr auf Schwachstellen scannt&lt;br /&gt;
&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
== SNMP ==&lt;br /&gt;
&lt;br /&gt;
== Checmk MK ==&lt;br /&gt;
&lt;br /&gt;
== Grafana ==&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58477</id>
		<title>Analyse und Monitoring von Netzwerken - Skript</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58477"/>
		<updated>2024-11-24T18:40:23Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Vorbereitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Vorbereitung =&lt;br /&gt;
* Wir haben zwei GNS3 Labore unter Hyper-V virtualisiert&lt;br /&gt;
* Beide Labore teilen sich zum Großteil diesselben VMs&lt;br /&gt;
* Machen Sie daher Snapshots von den VMs, damit die Labore für die Analysen auf ihren ursprünglichen Zustand wiederhergestellt werden können&lt;br /&gt;
* Die Lizenzen für die Windows-VMs sind abgelaufen und fahren daher automatisch herunter: [[Windows fährt automatisch herunter|Fix]]&lt;br /&gt;
* Die folgenden Schritte können für beide Labore benutzt werden&lt;br /&gt;
&lt;br /&gt;
= Hardwareinventarisierung =&lt;br /&gt;
* Benutzen Sie passende Werkzeuge auf den VMs, um Hardware wie CPU, RAM oder Netzwerkkarten zu dokumentieren&lt;br /&gt;
* Ein Beispiel-Schema finden Sie hier: [https://xinux.net/images/0/07/Hardware-Inventarisierung2.xlsx Excel Tabelle]&lt;br /&gt;
&lt;br /&gt;
= Physische Netzwerktopologie =&lt;br /&gt;
* Benutzen Sie MS Visio, um die Netzwerkverbindungen zu dokumentieren&lt;br /&gt;
&lt;br /&gt;
= Logische Netzwerktopologie =&lt;br /&gt;
&lt;br /&gt;
= Schwachstellenanalyse =&lt;br /&gt;
&lt;br /&gt;
== nmap ==&lt;br /&gt;
* Überprüfen Sie, ob alle Maschinen vom Kali-Host aus erreichbar sind (Ping)&lt;br /&gt;
* Scannen Sie vom Kali-Host aus die anderen VMs im Labor auf:&lt;br /&gt;
** Ports&lt;br /&gt;
** Dienste&lt;br /&gt;
** Operations System&lt;br /&gt;
** Schwachstellen&lt;br /&gt;
* Speichern Sie die Ergebnisse in einer Textdatei&lt;br /&gt;
&lt;br /&gt;
== Greenbone ==&lt;br /&gt;
* Machen Sie sich mit der Oberfläche von Greenbone vertraut&lt;br /&gt;
* Legen Sie eine Aufgabe für Greenbone an, der die anderen Hosts täglich um 21:00 Uhr auf Schwachstellen scannt&lt;br /&gt;
&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
== SNMP ==&lt;br /&gt;
&lt;br /&gt;
== Checmk MK ==&lt;br /&gt;
&lt;br /&gt;
== Grafana ==&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58476</id>
		<title>Analyse und Monitoring von Netzwerken - Skript</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58476"/>
		<updated>2024-11-24T18:37:30Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Vorbereitung =&lt;br /&gt;
* Wir haben zwei GNS3 Labore unter Hyper-V virtualisiert&lt;br /&gt;
* Beide Labore teilen sich zum Großteil diesselben VMs&lt;br /&gt;
* Machen Sie daher Snapshots von den VMs, damit die Labore für die Analysen auf ihren ursprünglichen Zustand wiederhergestellt werden können&lt;br /&gt;
* Die folgenden Schritte können für beide Labore benutzt werden&lt;br /&gt;
&lt;br /&gt;
= Hardwareinventarisierung =&lt;br /&gt;
* Benutzen Sie passende Werkzeuge auf den VMs, um Hardware wie CPU, RAM oder Netzwerkkarten zu dokumentieren&lt;br /&gt;
* Ein Beispiel-Schema finden Sie hier: [https://xinux.net/images/0/07/Hardware-Inventarisierung2.xlsx Excel Tabelle]&lt;br /&gt;
&lt;br /&gt;
= Physische Netzwerktopologie =&lt;br /&gt;
* Benutzen Sie MS Visio, um die Netzwerkverbindungen zu dokumentieren&lt;br /&gt;
&lt;br /&gt;
= Logische Netzwerktopologie =&lt;br /&gt;
&lt;br /&gt;
= Schwachstellenanalyse =&lt;br /&gt;
&lt;br /&gt;
== nmap ==&lt;br /&gt;
* Überprüfen Sie, ob alle Maschinen vom Kali-Host aus erreichbar sind (Ping)&lt;br /&gt;
* Scannen Sie vom Kali-Host aus die anderen VMs im Labor auf:&lt;br /&gt;
** Ports&lt;br /&gt;
** Dienste&lt;br /&gt;
** Operations System&lt;br /&gt;
** Schwachstellen&lt;br /&gt;
* Speichern Sie die Ergebnisse in einer Textdatei&lt;br /&gt;
&lt;br /&gt;
== Greenbone ==&lt;br /&gt;
* Machen Sie sich mit der Oberfläche von Greenbone vertraut&lt;br /&gt;
* Legen Sie eine Aufgabe für Greenbone an, der die anderen Hosts täglich um 21:00 Uhr auf Schwachstellen scannt&lt;br /&gt;
&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
== SNMP ==&lt;br /&gt;
&lt;br /&gt;
== Checmk MK ==&lt;br /&gt;
&lt;br /&gt;
== Grafana ==&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58475</id>
		<title>Analyse und Monitoring von Netzwerken - Skript</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken_-_Skript&amp;diff=58475"/>
		<updated>2024-11-24T18:29:10Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: Die Seite wurde neu angelegt: „= Vorbereitung = * Wir haben zwei GNS3 Labore unter Hyper-V virtualisiert * Beide Labore teilen sich zum Großteil diesselben VMs * Machen Sie daher Snapshots…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Vorbereitung =&lt;br /&gt;
* Wir haben zwei GNS3 Labore unter Hyper-V virtualisiert&lt;br /&gt;
* Beide Labore teilen sich zum Großteil diesselben VMs&lt;br /&gt;
* Machen Sie daher Snapshots von den VMs, damit die Labore für die Analysen auf ihren ursprünglichen Zustand wiederhergestellt werden können&lt;br /&gt;
* Die folgenden Schritte können für beide Labore benutzt werden&lt;br /&gt;
&lt;br /&gt;
= Hardwareinventarisierung =&lt;br /&gt;
* Benutzen Sie passende Werkzeuge auf den VMs, um Hardware wie CPU, RAM oder Netzwerkkarten zu dokumentieren&lt;br /&gt;
* Ein Beispiel-Schema finden Sie hier: [https://xinux.net/images/0/07/Hardware-Inventarisierung2.xlsx Excel Tabelle]&lt;br /&gt;
&lt;br /&gt;
= Physische Netzwerktopologie =&lt;br /&gt;
* Benutzen Sie MS Visio, um die Netzwerkverbindungen zu dokumentieren&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken&amp;diff=58474</id>
		<title>Analyse und Monitoring von Netzwerken</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken&amp;diff=58474"/>
		<updated>2024-11-24T18:04:10Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Grundlegendes=&lt;br /&gt;
*[[Thomas Will]]&lt;br /&gt;
*[[Benutzer:Linkai.zhang|Linkai Zhang]]&lt;br /&gt;
*[[Analyse und Monitoring von Netzwerken - Skript]]&lt;br /&gt;
*[[Zeiten KO]]&lt;br /&gt;
*[[Zeiten Dresden]]&lt;br /&gt;
*[[Analyse und Monitoring von Netzwerken Tools]]&lt;br /&gt;
&lt;br /&gt;
=Login-Daten=&lt;br /&gt;
&lt;br /&gt;
==Nutzer auf Linux Maschinen==&lt;br /&gt;
*xinux&lt;br /&gt;
&lt;br /&gt;
==Default-Passwort==&lt;br /&gt;
*&#039;&#039;&#039;P@ssw0rd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Topics=&lt;br /&gt;
*Schwachstellensuche und -analyse&lt;br /&gt;
**Portscanning&lt;br /&gt;
**Gefahren des Netzwerks&lt;br /&gt;
**Informationsbeschaffung- Erweiterungen&lt;br /&gt;
*Monitoring&lt;br /&gt;
**Netzwerkmonitoring (Grundlagen/Tools)&lt;br /&gt;
**Remotemanagement&lt;br /&gt;
*Protokollierung und Dokumentation&lt;br /&gt;
**Einführung in Netzwerkdokumentation mit MS Visio&lt;br /&gt;
**Physisische Topologie&lt;br /&gt;
**Logische Topologie&lt;br /&gt;
&lt;br /&gt;
=Vorüberlegungen=&lt;br /&gt;
* Snapshots von VMs machen&lt;br /&gt;
* [[Stichpunkte IT-Sicherheit]]&lt;br /&gt;
* [[Überblick der IT-Grundschutz-Methodik]]&lt;br /&gt;
* [[Basis-Sicherheitscheck]]&lt;br /&gt;
* [[Schritte für einen Basis-Sicherheitscheck]]&lt;br /&gt;
* [[IT-Grundschutz Literatur]]&lt;br /&gt;
&lt;br /&gt;
=Protokollierung und Dokumentation=&lt;br /&gt;
*[[Physikalische Topologie]]&lt;br /&gt;
*[[Logische Topologie]]&lt;br /&gt;
*[[Einführung in Netzwerkdokumentation mit MS Visio]]&lt;br /&gt;
*[[Cisco OSPF]]&lt;br /&gt;
*[[Cisco Workshop 1]]&lt;br /&gt;
*[[Hardware-Inventarisierung]]&lt;br /&gt;
*[https://xinux.net/images/0/07/Hardware-Inventarisierung2.xlsx Excel Tabelle]&lt;br /&gt;
&lt;br /&gt;
=Schwachstellensuche und -analyse=&lt;br /&gt;
*[[Gefahren des Netzwerks]]&lt;br /&gt;
*[[Angriffe und Schwachstellen]]&lt;br /&gt;
*[[Portscanning]]&lt;br /&gt;
*[[Sicherheit Begriffe]]&lt;br /&gt;
*[[Informationsbeschaffung- Erweiterung]]&lt;br /&gt;
*[[Cisco Discovery Protocol]]&lt;br /&gt;
&lt;br /&gt;
=Monitoring=&lt;br /&gt;
*[[Verschlüsselung]]&lt;br /&gt;
*[[Monitoring Logindaten]]&lt;br /&gt;
*[[NETZWERK TOOLS]]&lt;br /&gt;
*[[Netzwerkmonitoring (Grundlagen/Tools)]]&lt;br /&gt;
*[[Netzwerkmonitoring]]&lt;br /&gt;
*[[SNMP Server]]&lt;br /&gt;
*[[Hardware-Inventarisierung]]&lt;br /&gt;
*[[Remotemanagement]]&lt;br /&gt;
*[[Microsoft Powershell]]&lt;br /&gt;
&lt;br /&gt;
=Hostsystem Modifikationen=&lt;br /&gt;
*[[Powershell Nat]]&lt;br /&gt;
*[[Powershell Route]]&lt;br /&gt;
*[[Powershell Netzwerk]]&lt;br /&gt;
&lt;br /&gt;
=Verschiedenes=&lt;br /&gt;
*[[Schwachstellen vorbeugen: Patch-Management]]&lt;br /&gt;
*[[Configuration Management Database]]&lt;br /&gt;
*[[Datei:windows_dashboard.json]]&lt;br /&gt;
&lt;br /&gt;
=Misc=&lt;br /&gt;
*[[Labor 1]]&lt;br /&gt;
*[[Labor 2]]&lt;br /&gt;
*[[Labor 3]]&lt;br /&gt;
*[[Labor 4]]&lt;br /&gt;
&lt;br /&gt;
=Trouble Shooting=&lt;br /&gt;
*[[kali Repository Key out of date]]&lt;br /&gt;
*[[Windows Server 2012 bevorzugt nicht die DHCP]]&lt;br /&gt;
*[[npf]]&lt;br /&gt;
*[[Windows fährt automatisch herunter]]&lt;br /&gt;
*[[GNS3 Netzwerk ist instabil]]&lt;br /&gt;
*https://github.com/GNS3/gns3-gui/issues/2542&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Vim_Erkl%C3%A4rung&amp;diff=58462</id>
		<title>Vim Erklärung</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Vim_Erkl%C3%A4rung&amp;diff=58462"/>
		<updated>2024-11-22T09:51:14Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Texteditieren (Normal-Mode, bedingt Visual-Mode) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Warum Vim benutzen/lernen? =&lt;br /&gt;
&lt;br /&gt;
* Die Zeit für das Editieren von Text verringert sich drastisch, da die Hände nicht die &#039;&#039;Home-Row&#039;&#039; verlassen müssen&lt;br /&gt;
* präzise Navigation im Normal-Mode&lt;br /&gt;
* mächtige Selbstvervollständigungswerkzeuge für Wörter, Zeilen und Programmsyntax&lt;br /&gt;
* Abnehmen repetitiver Arbeit mit Zahl+Befehl, Macros, Visual-Mode, Command-Mode oder durch eigene Konfigurationen&lt;br /&gt;
* erweiterbar für eigene Anforderungen (siehe [[Vim Konfiguration|$MYVIMRC]])&lt;br /&gt;
* [[Vim Beispiele|Anwendungsbeispiele]]&lt;br /&gt;
&lt;br /&gt;
= Modi =&lt;br /&gt;
&lt;br /&gt;
{{#drawio: vim-modi}}&lt;br /&gt;
&lt;br /&gt;
Vim hat 5 verschiedene Modi, die jeweils ihre Bereiche für repetitive Arbeit abnehmen können.&lt;br /&gt;
&lt;br /&gt;
* Normal: Navigation des Cursors und Textedit&lt;br /&gt;
* Insert: Textinput und Autocomplete&lt;br /&gt;
* Visual: Markieren von Bereichen für das Editieren&lt;br /&gt;
* Command: Ausführen komplexer Befehle, anpassen von Einstellungen in Vim&lt;br /&gt;
* Completion: Schaut im Puffer nach Text und gibt uns Kandidaten für Autovervollständigung&lt;br /&gt;
&lt;br /&gt;
= Navigation (Normal-Mode, Visual-Mode) =&lt;br /&gt;
&lt;br /&gt;
* h, j, k, l: links, unten, oben, rechts&lt;br /&gt;
* w: Anfang des nächsten Wortes&lt;br /&gt;
* W: nächstes Zeichen nach einer Leerzeile&lt;br /&gt;
* e: Ende des nächsten Wortes&lt;br /&gt;
* E: letztes Zeichen vor der nächsten Leerzeile&lt;br /&gt;
* b: Anfang des letzen Wortes&lt;br /&gt;
* B: Erstes Zeichen zwischen dem letzten und dem vorletztem Leerzeichen&lt;br /&gt;
* ge: Ende des letzten Wortes&lt;br /&gt;
* gE: erstes Zeichen vor der letzten Leerzeile&lt;br /&gt;
* f + beliebiges Zeichen: Finde das nächste Auftreten dieses Zeichens in der Zeile&lt;br /&gt;
* F + beliebiges Zeichen: Finde das letzte Auftreten dieses Zeichens in der Zeile&lt;br /&gt;
* t + beliebiges Zeichen: Finde das nächste Auftreten dieses Zeichens in der Zeile - 1&lt;br /&gt;
* T + beliebiges Zeichen: Finde das letzte Auftreten dieses Zeichens in der Zeile + 1&lt;br /&gt;
* “,”, “;” wiederholt die letzte Suchaktion in der Zeile in der jeweiligen Richtung&lt;br /&gt;
* /, ?: Sucht nach einem String (und updated das “/”-Register)&lt;br /&gt;
* n, N: Wiederholt die letze Suche in der jeweiligen Richtung&lt;br /&gt;
* ^/0,$: Gehe zum Zeilenanfang/-ende&lt;br /&gt;
* gv: wählt die letzte Auswahl des Visual-Mode nochmal aus&lt;br /&gt;
* o (in Visual-Mode): Geht mit den Cursor an das andere Ende der Auswahl&lt;br /&gt;
&lt;br /&gt;
= Texteditieren (Normal-Mode, bedingt Visual-Mode) =&lt;br /&gt;
* u: Undo&lt;br /&gt;
* i, a: Wechsel in den Insert-Mode am/nach dem Cursor&lt;br /&gt;
* I: Wechsel in den Insert-Mode am Zeilenanfang&lt;br /&gt;
* A: Wechsel in den Insert-Mode am Zeilenende&lt;br /&gt;
* s: löscht das Zeichen unter dem Cursor und wechsel in den Insert-Mode&lt;br /&gt;
* S: löscht die Zeile und wechsel in den Insert-Mode&lt;br /&gt;
* c + Navigation: löscht alles bis zum Navigationsziel und wechsel in den Insert-Mode&lt;br /&gt;
* C: löscht alles vom Cursor bis ans Ende der Zeile und wechsel in den Insert-Mode&lt;br /&gt;
* r: + Zeichen: ersetzt das Zeichen unter dem Cursor/ der Auswahl des Visual-Modes&lt;br /&gt;
* y + Navigation: kopieren (yank)&lt;br /&gt;
* p: das Kopierte nach dem Cursor einfügen (paste)&lt;br /&gt;
* P: das Kopierte vor dem Cursor einfügen (paste)&lt;br /&gt;
* R: (im Normal-Mode): Wechsel in den Replace-Mode&lt;br /&gt;
* R: (im Visual-Mode): macht dasselbe wie “S”&lt;br /&gt;
* Strg + a/x: erhöht/verringert die Zahl um 1, wenn keine Zahl unter dem Cursor liegt, wird nach der nächsten Zahl in der Zeile gesucht&lt;br /&gt;
&lt;br /&gt;
= Autocomplete (Insert-Mode) =&lt;br /&gt;
&lt;br /&gt;
Das Autocomplete-Feature kann viele Arten von Mustern erkennen. Diese reichen von einfachen Wörtern, bis hin zu “Sätzen” je nach Kontext. Das Pop-up-Menü kann man mit Strg + n/p (next/previous) navigieren.&lt;br /&gt;
&lt;br /&gt;
== Kontextlose Vervollständigung ==&lt;br /&gt;
&lt;br /&gt;
* Strg + r + Register: Fügt den Text aus jeweiligen Register ein. Mit :reg können Registerinhalte eingesehen werden.&lt;br /&gt;
* Strg + n/p: Vervollständigt ein Wort, das schon mal getippt wurde. n bzw. p gibt die Suchrichtung an.&lt;br /&gt;
&lt;br /&gt;
== Vervollständigung mit Kontext ==&lt;br /&gt;
&lt;br /&gt;
Diese Art von Vervollständigungen beginnen immer mit Strg + X. Danach kann man in den gewünschten Kontext wechseln.&lt;br /&gt;
&lt;br /&gt;
* Strg + x, Strg + O: Sucht nach Variabeln-, Klassen- und Funktionsnamen. Kann auch in importierten Bibliotheken suchen.&lt;br /&gt;
* Strg + x, Strg + n/p: Dasselbe wie Strg + n/p, aber wiederholte Verwendungen beachten den Kontext. D.h. Satzteile können somit vervollständigt werden.&lt;br /&gt;
* Strg + x, Strg + l: Versucht Sätze zu vervollständigen. Wiederholte Anwendungen ziehen sich die nachfolgenden Sätze.&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Sed_Aufgaben_2&amp;diff=58461</id>
		<title>Sed Aufgaben 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Sed_Aufgaben_2&amp;diff=58461"/>
		<updated>2024-11-21T12:55:17Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Testdaten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Testdaten=&lt;br /&gt;
*cat &amp;gt; testdatei.txt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Max;Mustermann;Dr.;max.mustermann@example.com:123456789&lt;br /&gt;
Anna;Schmidt;Prof.;anna.schmidt@example.com:987654321&lt;br /&gt;
Tom;Miller;Mr.;tom.miller@example.com:456789123&lt;br /&gt;
Julia;Johnson;Ms.;julia.johnson@example.com:789123456&lt;br /&gt;
Alex;Davis;MSc.;alex.davis@example.de:321654987&lt;br /&gt;
Laura;Wilson;PhD.;laura.wilson@example.com:654789123&lt;br /&gt;
Emma;Brown;Eng.;emma.brown@example.com:987321654&lt;br /&gt;
Oliver;Lee;Dipl.-Ing.;oliver.lee@example.com:147852369&lt;br /&gt;
Sophie;Anderson;Ing.;sophie.anderson@example.com:369258147&lt;br /&gt;
Ben;Taylor;M.A.;ben.taylor@example.com:852369741&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Strg + D&lt;br /&gt;
&lt;br /&gt;
=Aufgaben=&lt;br /&gt;
*Ersetze alle Vorkommen des Nachnamens &amp;quot;Johnson&amp;quot; durch &amp;quot;Smith&amp;quot; in der Testdatei:&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
sed &#039;s/Smith/Johnson/g&#039; testdatei.txt&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
*Lösche alle Datensätze, bei denen der Titel &amp;quot;Dr.&amp;quot; ist, in der Testdatei:&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
*sed &#039;/Dr./d&#039; testdatei.txt&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
*Extrahiere nur die Vor- und Nachnamen aus der Testdatei und speichere sie in einer separaten Datei:&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
sed &#039;s/\([^;]*\);[^;]*;.*/\1/g&#039; testdatei.txt &amp;gt; namen.txt&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
*Füge am Ende jeder Zeile in der Testdatei die Telefonnummer &amp;quot;+49 123456789&amp;quot; hinzu:&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
sed &#039;s/$/;+49 123456789/&#039; testdatei.txt&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
*Lösche alle Datensätze, bei denen die E-Mail-Adresse nicht mit &amp;quot;.com&amp;quot; endet, in der Testdatei:&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
sed &#039;/[^;]*;[^;]*;[^;]*;.*\.com/!d&#039; testdatei.txt&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Sed_Aufgaben_2&amp;diff=58460</id>
		<title>Sed Aufgaben 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Sed_Aufgaben_2&amp;diff=58460"/>
		<updated>2024-11-21T12:55:00Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Testdaten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Testdaten=&lt;br /&gt;
*cat &amp;gt; testdatei.txt&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Max;Mustermann;Dr.;max.mustermann@example.com:123456789&lt;br /&gt;
Anna;Schmidt;Prof.;anna.schmidt@example.com:987654321&lt;br /&gt;
Tom;Miller;Mr.;tom.miller@example.com:456789123&lt;br /&gt;
Julia;Johnson;Ms.;julia.johnson@example.com:789123456&lt;br /&gt;
Alex;Davis;MSc.;alex.davis@example.de:321654987&lt;br /&gt;
Laura;Wilson;PhD.;laura.wilson@example.com:654789123&lt;br /&gt;
Emma;Brown;Eng.;emma.brown@example.com:987321654&lt;br /&gt;
Oliver;Lee;Dipl.-Ing.;oliver.lee@example.com:147852369&lt;br /&gt;
Sophie;Anderson;Ing.;sophie.anderson@example.com:369258147&lt;br /&gt;
Ben;Taylor;M.A.;ben.taylor@example.com:852369741&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Aufgaben=&lt;br /&gt;
*Ersetze alle Vorkommen des Nachnamens &amp;quot;Johnson&amp;quot; durch &amp;quot;Smith&amp;quot; in der Testdatei:&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
sed &#039;s/Smith/Johnson/g&#039; testdatei.txt&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
*Lösche alle Datensätze, bei denen der Titel &amp;quot;Dr.&amp;quot; ist, in der Testdatei:&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
*sed &#039;/Dr./d&#039; testdatei.txt&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
*Extrahiere nur die Vor- und Nachnamen aus der Testdatei und speichere sie in einer separaten Datei:&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
sed &#039;s/\([^;]*\);[^;]*;.*/\1/g&#039; testdatei.txt &amp;gt; namen.txt&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
*Füge am Ende jeder Zeile in der Testdatei die Telefonnummer &amp;quot;+49 123456789&amp;quot; hinzu:&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
sed &#039;s/$/;+49 123456789/&#039; testdatei.txt&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
*Lösche alle Datensätze, bei denen die E-Mail-Adresse nicht mit &amp;quot;.com&amp;quot; endet, in der Testdatei:&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
sed &#039;/[^;]*;[^;]*;[^;]*;.*\.com/!d&#039; testdatei.txt&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Passwd&amp;diff=58457</id>
		<title>Passwd</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Passwd&amp;diff=58457"/>
		<updated>2024-11-21T07:38:12Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Minimale und Maximale Gültigkeit des Passwortes von tux festlegen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Rootpasswort ändern==&lt;br /&gt;
*passwd &lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:&#039;&#039;&#039;sysadm&#039;&#039;&#039; &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:&#039;&#039;&#039;sysadm&#039;&#039;&#039; &lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
==Passwort von xinux ändern==&lt;br /&gt;
*passwd xinux&lt;br /&gt;
 Geben Sie ein neues UNIX Passwort ein:&#039;&#039;&#039;suxer&#039;&#039;&#039; &lt;br /&gt;
 Geben Sie das neue UNIX Passwort erneut ein:&#039;&#039;&#039;suxer&#039;&#039;&#039;&lt;br /&gt;
 passwd: Passwort erfolgreich geändert&lt;br /&gt;
==Minimale und Maximale Gültigkeit des Passwortes von xinux festlegen==&lt;br /&gt;
*passwd -n 5 -x 120 xinux&lt;br /&gt;
&lt;br /&gt;
=Passwort sperren=&lt;br /&gt;
*passwd -l benutzer&lt;br /&gt;
=Passwort entsperren=&lt;br /&gt;
*passwd -u benutzer&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58456</id>
		<title>IT 600 b - Linux/Unix</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58456"/>
		<updated>2024-11-20T08:38:20Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Benutzer:linkai.zhang|Linkai Zhang]]&lt;br /&gt;
= Login Daten =&lt;br /&gt;
* Benutzer: xinux&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
* Benutzer: root&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
= Themen =&lt;br /&gt;
* [[Geschichte Unix]]&lt;br /&gt;
* [[Betriebsystem]]&lt;br /&gt;
* [[Debian Installation]]&lt;br /&gt;
* [[Erste Schritte (terminal)]]&lt;br /&gt;
* [[Einfache Linux Kommandos]]&lt;br /&gt;
* [[Kommandolokalisierung]]&lt;br /&gt;
* [[Bash Dateien]]&lt;br /&gt;
* [[Prozesse Eltern und Kinder]]&lt;br /&gt;
* [[Bash Wichtige Systemvariablen (Auswahl)]]&lt;br /&gt;
* [[Nano Crash]]&lt;br /&gt;
* [[Vim]]&lt;br /&gt;
* [[Benutzerverwaltung]]&lt;br /&gt;
* [[Berechtigungen]]&lt;br /&gt;
* [[Gruppenzugehörigkeit]]&lt;br /&gt;
* [[Umgang mit der Shell]]&lt;br /&gt;
* [[Linux Server]]&lt;br /&gt;
* [[Arbeiten mit der Shell]]&lt;br /&gt;
* [[Paketmanagement unter Linux|Installation von Software]]&lt;br /&gt;
* [[Cron|Cron Jobs]]&lt;br /&gt;
* [[Was ist ein Kernel?]]&lt;br /&gt;
* [[Fat Clients]]&lt;br /&gt;
* [[Thin Clients]]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Bash_Dateien&amp;diff=58455</id>
		<title>Bash Dateien</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Bash_Dateien&amp;diff=58455"/>
		<updated>2024-11-19T14:02:46Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Aufgabe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Shells können benutzerdefiniert im lokalen Heimatverzeichnis an die eigene Arbeitsweise angepasst werden&lt;br /&gt;
* In der Regel definiert man Kürzel für häufig aufgerufene Kommandos&lt;br /&gt;
* Zusätzlich kann man Tastenkürzel für bestimmte Shell-Funktionen zuweisen&lt;br /&gt;
* z.B. ist Strg-R schon dafür eingestellt, um die Kommandohistorie zu durchsuchen&lt;br /&gt;
&lt;br /&gt;
=Einlogvorgang=&lt;br /&gt;
Wird beim Anmelden automatisch ausgeführt. Sie gilt für alle.&lt;br /&gt;
; /etc/profile&lt;br /&gt;
Wenn diese Datei existiert, wird sie beim Anmelden automatisch ausgeführt&lt;br /&gt;
; ~/.bash_profile&lt;br /&gt;
Wenn diese Datei existiert wird sie beim Anmelden automatisch ausgeführt, wenn die obige nicht existiert. &lt;br /&gt;
; ~/.bash_login	&lt;br /&gt;
Wird beim Anmelden automatisch ausgeführt wenn 	die beiden obigen nicht existieren.&lt;br /&gt;
; ~/.profile	&lt;br /&gt;
{{#drawio:bash-dateien}}&lt;br /&gt;
&lt;br /&gt;
=Starten einer Shell=&lt;br /&gt;
Wird beim starten jeder Bash automatisch ausgeführt. &lt;br /&gt;
; /etc/bash.bashrc &lt;br /&gt;
Wird beim starten jeder Bash automatisch ausgeführt. &lt;br /&gt;
; ~/.bashrc&lt;br /&gt;
{{#drawio:bash-start}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enthält die während der letzten Sitzung eingegebenen Befehle &lt;br /&gt;
; ~/.bash_history	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wird beim Abmelden ausgeführt&lt;br /&gt;
; ~/.bash_logout&lt;br /&gt;
{{#drawio:bash-stop}}&lt;br /&gt;
&lt;br /&gt;
=Manuelles Laden=&lt;br /&gt;
&lt;br /&gt;
* source ~/.bashrc&lt;br /&gt;
* source ~/.profile&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
= Aufgabe =&lt;br /&gt;
&lt;br /&gt;
* Setzten Sie sich die [[Aliase]] &#039;&#039;&#039;..&#039;&#039;&#039; und &#039;&#039;&#039;...&#039;&#039;&#039;, um jeweils 1 bzw. 2 Ordner weiter oben zu gelangen&lt;br /&gt;
* Diese sollen in jeder neuen Bash-Shell für root und den normalen Benutzer immer benutzbar sein&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Lösung&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;~/.bashrc&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* oder&lt;br /&gt;
* &#039;&#039;&#039;nano &#039;&#039;~/.bashrc&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
alias &#039;..&#039;=&#039;cd ..&#039;&lt;br /&gt;
alias &#039;...&#039;=&#039;cd ../..&#039;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;source &#039;&#039;~/.bashrc&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Dasselbe nochmal als root-Benutzer&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Einfache_Linux_Kommandos&amp;diff=58454</id>
		<title>Einfache Linux Kommandos</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Einfache_Linux_Kommandos&amp;diff=58454"/>
		<updated>2024-11-18T14:28:48Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[cd]]&lt;br /&gt;
*[[ls]]&lt;br /&gt;
*[[more]]&lt;br /&gt;
*[[less]]&lt;br /&gt;
*[[head]]&lt;br /&gt;
*[[tail]]&lt;br /&gt;
*[[mkdir]]&lt;br /&gt;
*[[rmdir]]&lt;br /&gt;
*[[touch]]&lt;br /&gt;
*[[cp]]&lt;br /&gt;
*[[rm]]&lt;br /&gt;
*[[mv]]&lt;br /&gt;
*[[su]]&lt;br /&gt;
*[[ip addr]]&lt;br /&gt;
&lt;br /&gt;
=Quiz=&lt;br /&gt;
*[https://forms.gle/GQGruPCpTrD6uETLA Quiz]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Einfache_Linux_Kommandos&amp;diff=58453</id>
		<title>Einfache Linux Kommandos</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Einfache_Linux_Kommandos&amp;diff=58453"/>
		<updated>2024-11-18T14:28:25Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[cd]]&lt;br /&gt;
*[[ls]]&lt;br /&gt;
*[[more]]&lt;br /&gt;
*[[less]]&lt;br /&gt;
*[[head]]&lt;br /&gt;
*[[tail]]&lt;br /&gt;
*[[mkdir]]&lt;br /&gt;
*[[rmdir]]&lt;br /&gt;
*[[touch]]&lt;br /&gt;
*[[cp]]&lt;br /&gt;
*[[rm]]&lt;br /&gt;
*[[mv]]&lt;br /&gt;
*[[su]]&lt;br /&gt;
*[[ip]]&lt;br /&gt;
&lt;br /&gt;
=Quiz=&lt;br /&gt;
*[https://forms.gle/GQGruPCpTrD6uETLA Quiz]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58452</id>
		<title>IT 600 b - Linux/Unix</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58452"/>
		<updated>2024-11-18T12:32:05Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Themen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Benutzer:linkai.zhang|Linkai Zhang]]&lt;br /&gt;
= Login Daten =&lt;br /&gt;
* Benutzer: xinux&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
* Benutzer: root&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
= Themen =&lt;br /&gt;
* [[Geschichte Unix]]&lt;br /&gt;
* [[Betriebsystem]]&lt;br /&gt;
* [[Debian Installation]]&lt;br /&gt;
* [[Erste Schritte (terminal)]]&lt;br /&gt;
* [[Einfache Linux Kommandos]]&lt;br /&gt;
* [[Kommandolokalisierung]]&lt;br /&gt;
* [[Bash Dateien]]&lt;br /&gt;
* [[Prozesse Eltern und Kinder]]&lt;br /&gt;
* [[Bash Wichtige Systemvariablen (Auswahl)]]&lt;br /&gt;
* [[Nano Crash]]&lt;br /&gt;
* [[Vim]]&lt;br /&gt;
* [[Benutzerverwaltung]]&lt;br /&gt;
* [[Berechtigungen]]&lt;br /&gt;
* [[Gruppenzugehörigkeit]]&lt;br /&gt;
* [[Umgang mit der Shell]]&lt;br /&gt;
* [[Linux Server]]&lt;br /&gt;
* [[Arbeiten mit der Shell]]&lt;br /&gt;
* [[Paketmanagement unter Linux|Installation von Software]]&lt;br /&gt;
* [[Benutzerverwaltung]]&lt;br /&gt;
* [[Geräteverwaltung]]&lt;br /&gt;
* [[Cron|Cron Jobs]]&lt;br /&gt;
* [[Was ist ein Kernel?]]&lt;br /&gt;
* [[Fat Clients]]&lt;br /&gt;
* [[Thin Clients]]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58451</id>
		<title>IT 600 b - Linux/Unix</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58451"/>
		<updated>2024-11-18T10:05:17Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Themen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Benutzer:linkai.zhang|Linkai Zhang]]&lt;br /&gt;
= Login Daten =&lt;br /&gt;
* Benutzer: xinux&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
* Benutzer: root&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
= Themen =&lt;br /&gt;
* [[Geschichte Unix]]&lt;br /&gt;
* [[Betriebsystem]]&lt;br /&gt;
* [[Debian Installation]]&lt;br /&gt;
* [[Einfache Linux Kommandos]]&lt;br /&gt;
* [[Kommandolokalisierung]]&lt;br /&gt;
* [[Bash Dateien]]&lt;br /&gt;
* [[Prozesse Eltern und Kinder]]&lt;br /&gt;
* [[Bash Wichtige Systemvariablen (Auswahl)]]&lt;br /&gt;
* [[Nano Crash]]&lt;br /&gt;
* [[Vim]]&lt;br /&gt;
* [[Benutzerverwaltung]]&lt;br /&gt;
* [[Berechtigungen]]&lt;br /&gt;
* [[Gruppenzugehörigkeit]]&lt;br /&gt;
* [[Umgang mit der Shell]]&lt;br /&gt;
* [[Linux Server]]&lt;br /&gt;
* [[Arbeiten mit der Shell]]&lt;br /&gt;
* [[Paketmanagement unter Linux|Installation von Software]]&lt;br /&gt;
* [[Benutzerverwaltung]]&lt;br /&gt;
* [[Geräteverwaltung]]&lt;br /&gt;
* [[Cron|Cron Jobs]]&lt;br /&gt;
* [[Was ist ein Kernel?]]&lt;br /&gt;
* [[Fat Clients]]&lt;br /&gt;
* [[Thin Clients]]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58450</id>
		<title>IT 600 b - Linux/Unix</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58450"/>
		<updated>2024-11-18T10:03:01Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Themen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Benutzer:linkai.zhang|Linkai Zhang]]&lt;br /&gt;
= Login Daten =&lt;br /&gt;
* Benutzer: xinux&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
* Benutzer: root&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
= Themen =&lt;br /&gt;
* [[Geschichte Unix]]&lt;br /&gt;
* [[Betriebsystem]]&lt;br /&gt;
* [[Linux Server]]&lt;br /&gt;
* [[Arbeiten mit der Shell]]&lt;br /&gt;
* [[Debian Installation]]&lt;br /&gt;
* [[Paketmanagement unter Linux|Installation von Software]]&lt;br /&gt;
* [[Benutzerverwaltung]]&lt;br /&gt;
* [[Geräteverwaltung]]&lt;br /&gt;
* [[Cron|Cron Jobs]]&lt;br /&gt;
* [[Was ist ein Kernel?]]&lt;br /&gt;
* [[Fat Clients]]&lt;br /&gt;
* [[Thin Clients]]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58449</id>
		<title>IT 600 b - Linux/Unix</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58449"/>
		<updated>2024-11-18T09:58:53Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Themen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Benutzer:linkai.zhang|Linkai Zhang]]&lt;br /&gt;
= Login Daten =&lt;br /&gt;
* Benutzer: xinux&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
* Benutzer: root&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
= Themen =&lt;br /&gt;
* [[Geschichte Unix]]&lt;br /&gt;
* [[Linux Server]]&lt;br /&gt;
* [[Arbeiten mit der Shell]]&lt;br /&gt;
* [[Paketmanagement unter Linux|Installation von Software]]&lt;br /&gt;
* [[Debian Installation]]&lt;br /&gt;
* [[Benutzerverwaltung]]&lt;br /&gt;
* [[Geräteverwaltung]]&lt;br /&gt;
* [[Cron|Cron Jobs]]&lt;br /&gt;
* [[Was ist ein Kernel?]]&lt;br /&gt;
* [[Fat Clients]]&lt;br /&gt;
* [[Thin Clients]]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58448</id>
		<title>IT 600 b - Linux/Unix</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58448"/>
		<updated>2024-11-18T09:17:09Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Benutzer:linkai.zhang|Linkai Zhang]]&lt;br /&gt;
= Login Daten =&lt;br /&gt;
* Benutzer: xinux&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
* Benutzer: root&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
= Themen =&lt;br /&gt;
* [[Geschichte Unix]]&lt;br /&gt;
* [[Linux Server]]&lt;br /&gt;
* [[Arbeiten mit der Shell]]&lt;br /&gt;
* [[Paketmanagement unter Linux|Installation von Software]]&lt;br /&gt;
* [[Benutzerverwaltung]]&lt;br /&gt;
* [[Geräteverwaltung]]&lt;br /&gt;
* [[Cron|Cron Jobs]]&lt;br /&gt;
* [[Was ist ein Kernel?]]&lt;br /&gt;
* [[Fat Clients]]&lt;br /&gt;
* [[Thin Clients]]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58447</id>
		<title>IT 600 b - Linux/Unix</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=IT_600_b_-_Linux/Unix&amp;diff=58447"/>
		<updated>2024-11-17T20:47:29Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Login Daten =&lt;br /&gt;
* Benutzer: xinux&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
* Benutzer: root&lt;br /&gt;
* Passwort: 123Start$&lt;br /&gt;
&lt;br /&gt;
= Themen =&lt;br /&gt;
* [[Geschichte Unix]]&lt;br /&gt;
* [[Linux Server]]&lt;br /&gt;
* [[Arbeiten mit der Shell]]&lt;br /&gt;
* [[Paketmanagement unter Linux|Installation von Software]]&lt;br /&gt;
* [[Benutzerverwaltung]]&lt;br /&gt;
* [[Geräteverwaltung]]&lt;br /&gt;
* [[Cron|Cron Jobs]]&lt;br /&gt;
* [[Was ist ein Kernel?]]&lt;br /&gt;
* [[Fat Clients]]&lt;br /&gt;
* [[Thin Clients]]&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken&amp;diff=58446</id>
		<title>Analyse und Monitoring von Netzwerken</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Analyse_und_Monitoring_von_Netzwerken&amp;diff=58446"/>
		<updated>2024-11-17T08:04:28Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Vorüberlegungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Grundlegendes=&lt;br /&gt;
*[[Thomas Will]]&lt;br /&gt;
*[[Benutzer:Linkai.zhang]]&lt;br /&gt;
*[[Analyse und Monitoring von Netzwerken Tools]]&lt;br /&gt;
*[[Zeiten KO]]&lt;br /&gt;
*[[Zeiten Dresden]]&lt;br /&gt;
&lt;br /&gt;
=Login-Daten=&lt;br /&gt;
&lt;br /&gt;
==Nutzer auf Linux Maschinen==&lt;br /&gt;
*xinux&lt;br /&gt;
&lt;br /&gt;
==Default-Passwort==&lt;br /&gt;
*&#039;&#039;&#039;P@ssw0rd&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Topics=&lt;br /&gt;
*Schwachstellensuche und -analyse&lt;br /&gt;
**Portscanning&lt;br /&gt;
**Gefahren des Netzwerks&lt;br /&gt;
**Informationsbeschaffung- Erweiterungen&lt;br /&gt;
*Monitoring&lt;br /&gt;
**Netzwerkmonitoring (Grundlagen/Tools)&lt;br /&gt;
**Remotemanagement&lt;br /&gt;
*Protokollierung und Dokumentation&lt;br /&gt;
**Einführung in Netzwerkdokumentation mit MS Visio&lt;br /&gt;
**Physisische Topologie&lt;br /&gt;
**Logische Topologie&lt;br /&gt;
&lt;br /&gt;
=Vorüberlegungen=&lt;br /&gt;
* Snapshots von VMs machen&lt;br /&gt;
* [[Stichpunkte IT-Sicherheit]]&lt;br /&gt;
* [[Überblick der IT-Grundschutz-Methodik]]&lt;br /&gt;
* [[Basis-Sicherheitscheck]]&lt;br /&gt;
* [[Schritte für einen Basis-Sicherheitscheck]]&lt;br /&gt;
* [[IT-Grundschutz Literatur]]&lt;br /&gt;
&lt;br /&gt;
=Protokollierung und Dokumentation=&lt;br /&gt;
*[[Physikalische Topologie]]&lt;br /&gt;
*[[Logische Topologie]]&lt;br /&gt;
*[[Einführung in Netzwerkdokumentation mit MS Visio]]&lt;br /&gt;
*[[Cisco OSPF]]&lt;br /&gt;
*[[Cisco Workshop 1]]&lt;br /&gt;
*[[Hardware-Inventarisierung]]&lt;br /&gt;
*[https://xinux.net/images/0/07/Hardware-Inventarisierung2.xlsx Excel Tabelle]&lt;br /&gt;
&lt;br /&gt;
=Schwachstellensuche und -analyse=&lt;br /&gt;
*[[Gefahren des Netzwerks]]&lt;br /&gt;
*[[Angriffe und Schwachstellen]]&lt;br /&gt;
*[[Portscanning]]&lt;br /&gt;
*[[Sicherheit Begriffe]]&lt;br /&gt;
*[[Informationsbeschaffung- Erweiterung]]&lt;br /&gt;
*[[Cisco Discovery Protocol]]&lt;br /&gt;
&lt;br /&gt;
=Monitoring=&lt;br /&gt;
*[[Verschlüsselung]]&lt;br /&gt;
*[[Monitoring Logindaten]]&lt;br /&gt;
*[[NETZWERK TOOLS]]&lt;br /&gt;
*[[Netzwerkmonitoring (Grundlagen/Tools)]]&lt;br /&gt;
*[[Netzwerkmonitoring]]&lt;br /&gt;
*[[SNMP Server]]&lt;br /&gt;
*[[Hardware-Inventarisierung]]&lt;br /&gt;
*[[Remotemanagement]]&lt;br /&gt;
*[[Microsoft Powershell]]&lt;br /&gt;
&lt;br /&gt;
=Hostsystem Modifikationen=&lt;br /&gt;
*[[Powershell Nat]]&lt;br /&gt;
*[[Powershell Route]]&lt;br /&gt;
*[[Powershell Netzwerk]]&lt;br /&gt;
&lt;br /&gt;
=Verschiedenes=&lt;br /&gt;
*[[Schwachstellen vorbeugen: Patch-Management]]&lt;br /&gt;
*[[Configuration Management Database]]&lt;br /&gt;
*[[Datei:windows_dashboard.json]]&lt;br /&gt;
&lt;br /&gt;
=Misc=&lt;br /&gt;
*[[Labor 1]]&lt;br /&gt;
*[[Labor 2]]&lt;br /&gt;
*[[Labor 3]]&lt;br /&gt;
*[[Labor 4]]&lt;br /&gt;
&lt;br /&gt;
=Trouble Shooting=&lt;br /&gt;
*[[kali Repository Key out of date]]&lt;br /&gt;
*[[Windows Server 2012 bevorzugt nicht die DHCP]]&lt;br /&gt;
*[[npf]]&lt;br /&gt;
*[[Windows fährt automatisch herunter]]&lt;br /&gt;
*[[GNS3 Netzwerk ist instabil]]&lt;br /&gt;
*https://github.com/GNS3/gns3-gui/issues/2542&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Docker_Traefik_Middleware_Passwort_Schutz&amp;diff=58445</id>
		<title>Docker Traefik Middleware Passwort Schutz</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Docker_Traefik_Middleware_Passwort_Schutz&amp;diff=58445"/>
		<updated>2024-11-15T10:42:38Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Benutzer und Passwort separat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Docker]]&lt;br /&gt;
[[Kategorie:Traefik]]&lt;br /&gt;
= Funktion =&lt;br /&gt;
* Bevor die Anfrage vom Client an den Server geleitet wird, muss dieser sich anmelden&lt;br /&gt;
* Die Zugangsdaten können entweder in &#039;&#039;docker-compose.yml&#039;&#039; geschrieben oder in eine andere Datei ausgelagert werden&lt;br /&gt;
* Die Passwörter müssen mit MD5, SHA1, or BCrypt gehasht werden.&lt;br /&gt;
&lt;br /&gt;
= Passwort-Hashes =&lt;br /&gt;
* Der einfachste Weg für die Generation der Passwort-Hashes ist &#039;&#039;&#039;htpasswd&#039;&#039;&#039;, welches im Paket &#039;&#039;&#039;apache2-utils&#039;&#039;&#039; enthalten ist&lt;br /&gt;
* &#039;&#039;&#039;apt install apache2-utils&#039;&#039;&#039;&lt;br /&gt;
* Falls $-Zeichen im Hash auftauchen, müssen diese durch ein weiteres $ in YAML entwertet werden&lt;br /&gt;
* &#039;&#039;&#039;echo $(htpasswd -nB &#039;&#039;user&#039;&#039;) | sed -e &amp;quot;s/\\$/\\$\\$/g&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Benutzer und Passwort in &#039;&#039;docker-compose.yml&#039;&#039; =&lt;br /&gt;
* Damit Traefik weiß, dass die Basic-Auth-Middleware benutzt werden soll, muss der Container/Service das Label tragen&lt;br /&gt;
* Die Middleware muss dann einem Router zugewiesen werden&lt;br /&gt;
* &#039;&#039;&#039;cd &#039;&#039;/pfad/zum/dienst&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;docker-compose.yml&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
version: &amp;quot;3&amp;quot;&lt;br /&gt;
services:&lt;br /&gt;
  whoami:&lt;br /&gt;
    image: traefik/whoami&lt;br /&gt;
	labels:&lt;br /&gt;
	  - &amp;quot;traefik.http.routers.whoami.rule=Path(`/whoami`)&amp;quot;&lt;br /&gt;
	  - &amp;quot;traefik.http.middlewares.my-auth.basicauth.users=user1:passwort-hash,user2:passwort-hash&amp;quot;&lt;br /&gt;
	  - &amp;quot;traefik.http.routers.whoami.middlewares=my-auth&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Benutzer und Passwort separat =&lt;br /&gt;
== Auf Docker-Host ==&lt;br /&gt;
* &#039;&#039;&#039;cd &#039;&#039;/pfad/zum/dienst&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;docker-compose.yml&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
version: &amp;quot;3&amp;quot;&lt;br /&gt;
services:&lt;br /&gt;
  whoami:&lt;br /&gt;
    image: traefik/whoami&lt;br /&gt;
	labels:&lt;br /&gt;
	  - &amp;quot;traefik.http.routers.whoami.rule=Path(`/whoami`)&amp;quot;&lt;br /&gt;
	  - &amp;quot;traefik.http.middlewares.my-auth.basicauth.usersfile=/pfad/zur/datei&amp;quot;&lt;br /&gt;
	  - &amp;quot;traefik.http.routers.whoami.middlewares=my-auth&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Auf Traefik-Host ==&lt;br /&gt;
* Die Datei mit Benutzernamen und Passwort-Hashes muss nun für dem Traefik-Dienst zugänglich sein&lt;br /&gt;
* &#039;&#039;&#039;htpasswd -Bc &#039;&#039;/pfad/zur/datei&#039;&#039; &#039;&#039;user1&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;htpasswd -B &#039;&#039;/pfad/zur/datei&#039;&#039; &#039;&#039;user2&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Der erste Befehl benutzt &#039;&#039;&#039;Bcrypt&#039;&#039;&#039; und erstellt die Datei, falls diese noch nicht existiert&lt;br /&gt;
* Der zweite Befehl benutzt &#039;&#039;&#039;Bcrypt&#039;&#039;&#039; und fügt zusätzlich &#039;&#039;user2&#039;&#039; hinzu&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
https://doc.traefik.io/traefik/middlewares/overview/&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Docker_Traefik_Middleware_Passwort_Schutz&amp;diff=58444</id>
		<title>Docker Traefik Middleware Passwort Schutz</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Docker_Traefik_Middleware_Passwort_Schutz&amp;diff=58444"/>
		<updated>2024-11-15T10:42:31Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: /* Benutzer und Passwort in docker-compose.yml */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Docker]]&lt;br /&gt;
[[Kategorie:Traefik]]&lt;br /&gt;
= Funktion =&lt;br /&gt;
* Bevor die Anfrage vom Client an den Server geleitet wird, muss dieser sich anmelden&lt;br /&gt;
* Die Zugangsdaten können entweder in &#039;&#039;docker-compose.yml&#039;&#039; geschrieben oder in eine andere Datei ausgelagert werden&lt;br /&gt;
* Die Passwörter müssen mit MD5, SHA1, or BCrypt gehasht werden.&lt;br /&gt;
&lt;br /&gt;
= Passwort-Hashes =&lt;br /&gt;
* Der einfachste Weg für die Generation der Passwort-Hashes ist &#039;&#039;&#039;htpasswd&#039;&#039;&#039;, welches im Paket &#039;&#039;&#039;apache2-utils&#039;&#039;&#039; enthalten ist&lt;br /&gt;
* &#039;&#039;&#039;apt install apache2-utils&#039;&#039;&#039;&lt;br /&gt;
* Falls $-Zeichen im Hash auftauchen, müssen diese durch ein weiteres $ in YAML entwertet werden&lt;br /&gt;
* &#039;&#039;&#039;echo $(htpasswd -nB &#039;&#039;user&#039;&#039;) | sed -e &amp;quot;s/\\$/\\$\\$/g&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Benutzer und Passwort in &#039;&#039;docker-compose.yml&#039;&#039; =&lt;br /&gt;
* Damit Traefik weiß, dass die Basic-Auth-Middleware benutzt werden soll, muss der Container/Service das Label tragen&lt;br /&gt;
* Die Middleware muss dann einem Router zugewiesen werden&lt;br /&gt;
* &#039;&#039;&#039;cd &#039;&#039;/pfad/zum/dienst&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;docker-compose.yml&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
version: &amp;quot;3&amp;quot;&lt;br /&gt;
services:&lt;br /&gt;
  whoami:&lt;br /&gt;
    image: traefik/whoami&lt;br /&gt;
	labels:&lt;br /&gt;
	  - &amp;quot;traefik.http.routers.whoami.rule=Path(`/whoami`)&amp;quot;&lt;br /&gt;
	  - &amp;quot;traefik.http.middlewares.my-auth.basicauth.users=user1:passwort-hash,user2:passwort-hash&amp;quot;&lt;br /&gt;
	  - &amp;quot;traefik.http.routers.whoami.middlewares=my-auth&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Benutzer und Passwort separat =&lt;br /&gt;
== Auf Docker-Host ==&lt;br /&gt;
* &#039;&#039;&#039;cd &#039;&#039;/pfad/zum/dienst&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;vim &#039;&#039;docker-compose.yml&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
version: &amp;quot;3&amp;quot;&lt;br /&gt;
services:&lt;br /&gt;
  whoami:&lt;br /&gt;
    image: traefik/whoami&lt;br /&gt;
	labels:&lt;br /&gt;
	  - &amp;quot;traefik.http.routers.whoami.rule=Path(`/whoami`)&amp;quot;&lt;br /&gt;
	  - &amp;quot;traefik.http.middleware.my-auth.basicauth.usersfile=/pfad/zur/datei&amp;quot;&lt;br /&gt;
	  - &amp;quot;traefik.http.routers.whoami.middlewares=my-auth&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Auf Traefik-Host ==&lt;br /&gt;
* Die Datei mit Benutzernamen und Passwort-Hashes muss nun für dem Traefik-Dienst zugänglich sein&lt;br /&gt;
* &#039;&#039;&#039;htpasswd -Bc &#039;&#039;/pfad/zur/datei&#039;&#039; &#039;&#039;user1&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;htpasswd -B &#039;&#039;/pfad/zur/datei&#039;&#039; &#039;&#039;user2&#039;&#039; &#039;&#039;&#039;&lt;br /&gt;
* Der erste Befehl benutzt &#039;&#039;&#039;Bcrypt&#039;&#039;&#039; und erstellt die Datei, falls diese noch nicht existiert&lt;br /&gt;
* Der zweite Befehl benutzt &#039;&#039;&#039;Bcrypt&#039;&#039;&#039; und fügt zusätzlich &#039;&#039;user2&#039;&#039; hinzu&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
https://doc.traefik.io/traefik/middlewares/overview/&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Kubernetes_Einf%C3%BChrung&amp;diff=58443</id>
		<title>Kubernetes Einführung</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Kubernetes_Einf%C3%BChrung&amp;diff=58443"/>
		<updated>2024-11-14T21:46:39Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Kubernetes]]&lt;br /&gt;
= [[Minikube]] =&lt;br /&gt;
* Als Einstieg in Kubernetes kann man Minikube aufsetzen&lt;br /&gt;
* Minikube bietet die Möglichkeit, ein K8s-Cluster mit nur einem Host zu benutzen&lt;br /&gt;
* Außerdem gibt es eine Weboberfläche mit der man das Cluster administrieren kann&lt;br /&gt;
&lt;br /&gt;
= Zustandloses Gästebuch mit einer Redis-Datenbank =&lt;br /&gt;
* Minikube kann nun benutzt werden, um weitere Deployments zu erstellen&lt;br /&gt;
* Gehen Sie die Schritte der offiziellen Dokumentation durch: https://kubernetes.io/docs/tutorials/stateless-application/guestbook/&lt;br /&gt;
* Beim Befehl für das Portforwarding zum Frontend sollte die Addresse des Hosts auf 0.0.0.0 gesetzt werden&lt;br /&gt;
* &#039;&#039;&#039;kubectl port-forward --address 0.0.0.0 svc/frontend 8888:80&#039;&#039;&#039;&lt;br /&gt;
* Diese Applikation hat keinen persistenten Speicher&lt;br /&gt;
&lt;br /&gt;
= Wordpress mit einer persistenten MySQL-Datenbank = &lt;br /&gt;
* Gehen Sie die Schritte der offiziellen Dokumentation durch: https://kubernetes.io/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/&lt;br /&gt;
* Am Ende muss der Service über Portforwarding erreichbar gemacht werden&lt;br /&gt;
* &#039;&#039;&#039;kubectl port-forward --address 0.0.0.0 service/wordpress 8889:80&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;kubectl logs -f deployment/wordpress&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Kubernetes_Einf%C3%BChrung&amp;diff=58442</id>
		<title>Kubernetes Einführung</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Kubernetes_Einf%C3%BChrung&amp;diff=58442"/>
		<updated>2024-11-14T21:27:37Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Kubernetes]]&lt;br /&gt;
= [[Minikube]] =&lt;br /&gt;
* Als Einstieg in Kubernetes kann man Minikube aufsetzen&lt;br /&gt;
* Minikube bietet die Möglichkeit, ein K8s-Cluster mit nur einem Host zu benutzen&lt;br /&gt;
* Außerdem gibt es eine Weboberfläche mit der man das Cluster administrieren kann&lt;br /&gt;
&lt;br /&gt;
= Zustandloses Gästebuch mit einer Redis-Datenbank =&lt;br /&gt;
* Minikube kann nun benutzt werden, um weitere Deployments zu erstellen&lt;br /&gt;
* Gehen Sie die Schritte der offiziellen Dokumentation durch: https://kubernetes.io/docs/tutorials/stateless-application/guestbook/&lt;br /&gt;
* Beim Befehl für das Portforwarding zum Frontend sollte die Addresse des Hosts auf 0.0.0.0 gesetzt werden&lt;br /&gt;
* &#039;&#039;&#039;kubectl port-forward --address 0.0.0.0 svc/frontend 8888:80&#039;&#039;&#039;&lt;br /&gt;
* Diese Applikation hat keinen persistenten Speicher&lt;br /&gt;
&lt;br /&gt;
= Wordpress mit einer persistenten MySQL-Datenbank = &lt;br /&gt;
* Gehen Sie die Schritte der offiziellen Dokumentation durch: https://kubernetes.io/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Kubernetes_Einf%C3%BChrung&amp;diff=58441</id>
		<title>Kubernetes Einführung</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Kubernetes_Einf%C3%BChrung&amp;diff=58441"/>
		<updated>2024-11-14T21:26:06Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Kubernetes]]&lt;br /&gt;
= [[Minikube]] =&lt;br /&gt;
* Als Einstieg in Kubernetes kann man Minikube aufsetzen&lt;br /&gt;
* Minikube bietet die Möglichkeit, ein K8s-Cluster mit nur einem Host zu benutzen&lt;br /&gt;
* Außerdem gibt es eine Weboberfläche mit der man das Cluster administrieren kann&lt;br /&gt;
&lt;br /&gt;
= Zustandloses Gästebuch mit einer Redis-Datenbank =&lt;br /&gt;
* Minikube kann nun benutzt werden, um weitere Deployments zu erstellen&lt;br /&gt;
* Gehen Sie die Schritte der offiziellen Dokumentation durch: https://kubernetes.io/docs/tutorials/stateless-application/guestbook/&lt;br /&gt;
* Beim Befehl für das Portforwarding zum Frontend sollte die Addresse des Hosts auf 0.0.0.0 gesetzt werden&lt;br /&gt;
* &#039;&#039;&#039;kubectl port-forward --address 0.0.0.0 svc/frontend 8888:80&#039;&#039;&#039;&lt;br /&gt;
* Diese Applikation hat keinen persitenten Speicher&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Kubernetes_Einf%C3%BChrung&amp;diff=58440</id>
		<title>Kubernetes Einführung</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Kubernetes_Einf%C3%BChrung&amp;diff=58440"/>
		<updated>2024-11-14T21:24:30Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Kubernetes]]&lt;br /&gt;
= [[Minikube]] =&lt;br /&gt;
* Als Einstieg in Kubernetes kann man Minikube aufsetzen&lt;br /&gt;
* Minikube bietet die Möglichkeit, ein K8s-Cluster mit nur einem Host zu benutzen&lt;br /&gt;
* Außerdem gibt es eine Weboberfläche mit der man das Cluster administrieren kann&lt;br /&gt;
&lt;br /&gt;
= Zustandloses Gästebuch mit einer Redis-Datenbank =&lt;br /&gt;
* Minikube kann nun benutzt werden, um weitere Deployments zu erstellen&lt;br /&gt;
* Gehen Sie die Schritte der offiziellen Dokumentation durch: https://kubernetes.io/docs/tutorials/stateless-application/guestbook/&lt;br /&gt;
* Beim Befehl für das Portforwarding zum Frontend sollte die Addresse des Hosts auf 0.0.0.0 gesetzt werden&lt;br /&gt;
* &#039;&#039;&#039;kubectl port-forward --address 0.0.0.0 svc/frontend 8888:80&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
	<entry>
		<id>https://wiki.xinux.net/index.php?title=Kubernetes_Einf%C3%BChrung&amp;diff=58439</id>
		<title>Kubernetes Einführung</title>
		<link rel="alternate" type="text/html" href="https://wiki.xinux.net/index.php?title=Kubernetes_Einf%C3%BChrung&amp;diff=58439"/>
		<updated>2024-11-14T21:24:15Z</updated>

		<summary type="html">&lt;p&gt;Linkai.zhang: Die Seite wurde neu angelegt: „Kategorie:Kubernetes = Minikube = * Als Einstieg in Kubernetes kann man Minikube aufsetzen * Minikube bietet die Möglichkeit, ein K8s-Cluster mit nur eine…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Kubernetes]]&lt;br /&gt;
= Minikube =&lt;br /&gt;
* Als Einstieg in Kubernetes kann man Minikube aufsetzen&lt;br /&gt;
* Minikube bietet die Möglichkeit, ein K8s-Cluster mit nur einem Host zu benutzen&lt;br /&gt;
* Außerdem gibt es eine Weboberfläche mit der man das Cluster administrieren kann&lt;br /&gt;
&lt;br /&gt;
= Zustandloses Gästebuch mit einer Redis-Datenbank =&lt;br /&gt;
* Minikube kann nun benutzt werden, um weitere Deployments zu erstellen&lt;br /&gt;
* Gehen Sie die Schritte der offiziellen Dokumentation durch: https://kubernetes.io/docs/tutorials/stateless-application/guestbook/&lt;br /&gt;
* Beim Befehl für das Portforwarding zum Frontend sollte die Addresse des Hosts auf 0.0.0.0 gesetzt werden&lt;br /&gt;
* &#039;&#039;&#039;kubectl port-forward --address 0.0.0.0 svc/frontend 8888:80&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Linkai.zhang</name></author>
	</entry>
</feed>