Posts by simonmysun

    Ich scheine meinen Server mit einer ganz anderen Philosophie zu verwalten:


    – Ich schütze die Webdienste mit Basic-Auth, jeder Dienst hat sein eigenes Passwort. Gleichzeitig antwortet der Webserver auf alle Hostnamen, die Basic-Auth-Anmeldeinformationen anfordern.

    – Ich habe fast alle gängigen Ports mit portspoof[1] geöffnet.


    Die Idee ist: Ich verzichte auf zusätzliche Anstrengungen, um Grundrauschen zu reduzieren, gebe dem Angreifer aber gleichzeitig genug Grundrauschen, damit er aufgibt.


    Honeypot wäre vielleicht ein besserer Ansatz, aber warum sollten mich die Script-Kiddies interessieren


    [1]: https://github.com/drk1wi/portspoof

    If you upgrade to another generation you can only end your contract and start a new one. Backup / snapshot might help if your contracts overlap. Note that you might have to pay more if you want your prefered location (or bet on your luck). You can post on Swap Ownership / Offering if you cannot cancel your contract as early as you wish.

    Netcup bietet VPS als IAAS an. Das IAM von Google Cloud ist SAAS. Sie können Ihr eigenes IAM natürlich selbst hosten. Aber ich glaube, in Ihrem Fall müssen Sie viel lernen, um dies zu erreichen.


    Wenn du dich nicht mit der IAM-Einrichtung beschäftigst, solltest du als Systemadministrator für das Benutzermanagement verantwortlich sein. Du kannst die Dokumente zum Benutzermanagement der von dir verwendeten Distribution einsehen, wie zum Beispiel: https://ubuntu.com/server/docs/user-management und https://wiki.archlinux.org/title/Users_and_groups.


    Wie stehst du zu einem DNS-Umzug zu Cloudflare? Mir wurde Cloudflare empfohlen um gegen DDOS-Angriffen, SQL-Injection etc. geschuetzt zu sein?

    Die kostenlose Stufe von Cloudflare ist wirklich attraktiv. Die Nutzung zur Abwehr von DDoS-Angriffen ist, soweit ich weiß, die kostengünstigste Lösung. Die WAF von Cloudflare kann einige SQL-Injection-Angriffe erkennen, aber nicht alle. Man sollte sich daher nicht ausschließlich darauf verlassen.


    Außer dem, was andere Benutzer bereits kommentiert haben, würde ich sagen, dass du zur Absicherung eines Linux-Servers Monitoring und Alerting einrichten, regelmäßig Protokolle überprüfen und Canary-Tokens einfügen solltest. Dieser Artikel könnte hilfreich sein: https://github.com/imthenachom…-To-Secure-A-Linux-Server.


    Sobald Sie Ihren Überwachungsdienst eingerichtet haben, werden Sie erstaunt sein, wie viele Menschen jeden Tag versuchen, Sie anzugreifen. Aber keine Sorge, solange Sie alles richtig konfiguriert haben und alles auf dem neuesten Stand halten, sind ihre Bemühungen umsonst. Hier sind die bösartigen Daten, die ich in den letzten 24 Stunden auf den Ports 22 und 80 empfangen habe. Auf Port 22 versuchen sie, meine SSH-Passwörter durch Brute-Force-Angriffe zu erraten, und auf Port 80 scannen sie potenzielle Schwachstellen meines Webdienstes.


    Willkommen in der Welt von IAAS!

    Obwohl ich glaube, dass es genügend gute Übersetzungssoftware gibt, sende ich trotzdem die von mir überprüfte Computerübersetzung. Die deutsche Version ist unten angefügt.



    Notice: I'm not following any "Best Practice". I just want to share how I deployed them.


    I am using docker compose. I decided not to use docker volumes at the beginning. And I separate the mounted paths into four categories:

    • configuration
    • runtime data
    • logs
    • persistent data

    and put them respectively in the corresponding directories according to file-hierarchy(7).


    The configuration is version controlled with git and the persistent data is backuped (also version controlled, sort of) with restic. Most of the build files have been separated into git repos and docker compose will build from the git URLs. The rest are seen as configuration.

    Each compose project(by definition of https://docs.docker.com/compose/project-name/) has a folder with the project name and each service(by definition of https://docs.docker.com/reference/compose-file/services/) has a subfolder with its service name. Services may have multiple folders but I didn't regulate this much details.


    Storing runtime data separately is mainly because of my partition plan. I believe it should be adjusted accordingly depending on partition plan.



    Hinweis: Ich halte mich nicht an "Erfolgsmethode". Ich möchte einfach teilen, wie ich sie bereitgestellt habe.


    Ich benutze Docker Compose. Zu Beginn habe ich beschlossen, keine Docker-Volumes zu verwenden. Ich habe die gemounteten Pfade in drei Kategorien unterteilt:


    - Konfiguration

    - Laufzeitdaten
    - Protokolldatei

    - Persistente Daten


    Und habe sie entsprechend in den entsprechenden Verzeichnissen gemäß der file-hierarchy(7) abgelegt.


    Die Konfiguration wird mit Git versioniert und die persistenten Daten werden (auch versioniert, sozusagen) mit Restic gesichert. Die meisten Build-Dateien sind in separate Git-Repos unterteilt, und Docker Compose wird aus den Git-URLs bauen. Die restlichen werden als Konfiguration betrachtet.


    Jedes Compose-Projekt (laut Definition von https://docs.docker.com/compose/project-name/) hat einen Ordner mit dem Projektnamen, und jeder Dienst (laut Definition von https://docs.docker.com/reference/compose-file/services/) hat einen Unterordner mit seinem Dienstnamen. Dienste können mehrere Ordner haben, aber ich habe dies nicht sehr detailliert geregelt.


    Das separate Speichern von Laufzeitdaten ist hauptsächlich auf meinen Partitionierungsplan zurückzuführen. Ich glaube, es sollte entsprechend angepasst werden, je nach Partitionierungsplan.

    Sorry perhaps I misunderstood you. If you run your wireguard and adguard home in docker containers, you will have to add a route to the adguard home container otherwise it doens't know how to reach the subnet with adguard. In my case it is done by adding the adguard subnet to AllowedIPs in peer config of wireguard.

    I am running wireguard and pihole inside docker containers. Basically, I created a docker network named e.g. wg-network and let both containers join. In wireguard configuration you need to route the ip range of the wg-network to its gateway.


    In case you are interested, I have a blog post about it including the forward configuration from wg-network to the wireguard subnet: https://maoyin.eu/blog/2024/01/20/docker-with-wireguard.html the two links at the beginning is also useful.

    Mit entsprechender Behandlung der logfiles käme evtl. where-are-the-scanners vom

    Kollegen simonmysun in Betracht.


    Vielen Dank für die Erwähnung. Ich fühle mich geehrt, dass Sie sich noch daran erinnerst.



    Ich weiß aber nicht wie live das ist.

    Es ist leider nicht live. Trotz der Tatsache, dass eine Live-Karte mehr Ressourcen benötigt, muss ich darauf achten, dass eine Live-Karte nicht zum Absturz meines Servers beiträgt. Eine Live-Karte könnte den Server überlasten und als Angriffspunkt dienen.

    Repo link: https://github.com/simonmysun/ell (a 2.1MB demo gif inside)

    Here I present a shell application which allows you to talk to LLMs from your command line. The application is written in (almost) pure Bash, except curl to make HTTPS request, jq to parse JSON, and perl to perform PCRE regex. You can simply ask questions to the LLMs, or use your terminal input and ouput history as context information. This enables you to ask LLMs for help when you stuck with some errors.


    Upcoming features can be found in issues.


    I would like to invite you to have a try and I look forward to your suggestions! Feel free to create issues or reply here or email me!


    P.S. please don't hestitate to tell me if you feel this sucks!

    Out of curiosity: What are your usecases that make you reach 120 TB or more in one month? I guess your server only has a few GB of disk space, so how are you reaching hundreds of terabytes of data transfer in one month?

    To set the number into some relation: 120 TB a month mathematically means a bandwidth usage of 500 MBit/s on average 24/7

    As a seedbox I guess?

    Do you mean that only requests with status code other than 200 are logged?

    No. All requests are logged.


    The analysis goes through the logs and only cares about status code >= 400. The requests with 404 is a special case because some of them are because of my bad configuration (some services even rely on this), but they are relatively rare comparing to the bursters which make thousands request within minutes.


    I wonder if you mean I should've disabled logging. Is this a standard practice in EU?

    simonmysun Deine Beiträge wirken irgendwie inkonsistent. Außerdem meinen diverse Detektoren, dass 40-60% Deiner Beitragsinhalte von einer KI stammen und nur stellenweise von einem Menschen mit Sätzen ausgeschmückt werden. (z.B. Anfang/Ende oder einzelne Teile in der Mitte.)


    Verwendest Du ChatGPT o.ä. für Deine Forenbeiträge? :/

    You are right. I am not a German speaker. I used ChatGPT to translate what I write into German. But I don't think "nur stellenweise von einem Menschen mit Sätzen ausgeschmückt werden" is true. What specificly makes you think so? My original English text in the prompt has almost the same length and the 5 bullet points covers 5 different aspects.


    Aber dann sind die Daten doch schon gespeichert?

    Yes. Isn't this common security practices?


    Note that successful requests are not collected in the visualizaton.

    Obwohl ich stimme zu, dass es nicht unbedingt notwendig ist, die Ergebnisse der Analyse zu veröffentlichen, möchte ich dennoch einige Punkte klarstellen.

    1. Ich habe ein berechtigtes Interesse daran, meine Server vor böswilligen Angriffen zu schützen. Das Aufzeichnen und Analysieren der IP-Adresspräfixe der Angreifer ist eine notwendige Maßnahme zur Verbesserung der Netzwerksicherheit und zur Verhinderung weiterer Angriffe.
    2. Gemäß dem Urteil des Europäischen Gerichtshofs im Breyer-Fall (Rechtssache C-582/14) werden IP-Adressen nicht als personenbezogene Daten angesehen, wenn der Datenverantwortliche (wie ich) nicht in der Lage ist, durch rechtmäßige Mittel auf die von den Internetdienstanbietern (ISP) gehaltenen Informationen zuzugreifen, um Einzelpersonen zu identifizieren. Das bedeutet:
      • In meinen Händen: Da ich nicht in der Lage bin, die IP-Adresse durch rechtmäßige Mittel mit einer bestimmten Person zu verknüpfen, wird die IP-Adresse in meinen Händen nicht als personenbezogene Daten angesehen.
      • In den Händen anderer: Andere Dritte, die rechtmäßig auf ISP-Daten zugreifen können, können aus dem Präfix keine vollständige IP-Adresse erhalten, daher werden diese auch nicht als personenbezogene Daten angesehen.
    3. Ich habe in dem Banner der SSH-Verbindung und auf der Homepage der HTTP-Verbindung klar darauf hingewiesen, dass das Verhalten der Benutzer aufgezeichnet und veröffentlicht werden kann.
    4. Die veröffentlichten Daten werden täglich aktualisiert und nicht länger als 7 Tage gespeichert.
    5. Ich respektiere und schütze die Rechte der betroffenen Personen und stelle die entsprechenden Kontaktinformationen zur Verfügung, damit die betroffenen Personen ihre Rechte auf Zugang, Berichtigung, Löschung und Einschränkung der Verarbeitung ausüben können.

    Ich verstehe nicht ganz, was Sie mit "Interessenabwägung" meinen...

    Nur eine Sache: bei den nginx-Logs sollte man vielleicht die IPs wegen der DSVGO anonymisieren (z.B. aus "1.1.1.2" "1.1.x.x" machen).

    Guter Punkt! Vielen Dank, dass Sie mich daran erinnert haben. Ich habe den Code geändert, um ihre IP-Adressen zu maskieren und so Probleme mit der DSGVO zu vermeiden. Dennoch sehe ich diese Anfragen als bösartige Angriffe und es ist wichtig, die Netzwerksicherheit und Informationssicherheit zu gewährleisten und mögliche strafbare Handlungen oder Bedrohungen der öffentlichen Sicherheit anzuzeigen, um den berechtigten Interessen zu entsprechen. Ich bezweifle jedoch, ob dies notwendig ist. Aber ich bin nicht in der Position, darüber zu urteilen.



    Und es sieht (für mich) so aus, als ob man die data.json auch selber erstellen kann, muss man da irgendwas beachten?


    Ja. Sie können auch data.json selbst generieren und die Webseite nutzen. Es ist im GeoJSON-Format. Hier ist ein Beispiel:


    Ich hatte vor, mehrere Quellen und Ziele zu haben, aber ich habe aufgegeben. Wenn ich es in Zukunft für notwendig halte, werde ich von neuen Eigenschaften lesen.

    Zusätzlich müssen Sie den "Sicherheitsmodus" ("secure access mode" auf Englisch) in SCP aktivieren. Soweit ich weiß, gibt es in SCP kein 2FA. Dies ist die einzige Option, um es abzudecken.


    2FA im netcup-Forum ist relativ weniger wichtig. Aber warum nicht.


    Ich benutze WCP nicht, daher weiß ich darüber nichts.

    Hallo zusammen,


    ich möchte euch kurz ein kleines Projekt vorstellen, das ich entwickelt habe. Der Anlass dafür war, dass ich oft feststelle, dass jemand Skripte benutzt, um auf meinem Server Benutzer und Pfade brutal zu enumerieren. Aus Neugier wollte ich herausfinden, woher diese Anfragen kommen.


    Deshalb habe ich ein Tool geschrieben, das die Logs von Diensten wie `sshd` und `nginx` verarbeitet, die IP-Adressen extrahiert und deren Koordinaten sowie zugehörige ASN (Autonomous System Numbers) ermittelt. Um die Daten anschaulicher zu machen, habe ich sie auf einer virtuellen Erde visualisiert.


    screenshot.png


    Wenn man mit der Maus über diese Städtenamen fährt, wird eine kleine Box angezeigt, die detaillierte Informationen zu diesen Anfragen enthält.


    Hier sind die Links zum Projekt:

    Die Demo basiert auf den Logs der letzten 24 Stunden. Ich war überrascht, dass keine Skriptkiddies aus dem netcup-Netzwerk dabei waren – gut gemacht, netcup!


    Ich bin gespannt auf eure Vorschläge und Ideen. Zögert nicht, mir Fragen zu stellen. Gerne könnt ihr dem GitHub-Repository einen Stern geben.