====== 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}}