Beiträge von Ente-Unser

    was spricht dagegen

    Ich bekomme genug Botanfragen ob ich net phpmyadmin drauf habe, und ich möchte nicht ausprobieren wie gut mein system hier mit einem login DDOS leben kann, oder ob alle Datenbanken hier auch gute Passwörter verwenden. Es ist eine indirekte Schnittstelle zur Datenbank, welche normalerweise extra nur auf localhost reagiert. Außerdem gibt es ja extra eine Config-Option für auto login.. Daher lieber garnicht erst zugänglich machen.

    Ich gebe mal eine Gegenmeinung: Ich habe lange f2b eingesetzt, ich nutze es seit einiger Zeit gar nicht mehr.


    F2B hat nämlich zwei Probleme. Erstens muss deine Applikation sowieso damit klar kommen, was so an Müll hereinkommt, dein SSH muss also auch entsprechend sicher sein. Damit hilft F2B daher nicht viel gegen einen echten verteilten Angriff. Und zweitens müllt es dir im Zweifel nur die Nftables mit IPs voll. Was bei IPv6 richtig lustig werden kann. AFAIK gab es irgendwann die Entscheidung daher ganze /64er Netze zu blocken, immerhin bekomme ich hier auch einfach ein ganzes /64er Netz, viel Spaß, das einzeln zu blockieren. Es zeigt aber die Problematik auf. Die ganzen Mails von F2B erzeugen dazu noch einiges an Noise.


    Daher würde ich einfach den Port von SSH ändern, key-login-only, am besten ohne Root. Und dann ein paar Ratelimits auf kritische Bereiche (login) packen, was dein Apache/Nginx/.. schon kann. Wenn einer dir wirklich böse will, dann wird die F2B vermutlich auch nicht mehr viel bringen, im zweifel ist deine Kiste dann einfach überfordert.

    Deine Sicherheit sollte nicht davon abhängen ob jemand zufällig rechtzeitig von F2B erwischt wird, bevor deine Systeme gehackt sind, und die paar Logins auf SSH sollten auch kein Problem sein. Gerade mit anderem Port.

    Für mysql/mariadb kannst du natürlich phpmyadmin nutzen um herum zu experimentieren, das nimmt einem anfänglich das erstellen von dem ganzen SQL ab und ermöglicht visuelles editieren. Für PostgreSQL gibts gleich 'ne ganzen admin oberfläche mitgeliefert. Phpmyadmin bitte _nicht_ öffentlich zugänglich machen, zur not pack es passwortgeschützt in einen Ordner aus 20 Zeichen an Zufall.

    Hier mal ein Beispiel.
    Alles nutzt eine numerische ID, da diese nur intern verwendet werden, und in keiner weise geändert werden müssen, im Gegensatz zu beispielsweise Namen. Deshalb sind Namen kein guter Key. (Eindeutigkeit von Namen lässt sich auch enforcen, dafür müssen das nicht die Primärschlüssel sein).

    Hier mal eine Version die es erlaubt dass Produkte sowohl so im Regalboden stehen, als auch in Kisten. Außerdem speichere ich alle Produkte erst mal nur mit dem Kaufdatum ab, eine Referenz auf die Produktdetails vereinheitlicht dann den Namen und die Haltbarkeit, das Ablaufdatum wird in meiner Version also anhand Kaufdatum + Haltbarkeit berechnet (was natürlich quatsch ist, weil du das Ablaufdatum ja nach Aufschrift nutzen musst, aber mal als Idee). Letztlich hat jedes Regal dann mehrere Regalböden und diese dann Kisten. Zum identifizieren nutze ich jetzt einfach Freitext, vielleicht hast du ja auch GPS Koordinaten oder ähnliches, lässt sich ja anpassen ;) Was auch gänzlich fehlt ist die Menge. Ich gehe hier bspw einfach von "Packung Nudeln" oder "Glas Marmelade" aus, die Menge ist dann Bestandteil des Produkts. Und wenn du halt 7x Marmelade hast, dann packst du 7x die Referenz zu der Kiste / Regalboden

    Damit sind wir bei 7 Tabellen.

    Wie strukturiere ich die Datenbank?
    1. Packe ich alle 500 Produkte in eine Tabelle oder mache ich eine Tabelle pro Regal? Oder ganz was anderes?
    2. Manche Produkte lagern in unterschiedlicher Stückzahl an verschiedenen Orten (fragt nicht), also zum Beispiel 5x Schokolade in Regal A und 10x Schokolade in Regal B. Da muss ich dann trotzdem pro Lagerort eine extra Zeile für das gleiche Produkt anlegen, oder?

    3. Wie baue ich die Tabelle dann für die jeweiligen Produkte auf?

    Du suchst etwas, das nennt sich Normalisierung:
    https://de.wikipedia.org/wiki/…_(Datenbank)#Normalformen

    Generell willst du definitiv zur zweiten Normalform kommen, am besten zur Dritten.
    Zum Modellieren empfehle ich https://www.draw.io und die UML Sektion.
    Ich habe mal ein eigenes Beispiel aus der Lehre angehängt.
    Jeder dieser UML "Blöcke" entspricht einer Tabelle, die Referenzen zwischen den Tabellen (Foreign Key) liegen, abhängig von der Kardinalität, entweder in einer Tabelle (1:n Beziehung) oder in einer Tabelle aus Referenzen (N:N), lässt sich auch als UML darstellen.

    Screenshot_20230130_181759.png

    Und ein weiterer ist gefallen.. Hatte die Wahl jemanden seine domain bei Netcup via Webhosting in eine Mail-Domain umwandeln zu lassen, oder zur mailigen Box zu schicken weil man die auch vor die eigene Domain packen kann. Ist letzteres geworden, keine Lust auf Blackholing.

    Muss ehrlich sagen ich fahre einfach manuelle nftables und gut ist. Verstehe den Aufwand für normale Linux-Büchsen so gar nicht.


    (Wer outgoing grundlegend blockiert hat entweder sehr genaue Ahnung wohin seine Box alles läuft - inklusive NTPD-Pools, oder zu viel Zeit alles im Log nach zu gucken und anzupassen.)

    Tatsächlich nicht ntpd und systemd-timesyncd gleichzeitig drauf. Allerdings scheint - nach internet - timesyncd etwas primitiver zu sein was Clock-Drift angeht. Mal schauen was jetzt mit ntpd passiert.

    Habt ihr Lösungen dafür um Clock-Drift im RS zu vermeiden ? Macht nicht so Spaß für Dienste die exaktes timestamping brauchen (bzw wirklich monotone clock). Merkt man auch gerne wenn TOTP plötzlich nicht läuft, außer man versucht es nochmal 'ne Sekunde später.. systemd-timesyncd ist schon drauf


    Hier mal ein Vergleich zwischen meinem RS und einer physischen Box. Man beachte 1-2 Sekunden vs 100-300ms als Zeiteinheit.

    pasted-from-clipboard.pngpasted-from-clipboard.png

    Aber du brauchst mehr

    Ich würde ja lachen wenn es nicht stimmen würde.. Aber eigentlich mag ich lieber große Boxen. Vielleicht doch irgendwann mal ein rotes H, statt dem Blech in meiner Abstellkammer mit Wireguard zu Netcup. Mir sind nur ehrlich gesagt die Preis nimmer so attraktiv und die Standortlotterie mag ich überhaupt nicht, VoIP kann das net leiden.