Jak zavřít porty na firewallu

Jak zavřít porty na firewallu
« kdy: 09. 03. 2018, 18:54:54 »
Hezký večer,

prosím si od Vás radu, jak vypnout všechny porty na firewallu. Vždycky mi server někdo hackne a generuje velký traffic a co hůř do transitu, nedávno portmaper.

Tak sem se naštval a řekl sem si, že prostě zakážu komunikaci na všech portech a postupně budu případně povolovat jen ty porty, které mám v plánu používat.

Chvilku sem se snažil googlit, ale moc mi google nepomohl, našel sem nějaký návod pro iptables, jenže já na CentOSu nemám iptables, ale "firewalld".

Děkuji za rady, jak na to.


Re:Jak zavřít porty na firewallu
« Odpověď #1 kdy: 09. 03. 2018, 19:12:35 »
Napadlo mě něco jako:

firewall-cmd --zone=public --del-port=0-65535/udp --permanent
firewall-cmd --zone=public --del-port=0-65535/tcp --permanent

Omlouvám se za doublepost, nemám tu ikonku na editaci prvního postu, ale nevím či by to fungovalo takhle určené rozsahem.

Rhinox

Re:Jak zavřít porty na firewallu
« Odpověď #2 kdy: 09. 03. 2018, 20:32:38 »
Kdyz ti server vzdycky nekdo hackne, pak by zrejme stalo za to zjistit, jak konkretne se na tvuj server dostane. Firewall sam o sobe to nevyresi...

btw, "firewalld" je jenom takovej front/end pro iptables. Ja osobne nez abych pouzival neco takoveho, radsi si napisu vsechny pravidla sam. A nekde na zacatku tech pravidel je neco jako:
iptables -P INPUT DROP (taky pro OUTPUT a FORWARD)
Tim zavru vsechno, a povoluju jenom to co potrebuju (mam pristup na konzoli pres KVM, takze ze zacatku mi nevadi ze ustrihnu taky SSH, povolim to pozdeji)...

Re:Jak zavřít porty na firewallu
« Odpověď #3 kdy: 09. 03. 2018, 20:35:37 »
Nenapsal jste na jakém systému, a jestli chcete blokovat jen příchozí, nebo i odchozí provoz.
Pokud chcete mít systém bezpečný, je potřeba provádět mnoho opatření, ne jen zavírat porty.
Pokud se jedná např. o webový server, je vhodné ho mít puštěný za reverzní proxy.
Reverzní proxy je vhodné mít zcela oddělenou. Je dobré mít blokované i vešekrá spojení směrem ven (je to sice nepohodlné na správu, ale vyplatí se to).
V linuxu zapnout SELinux, na FreeBSD MAC.

Pokud máte webový server na ostro na internetu, nejlépe na něm běžíte PHP a zároveň poštovní server a možná ještě další služby, je to nejlepší cesta k průšvihům.

Pokud jde o firewall, měl by existovat ještě jeden předřazený. Softwarový firewall na samotném serveru je až last resort ochrana.

Re:Jak zavřít porty na firewallu
« Odpověď #4 kdy: 09. 03. 2018, 20:49:43 »
Rhinox: No to nevím iptables vůbec nemám nainstalovaný, ale to co mi radíš mi přijde logické, takhle funguje většina accesslistů apod, ACL se v tom mém firewallu asi říká zóna. Už asi tuším jak na to. Prostě tam dám na začátek ořezané pravidlo bez specifického portu.

Miroslav: Psal jsem, že CentOS, no asi příchozí i odchozí, proč by to mělo být otevřené, když ty porty prostě nebudu používat. Reverzní proxy neznám, znám jen reverzní DNS, občas na serveru mám jednoduché webové aplikace no, přečtu si nekde něco o reverzní proxy, ale už mi to někdo také říkal, tohle, asi na tom něco bude. :-D Však já se bavím o SW firewallu uvnitř linuxové distribuce. A ano, věřím, že většinou byl server hacknutý přes web server, teď už dávám deny from all a povolím si jen svou IP, většinou co mám na webserveru, tak nepotřebuji veřejně, jen pro sebe.

Oběma děkuji za rady a nové zkušenosti.



j

