Blog

Page 2 of 3

  • · 8 min read

    The rollback watcher that held the lock for five minutes

    A dead man's switch is the right way to change the firewall on a machine you cannot physically reach. Mine worked — and for five minutes after every run, it also made every new refresh fail with "already running". A file descriptor went somewhere I never sent it.

    • Bash
    • Linux
    • iptables
    • Reliability
  • · 7 min read

    grep -q found the match. pipefail called it a failure.

    A check that passed all morning decided at 10:14 that nothing was listening on port 22, and rolled back a healthy firewall. It was the second time the same two words had bitten me. Here is the race behind both.

    • Bash
    • Linux
    • iptables
    • Reliability
  • · 9 min read

    Enabled, inactive, and gone: the firewall that didn't survive a reboot

    A server came back from a reboot with every chain empty and the policy set to ACCEPT, while it was being brute-forced. Its firewall services were enabled. They simply never ran. Three wrong answers came before the right one.

    • Linux
    • systemd
    • iptables
    • IPSet
    • Incident
  • · 8 min read

    named was running on every node. It was serving nothing.

    One certificate failed to issue on one server. The cause was on almost every other server too: BIND was up, the service check was green, and not one customer zone was being served. How a read-only audit found it, and how the fix avoided causing the outage it was fixing.

    • DNS
    • BIND
    • Bash
    • Linux
    • Incident
  • · 8 min read

    My server scoring said every VM had a spinning disk

    A fleet inventory that scores every server from 100 down, with a sentence for each point lost. On its first real data it marked every virtual machine's disk as a hard drive. What a guest kernel cannot know, and how to stop an assumption from turning into data.

    • Linux
    • Python
    • Virtualisation
    • Inventory
    • Data quality
  • · 9 min read

    Why copied certificates stop renewing ninety days later

    Copy a Let's Encrypt certificate's files to another server and it serves perfectly — padlock, no errors — right up until it expires, because certbot no longer treats it as a certificate it owns. We found that across 26 domains. Here is what a certbot lineage actually is.

    • TLS
    • Let's Encrypt
    • certbot
    • nginx
    • Python
  • · 8 min read

    Port 443 belongs to the server, not the domain

    When one domain on a shared host loses its certificate, the obvious move is to close HTTPS for it. A firewall cannot do that. It can only close HTTPS for every domain on the server. Why iptables never sees a hostname, and the guard that decides when the port may close.

    • Networking
    • TLS
    • iptables
    • nginx
    • Security
  • · 7 min read

    Every firewall refresh deleted Fail2Ban's bans

    Fail2Ban was banning brute-force sources correctly. Then the firewall platform redeployed its ruleset, as it does on every change, and the bans were gone. Two tools were writing to the same table, and only one of them knew.

    • Fail2Ban
    • iptables
    • nftables
    • Linux
    • Security