Migrácia serverov do DMZ a nastavenie firewallu

zrhnutie, neviem či sa niekde objavi

Včera som úspešne premigroval servery z LAN do DMZ siete. DMZ sieť som mal pripravenú a servery som len jednoduchým spôsobom presúval (1x reverzný proxy server Nginx a 3x webové servery Apache). V podstate sa jedná len o zmenu IP adresy servera (prip. MAC adresu) a drobné úpravy v konfiguračných súboroch serverov. V ďalšej časti by som sa chcel venovať nastaveniu firewallu na pfSense.

Obsah

Presúvame reverzný proxy server

Najprv si ukážeme ako presunúť reverzný proxy server. Silno odporúčam prečítať aj tento blog aby bolo jasné o čom tu točím 😀 V súčasnosti mám reverzný proxy server umiestnený v LXC na LAN s IP adresou 192.168.1.105. Presúvať ho budem do DMZ2 siete a pridelím mu IP adresu 192.168.20.10. Prihlásime sa do web gui Proxmox a LXC na ktorom beží reverzný server proxy stopneme. Vo web gui sa presunieme v rámci NODu na shell a otvoríme konfiguračný súbor LXC.

nano /etc/pve/lxc/105.conf

V konfiguračnom súbore budeme upravovať len jeden riadok, kde zmeníme tieto hodnoty

  • bridge
  • gw
  • hwaddr
  • ip

prvý riadok je pôvodný a druhý riadok je upravený pre sieť DMZ2

net0: name=eth0,bridge=vmbr1,gw=192.168.1.1,hwaddr=5E:0A:57:60:3D:5A,ip=192.168.1.105/24,type=veth
net0: name=eth0,bridge=vmbr2,gw=192.168.20.1,hwaddr=CE:88:67:8A:A6:93,ip=192.168.20.10/24,type=veth

Cely config vyzerá asi takto a náš riadok, ktorý sme menili, je riadok 6

arch: amd64
cores: 1
features: nesting=1
hostname: debian-11-nginx-proxy
memory: 1024
net0: name=eth0,bridge=vmbr2,gw=192.168.20.1,hwaddr=CE:88:67:8A:A6:93,ip=192.168.20.10/24,type=veth
onboot: 1
ostype: debian
rootfs: local-zfs:subvol-105-disk-1,size=4G
swap: 512
unprivileged: 1

Editáciu ukončíme Ctrl+X Y Enter a kontajner môžeme spustiť. Ak sme neurobili žiadnu chybu, tak LXC by sa mal spustiť s novou IP adresou. To znamená, že do LXC sa už prihlasujeme z novou IP adresou ( -p 2299 znamená port na ktorom sa prihlasujeme (ak používate štandardný port 22, tak prepínač nie je potrebné zadávať do príkazu)).

ssh <user_name>@192.168.20.10 -p 2299

Zdá sa, že sme sa úspešne prihlásili a všetko je v poriadku. Ak sa pripojenie nepodarilo, tak príkaz je potrebné spustiť s prepínačom -v , kde by sme mohli zistiť problém.

Nastavujeme pfSense

Firewall pfSense je nastavený tak, že po nainštalovaní má sieť LAN prístup do všetkých sietí. Hovoria o tom tieto 2 pravidlá (plus na vrchu je pravidlo aby sme sa neodstrihli z webconfiguratora). To znamená, že z LAN siete sa dostaneme aj do DMZ. Problém je v tom, že nová DMZ ma po vytvorení akúkoľvek komunikáciu blokovanú. Aj keď by sme to nemali robiť nastavíme si pravidlo, ktoré otvorí celú DMZ. Toto pravidlo je len na otestovanie, potom ho musíme zablokovať. Pravidlo vyzerá následovne.

open DMZ

Ďalej musíme zmeniť Destination NAT (DNAT) resp. PortForwarding pre reverzný proxy server. Doteraz sme mali nastavený DNAT na IP adresu 192.168.1.105 a teraz to zmeníme na 192.168.20.10. Spravíme tak pre port 80 a 443 (na obrázku je ukážka pre port 80, resp. http, to iste spravíme pre port 443 https).

Port Forwarding

Teraz môžeme otestovať webové servery aj z WAN strany a ak je všetko v poriadku, tak to bude určite fungovať korektne. Avšak z LAN strany (aspoň v mojom prípade) to fungovať stále nebude. Dôvod je ten, že ja používam pre moje domény v rámci LAN, statické záznamy. To znamená, že v lokálnom resolvery smerujem všetky DNS mená na lokálnu IP adresu reverzného proxy servera. Zmeniť to môžeme v