Re:Jak zavřít porty na firewallu
« Odpověď #5 kdy: 10. 03. 2018, 01:22:52 »
Rhinox: No to nevím iptables vůbec nemám nainstalovaný, ale to co mi radíš mi přijde logické, takhle funguje většina accesslistů apod, ACL se v tom mém firewallu asi říká zóna. Už asi tuším jak na to. Prostě tam dám na začátek ořezané pravidlo bez specifického portu.
To nejsou iptables, ale netfilter ... iptables je jen tool na konfiguraci netfilteru, a tu muzes delat i dalsima toolama. A jak bylo receno, nez pouzivat vsemozny zamlzovadla a zastiradla u kterych vlastne nevis co z toho vyleze, je lepsi si ty pravidla nastavovat primo.

Citace
Miroslav: Psal jsem, že CentOS, no asi příchozí i odchozí, proč by to mělo být otevřené, když ty porty prostě nebudu používat. Reverzní proxy neznám, znám jen reverzní DNS, občas na serveru mám jednoduché webové aplikace no, přečtu si nekde něco o reverzní proxy, ale už mi to někdo také říkal, tohle, asi na tom něco bude. :-D Však já se bavím o SW firewallu uvnitř linuxové distribuce. A ano, věřím, že většinou byl server hacknutý přes web server, teď už dávám deny from all a povolím si jen svou IP, většinou co mám na webserveru, tak nepotřebuji veřejně, jen pro sebe.

Oběma děkuji za rady a nové zkušenosti.
Bezne se dropuje prichozi provoz, ale pozor, uvedom si, ze bez dalsiho ti takova blokace odstreli uplne vsechno - nedostanes se ani na web. A jak uz ti napsal Rhinox, nastavuje se pravidlo na INPUT a pokud dotycnej stroj funguje jako router, tak na FORWARD. Nasledne se povoli jen to, co opravdu povolit chces (a jestli neco opravdu chces tak neco na tema -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT a totez samo na forward). To defakto rika, ze vazne chces dostat odpoved na komunikaci, kterou si sam vyvolal.

A proto si nemyslim (nejmin dokud nebudes zatracene dobre vedet co delas) ze je dobrej napad nastavovat DROP na OUTPUT. Protoze tam ti takovyhle pravidlo nepomuze, a budes tam muset nastavit vyjimku pro kazdou jednu vec extra. A ze jich je pozehnane (http/s,dns,ssh,mail - samo o sobe nekolik portu atd atd).

Ovsem pokud na tom stroji provozujes nejaky sluzby (mail, dns, ...) tak k nim stejne pristup povolit musis. Pak je otazka, co delas spatne spis na konfiguraci tehle veci. Samo firewall muzes pouzit k tomu, aby omezil nasledky neceho, ale nevyresis tim pricinu (muzes trebas omezit pocty pozadavku, omezit treaffic atd atd).

BTW: Klasicka proxy = cache/brana ... pro klienta (trebas browser), reverzni = totez pro server (tzn klienti se nebavej se serverem primo ale pres tu proxy).

phpkral

Re:Jak zavřít porty na firewallu
« Odpověď #6 kdy: 10. 03. 2018, 06:55:38 »
Zacit na zacazku a naucit se co je port. Nez absolutme zakladni znalosti soupnout server do internetu ... .

Protoze "hacknuti serveru" ke spis problem s nejakou sluzbou. Vsadim se ze tam mas deravej wordpress nebo neco takoveho. Kdyz zavres vsechno krom 80 tak si stejne nepomuzes.

Re:Jak zavřít porty na firewallu
« Odpověď #7 kdy: 10. 03. 2018, 20:55:06 »
j:

No já bych raději fakt zakázal všechno a povolil jen to co používám. Je mi jasné, že se nedostanu na web, když nepovolím porty 80 a 443, mám server, kde nic jiného než pouze 80,443 a SSH a 161(SNMP), nic víc mě nenapadá, tak bych všechno zakázal a povolil jen tohle. Pak mám druhý server a tam mi kde mi stačí jen SSH, SNMP a custom port. Zablokoval bych všechno jak příchozí tak odchozí, nějak mi nedošlo, proč bych tak neměl učinit.

phpkral:

