Beat Caveng, Developer bei A-Enterprise GmbH. Blog Author zu den Themen, Python und Open Source. Tutorials zu Python Problemlösungen und Shell Scripts.
Das neue Windows Terminal hat sich entwickelt und erreicht die Parität sich mit modernen Terminals anderer Betriebssysteme wie dem GNOME Terminal messen zu lassen. Es ist nicht nur kostenlos, es kann sich auch mit den bekannten Terminal Tools unter Windows sehen lassen, wie beispielsweise PuTTY und KiTTY.
Dieses Tutorial beschreibt das starten einer SSH-Terminal Sitzung unter Windows, geöffnet wird die Verbindung aus dem KeePass Manager, dem bekannten Passwort Safe, und unter Verwendung von OpenSSH und dem Windows Terminal. Voraussetzung ist, das OpenSSH auf dem Windows Rechner installiert ist, aus Apps & Features – Optionale Features. Das Windows Terminal ist im Microsoft Store zu finden.
Windows Terminal ist für die Batchverarbeitung mit Pfad ausführbar.
%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe
Hier aus KeePass über das Feld URL mit dem „cmd://“ Argument.
Für den Eintrag in KeePass in das Feld URL folgende Zeile hinzufügen.
Aus dem Feld „Title“ wird der Hostname in {TITLE} übergeben, und aus „User name“ die Benutzer-ID in {USERNAME}. Wird ein abweichender Port für SSH verwendet muss der Port angegeben werden, zB. -p 60622
Mit OK den Eintrag schliessen und speichern. Ein Doppel-Klick auf den Eintrag in der Spalte URL öffnet das Windows Terminal.
Der Host Eintrag wird in der Windows Terminal Einstellungen (Ctrl+,) hinzugefügt, mit Neues Profil hinzufügen.
Tipp! Mit ssh-keyen generierte Schlüssel lassen sich SSH Sitzungen ohne Passwort Eingabe und dazu noch sicherer nutzen.
Dazu legt man unter dem Homepfad %USERPROFILE% den Ordner .ssh an, in diesem Privat und Public Keys abgelet werden, mit anlegen der Datei config kann der Host konfiguriert werden, mit der zuweisung von Hostname und dem passenden Privat Key.
Host vm126
HostName 10.10.0.11
User james
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 60
Der Public Key (id_rsa.pub) wird auf dem Remote Host unter ~/.ssh/authorized_keys gespeichert.
Mehr Sicherheit mit GeoIP Regeln für den Debian und Ubuntu Server
In diesem Turorial wird die Bereitstellung und Anwndung von GeoIP mit der Kernel Firewall von Debian 10 (buster) und Debian 11 (bullseye) oder Ubuntu 20.04 LTS angewandt. Neben TLS-Verbindungen und 2FA Authentifizierung ist ein weiteres Bindeglied eine Firewall, die den erlaubten Datenverkehr regulieren kann. Anhand der öffentlichen IP-Adresse kann recht gut ermittelt werden aus welcher Stadt oder aus welcher Region der Zugriff gerade stattfindet.
Dabei sollten überlegungen gemacht werden, ob die Erreichbarkeit der Websites und Dienste aus Ländern fernab hiesiger Sprachen überhaupt zweckmässig ist, auch werden möglicherweise zu fernen Regionen keine Beziehungen gepflegt, so beispielsweise in den Südpazifik. Wenn gleich bei der Verfolgung von Brute-Force und DDoS Angriffe, die Quellen häufig in Fernost und Russland zu finden sind.
Ein Geolokationssystem wird benutzt um den Standort von Systemen zu ermitteln. Im Internet kann eine IP-Adresse einem Land, einer Stadt oder einer Organisation zugeordnet werden, um anschließend den Standort zu bestimmten.
Installation
Die Installation der benötigten Dienste und Bibliotheken für GeoIP auf Debian und Ubuntu erfolgt als root mit „su -“ oder „sudo su -„.
Die GeoIP Datenbank muss von der MaxMind Website heruntergeladen werden, mit folgender URL: https://www.maxmind.com. MaxMind ist ein in Massachusetts ansässiges Unternehmen für digitale Kartierung, das Standortdaten für IP-Adressen bereitstellt.
MaxMind verlangt das man sich für den Free Account mit einer gültigen Email registriert. Nach dem anmelden gehts zu My Account und Download Databases.
Unter GeoIP2 and GeoIP Legacy Databases – GeoLite2-Country-CSV Format mit Download ZIP die Datei herunterladen.
Möchte man den Download mittels Permalink durchführen, braucht es ein Lizenz Key, diesen man unter „My Account – Manage License Keys“ generieren kann, der Download hat hier zu diesem Zeitpunkt nicht funktioniert (401 Unauthorized).
Der Inhalt der ZIP-Datei GeoLite2-Country-CSV_20220125.zip
Auf dem host ein neues Verzeichnis erstellen und zu diesem wechseln.
$ mkdir -p /usr/share/xt_geoip/
$ cd /usr/share/xt_geoip
Die heruntergeladene Datei Country-CSV_20220125.zip auf den Debian oder Ubuntu Server hochladen mit ftp oder scp, in den Verzeichnispfad /usr/share/xt_geoip und anschissend entpacken.
Die CSV-Daten werden konvertiert, mit dem Konverter für MaxMind CSV-Datenbank zu Binär für xt_geoip. Es erscheint die Ausgabe in etwa wie die folgende, hier in verkürzter Form.
729578 entries total
0 IPv6 ranges for
16 IPv4 ranges for
362309 IPv6 ranges for 0 0
365215 IPv4 ranges for 0 0
0 IPv6 ranges for 1 0
28 IPv4 ranges for 1 0
0 IPv6 ranges for AD Andorra
8 IPv4 ranges for AD Andorra
...
Das Modul xt_geoip in den Speicher laden mit anschließender Prüfung.
$ modprobe xt_geoip
$ lsmod | grep ^xt_geoip
Die Ausgabe sollte ähnlich wie hier sein.
xt_geoip 16384 34
Die GeoIP Integration für iptable ist nun abgeschlossen, es können jetzt Befehle mit folgender Syntax ausgeführt werden.
Die Ausgabe könnte in etwa wie die folgende aussehen.
Chain INPUT (policy DROP 259 packets, 13704 bytes)
num pkts bytes target prot opt in out source destination
1 68011 14M f2b-apache-auth tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443
2 155K 41M f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
3 272K 12M ufw-reject-input all -- * * 0.0.0.0/0 0.0.0.0/0
4 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country RU,CN
5 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country BY,CY
In diesem Beispiel wird Zeile 5 gelöscht.
$ iptables -D INPUT 5
ISO Country Code einer IP Adresse abfragen.
$ apt install geoip-bin
Beispiel Abfrage mit geoiplookup.
$ geoiplookup 61.219.11.151
GeoIP Country Edition: TW, Taiwan
Beispiel mit iptables und GeoIP
Ein Beispiel mit ISO Codes für Länder die als obskur oder als bekannte Sicherheitsrisikohäfen eingestuft werden und explizit gesperrt werden, die ISO Codes der DACH Länder sollen zugelassen werden.
$ iptables -P INPUT DROP
$ iptables -A INPUT -m geoip --src-cc AT,CH,DE -j ACCEPT
$ iptables -N DROP_GEOIP
$ iptables -A DROP_GEOIP -m geoip --src-cc ID -j DROP
$ iptables -A DROP_GEOIP -m geoip --src-cc KP -j DROP
$ iptables -A DROP_GEOIP -m geoip --src-cc TJ -j DROP
$ iptables -A DROP_GEOIP -m geoip --src-cc TM -j DROP
$ iptables -A DROP_GEOIP -m geoip --src-cc TR -j DROP
$ iptables -A DROP_GEOIP -m geoip --src-cc UA -j DROP
$ iptables -A DROP_GEOIP -m geoip ! --src-cc AT,CH,DE -j DROP
$ iptables -A INPUT -j DROP_GEOIP
Das Argument (!) invertiert die übergebenen Werte, hierdurch die ISO (AT,CH,DE) von Sprung zu DROP ausgeschlossen werden.
Die iptables INPUT Chain überprüfen mit line-numbers, die Ausgabe wie folgt zu diesem Beispiel.
$ iptables -L INPUT --line-numbers -vn
Chain INPUT (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 273K 12M ufw-after-logging-input all -- * * 0.0.0.0/0 0.0.0.0/0
2 273K 12M ufw-reject-input all -- * * 0.0.0.0/0 0.0.0.0/0
3 273K 12M ufw-track-input all -- * * 0.0.0.0/0 0.0.0.0/0
4 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country RU,CN
5 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country BY,CY
6 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country HK,KP
7 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country KG,KZ
8 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country UA,VN
9 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country MD,GE
10 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip --source-country TW,TM
11 102 5329 DROP_GEOIP all -- * * 0.0.0.0/0 0.0.0.0/0
12 90 4827 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 -m geoip ! --source-country AT,CH,DE
iptables-persistent
Die iptables Chains nach einem neu Start reaktivieren, dazu wird iptables-persistent installiert.
$ apt install iptables-persistent
Bestätige mit yes um die iptables während der installation zu sichern.
Die iptables Chains können mit iptables-save gesichert werden um sie zu einem späteren Zeitpunkt wiederherstellen zu können.
UNBLOG verwendet Cookies, um Dein Online-Erlebnis zu verbessern. Mit "ACCEPT" gibst Du Deine Zustimmung zur Nutzung dieser Website und unseren Datenschutzbestimmungen, oder wähle Cookie settings.
Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern, während Sie durch die Website navigieren. Von diesen werden die Cookies, die nach Bedarf kategorisiert werden, in Ihrem Browser gespeichert, da sie für das Funktionieren der grundlegenden Funktionen der Website wesentlich sind. Wir verwenden auch Cookies von Drittanbietern, mit denen wir analysieren und verstehen können, wie Sie diese Website nutzen. Diese Cookies werden nur mit Ihrer Zustimmung in Ihrem Browser gespeichert. Sie haben auch die Möglichkeit, diese Cookies zu deaktivieren. Das Deaktivieren einiger dieser Cookies kann sich jedoch auf Ihre Browser-Erfahrung auswirken.
Notwendige Cookies sind unbedingt erforderlich, damit die Website ordnungsgemäß funktioniert. Diese Kategorie enthält nur Cookies, die grundlegende Funktionen und Sicherheitsmerkmale der Website gewährleisten. Diese Cookies speichern keine persönlichen Informationen.
Alle Cookies, die für die Funktion der Website möglicherweise nicht besonders erforderlich sind und speziell zur Erfassung personenbezogener Daten des Benutzers über Analysen, Anzeigen und andere eingebettete Inhalte verwendet werden, werden als nicht erforderliche Cookies bezeichnet. Es ist obligatorisch, die Zustimmung des Benutzers einzuholen, bevor diese Cookies auf Ihrer Website ausgeführt werden.