❗️Toto je původní verze internetového fóra ISPforum.cz do února 2020 bez možnosti registrace nových uživatelů. Aktivní verzi fóra naleznete na adrese https://telekomunikace.cz

Účinný firewall

Místo, kde žádná otázka není hloupá.
ssnakess
Příspěvky: 141
Registrován: 13 years ago

Účinný firewall

Příspěvekod ssnakess » 10 years ago

Zdravím,

do včerejška jsem si myslel, že mám docela správně nastavený firewall. Po shlédnutí včerejšího grafu jsem zjistil, že upload a CPU je na max po celou noc. Zastavilo se to až potom co jsem přidal statické záznamy DNS (127.0.0.1) a přesunul pravidla pro drop DNS z venku výš (zapnutý allow remote request). Tyto pravidla jsem měl úplně dole nad DROP ALL INPUT. Po přesunutí nahoru (příloha) se za 10h naskákalo na 240MB. Před přesunutí tam nebylo skoro nic.

Otázka zní: proč to předtím nezachytilo?
Dále bych chtěl poprosit o konzultaci, zda ostatní pravidla co tam mám včetně pořadí je v pořádku.
Předem děkuji za rady a připomínky.

Výpis Pravidel:
/ip firewall filter
add action=drop chain=input comment="DROP INVALID CONNECTIONS INPUT" \
connection-state=invalid
add chain=input comment="ALLOW ALREADY ESTABLISHED CONNECTIONS INPUT" \
connection-state=established
add chain=input comment="ALLOW RELATED CONNECTIONS INPUT" connection-state=\
related
add action=drop chain=input comment="DNS TCP DROP" dst-port=53 in-interface=\
WAN protocol=tcp
add action=drop chain=input comment="DNS UDP DROP" dst-port=53 in-interface=\
WAN protocol=udp
add chain=input comment="ALLOW UDP" protocol=udp
add chain=input comment="ALLOW PINGS" limit=50/5s,2 protocol=icmp
add action=drop chain=input comment="DROP EXCESS PINGS" protocol=icmp
add chain=input comment="ALLOW WINBOX" dst-port=xxx protocol=tcp
add chain=input comment="ALLOW WINBOX" disabled=yes dst-port=xxx protocol=\
tcp
add chain=input comment="ALLOW API" dst-port=xxx protocol=tcp
add chain=input comment="ALLOW WWW" dst-port=xxx protocol=tcp \
src-address=x.x.x.x
add chain=input comment="ALLOW WWW" dst-port=xxx protocol=tcp \
src-address=x.x.x.x
add chain=input comment="ALLOW WWW" dst-port=xxx protocol=tcp \
src-address=x.x.x.x
add chain=input comment="ALLOW WWW2" dst-port=xxx protocol=tcp \
src-address=x.x.x.x
add chain=input comment="POVOLIT VSE Z LAN CO NEJDE Z VENKU" in-interface=\
!WAN src-address=x.x.x.x/24
add chain=input comment="INPUT IPSEC ESP" protocol=ipsec-esp
add chain=input comment="INPUT IPSEC AH" protocol=ipsec-ah
add chain=input comment="INPUT PORT 500" dst-port=500 protocol=udp
add action=log chain=input comment="LOG EVERYTHING ELSE - INPUT" disabled=yes \
log=yes log-prefix="DROP INPUT"
add action=drop chain=input comment="DROP ALL INPUT"
add action=drop chain=forward comment="DROP INVALID CONNECTIONS FORWARD" \
connection-state=invalid
add chain=forward comment="ALLOW ALREADY ESTABLISHED CONNECTIONS FORWARD" \
connection-state=established
add chain=forward comment="ALLOW RELATED CONNECTIONS FORWARD" \
connection-state=related
Přílohy
FW.png
firewall filter
FW.png (56.35 KiB) Zobrazeno 3982 x
Naposledy upravil(a) ssnakess dne 20 Dec 2014 23:05, celkem upraveno 1 x.
0 x

