diff --git a/README.md b/README.md index 332f6a2..49b8a62 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,118 @@ -#!/usr/bin/env bash -set -euo pipefail -for file in /opt/firewall/chains/*.sh; do - [ -e "$file" ] || continue - bash "$file" -done +# Custom Firewall Chains -Dette er script jeg har brukt til å lage mine egne firewall regler som lastes inn i ram ved boot +Et system for å laste egendefinerte `iptables`-kjeder (chains) inn i RAM ved oppstart, via en dedikert `systemd`-tjeneste. -systemctl cat custom-firewall-chains.service -# /etc/systemd/system/custom-firewall-chains.service -[Unit] -Description=Load custom iptables chains -RequiresMountsFor=/opt/firewall -[Service] -Type=oneshot -ExecStart=/opt/firewall/load-chains.sh -[Install] -WantedBy=multi-user.target -# /etc/systemd/system/custom-firewall-chains.service.d/override.conf +--- + +## Forutsetninger + +- Linux med `systemd` og `iptables` +- Root-tilgang (eller `sudo`) + +--- + +## Mappestruktur i repoet + +``` +. +├── load-chains.sh # Hovedscript som laster alle chains +├── chains/ # Mappe med enkeltscripts for hver chain +│ ├── 10-example-chain.sh +│ └── ... +└── systemd/ + └── custom-firewall-chains.service # systemd-tjenestefilen +``` + +--- + +## Oppsett – steg for steg + +### 1. Kopier firewall-filene til `/opt/firewall` + +```bash +sudo mkdir -p /opt/firewall/chains +sudo cp load-chains.sh /opt/firewall/load-chains.sh +sudo cp chains/*.sh /opt/firewall/chains/ +sudo chmod +x /opt/firewall/load-chains.sh +sudo chmod +x /opt/firewall/chains/*.sh +``` + +### 2. Installer systemd-tjenesten + +```bash +sudo cp systemd/custom-firewall-chains.service /etc/systemd/system/ +``` + +Opprett deretter override-mappen og konfigurer at tjenesten kjører før nettverket starter: + +```bash +sudo mkdir -p /etc/systemd/system/custom-firewall-chains.service.d/ +sudo tee /etc/systemd/system/custom-firewall-chains.service.d/override.conf > /dev/null < **Tips:** Bruk numeriske prefiks (f.eks. `10-`, `20-`) på filnavnene for å styre rekkefølgen chainene lastes inn. + +--- + +## Gjøre andre tjenester avhengig av firewall-chainene + +For tjenester som er avhengige av at chainene er lastet inn før de starter, legg til følgende i tjenestens override-konfigurasjon: + +```bash +sudo systemctl edit .service +``` + +Legg inn: + +```ini [Unit] Requires=custom-firewall-chains.service After=custom-firewall-chains.service +``` -Over er det som trengs å skrive inn i overrides config for systemdtjenester for tjenester som bruker chains. +Dette sikrer at `custom-firewall-chains.service` alltid kjører ferdig før den aktuelle tjenesten starter. -Det du skal gjøre er å skrive en README.md fil for dette som forklarer hvordan en annen person skal sette opp dette, hva de trenger å gjøre selv under repoet følger med systemtjeneste de trenger og de skal vite hvor de må flytte filene for å sy dette sammen. Og det i riktig rekkefølge. README.md skal være enkel å følge og enkel å forstå. +--- + +## Feilsøking + +| Problem | Løsning | +|---|---| +| Tjenesten feiler ved oppstart | Sjekk `sudo journalctl -u custom-firewall-chains.service` | +| Et chain-script lastes ikke | Sjekk at filen er kjørbar: `ls -l /opt/firewall/chains/` | +| Endringer vises ikke | Kjør `sudo systemctl restart custom-firewall-chains.service` |