Excalibur's Sheath

Networking and Security Fundamentals in Your Linux Homelab

Nov 9, 2025 By: Jordan McGilvrayhomelab,linux,networking,security,sysadmin,firewall,ssh,monitoring,dns

Advanced Linux Administration for Homelabs: Part 3 of 4

In last week’s article, Command-Line Deep Dive: Mastering Shell and Utilities, we covered the Linux command-line essentials for homelabs. You learned how to navigate the filesystem, manage files, inspect processes, and chain commands with piping and redirection. These skills let you work efficiently, troubleshoot quickly, and lay the groundwork for more advanced system and network administration.

Command-line mastery alone doesn’t guarantee a reliable or secure homelab. You also need to understand how services run, how processes interact with the system, and how machines communicate over the network. Without this, even well-written scripts can fail silently, and services can become unreachable or vulnerable.

This week, we focus on networking and security fundamentals in Linux. You’ll learn how Linux exposes network interfaces, how to inspect IPs and routes, and how to validate connectivity between machines. These basics allow you to quickly identify whether a problem is a link, route, or DNS issue.

We’ll also cover practical security measures to protect your homelab: firewall configuration, SSH hardening, and traffic inspection. By the end, you’ll have a repeatable approach for keeping your homelab visible, functional, and secure—ready for automation and monitoring techniques discussed in the next article.

Why this matters for homelabs

Most homelab failures come from two things:

  1. Incorrect assumptions — e.g., “the service is running, so it must be reachable.”
  2. Lack of visibility — not knowing what’s listening, who’s connecting, or how packets move.

Tip: Fix these two, and most outages become short, predictable troubleshooting sessions.

How Linux sees the network

Linux represents networking through interfaces. A machine can have multiple interfaces: LAN, VLAN, bridges, VPNs, or virtual adapters.

Inspect interfaces:

ip addr show

Key points:

  • UP / LOWER_UP — interface enabled and link present
  • inet 192.168.10.23/24 — IPv4 address and subnet
  • inet6 — IPv6 address assignments

Quick, script-friendly view:

hostname -I

Tip: Use consistent interface names. Unpredictable names slow troubleshooting.

Routing: the “where next” question

An IP tells Linux where the machine is; the routing table tells it where to send non-local traffic.

Show routes:

ip route show

Example output:

  • default via 192.168.10.1 dev enp3s0 — unknown traffic goes here
  • 10.6.0.0/24 dev wg0 — WireGuard network reachable via wg0

Mini-diagnostic sequence:

  1. ip addr — check IP
  2. ip route — check default gateway
  3. ping <gateway-ip> — verify L2 connectivity
  4. ping 8.8.8.8 — verify upstream without DNS
  5. dig example.com — verify DNS resolution

Pull-out: Running this sequence first separates link, route, and DNS problems quickly.

DNS: why it still breaks everything

DNS issues mimic application failures. Services may be running, but requests fail silently.

Check resolver:

cat /etc/resolv.conf

Modern systems may use systemd-resolved, NetworkManager, or a local stub resolver. Knowing which resolver is authoritative prevents chasing phantom DNS problems.

Lookups:

dig +short example.com

If dig works but apps fail, check app or container-specific DNS settings. Compare with a known resolver:

dig @1.1.1.1 example.com

Tip: Use 8.8.8.8 or 1.1.1.1 to validate DNS independently.

Seeing services: ss, lsof, nmap

A service being “running” doesn’t guarantee reachability.

Check listening sockets:

sudo ss -tulnp
  • 0.0.0.0:80 — listening on all interfaces
  • 127.0.0.1:9000 — localhost only

Check ownership:

sudo lsof -iTCP -sTCP:LISTEN -P -n

From another machine, verify exposure:

nmap -sS -Pn 192.168.10.23

Tip: nmap confirms actual exposure, revealing forgotten or misconfigured services.

Firewalls: simple and effective

Avoid two extremes: disabling firewalls or overly restrictive rules.