ludvik
Příspěvky: 4448
Registrován: 14 years ago

Příspěvekod ludvik » 10 years ago

Screenshot nemusí být kompletní výpis pravidel ... Co je na řádku 5? Opravdu plné povolení všeho na UDP? Pak je odpověď jednoduchá ...
0 x
Jelikož je zde zakázáno se negativně vyjadřovat k provozním záležitostem, tak se holt musím vyjádřit takto: nové fórum tak jak je připravováno považuji za cestu do pekel. Nepřehledný maglajz z toho bude. Do podpisu se mi pozitiva již nevejdou.

ssnakess
Příspěvky: 141
Registrován: 13 years ago

Příspěvekod ssnakess » 10 years ago

ludvik píše:Screenshot nemusí být kompletní výpis pravidel ... Co je na řádku 5? Opravdu plné povolení všeho na UDP? Pak je odpověď jednoduchá ...


Ano, převzato z wiki.mikrotik.com
Předpokladám, že je to špatně.
0 x

ludvik
Příspěvky: 4448
Registrován: 14 years ago

Příspěvekod ludvik » 10 years ago

Měl jsi:
a) povolený DNS odkudkoliv
b) DNS jede primárně po UDP, což bylo vidět na counteru
c) povolil jsi komplet UDP odkudkoliv
d) vytvořil jsi krásného bota pro DDoS.

Základní pravidla: nejdřív se selektivně a co nejpodrobněji povoluje (+established, related na začátku) a na konec se hodí zákaz všeho. Když se to dodrží, nelze udělat moc velkou botu. Opačný způsob (selektivní zákazy) jsou dle mého méně čitelné a náchylnější na chybu. Což se potvrdilo ...
*z toho vyplývá, že máš winbox/api povolené dost volně - fakt to potřebuješ?

Pokud omezovat ping, tak spíš dle typů ICMP paketů, než na limit za vteřinu. Jednou se ti stane, že na ten limit narazíš a pak budeš celý den řešit, proč máš ztrátovost na lince.

Pravidla lze sloučit např stylem, kdy se víc portů píše do jedno pravidla - odděluje se čárkami. Může to zpřehlednit zápis.

Nebo se na inputu nedělá firewall naprosto žádný ... když ovšem víš, co se systémem děláš. Naprostá většina služeb lze totiž buď vypnout, nebo nakonfigurovat tak, aby sama o sobě nebyla dostupná odkud nechci. Pak firewall postrádá v podstatě smysl. Bohužel se to netýká DNS serveru na Mikrotiku, díky němu (pokud ho potřebuješ) už firewall mít prostě musíš. Pustit rekurzivní DNS server na internet je cesta do pekla, jak jsi se sám přesvědčil.

Ne každým návodům se dá věřit. Je potřeba to pochopit. Povolení UDP na inputu je nevysvětlitelné ... snad jen jako obezlička pro funkčnost jejich bandwidth testu. Také jsou většinou dost staré - např. u mikrotiků nezmiňují DNS vůbec. Bohužel je to dnes hodně zneužívaná služba.
0 x
Jelikož je zde zakázáno se negativně vyjadřovat k provozním záležitostem, tak se holt musím vyjádřit takto: nové fórum tak jak je připravováno považuji za cestu do pekel. Nepřehledný maglajz z toho bude. Do podpisu se mi pozitiva již nevejdou.

ssnakess
Příspěvky: 141
Registrován: 13 years ago

Příspěvekod ssnakess » 10 years ago

a) povolený DNS odkudkoliv
Odkud bych měl mít povolený DNS? Jen od svého ISP + google DNS (8.8.8.8 )?

c) povolil jsi komplet UDP odkudkoliv
Potřebuji jen vzdálenou správu přes WINBOX, takže mohu toto pravidlo smazat? Popřípadě povolit jen vnitřní rozsah?

d) vytvořil jsi krásného bota pro DDoS.
Ano, vytvořil. Snažím se to nyní napravit.

Základní pravidla: nejdřív se selektivně a co nejpodrobněji povoluje (+established, related na začátku) a na konec se hodí zákaz všeho. Když se to dodrží, nelze udělat moc velkou botu. Opačný způsob (selektivní zákazy) jsou dle mého méně čitelné a náchylnější na chybu. Což se potvrdilo ...
Díky za radu, budu se podle toho řídit.

*z toho vyplývá, že máš winbox/api povolené dost volně - fakt to potřebuješ?
Já hodně cestuji, tak jsem nemohl napevno nastavit IP. Udělám tunel.

Pokud omezovat ping, tak spíš dle typů ICMP paketů.
Využívám jen pro ověření dostupnot, takže asi stačí 0 a 8 (Echo Request a Echo Reply)?
0 x

ludvik
Příspěvky: 4448
Registrován: 14 years ago

Příspěvekod ludvik » 10 years ago

DNS z WAN máš mít zakázaný! Nemáš autoritativní server, je to jen resolver, "překladač".

Fígl je v tom, že je to STAVOVÝ firewall. Tedy si pamatuje stav každého spojení ... a dokáže na to reagovat. Takže ty první dvě pravidla (RELATED, ESTABLISHED) znamenají, že dovnitř pustí vše z již navázaných spojení (nebo souvisejících ...). Takže dotaz na DNS od klienta vyvolá první paket VEN - tedy OUTPUT. To projde, to nezakazuješ. A vše co se vrací na tento dotaz zpět je povoleno jako ESTABLISHED.
0 x
Jelikož je zde zakázáno se negativně vyjadřovat k provozním záležitostem, tak se holt musím vyjádřit takto: nové fórum tak jak je připravováno považuji za cestu do pekel. Nepřehledný maglajz z toho bude. Do podpisu se mi pozitiva již nevejdou.

ludvik
Příspěvky: 4448
Registrován: 14 years ago

Příspěvekod ludvik » 10 years ago

ICMP: ne, potřebuješ toho víc, já používám:

Kód: Vybrat vše

add action=accept chain=input disabled=no icmp-options=8:0-255 protocol=icmp
add action=accept chain=input disabled=no icmp-options=3:0-255 protocol=icmp
add action=accept chain=input disabled=no icmp-options=4:0-255 protocol=icmp
add action=accept chain=input disabled=no icmp-options=11:0-255 protocol=icmp
add action=accept chain=input disabled=no icmp-options=12:0-255 protocol=icmp


UDP na inputu obecně nepotřebuješ. Z WAN rozhodně. I ten winbox používá TCP (pouze varianta přes MAC server je UDP, ale to z WAN nemáš vlastně jak použít)

Winbox z WAN ještě budiž (i když - fakt se na tom hrabeš, když jsi na cestách?). Ale API je podle mě naprostá zbytečnost mít to z WAN volné.
0 x
Jelikož je zde zakázáno se negativně vyjadřovat k provozním záležitostem, tak se holt musím vyjádřit takto: nové fórum tak jak je připravováno považuji za cestu do pekel. Nepřehledný maglajz z toho bude. Do podpisu se mi pozitiva již nevejdou.

ssnakess
Příspěvky: 141
Registrován: 13 years ago

Příspěvekod ssnakess » 10 years ago

Tak podle tvých rad a vysvětlení jsem vytvořil tohle:

