HAProxy-Konfiguration strukturell diffen

(This post is also available in English)

Wir benutzen HAProxy für alle unsere eingehenden HTTP- und sonstigen TCP-Verbindungen.

Die Konfiguration ist die komplexeste, die wir haben. Daher wird die Konfiguration nicht von Hand erstellt, sondern aus Metadaten und Includes generiert. Ein solcher Generator vereinfacht die Konfiguration — aber kann es erschweren zu sehen, was man nun wirklich ändert.

Für solche Fälle mögen wir Tooling, dass uns einen Diff der generierten Konfiguration anzeigen kann. Da die HAProxy-Konfiguration eine einzelne Textdatei ist, könnten wir das diff-Programm benutzen um zwei Versionen zu vergleichen.

Das Problem mit einem rein textuellen Diff ist, dass dort auch Unterschiede auftauchen, die gar keine Auswirkung auf HAProxy haben, z.B. wenn sich nur die Reihenfolge oder Kommentare ändern.

„HAProxy-Konfiguration strukturell diffen“ weiterlesen

Linux-Packages erstellen aus fertigen Binaries – mit automatischen Updates

Man kennt das Problem: in der Linux-Distribution der Wahl ist eine gewünschte Software nicht als Paket verfügbar, oder nicht in der Version, die man braucht/möchte. 

Früher™ hätte man häufig selbst kompilieren müssen. Heutzutage, und insbesondere mit Programmiersprachen wie Go oder Java, aus denen (fast) statische Binaries/JARs fallen, stellen viele Upstreams eigene Binaries für ihre Programme bereit. Mit etwas Glück auch in Form von DEBs oder RPMs – aber leider nicht immer.

„Linux-Packages erstellen aus fertigen Binaries – mit automatischen Updates“ weiterlesen

SYN/ACK-Retries unter Linux mit eBPF messen

Wir sind häufig DDoS-Angriffen ausgesetzt. Ein SYN-Flood ist eine der ältesten Techniken, die dabei verwendet werden: der Angreifer sendet zahlreiche SYN-Pakete mit gespooften IP-Absenderadressen.

Dabei wird ausgenutzt, dass der TCP-Handshake aus mehreren Schritten besteht:

  • Der Client sendet ein SYN-Paket
  • Der Server antwortet mit einem SYN/ACK-Paket
  • Der Client antwortet mit einem ACK-Paket

Der Empfänger muss nicht nur für jedes erhaltene Paket einen State in seinem TCP-Stack aufrecht erhalten, sondern sendet im Angriffsfall mehrmals das SYN/ACK-Antwortpaket auf das SYN. Bei einem SYN-Flood wird es aber natürlich niemals eine Antwort auf das SYN/ACK geben.

Bei Linux werden standardmäßig bis zu 6 SYN/ACK-Pakete (1 initial + 5 Retries) auf ein einzelnes SYN geantwortet. Währenddessen bleibt der TCP-State erhalten und Connection-Tracking-States in Paketfiltern werden durch jedes neue SYN/ACK aktuell gehalten, wodurch sie ebenfalls nicht ablaufen können. Zusätzlich erzeugen wir unnötigen ausgehenden Traffic, der dann bei den gespooften Source-Adressen ankommt.

Maßnahmen gegen SYN-Floods sind z.B. einfach mehr offene States zu erlauben oder gar keinen State zu tracken, indem man SYN-Cookies verwendet. Mehr States kosten natürlich mehr Ressourcen und SYN-Cookies funktionieren nicht mit allen Protokollen oder in allen Fällen.

Wir haben uns aber zusätzlich noch einen anderen Ansatz angeschaut: Die Menge der SYN/ACK-Retries zu reduzieren.

„SYN/ACK-Retries unter Linux mit eBPF messen“ weiterlesen

Firmwareupdate für Samsung 980 PRO unter Linux

Leider gibt es bei der Samsung 980 PRO ein Problem mit der Firmware – die NVMe braucht dringend ein Update auf Firmware 5B2QGXA7, Details findet man im Artikel von Heise.

Das ISO findet man über https://semiconductor.samsung.com/consumer-storage/support/tools/ unter „Firmware“, jedoch macht Samsung es nicht leicht, die Firmware „mal eben“ unter Linux upzudaten, daher hier unsere Kurzanleitung!

Sichert vorher eure Daten! Wir hatten zwar keinen Datenverlust, aber ohne Sicherung macht man hier an dieser Stelle besser nicht weiter!

„Firmwareupdate für Samsung 980 PRO unter Linux“ weiterlesen

Hello world!

Willkommen zum technischen Blog der Babiel GmbH!

Hier schreiben häuptsächlich Kollegen aus dem Bereich des Managed Hostings – unsere HR bespielt Linkedin, Facebook und Instragram – hier sind die Techniker am Werk. 😉 Auf twitter sind wir diejenigen, die technische Dinge (re)tweeten und kennzeichnen dort unsere Beiträge durch unser jeweiliges Kürzel.

Wir hoffen, durch den Blog bessere Einblicke darauf geben zu können, wie wir arbeiten, welche Themen uns bewegen und hoffen, darüber auch in einen Austausch zu kommen. Pre-COVID19 fand man uns regelmäßig auf Meetups, z.B. beim „talk@babiel“ direkt bei uns vor Ort, aber z.B. auch bei DevOps Düsseldorf – dort ebenfalls mit Vorträgen. Da der Vor-Ort Austausch leider schon lange ruhen muss, sieht man sich nun vielleicht mal beim Infrafoo des Chaosdorf.

Zum Team: wir sind derzeit 22 Kollegen und dafür verantwortlich, die IT Services der Babiel zu betreiben. Das fängt an bei Grundlagen wie dem Betrieb unseres Autonomen Systems AS198913, geht weiter über Themen wie Virtualisierung, Storage, Betriebssysteme, Managed Hosting, Monitoring und umfasst auch den Betrieb der Applikationen; aber auch betriebsrelevante Tools werden in der Abteilung programmiert.

Themen die uns bewegen sind also:

  • Datacenter-Technologie im Netzwerkbereich, Loadbalancer, DDoS-Schutz, Virtualisierung
  • Automatisierung, CI/CD Pipelines, Puppet, Go
  • Kubernetes
  • Linux
  • Speziallösungen für IT-Probleme, die man mit der Zeit bekommt und für die es keine „off the shelf“ Lösung gibt

Enjoy our Blog!