119 lines
3.0 KiB
Markdown
119 lines
3.0 KiB
Markdown
# Custom Firewall Chains
|
||
|
||
Et system for å laste egendefinerte `iptables`-kjeder (chains) inn i RAM ved oppstart, via en dedikert `systemd`-tjeneste.
|
||
|
||
---
|
||
|
||
## 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
|
||
EOF
|
||
```
|
||
|
||
### 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
|
||
```
|
||
|
||
Dette sikrer at `custom-firewall-chains.service` alltid kjører ferdig før den aktuelle tjenesten starter.
|
||
|
||
---
|
||
|
||
## 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` |
|