claude-readmetry2
This commit is contained in:
127
README.md
127
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 <<EOF
|
||||
[Unit]
|
||||
Before=network-pre.target
|
||||
Wants=network-pre.target
|
||||
tvh@ThinkBook16G6IRL:~/repos/
|
||||
EOF
|
||||
```
|
||||
|
||||
Over er system tjenesten som brukes for å laste inn scriptet når systemet bootes.
|
||||
### 3. Aktiver og start tjenesten
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable custom-firewall-chains.service
|
||||
sudo systemctl start custom-firewall-chains.service
|
||||
```
|
||||
|
||||
### 4. Verifiser at tjenesten kjører uten feil
|
||||
|
||||
```bash
|
||||
sudo systemctl status custom-firewall-chains.service
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Legg til egne chain-scripts
|
||||
|
||||
Alle `.sh`-filer som ligger i `/opt/firewall/chains/` lastes automatisk ved oppstart. For å legge til en ny chain:
|
||||
|
||||
1. Lag et nytt script i `chains/`-mappen, f.eks. `chains/20-my-chain.sh`
|
||||
2. Kopier det til serveren:
|
||||
```bash
|
||||
sudo cp chains/20-my-chain.sh /opt/firewall/chains/
|
||||
sudo chmod +x /opt/firewall/chains/20-my-chain.sh
|
||||
```
|
||||
3. Restart tjenesten for å laste inn endringene umiddelbart:
|
||||
```bash
|
||||
sudo systemctl restart custom-firewall-chains.service
|
||||
```
|
||||
|
||||
> **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 <tjenestenavn>.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` |
|
||||
|
||||
Reference in New Issue
Block a user