====== Runbook: Pravila požarnega zidu ======
**Trajanje:** ~10 minut \\
**Vloga:** Omrežni administrator, varnostni administrator \\
**Predpogoj:** Administratorske pravice (Root/Admin)
Nadzor dostopa za Data Gateway na omrežni ravni.
----
===== Potek dela =====
flowchart TD
A[Začetek] --> B[Identificiraj porte]
B --> C{Platforma?}
C -->|Windows| D[Windows Firewall]
C -->|Linux| E[iptables/firewalld]
C -->|Oblak| F[Security Groups]
D --> G[Ustvari pravilo]
E --> G
F --> G
G --> H[Testiraj]
H --> I{Dostop OK?}
I -->|Da| J[Dokumentiraj]
I -->|Ne| K[Prilagodi pravilo]
style J fill:#e8f5e9
style K fill:#ffebee
----
===== Potrebni porti =====
| Port | Protokol | Smer | Opis |
|------|-----------|----------|--------------|
| 443 | TCP | Vhodni | HTTPS (produkcija) |
| 5000 | TCP | Vhodni | HTTP (samo razvoj) |
| 9090 | TCP | Izhodni | Prometheus (opcijsko) |
| 1433 | TCP | Izhodni | SQL Server |
| 5432 | TCP | Izhodni | PostgreSQL |
| 3306 | TCP | Izhodni | MySQL |
----
===== 1. Windows Firewall =====
**PowerShell (kot administrator):**
# Vhodni: Dovoli HTTPS
New-NetFirewallRule -DisplayName "Data Gateway HTTPS" `
-Direction Inbound -Action Allow -Protocol TCP -LocalPort 443
# Vhodni: Samo iz določenih IP-jev
New-NetFirewallRule -DisplayName "Data Gateway HTTPS Restricted" `
-Direction Inbound -Action Allow -Protocol TCP -LocalPort 443 `
-RemoteAddress "10.0.0.0/8","192.168.0.0/16"
# Izhodni: Dovoli SQL Server
New-NetFirewallRule -DisplayName "Data Gateway to SQL Server" `
-Direction Outbound -Action Allow -Protocol TCP -RemotePort 1433
# Navedi pravila
Get-NetFirewallRule -DisplayName "Data Gateway*" | Format-Table Name, Enabled, Direction, Action
# Odstrani pravilo
Remove-NetFirewallRule -DisplayName "Data Gateway HTTPS"
----
===== 2. Linux: firewalld (RHEL/CentOS) =====
# Odpri HTTPS port
sudo firewall-cmd --permanent --add-port=443/tcp
# Samo iz določenega omrežja
sudo firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="10.0.0.0/8"
port protocol="tcp" port="443"
accept'
# Uveljavi spremembe
sudo firewall-cmd --reload
# Prikaži pravila
sudo firewall-cmd --list-all
# Odstrani pravilo
sudo firewall-cmd --permanent --remove-port=443/tcp
sudo firewall-cmd --reload
----
===== 3. Linux: ufw (Ubuntu/Debian) =====
# Dovoli HTTPS
sudo ufw allow 443/tcp
# Iz določenega omrežja
sudo ufw allow from 10.0.0.0/8 to any port 443 proto tcp
# Prikaži stanje
sudo ufw status verbose
# Odstrani pravilo
sudo ufw delete allow 443/tcp
----
===== 4. Linux: iptables (ročno) =====
# Dovoli HTTPS
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Samo iz določenega omrežja
sudo iptables -A INPUT -p tcp --dport 443 -s 10.0.0.0/8 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j DROP
# Shrani pravila
sudo iptables-save > /etc/iptables/rules.v4
# Prikaži pravila
sudo iptables -L -n --line-numbers
# Odstrani pravilo (po številki)
sudo iptables -D INPUT 3
----
===== 5. Oblak: AWS Security Group =====
# Ustvari Security Group
aws ec2 create-security-group \
--group-name gateway-sg \
--description "Data Gateway Security Group" \
--vpc-id vpc-12345678
# HTTPS od vsepovsod
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 443 \
--cidr 0.0.0.0/0
# HTTPS samo iz VPN
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 443 \
--cidr 10.0.0.0/8
----
===== 6. Oblak: Azure NSG =====
# Ustvari NSG
az network nsg create \
--resource-group rg-gateway \
--name gateway-nsg
# HTTPS-pravilo
az network nsg rule create \
--resource-group rg-gateway \
--nsg-name gateway-nsg \
--name AllowHTTPS \
--priority 100 \
--direction Inbound \
--access Allow \
--protocol Tcp \
--destination-port-ranges 443 \
--source-address-prefixes '10.0.0.0/8'
----
===== 7. IP-Whitelist v Gateway =====
Alternativa požarnemu zidu: Filtriranje v aplikaciji.
**appsettings.json:**
{
"Security": {
"AllowedIPs": [
"10.0.0.0/8",
"192.168.0.0/16",
"172.16.0.0/12"
]
}
}
----
===== 8. Testiranje =====
# Lokalno
curl https://localhost/health
# Iz dovoljenega omrežja
curl https://gateway.example.com/health
# Od zunaj (mora biti blokirano)
curl --connect-timeout 5 https://gateway.example.com/health
# Pričakovano: Connection refused ali Timeout
----
===== 9. Kontrolni seznam =====
| # | Točka preverjanja | V |
|---|-----------|---|
| 1 | Port 443 vhodno dovoljen | |
| 2 | Port 5000 (HTTP) blokiran | |
| 3 | Samo potrebni IP-ji dovoljeni | |
| 4 | Izhodno do baze podatkov dovoljeno | |
| 5 | Testirano od zunaj | |
| 6 | Pravila dokumentirana | |
----
===== Odpravljanje težav =====
| Težava | Vzrok | Rešitev |
|---------|---------|--------|
| ''Connection refused'' | Port ni odprt | Dodaj pravilo požarnega zidu |
| ''Connection timeout'' | Požarni zid blokira | Preveri pravilo/izvorno IP |
| Dostop od vsepovsod | Brez omejitve | Omeji izvorne IP-je |
| Povezava do baze neuspešna | Izhodni promet blokiran | Dodaj izhodno pravilo |
----
===== Najboljše prakse =====
**Načelo najmanjših pravic:**
* Odpri samo potrebne porte
* Dovoli samo potrebne IP-je
* Blokiraj HTTP (5000) v produkciji
* Redno revidiraj pravila
----
===== Povezani Runbooks =====
* [[.:tls-einrichten|Nastavitev TLS]] - Aktivacija HTTPS
* [[..:automatisierung:kubernetes|Kubernetes]] - NetworkPolicies
* [[..:monitoring:alerting|Opozarjanje]] - Nadzor povezav
----
<< [[.:zertifikat-erneuern|<- Obnova certifikata]] | [[..:start|-> Pregled operaterja]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional//
{{tag>operator runbook firewall sicherheit netzwerk}}