Services --> DNS Resolver

Pomôžem si nasledujúcim obrázkom. Pre naše domény potrebujeme zmeniť IP adresu z 192.168.1.105 na 192.168.20.10. Viac o statických záznamoch som písal v tomto blogu.

Split DNS

Reverzný proxy server máme hotový a môžeme presunúť aj ďalšie webové servery.

Presúvame webové servery

Postup bude veľmi podobný. pre každý LXC si upravíme konfiguračný súbor v ktorom zmeníme (bridge, gw, hwaddr, ip). To je vlastne všetko. Samozrejme na reverznom proxy, musíme v každom konfiguračnom súbore zmeniť parameter proxy_pass na novú IP adresu webového servera. Ak sme presunuli webový server napr. na IP adresu 192.168.20.11, tak proxy_pass nastavíme takto a server reloadneme.

proxy_pass http://192.168.20.11;
sudo systemctl reload nginx

Ak nám všetky weby fungujú tak ako by mali, vieme sa prihlásiť cez SSH na servery, tak máme hotovo a môžeme sa pustiť do nastavenia firewallu pre DMZ sieť

Firewall všeobecne

Firewally sa vo všeobecnosti nastavujú tak, že všetko čo pochádza od klienta (resp. z LAN siete) sa berie ako dôveryhodné a je smerom do internetu povolené. Všetko čo prichádza smerom z internetu na klienta (resp. na LAN sieť) sa berie ako nebezpečné a je zakázané. Ak by klient vzniesol požiadavku na nejaký webový server a server by mu odpovedal, tak firewall by túto požiadavku odmietol pretože všetko z internetu smerom do LAN siete je zakázané. pfSense je stavový firewall a stav nadviazaných spojení si ukladá do tabuľky stavov. Na základe stavov v tabuľke si firewall pamätá nadviazané spojenie a packet nezahodí, ale ho prepošle na cieľový stroj. Pravidla vo firewalle sa čítajú smerom z hora nadol, to znamená, že na poradí pravidiel veľmi záleží.

Nastavujeme firewall

Najprv sa pozrieme na topológiu siete v ktorej je DMZ. Odporúčam pozrieť aj tento článok, kde som vytváral DMZ sieť. Na obrázku vidíme dve siete. Červený rámček predstavuje sieť LAN. Táto sieť je z časti fyzická a z časti virtuálna. Zelený rámček predstavuje sieť DMZ. Táto sieť je plne virtuálna, neexistujú k nej žiadne fyzické sieťové rozhrania a nemá ani žiadne fyzické servery.

LAN: 192.168.1.0/24

DMZ: 192.168.20.0/24

Network topology

Do DMZ zóny som umiestnil 1x reverzný proxy server Nginx a 3x webové servery Apache2. Čo potrebujeme o sieti DMZ vedieť ? Táto sieť nesmie mať v prvom rade prístup do siete LAN, čo je hlavným účelom DMZ. Avšak zo siete LAN do DMZ musí byť prístup (minimálne SSH). Sieť DMZ musí byť prístupná z internetu a internet musí byť dostupný v DMZ sieti.

Pravidlá pre prístup z LAN do DMZ

V predvolenom stave (pokiaľ sme nenastavili prísnejšie) sú pravidlá na LAN sieti nastavene tak, že LAN sieť má prístup do každej novo vytvorenej siete (čiže tam netreba nič nastavovať).

Rules LAN

Pravidla hovoria, že povoľ zo siete LAN prístup na akúkoľvek cieľovú IP adresu na akomkoľvek porte. Pravidlo 2 je pre IPv4 a pravidlo 3 pre IPv6 sieť. To by sme mali vyriešené a môžeme otestovať napr. SSH, alebo tiež https.

Nastavujeme pravidlá pre DMZ

Ako som už spomenul, tak novo vytvorená sieť neobsahuje žiadne pravidlá a teda všetko je na sieti DMZ zablokované. Pravidlá by mali byť nastavené takým spôsobom, že všetko je zakázané, okrem toho čo je povolené (nie opačne, že všetko je povolené, okrem toho čo je zakázané). Ja som nastavil pravidlá na DMZ takto.

Rules DMZ

Celkom navrchu je pravidlo ICMP, ktoré zabezpečí, že z akéhokoľvek stroja v DMZ môžem otestovať ping na akýkoľvek stroj, ktorý sa nachádza kdekoľvek. To znamená, že môžem pingať na IP adresy v DMZ, LAN, ale aj WAN (internet).

