open:it:firewall
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
open:it:firewall [2023/08/30 10:53] – angelegt - Externe Bearbeitung 127.0.0.1 | open:it:firewall [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Schnittstellen ====== | ||
- | |||
- | ===== Firewall ===== | ||
- | UFW = Uncomplicated Firewall \\ | ||
- | |||
- | Firewall installieren | ||
- | sudo apt install ufw | ||
- | |||
- | Zugriff der Standards erlauben (unbedingt 22/ssh oder OpenSSH vor dem Start von UFW, sonst ggf. kein Zugriff mehr auf den Server!!!!) | ||
- | Zugriff per SSH | ||
- | sudo ufw allow OpenSSH | ||
- | oder | ||
- | sudo ufw allow ssh | ||
- | |||
- | Weitere Freigabe-Ports | ||
- | |||
- | * 22 = SSH/FTP | ||
- | * 80 = HTTP | ||
- | * 443 = HTTPS | ||
- | * 445 = File-Server, | ||
- | * 3306 = MySQL-Datenbank (i.d.R. nur als lokaler Zugriff erforderlich) | ||
- | * 51820 = VPN, siehe [[open: | ||
- | |||
- | Freigabe auch über Port-Nummer möglich, z.B.: | ||
- | sudo ufw allow 80 | ||
- | Firewall aktivieren | ||
- | sudo ufw enable | ||
- | Firewall deaktivieren | ||
- | sudo ufw disable | ||
- | Firewall neu starten | ||
- | sudo ufw reload | ||
- | Status anzeigen | ||
- | sudo ufw status | ||
- | numbered = durchnummeriert. Nummern werden zum Löschen einzelner Freigaben benötigt. \\ | ||
- | sudo ufw status numbered | ||
- | Genutzte Ports anzeigen | ||
- | ss -nptl | ||
- | Deaktivieren einzelner Freigaben | ||
- | sudo ufw deny ssh | ||
- | Löschen einzelner Freigaben | ||
- | sudo ufw delete < | ||
- | < | ||
- | |||
- | ===== SSH ===== | ||
- | Secure Shell oder SSH bezeichnet ein kryptographisches Netzwerkprotokoll für den sicheren Betrieb von Netzwerkdiensten über ungesicherte Netzwerke. \\ | ||
- | |||
- | Empfehlenswert: | ||
- | * Direkter Login von root untersagen | ||
- | * Zugang nur mit Schlüssel - login ohne Schlüssel (nur Passwort) unterbinden | ||
- | * Optional: Beschränkter Zugriff über SFTP auf definierte Bereiche | ||
- | |||
- | Hinweise: https:// | ||
- | |||
- | ==== SSH-Schlüssel ==== | ||
- | Für den Zugriff mit einem Schlüssel muss zunächst einer generiert werden. Dabei wird i.d.R. ein Schlüsselpaar generiert, das aus einem privaten und einem öffentlichen Schlüssel besteht und das miteiander agiert. Der private Schlüssel bleibt lokal und geheim, der öffentliche wird an externe Systeme verteilt. | ||
- | |||
- | === SSH-Key unter Linux generieren === | ||
- | Auf einem (lokalen) Linux-System das Programm open-ssh-client installieren und Schlüssel generieren. | ||
- | |||
- | sudo apt install openssh-client | ||
- | |||
- | ssh-keygen -t rsa -b 4096 | ||
- | |||
- | t = Typ (hier rsa) \\ | ||
- | b = Schlüssellänge (hier 4096 Bit) \\ | ||
- | |||
- | Schlüssel liegt automatisch im (versteckten) Verzeichnis ~/.ssh/ \\ | ||
- | Den Schlüssel ohne Passwort zu generieren, vereinfacht das Login, da dann später kein Passwort mehr angegeben werden muss. Wird der private Schlüssel aber zu anderen Systemen transferiert, | ||
- | |||
- | **Der private Schlüssel muss unbedingt vor fremdem Zugriff geschützt bleiben!** | ||
- | |||
- | Es werden 2 Dateien angelegt: | ||
- | * id_rsa (privater Schlüssel) | ||
- | * id_rsa.pub (öffentlicher Schlüssel) | ||
- | |||
- | Der öffentliche Schlüssel wird auf das entfernte System übertragen, | ||
- | Der private Schlüssel bleibt auf dem lokal System, auf dem er generiert wurde. Für jedes weitere (lokale) System sollte jeweils ein eigener Schlüssel generiert werden.\\ | ||
- | |||
- | Zur Übertragung auf einen Server muss der User bereits dort angelegt sein und der Zugriff ohne Schlüssel (i.d.R. mit Passwort) sollte temporär freigegeben sein. \\ | ||
- | Den öffentlichen Schlüssel(id_rsa.pub) wie folgt auf den Server übertragen: | ||
- | |||
- | ssh-copy-id < | ||
- | |||
- | Ersetzen: < | ||
- | Das Passwort vom < | ||
- | |||
- | Im < | ||
- | Parallel wird auf dem lokalen (Linux-)Rechner der (neue) entfernte Host in der Datei **~/ | ||
- | |||
- | === SSH-Key mit Putty generieren === | ||
- | Alternativ ist es möglich, mit dem Programm [[https:// | ||
- | |||
- | Die Datei hat folgende Struktur (alles hintereinander): | ||
- | |||
- | * ssh-rsa | ||
- | * rsa-pub-key << der eigentliche Schlüssel aus Puttygen \\ | ||
- | * Key Kommentar << Im Textblock von puttygen bereits enthalten\\ | ||
- | |||
- | Liegt bereits ein SSH-Key vor (z.B. erstellt wie oben beschrieben), | ||
- | Programm PuTTYgen: Private-key importieren und als PuTTY-private-key speichern. \\ | ||
- | |||
- | Schlüssel von PuTTY können von diversen Systemen (FileZilla, etc.) genutzt werden, sofern der Public-Key im entfernten Server hinterlegt ist. Da dieser Schlüssel kopier- und übertragbar ist, sollte er immer zusätzlich mit einem Passwort geschützt sein. | ||
- | |||
- | Für Konvertierung Programm **PuTTYgen** aufrufen. | ||
- | |||
- | - Load an existing private key file | ||
- | - Save private key >> jetzt mit Endung .ppk | ||
- | |||
- | ==== Login ==== | ||
- | === Login über Linux-Shell === | ||
- | |||
- | Login mit Passwort oder wenn der key im < | ||
- | |||
- | ssh < | ||
- | |||
- | < | ||
- | |||
- | Beim ersten Login, wenn der public-key noch nicht auf dem Server ist oder dieser sich geändert hat, muss dieser im Remote-Server registriert werden. Entweder wie oben beschrieben mit (ssh-copy-id ...) oder mit folgender Methode: | ||
- | |||
- | ssh -i ~/ | ||
- | |||
- | * ~/ | ||
- | * < | ||
- | |||
- | Beim ersten Login erfolgt eine Validierung mit dem Passwort des Systems. Bei Folgeaufrufen nur noch mit dem PW des SSH-Keys bzw. wenn keines vergeben wurde, ohne PW. \\ | ||
- | |||
- | Beim ersten Login werden die dann bekannten Hosts lokal in **~/ | ||
- | |||
- | Wurde der Schlüssel am Server geändert, oder der Server neu eingerichtet, | ||
- | |||
- | ssh-keygen -f " | ||
- | |||
- | === Login mit PuTTY === | ||
- | |||
- | Mit PuTTY die Verbindung wie folgt definieren: \\ | ||
- | * < | ||
- | * Port (weglassen, wenn 22 - Normalfall) | ||
- | * SSH | ||
- | * Name (Saved Session) | ||
- | * / | ||
- | * Option: / | ||
- | * Option: / | ||
- | * Zurück auf " | ||
- | |||
- | === Login mit FileZilla === | ||
- | Für den Zugriff kann die mit Puttygen generierte .ppk-Datei genutzt werden. \\ | ||
- | Verbindungsart: | ||
- | |||
- | ==== SSH-Zugriff am Server konfigurieren ==== | ||
- | |||
- | sudo nano / | ||
- | |||
- | ClientAliveInterval 1200 | ||
- | ClientAliveCountMax 3 | ||
- | | ||
- | PermitRootLogin no | ||
- | PasswordAuthentication no | ||
- | Subsystem sftp internal-sftp | ||
- | |||
- | PermitRootLogin nur deaktivieren, | ||
- | The **ClientAliveInterval** parameter specifies the time in seconds that the server will wait before sending a null packet to the client system to keep the connection alive. \\ | ||
- | The **ClientAliveCountMax** parameter defines the number of client alive messages which are sent without getting any messages from the client. \\ | ||
- | Timeout value = ClientAliveInterval * ClientAliveCountMax \\ | ||
- | Beispiel: 1200 x 3 = 3600 ~ 1 Stunde. \\ | ||
- | Nach Änderungen muss der SSH-Service neu gestartet werden. | ||
- | |||
- | sudo systemctl reload ssh | ||
- | ==== Dateien kopieren über SSH ==== | ||
- | Dafür __nicht__ vorab auf dem Remote-Server einloggen, sondern vom lokalen Rechner ausführen. | ||
- | |||
- | Kopieren der Datei “foobar.txt” von einem entfernten Rechner auf den lokalen Rechner. | ||
- | scp < | ||
- | Kopieren der Datei “foobar.txt” vom lokalen Rechner auf einen entfernten Rechner. | ||
- | scp foobar.txt < | ||
- | Kopieren der Datei “foobar.txt” vom Remote-Host “< | ||
- | scp < | ||
- | Einzelne Verzeichnisse kopieren. \\ | ||
- | Kopieren des Verzeichnisses “foo” vom lokalen Rechner in das Verzeichnis “bar” eines entfernten Rechners. | ||
- | scp -r foo < | ||
- | Quelle: https:// | ||
- | ==== Remote-Desktop ==== | ||
- | |||
- | Auf dem lokalen Rechner aktivieren. Firewall ufw zuvor installieren bzw. aktivieren. | ||
- | |||
- | sudo apt install xrdp | ||
- | sudo systemctl enable --now xrdp | ||
- | |||
- | ggf. dieser Befehl | ||
- | |||
- | sudo ufw allow from any to any port 3389 proto tcp | ||
- | |||
- | Dann Zugriff auch über Window-Remote-Desktop. | ||
- | |||
- | |||
- | ~~DISCUSSION~~ | ||
- | |||
open/it/firewall.1693385615.txt.gz · Zuletzt geändert: 2024/06/22 10:15 (Externe Bearbeitung)