To těžko, WP nemám rád a navíc, weby mám na sdíleném webhostingu, ty si nehostuji sám, jak je vidět, nemám na webhosting ještě skill. Co je síťový port vím, nějaké podrobnosti mi jsou už jedno. Nejde ani tak o hacknutí serveru, to by mi nevadilo, horší je, že ten můj server je používán např skenování a tímhle to podchytím. Tak nějak nemám skill zabývat se tím, jak se to hacknutí stane, páč na serveru je pouze aplikace, kterou nijak nevyvíjím já a i kdybych měl, stejně na to nepřijdu. :-) Vím, že mi chceš pomoct, abych to podchytil lépe, ale to je na dlouho, na tyhle věci musím přijít sám postupem času. Momentálně mi jde opravdu jen o to, aby bylo povoleno opravdu jen a pouze pár portů, které mé démoni opravdu používají.

Popravdě bych byl rád, kdyby někdo zkušený co to už dává z hlavy mi napsal dva řádky, které vložím do konfiguračního souboru, aby výsledkem byl:
1. Řádek - Zablokování všeho
2. Řádek - Povolení SSH
3. Řádek - Už si povolím jen porty na kterých chci aby server komunikoval

V podstatě potřebuji neco takovéhleho, akorát aby to bylo napsané správně (nikde v těch příkazech nevidím jestli je to input nebo output) a taky asi ne všechny ty služby komunikují:
firewall-cmd --zone=public --del-port=0-65535/udp --permanent #zablokuje vše
firewall-cmd --zone=public --del-port=0-65535/tcp --permanent # zablokuje vše
firewall-cmd --zone=public --add-port=22/tcp --permanent # následně povolí SSH, které hádám běží jen na TCP
firewall-cmd --zone=public --add-port=80/udp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/udp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=161/udp --permanent
firewall-cmd --zone=public --add-port=161/tcp --permanent
« Poslední změna: 10. 03. 2018, 21:00:06 od scientific »

Re:Jak zavřít porty na firewallu
« Odpověď #8 kdy: 10. 03. 2018, 21:11:49 »
Ještě holýma rukama v IPtables:

vypsat aktuální pravidla
Kód: [Vybrat]
iptables -L
smazat všechna aktuální pravidla (flush) - pouze v hlavní tabulce, ale nat ani mangle asi zatím používat nebudete
Kód: [Vybrat]
iptables -F
default pro chain "input" ať je drop
Kód: [Vybrat]
iptables -P INPUT DROP
default pro chain "output" by mohl být accept?
Kód: [Vybrat]
iptables -P OUTPUT ACCEPT
povolit cokoli z interního IP loopbacku
Kód: [Vybrat]
sudo iptables -A INPUT -i lo -j ACCEPT
povolit traffic směrem dovnitř, který souvisí s relacemi které jsme sami navázali směrem ven:
Kód: [Vybrat]
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTnebo
Kód: [Vybrat]
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
V tomto stavu by měly chodit interní služby přes loopback, plus byste se měl dostat všude ven, ale nikdo se nedostane k Vám dovnitř.

Příklad: povolíme port 80 směrem dovnitř:
Kód: [Vybrat]
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Příklad: povolíme port 22 směrem dovnitř:
Kód: [Vybrat]
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Příklad: povolíme ping směrem dovnitř
Kód: [Vybrat]
iptables -A INPUT -p icmp --icmp-type ping -j ACCEPT
Je to jenom naprostý základ, ale na to jste se ptal.
Nehrozí, že Vám prostě uhodli hrubou silou (automatem) heslo na SSH?
Pokud ho potřebujete otevřené zvenčí, zvažte fail2ban.
Jak už tu někdo psal... pokud někdo využil díru v HTTPd nebo tak něčem,
co potřebujete mít otevřené do světa, tak Vám packet-level firewall nemusí
postačit.

https://www.docum.org/docum.org/kptd/
https://www.digitalocean.com/community/tutorials/iptables-essentials-common-firewall-rules-and-commands
https://linux.die.net/man/8/iptables


Re:Jak zavřít porty na firewallu
« Odpověď #9 kdy: 10. 03. 2018, 21:52:49 »
František Ryšánek

Děkuji moc, za informace, jistě jste si s tím dal dost práce. Vypnu tedy firewalld a nainstaluji iptables, abych mohl použít, co jste mi sepsal. Nějaké loopback rozhraní na serveru definované je, tak snad to bude fungovat. "default pro chain "output" by mohl být accept?" Jestli to dobře, chápu, tak právě, že nemohl. Jde mi o to, aby můj server nemohl být zneužit pro generování vysokého trafficu, v minulosti sem měl problém s port mapperem, který byl zneužit a můj server generoval převysoký traffic, chtěl bych se tomu pro příště vyhnout tak, že zakážu především output, aby nemohl být generován TX přenos. Jinak to chápu, děkuji moc. Tedy stačí tam dát taktéž DROP a potom porty, které potřebuji aby komunikovali na OUTPUTU, tak pravidla budou vypadat stejně jako ty pro INPUT.

Fail2ban znám a najivně jsem si myslel, že tuto službu má centos už v sobě. Pokud nemá, tak centos je přece úplně nepoužitelný, když kdokoliv může beztrestně napadnou můj server přes SSH hrubou silou... :-(

Takže plán je jasný, doinstalovat fail2ban (doufám, že nebude třeba nic konfigurovat a postačí defaultní nastavení) + nasazení iptables s Vámi odeslanými pravidly a bude to tak, jak jsem požadoval.

Případně je ještě něco kromě povolení icmp pingu, co by mělo být povolené, jako standardně bývá otevřené, nerad bych něco opomněl.

Držte mi palce, ať se mi podaří správný efekt. Ještě jednou děkuji moc.
« Poslední změna: 10. 03. 2018, 21:55:31 od scientific »

ZAJDAN

  • *****
  • 2 088
    • Zobrazit profil
    • E-mail
Re:Jak zavřít porty na firewallu
« Odpověď #10 kdy: 11. 03. 2018, 10:38:22 »
Zakazat všechny porty a povolit jen ty potřebné je snad úplně to první co človek se soudností udělá, to je esenciální základ!
A nejlepe ještě na předřazeném routeru. Jsou stroje, u kterých filtruju i jejich otput.
Každopádně firewal nestačí pokud na tom běží web a ten sám je napadnetulnej.
Dneš k většině průniků dojde právě tudy.
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

phpkral

Re:Jak zavřít porty na firewallu
« Odpověď #11 kdy: 11. 03. 2018, 11:16:25 »
Jde mi o to, aby můj server nemohl být zneužit pro generování vysokého trafficu ...

Fail2ban znám a najivně jsem si myslel, že tuto službu má centos už v sobě. Pokud nemá, tak centos je přece úplně nepoužitelný, když kdokoliv může beztrestně napadnou můj server přes SSH hrubou silou... :-(

Takže plán je jasný, doinstalovat fail2ban (doufám, že nebude třeba nic konfigurovat a postačí defaultní nastavení) ...
Za generovani "vysokeho trafiku" nemuzou porty, ale nezabezpecena sluzba ktera za nima poslocha. I kdyz je jasne, ze metoda zakazat vsechno a povolit potrebne je na prvni strance jakehokoliv navodu.

CentOS bez fail2ban pochopitelne pouzitelny je.

A jestli doufas, ze na linuxu nebudey muset nic konfigurovat tak sis spatne vybral.

Fantomas

Re:Jak zavřít porty na firewallu
« Odpověď #12 kdy: 11. 03. 2018, 12:20:18 »
Ach jo, mit elementarni znalosti je proste dulezite. Vzdy a vsude. Mimochodem na konfiguraci firewallu vyslo jen na rootu nekolik clanku, staci pohledat. A pak se teprve ptat!

flack

Re:Jak zavřít porty na firewallu
« Odpověď #13 kdy: 11. 03. 2018, 13:31:05 »
František Ryšánek

Viem ze to sem nepatri, ale tvoj prispevok si zasluzi pochvalu.

Re:Jak zavřít porty na firewallu
« Odpověď #14 kdy: 11. 03. 2018, 15:06:47 »
Zalezi, jakou ma OP konfiguraci, ale je dost mozne, ze bude potreba ty uvedene priklady doplnit o iptables6 kvuli IPv6 nebo se mylim?