/ip firewall filter
add chain=input comment="ALLOW ALREADY ESTABLISHED CONNECTIONS INPUT" \
connection-state=established
add chain=input comment="ALLOW RELATED CONNECTIONS INPUT" connection-state=\
related
add chain=input comment="POVOLIT VSE Z LAN CO NEJDE Z VENKU" in-interface=\
!WAN src-address=X.X.X.X/XX
add chain=input comment="ALLOW WINBOX" dst-port=XXXX protocol=tcp \
src-address=X.X.X.X
add chain=input comment="ALLOW WWW" dst-port=XXXX protocol=tcp src-address=\
X.X.X.X
add chain=input comment="INPUT IPSEC ESP" protocol=ipsec-esp src-address=\
X.X.X.X
add chain=input comment="INPUT IPSEC AH" protocol=ipsec-ah src-address=\
X.X.X.X
add chain=input comment="INPUT PORT 500" dst-port=500 protocol=udp \
src-address=X.X.X.X
add chain=input comment="Allow Ping - 8 Echo Request" icmp-options=8 \
protocol=icmp
add chain=input comment="Allow Ping - 3 Destination Unreachable" \
icmp-options=3 protocol=icmp
add chain=input comment="Allow Ping - 4 Source Quench" icmp-options=4 \
protocol=icmp
add chain=input comment="Allow Ping - 11 Time Exceeded" icmp-options=11 \
protocol=icmp
add chain=input comment="Allow Ping - 12 Parameter Problem" icmp-options=12 \
protocol=icmp
add action=drop chain=input comment="DROP ALL INPUT"
add chain=forward comment="ALLOW ALREADY ESTABLISHED CONNECTIONS FORWARD" \
connection-state=established
add chain=forward comment="ALLOW RELATED CONNECTIONS FORWARD" \
connection-state=related
add action=drop chain=forward comment="DROP INVALID CONNECTIONS FORWARD" \
connection-state=invalid

Základní pravidla: nejdřív se selektivně a co nejpodrobněji povoluje (+established, related na začátku) a na konec se hodí zákaz všeho.
Hotovo, měl jsem tam drop invalid connection, ale toho moc nebylo, tak ted spadne do DROP ALL.

DNS z WAN máš mít zakázaný! Nemáš autoritativní server, je to jen resolver, "překladač".
Spadne do DROP ALL

ICMP: ne, potřebuješ toho víc, já používám:
Vloženo

Winbox z WAN ještě budiž (i když - fakt se na tom hrabeš, když jsi na cestách?).
Ano potřebuji. Zapnu notebook, připojím se přes mobil a přidávám, povoluji. Tohle vyřeším buď přes VPN nebo někde jsem četl o Port Knocking.

Ale API je podle mě naprostá zbytečnost mít to z WAN volné.
Občas jsem se připojil přes telefon pomocí TikTool, ale jednou za uherák = vypnuto.

Myslím si, že je to podle těch pravidel a myšlenek co jsi tu psal. Pár věcí jsem se přiučil. Díky moc za pomoc a ochotu.
0 x

ludvik
Příspěvky: 4448
Registrován: 14 years ago

Příspěvekod ludvik » 10 years ago

ještě se nauč address-listy a bude to :-)
0 x
Jelikož je zde zakázáno se negativně vyjadřovat k provozním záležitostem, tak se holt musím vyjádřit takto: nové fórum tak jak je připravováno považuji za cestu do pekel. Nepřehledný maglajz z toho bude. Do podpisu se mi pozitiva již nevejdou.

ssnakess
Příspěvky: 141
Registrován: 13 years ago

Příspěvekod ssnakess » 10 years ago

ludvik píše:ještě se nauč address-listy a bude to :-)


Včera jsem zprovoznil port knocking. A koukal jsem na adress list, zajimavá věc.
0 x

jarda.jezek
Příspěvky: 220
Registrován: 12 years ago

Příspěvekod jarda.jezek » 10 years ago

U posledních verzí jde related a established sloučit do jednoho pravidla.
0 x

placek.milan
Příspěvky: 286
Registrován: 13 years ago

Příspěvekod placek.milan » 10 years ago

můžeš sem pak hodit pro zajímavost ten finální firewall až to doladíš?
0 x