claude-readmetry2
This commit is contained in:
127
README.md
127
README.md
@@ -1,35 +1,118 @@
|
|||||||
#!/usr/bin/env bash
|
# Custom Firewall Chains
|
||||||
set -euo pipefail
|
|
||||||
for file in /opt/firewall/chains/*.sh; do
|
|
||||||
[ -e "$file" ] || continue
|
|
||||||
bash "$file"
|
|
||||||
done
|
|
||||||
|
|
||||||
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]
|
## Forutsetninger
|
||||||
Description=Load custom iptables chains
|
|
||||||
RequiresMountsFor=/opt/firewall
|
- Linux med `systemd` og `iptables`
|
||||||
[Service]
|
- Root-tilgang (eller `sudo`)
|
||||||
Type=oneshot
|
|
||||||
ExecStart=/opt/firewall/load-chains.sh
|
---
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
## Mappestruktur i repoet
|
||||||
# /etc/systemd/system/custom-firewall-chains.service.d/override.conf
|
|
||||||
|
```
|
||||||
|
.
|
||||||
|
├── 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]
|
[Unit]
|
||||||
Before=network-pre.target
|
Before=network-pre.target
|
||||||
Wants=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]
|
[Unit]
|
||||||
Requires=custom-firewall-chains.service
|
Requires=custom-firewall-chains.service
|
||||||
After=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