Ešte pred tým, keď budeme vytvárať druhé pravidlo tak si pre uľahčenie situácie môžeme vytvoriť aliasy.

Aliasy

Aliasy sú dobré v tom, že vytvárajú skupiny hostov, portov, alebo celých sieti. V mojom prípade mám v DMZ 4 servery. Každému serveru chcem nastaviť aby mal prístup na tradičné porty internetu (80/http, 443/https a 53/DNS). Ak by som nepoužil aliasy, tak vo firewalle by som namiesto jedného pravidla, musel použiť 12 pravidiel. Čim menej pravidiel existuje, tým je firewall prehľadnejší. Ja som vytvoril aliasy pre host(s) (IP adresy) a pre port(s). Ukážem len aliasy pre host(s), pre port(s) sa vytvárajú podobne, ale ako Type sa použije Port(s). Takže v ramci webkonfigurátora pfsense prejdeme do

Firewall --> Aliases --> IP --> +Add
Aliases

Nastavíme to tak ako je na obrázku. Do IP or FQDN zadáme IP adresy, ktoré chcem zahrnúť do aliasu. Vzhľadom k tomu, že ja mám v DMZ len webové servery, tak som mohol ako Type nastaviť Network(s) a zadať len IP adresu DMZ siete. Avšak ak by som po čase pridal do DMZ siete SFTP, alebo SMTP server, ktoré využívajú iné porty tak by som to musel prerábať.

Prístup z DMZ na internet

Poďme na to druhé pravidlo, ktoré hovorí: povoľ na protokole TCP/UDP, kde zdrojovou adresou je IP adresa z aliasu servers_dmz, prístup na akúkoľvek cieľovú IP adresu na porte z aliasu internet_ports (80, 443 a 53 (čiže http/https/dns)). Teraz okrem ICMP fungujú na serveroch aj aktualizácie (apt update && apt dist-upgrade) a máme prístup do celého internetu. To je zatiaľ všetko čo potrebujem pre webové servery povoliť. Ak sa počas prevádzky zistí, že je potrebné povoliť aj iné porty, tak sa pridajú do DMZ ďalšie pravidlá.

Posledné pravidlo hovorí o tom, že zablokuj akúkoľvek IPv4 komunikáciu pochádzajúcu z DMZ siete na This Firewall na všetkých portoch. Do pôsobnosti This firewal spadajú všetky IP adresy na bránach (GateWay) firewallu. Každá sieť vstupuje do firewallu cez bránu (GW), čiže týmto pravidlom sme zablokovali prístup na všetky brány. teoreticky by stačilo zablokovať bránu na sieti DMZ, pretože aj na tejto IP adrese počúva webkonfigurátor. Ak by sa teda útočník dostal do siete DMZ, tak by sa ľahko mohol dostať aj do webkonfigurátora.

Aktualizácia 29.04.2022

Pri testovaní odosielania emailu z webu WordPress som zistil, že email sa neodošle. WordPress komunikuje s emailovým serverom na zabezpečenom protokole SMTP, takže do aliasu pre port(s) som pridal ďalší port 465.

Koniec aktualizácie

Prístup z internetu do DMZ

Prístup z internetu do DMZ sme už nastavili. Ak si to nepamätáš, tak sa pozri sem. V tomto prípade sa jednalo o pravidlá na rozhraní WAN, kde sme nastavovali tzv. DNAT, resp. PortForwarding. Pri nastavovaní NAT môžeme automaticky generovať aj pravidlá na rozhraní WAN. Následujúce pravidlá umožňujú akejkoľvek zdrojovej IP adrese z internetu pristupovať v DMZ sieti na IP adresu 192.168.20.10 (reverzný proxy server), ale len na cieľový port 80 a 443.

DNAT

Záver

Dnes sme presúvali servery v rámci virtuálnej siete z LAN do DMZ. Hlavným účelom tohto presunu, bolo odizolovanie LAN siete od siete DMZ. Do DMZ siete sa väčšinou umiestňujú servery, ktoré sú vystavené celosvetovej sieti internet. Ďalej sme nastavili pravidlá na firewalle aby v prípade napadnutia serverov v DMZ, útočník nezískal prístup do siete LAN. Netvrdím, že tieto pravidlá sú ideálne, ale je to jedná z možností ako ochrániť domácu, resp. podnikovú sieť od útokov z vonka. Samozrejme existujú aj iné nastavenia firewallov, ale ja som sa rozhodol pre nastavenie, ktoré som dnes popisoval.

Leave a Reply

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *