poznámky k nastavení MKT 

Firewal 

Autor: Martin Tuček (2019) Slack

firewall best practises

!!!NA KONCI DOKUMENTU SE NACHÁZÍ JIŽ PŘEDKONFIGUROVANÝ A VYZKOUŠENÝ SKRIPT S KOMPLETNÍ KONFIGURACÍ PŘIPRAVENÝ K NASAZENÍ!!!
NA BOARDY S INTERNÍ ADRESOU NASTAVENÍ DOPORUČUJI, NA BOARDY S VEŘEJNOU IP NUTNOST! (jinak Vás prý bkralik, který nastavení revidoval, nebude mít rád)


U Tiků, či firewallu obecně, nás zajímají primárně tři chainy – input, forward a output. Input je cokoli, co přichází přímo na dané zařízení, kde běží FW, forward je to, co přeposílá dál a output je to, co to zařízení vygeneruje a někam posílá. Základní pravidla vytvoříme pouze na forward a input, je třeba dodržovat pořadí, při aplikaci pravidel jsou pravidla zpracovávána postupně, tudíž pokud si dám
drop na začátek, můžu jít resetovat, pokud nemůžu po L2. 

Při přidávání pravidel třeba z důvodů, které zmiňuji níže, je třeba dané pravidlo dát  nad drop pravidlo daného chainu, jinak se nebude aplikovat. 

Po aplikaci pravidel níže budeme moci prohlížet internet a využívat všechny služby (ale nic mi nebude moc do vnitřní sítě z internetu). Na RB bude povolený přístup pouze na Winbox, ICMP, DNS a SSH a to pouze z freečkových adres (veřejných,   interních, APN i VPN) - tím zamezíme při apokalypse především nakažení tzv. gateway boardů, které se nakazily z internetu a dále distribuovaly útok naší sítí. Plný přístup na všechny služby boardu budou mít pouze IP dohledového serveru Sojka, UserDB a Wewima. 

Dále zakážeme počítače, které dělají port scany (to se týká především boardů s veřejkou nebo routerů na AP). MikroTik umí adrese dle její aktivity dávat mnou nastavené „skóre“. Za každý naskenovaný port do 1024 dostane daná IP skóre 3, za každý nad 1024 dostane skóre 1. Pokud za tři sekundy získá daná IP skóre
vyšší než 21, bude přidaná do address listu, který ji bude aktivně týden blokovat.

Po nastavení není třeba blokovat žádné služby v IP services, o vše se stará FW. Začneme přidáním potřebných address listů:

/ip firewall address-list

  1. Vnitřní síť

    add address=192.168.0.0/16 list=NAT 

    (popř. nutno upravit, pokud nepoužíváme rozsah 192.168, ale jiný)

  2. HKF-rozsahy

    add address=10.107.0.0/16 list="HKfreerozsahy"
    add address=89.248.240.0/20 list="HKfreerozsahy"
    add address=10.207.0.0/16 list="HKfreerozsahy"

  3. HKF-dohled

    add address=10.107.252.101 comment=Sojka list="HKFdohled"
    add address=10.253.36.0/22 list="HKfreerozsahy"
    add address=10.107.252.85 comment=UserDB list="HKFdohled"\


Forward

Jak jsem již nastínil v úvodu, forward je chain, skrz který prochází provoz, který není adresován přímo MikroTiku, nýbrž něčemu za ním. Je nutné podotknout, že na forward je nutno nastavit další pravidla, pokud nastavím třeba port forward v NATu (pro boardy s veřejkou), nebo mám za NATem více sítí (třeba pro hosty, pro chytrou domácnost, privátní,...). Pokud tedy nastavím port forward třeba na interní adresu 192.168.88.5 (dejme tomu raspberry s webovým serverem), je nutno na forward nastavit pravidlo pro akceptování provozu odkudkoli (či z definovaných adres třeba address listem) na tcp port 80 na danou adresu. Popř. pokud mám více sítí, není možno se v tomto nastavení dostat třeba z privátní do sítě chytré domácnosti. Pak je potřeba nastavit na forwad akceptování provozu z interface Private-LAN na interface Smarthome-LAN (a vice versa, pokud chci, aby mi zařízení sahala i do privátní sítě). Dobré je hlavně vše jednotně zakomentovávat, aby se v tom další správce vyznal.]


/ip firewall filter

  1. Allow estabilished and related – propustí již navázané sessions a související pakety (např. pokud si FTP otevře další sessions, je to související k té prvotní navázané)
    add action=accept chain=forward comment="Allow estabilished and related" connection-state=established,related
  2. Allow access to internet – propustí cokoli z  vnitřní sítě (nebo vnitřních sítí) ven
    //address list místo in interface používám pro případ, kdy máme na boardu natovaných více sítí, není třeba povolovat pro každou z nich 
  3. add action=accept chain=forward comment="Allow all networks to internet" src-address-list=NAT 
  4. Drop to forward – co není povolené v  pravidlech výše – zablokuje
    add action=drop chain=forward comment="Drop to forward"


Input

/ip firewall filter

  1. Allow estabilished, related, untracked – povolí veškeré navázané sessions, související sessions a pakety, které jsou označeny jako untracked, tzn. tak, aby se neobjevovaly v  listu navázaných sessions (IP firewall connections)
    add action=accept chain=input comment="Allow estabilished, related, untracked" connection-state=established,related,untracked

  2. Allow Winbox from HKfree – povolí přístup na Winbox pouze z rozsahů HKF
    add action=accept chain=input comment="Allow Winbox from HKfree" dst-port=8291 protocol=tcp src-address-list=HKfreerozsahy

  3. Allow SSH from HKfree – povolí přístup na Winbox pouze z  rozsahů HKF
    add action=accept chain=input comment="Allow SSH from HKfree" dst-port=22 protocol=tcp src-address-list=HKfreerozsahy

  4. Allow Sojka, UserDB and Wewimo – povolí veškeré dohledové servery add action=accept chain=input comment="Allow HKF - dohled to input" src-address-list="HKFdohled" 
  5. Drop invalid to input – zahodí neplatné pakety
    add action=drop chain=input comment="Drop invalid to input" connection-state=invalid
  6. Allow ICMP to input – povolí ICMP (aby fungoval třeba ping)
    add action=accept chain=input comment="Allow ICMP to input" protocol=icmp
  7. Allow DNS to input – povolí DNS dotazy na RB
    add action=accept chain=input comment="Allow DNS to input" dst-port=53 protocol=udp
  8. Port scanners to list for one week – odhalí port scannery a jejich IP přidá do dynamického address listu na týden 
    add action=add-src-to-address-list address-list="Port scanners" address-list-timeout=1w chain=input comment="Port scanners to list for one week" protocol=tcp psd=21,3s,3,1
  9. Drop port scanners – na input zakáže přístup adresám z address listu port scannerů
    add action=drop chain=input comment="Drop port scanners" src-address-list="Port scanners" 
  10. Drop to input except internal network – zablokuje co není povolené výše kromě čehokoli z vnitřní sítě
    add action=drop comment="Drop to input except internal network" chain=input src-address-list=!NAT

Skript

# HKfree firewall - best practises
# Martin Tucek, mt@martintucek.cz, 04/2019
/ip firewall address-list
add address=192.168.0.0/16 list=NAT
add address=10.107.0.0/16 list="HKfreerozsahy"
add address=89.248.240.0/20 list="HKfreerozsahy"
add address=10.207.0.0/16 list="HKfreerozsahy"
add address=10.253.36.0/22 list="HKfreerozsahy"
add address=10.107.252.101 comment=Sojka list="HKFdohled"
add address=10.107.252.85 comment=UserDB list="HKFdohled"
/ip firewall filter
add action=accept chain=forward comment="Allow estabilished and related" connection-state=established,related
add action=accept chain=forward comment="Allow all networks to internet" src-address-list=NAT
add action=drop chain=forward comment="Drop to forward"
add action=accept chain=input comment="Allow estabilished, related, untracked" connection-state=established,related,untracked
add action=accept chain=input comment="Allow Winbox from HKfree" dst-port=8291 protocol=tcp src-address-list=HKfreerozsahy
add action=accept chain=input comment="Allow SSH from HKfree" dst-port=22 protocol=tcp src-address-list=HKfreerozsahy
add action=accept chain=input comment="Allow HKF - dohled to input" src-address-list="HKFdohled"
add action=drop chain=input comment="Drop invalid to input" connection-state=invalid
add action=accept chain=input comment="Allow ICMP to input" protocol=icmp add action=accept chain=input comment="Allow DNS to input" dst-port=53 protocol=udp
add action=add-src-to-address-list address-list="Port scanners" address-list-timeout=1w chain=input comment="Port scanners to list for one week" protocol=tcp psd=21,3s,3,1
add action=drop chain=input comment="Drop port scanners" src-address-list="Port scanners"
add action=drop comment="Drop to input except internal network" chain=input src-address-list=!NAT

RSTP - defaultní funkcionalita, která dělá problémy

Autor: Pavel (slack 2021)

Příklad: mikrotik má v defaultní konfiguraci zapnuté!  Opět jsem přišel k nefunkčnímu sektoru, 99% pl nemožnost se do něj dostat, fyz. restart nepomáhal. Vypadalo na vadnou desku ale jakmile se odpojil ze společného switche s ostatními, tak fungoval na první dobrou. Stačilo přepnou RSTP na NONE a bylo vyřešeno. Najdete to po kliknutí vlevo na Bridge, rozkliknutí bridge1 a záložka STP. Ten sektor doteď fungoval bezproblému, rozbilo se to zničeho nic. Vypínejte to prosím defaultně u všeho, sektory, linky, klienti. STP u mikrotiku je sra*ka a nefunguje to jak má, vznikaj z toho tyhle problémy. Bacha umí to projít i mimo subnety a vlany a klient na sektoru vám pak třeba sundá linku na jiné ap. Když už to začne takhle kravit tak se do toho po eth nedá dostat a musíte k tomu fyzicky.


Napište komentář...