Ein Weg, wie man eine Webserver auf Service-Ebene schützen kann. Teil 2

In meinen letzten Artikel habe ich beschrieben, wie man die Sicherheit seines Webservers auf Server-Ebene etwas verbessern kann und somit ungewollte Verbindung zu unterbinden.

Au hier sein noch einmal gesagt, dass dies nicht der Weisheit letzter Schluss ist, sondern ein zusätzlicher Weg.

In diesem Artikel möchte ich nun darauf aufbauen und beschreiben, wie man nun diese Informationen dazu nutzen kann, eine eigene Block-Regel in einer opnsense-Firewall aufzubauen und mit diesen IP-Adressen zu füllen.

Da das Skript, dass die IP-Adresse bei der opnsense einträgt ein Python-Skript ist, muss also noch Python installiert sein. Dass sollte aber auch kein Problem sein. Wenn man z.B. den certbot für letsencrypt auf dem selben Webserver installiert hat, dann sollte Python bereits mit drauf sein. Es kann sein, dass man das Modul „py38-requests“ nachinstallieren muss. Diese brauchen wir um den API-Request an die Firewall aufzubauen und abzuschicken.

Inhalt:

  1. Erstellung eines Skriptes zum Sammeln von IP-Adressen in einer Text-Datei.
  2. Umbau der Server-Konfiguration zum Sammeln der IP-Adressen.
  3. Einrichten eines Benutzers auf der opnsense-Firewall zur Nutzung der API
  4. Aufbau einer Filter-Regel für die Blockierung von IP-Adressen

Ein Weg, wie man eine Webserver auf Service-Ebene schützen kann. Teil 1

Ich bringe mal wieder eine mehrteilige Artikelserie auf, weil das Thema etwas komplexer ist und sich mit den Teilen gut aufteilen lässt. Außerdem sollte dies jedem, der einen Webserver im Internet zur Verfügung stellt bewußt sein.

Es soll heute darum gehen, wie ich meine Webserver, der ja aus dem Internet erreichbar ist, etwas besser absichern kann.

Dies ist nicht der ultimative Weg, soll aber zeigen, wie man den Webserver als Dienst ganz gut absichern kann.

Erste Voraussetzung ist, dass der Webserver immer auf die aktuelle Version gebracht wird. Es nützt nichts, immer zu sagen, ja, meine Internetseite ist doch so unbedeutend, da wird schon nichts passieren. Diese Annahme ist schon aus 2 Gründen falsch.

  • Für einen potenziellen Hacker ist alle Zugänge zu einem Webserver interessant. Egal ob das ein gut-laufendes Unternehmen oder der Blog der Familie ist oder der kleine Garten-Verein um die Ecke. Von solchen Webservern kann man angriffe starten.
  • Für die Welt mag der Internet-Auftritt vielleicht nicht der Hit sein oder die Lösung aller Probleme bringen, ABER (!) für die Betreiber und die Besucher der Seite ist der Inhalt wichtig. Werden diese verschlüsselt, dann sind die Daten weg.

Linux unter bhyve

Linux und bhyve sind gar nicht soooo kompliziert. Als bhyve-Tool nutzen ich vm-bhyve.

Ich habe mir aber erlaubt, diese ganz Grub-Konfigurationen weg zu lassen. Das ist aus meiner Sicht nur Over-head,

loader=“uefi“
cpu=2
cpu_sockets=1
cpu_cores=1
cpu_threads=2
memory=8G
graphics=“yes“
graphics_port=“5911″
graphics_listen=“127.0.0.1″
graphics_res=“1920×1080″
graphics_wait=“no“
xhci_mouse=“yes“
disk0_type=“virtio-blk“
disk0_name=“linuxmint.img“
uuid=“…-…-…-…-…“
utctime=“yes“
network0_type=“virtio-net“
network0_switch=“public“
network0_mac=“xx:xx:xx:xx:xx:xx“

Das installierte Linux ist ein Linux Mint, dass mit dieser Konfiguration fast nativ auf meiner Workstation läuft.

Die Installation von virtIO war nicht nötig, da diese hier automatisch eingerichtet wurde.

Warum sollte man da noch extra schrauben?

Windows unter bhyve

Es ist ja gar kein Geheimnis mehr, und ja es gibt schon viele Anleitungen zu bhyve und Windows 10.

Zum Management von den VMs unter bhyve nutze ich vm-bhyve, weil es genau das macht, was ich brauche.

Ich will hier nur meine Konfiguration für Windows ablegen.

loader=“uefi“
cpu=4
cpu_sockets=1
cpu_cores=2
cpu_threads=2
memory=8G
graphics=“yes“
graphics_port=“5910″
graphics_listen=“127.0.0.1″
graphics_res=“1920×1080″
graphics_wait=“no“
xhci_mouse=“yes“
disk0_dev=“file“
disk0_type=“ahci-hd“
disk0_name=“windows10.img“
network0_type=“virtio-net“
network0_switch=“public“
network0_mac=“xx:xx:xx:xx:xx:xx“
uuid=…-…-…-…-…“
utctime=“no“

Wie man sehen kann ist hier wirklich nichts kompliziertes dabei.

Auf die Nutzung von virtIO habe ich verzichtet, weil die Performance so für mich ganz gut ausreicht.

Bug-fixing mit Downgrade, auch eine Lösung…

Der Umstieg von FreeBSD 12.2 auf 13.0 ist geschafft. Gleichzeitig habe ich eine neue Workstation in Betrieb genommen. Diese Schritte waren nicht einfach, aber dafür lehrreich. eine anleitung für ein Upgrade kann man auf der Release-Informationsseite von FreeBSD unter https://www.freebsd.org/releases/13.0R/installation/ finden.

Natürlich ist mit Version 13.0-RELEASE auch die Software aktualisiert worden. Das dies diesmal nicht von Vorteil war habe ich gemerkt, wie ich meine Radio-Sendung vorbereiten wollte und hier den Uplink zum Streamingserver getestet habe.

Was tun, wenn man mit GIMP keine Screenshots mehr erstellen kann.

Der Titel verrät schon, warum dies Thema zu panischen Reaktionen führen kann.

GIMP gehört zu einen der wichtigsten Programmen, wenn man Bilder bearbeiten möchte oder Artikel schreibt. Man schnell ein Fenster aufnehmen, damit der Artikel auch schön bunt und verständlich wird. Was nur wenn GIMP bei Starten der Screenshot Funktion folgende Fehlermeldung ausgibt?

GIMP-Meldung
Fehler beim Ausführen von >>Bildschirmfoto<<:
GDBus.Error:org.freedesktop.DBUS-Error.UnknownObject: No such object path '/Screenshot'

USB-Audio-Interface & Headset im Griff

Homeoffice ist ja nun auch bei fast jedem angekommen. Auch ich musste ins Homeoffice. Dabei hat sich für mich eine ganz neue Situation ergeben.

Ein Headset für Telefon-/Video-Konferenzen musste angeschafft werden. Bis dahin habe ich ja sehr erfolgreich das Focusrite Scarlet 2i2 für Audio-Aufnahmen und Podcasts verwendet. Nun hat es sich aber ergeben, dass es sehr aufwendig ist, den Mikrofonarm zu holen und positionieren, den Kopfhörer zu suchen und so weiter.

Ports für jitsi

Damit man auf den jitsi-Server zugreifen kann, muss man folgende Ports öffnen.

jitsi

DienstProtokollPortnummer
HTTPTCP80
HTTPSTCP443
RTPTCP/UDP10000-20000
TURN ServerTCP/UDP10000-20000

Die beiden letzten Einträge können ja nach Installation variieren.

Wichtiger Port für openVPN

openVPN ist eine Dienst zum Aufbau von VPN-Verbindungen. Da die Software open-Source ist und auf sehr vielen Plattformen läuft wird diese für Geolocation oder private VPN-Netzwerke eingesetzt. openVPN benutzt nur einen Port und dieser kann beliebig gewählt werden. Der hier angegebene ist der Standard-Port.

openVPN

DienstProtokollPortnummer
openVPNUDP1194

Wichtiger Port für Secure Shell (ssh)

Der ssh-Dienst ist einer der wichtigsten Dienste um mit Servern zu kommunizieren. Eine Grafische Oberfläche ist nicht nötig und es wird sehr Bandbreite benötigt. Die meisten Server haben den ssh-Dienst bereits installiert und eingerichtet.

ssh-Dienst

DienstProtokollPortnummer
SSHTCP22