UFW (Ubuntu/Debian)

sudo ufw allow ssh
sudo ufw enable
sudo ufw status verbose

Block a host:

sudo ufw deny from 203.0.113.45

firewalld / nftables (RHEL/advanced)

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

Rule of thumb: Start restrictive, allow what you need, log denied traffic, then tighten.

SSH hardening

SSH is the primary remote administration point. Bots constantly scan default ports.

Step 1 — Key-based auth

ssh-keygen -t ed25519 -C "your.email@example.com"
ssh-copy-id user@server

Step 2 — Disable passwords

Edit /etc/ssh/sshd_config:

PasswordAuthentication no PermitRootLogin no PubkeyAuthentication yes


Reload:
```bash
sudo systemctl reload sshd

Step 3 — Reduce surface area

  • Limit SSH to LAN subnets via firewall
  • Use fail2ban for public-facing SSH
  • Consider a jump host or VPN

Tip: Moving SSH off port 22 reduces background noise, but do not rely on this alone.

Inspecting traffic: tcpdump

When packets “should” go out but don’t, capture them.

Live SSH traffic:

sudo tcpdump -i enp3s0 port 22 -n

Capture to file:

sudo tcpdump -i enp3s0 -w /tmp/capture.pcap

Tip: Filter by host, port, or protocol to reduce noise and isolate issues.

Lightweight monitoring

Start small:

  • ss -tulnp with alert scripts
  • cron/systemd timers for periodic checks
  • journalctl logs for key services

Example check script:

#!/usr/bin/env bash
ALLOWED="22 80 443 9100"
OPEN=$(ss -tuln | awk '{print $5}' | cut -d: -f2 | sort -u)
for p in $OPEN; do
  if ! echo $ALLOWED | grep -qw $p; then
    echo "Unexpected port open: $p" | mail -s "Alert: open port" admin@example.com
  fi
done

Common scenarios

Container reachable locally, not externally

  • Bound to localhost only
  • Firewall blocks port
  • Docker port misconfiguration

Intermittent SSH backup failures

  • Network flakiness
  • Key/authentication issues
  • Resource contention (check logs)

Pull-out quote: “Most homelab headaches come from visibility gaps, not hardware failure.”

Homelab security baseline

  1. SSH keys only; passwords disabled
  2. Root login disabled
  3. Firewall allows only necessary ports
  4. Verify exposure with nmap
  5. Daily ss checks + anomaly alerts
  6. Logging in place; rotation active
  7. Backups verified off-site

Tip: Apply this baseline to every node in your homelab.

Summary

In this article, we covered the essential networking and security fundamentals required to run a reliable and secure Linux homelab. Starting with how Linux represents network interfaces and addresses, we explored how to inspect IP configurations, understand routing tables, and verify connectivity between nodes. These basics form the foundation for diagnosing network issues and ensuring that services are accessible where they need to be.

We then examined DNS troubleshooting and service visibility, using tools like dig, ss, lsof, and nmap to confirm which services are listening, which ports are open, and whether external machines can reach your homelab nodes. By combining host-level inspection with external scans, you can quickly differentiate between application, network, and DNS problems, avoiding hours of guesswork.

Practical security measures were emphasized, including firewall configuration, SSH hardening, and traffic inspection with tcpdump. We highlighted how to strike a balance between accessibility and security, showing how lightweight monitoring, alerts, and logs can keep you informed of unexpected changes or exposures without overwhelming your systems or workflow.

Pull-out quote: “A homelab that is visible, controlled, and monitored is a homelab that works.”

Finally, we provided a concise homelab security baseline: key-based SSH authentication, root login restrictions, explicit firewall rules, scheduled service and port checks, and regular review of logs and alerts. Applying these practices ensures your homelab remains both functional and secure, creating a stable environment ready for the automation and orchestration strategies discussed in upcoming articles.

More from the "Advanced Linux Administration for Homelabs" Series: