Innovate, disrupt, code the future. đŸ’»đŸ”đŸš€

Prepare a Linux SSH Service for an OpenSSH 10.4 Upgrade

OpenSSH 10.4, released on 6 July 2026, includes security fixes and makes the SSH transport protocol stricter. That combination is a good reason to plan an update, but it is also a reason not to treat a remote-access service like an ordinary package refresh. A syntactically valid sshd_config can still lock out the only administrator who has the required key, source address, or jump host path.

This guide prepares a Linux host for a distribution-provided OpenSSH 10.4 update. The result is a recorded effective server configuration, a tested administrative connection, and a rollback-safe update sequence. The commands are documentation-verified examples, not observations from a particular host. Run them from a console, out-of-band management session, or a second SSH session that remains open until the new daemon has accepted a fresh connection.

2026-07-26

Build a Safe PF Firewall Baseline on FreeBSD

The old IP Filter article in this archive reflects an earlier FreeBSD firewall workflow. For a new FreeBSD host, start with PF and make the first policy deliberately small: retain console access, permit only the services the host provides, and validate the rules before enabling them at boot.

This is a documentation-verified baseline, not a copy-and-paste production policy. Interface names, management networks, service ports, IPv6 needs, and routing requirements vary by host. Apply it first from a console or an out-of-band management path so a typo does not strand an SSH-only system.

2026-07-25

Rename a Local FreeBSD User Account Safely

Renaming a FreeBSD account is more than changing a login name. A safe change preserves the numeric UID where possible, updates the primary group when appropriate, moves the home directory, repairs ownership, and checks files or scheduled jobs that still reference the old name.

Plan the change during a maintenance window. Do not rename an account that is actively logged in, owns a running service, or is the only administrative access path to the host. Keep a root or separate administrator console session open until the new account has been tested.

2026-07-25

Run a FreeBSD Guest with bhyve on a Current FreeBSD Host

bhyve is part of the FreeBSD base system and remains a practical choice when a FreeBSD host needs to run a small number of FreeBSD, Linux, OpenBSD, or Windows guests. This article updates the older FreeBSD 10.1 walkthrough with the workflow documented in the current FreeBSD Handbook. It deliberately uses the base-system example script rather than presenting an untested production framework.

The outcome is a FreeBSD guest connected to the same Layer-2 network as the host through a tap device and bridge. The commands are documentation-verified examples. Substitute the physical interface, guest name, disk location, memory, CPU count, and ISO release for your host.

2026-07-25

Patch etcd and Verify the Recovery Path

The 23 July etcd patch release fixed a watch authorization problem that could disclose events outside a user’s RBAC key range. The fix is available in v3.7.1, v3.6.14, and v3.5.33. This is a good reason to patch, but the release is also a useful reminder that an etcd maintenance window should prove more than a new binary starts.

This guide is for an administrator of a self-managed, TLS-enabled three-member etcd cluster. The finished result is a patched cluster with a verified endpoint health check, a recorded member view, and an off-node snapshot whose integrity has been checked. The commands are documentation-verified examples, not output from a production cluster. Replace the certificate paths, endpoint addresses, service name, package method, and backup location with values from your own installation.

2026-07-25

Hardening GitHub Actions Checkouts for Pull Requests

A pull request workflow often needs two things that should be kept separate: untrusted code to test and trusted repository credentials to comment, label, publish, or update a status. GitHub’s June 2026 actions/checkout changes made one dangerous combination harder to enable by accident, but they do not turn every pull request workflow into a safe deployment workflow.

This guide builds a review workflow that tests pull-request code with the least useful token possible, then shows the narrow case where pull_request_target is appropriate. The successful result is easy to inspect: a pull request runs the contributor’s code without repository write permissions, while a trusted follow-up job can add a label without checking out that code.

2026-07-24

Adding GPS Signal Fix Status to Grafana with Telegraf and InfluxDB

If you’re running a Raspberry Pi-based time server or GPS-equipped system and want visibility into the GPS signal status (2D, 3D fix, or no lock), you can use a simple Bash script and Telegraf to bring that data into your InfluxDB time series database — and visualize it in Grafana.

In this post, we’ll walk through how to:

  • Create a lightweight GPS fix monitoring script
  • Use Telegraf’s inputs.exec plugin to ingest the data
  • Store it in InfluxDB
  • Visualize GPS lock status in Grafana

🚀 Why Monitor GPS Fix Status?

When using GPS for time synchronization (especially with chrony or ntpd), it’s useful to know whether the GPS module actually has a signal lock:

2025-04-02

DNS Exfiltration With Python

In this post, we dive into the mechanics behind a DNS exfiltration tool written in Python. This project demonstrates how data can be covertly transmitted via DNS queries. I built this client‑server system to study DNS exfiltration techniques in a controlled, educational environment. Below, I detail the architecture, key design decisions, and provide annotated code snippets from both the client and server implementations.


1. Overview and Architecture

The project is divided into two main components:

2025-04-01

Understanding Dependency Injection in Python

Dependency Injection (DI) is a software design pattern that helps create loosely coupled, testable, and maintainable code. Instead of having classes create their own dependencies, those dependencies are “injected” from the outside. This blog post will walk you through a concrete Python example that demonstrates DI, along with alternate techniques like the Service Locator and Factory patterns.

What Is Dependency Injection?

At its core, dependency injection involves passing (or “injecting”) an object’s dependencies rather than instantiating them internally. The main benefits include:

2025-03-30