Zabezpečení domácího serveru - FW

paja

Zabezpečení domácího serveru - FW
« kdy: 22. 08. 2017, 10:54:40 »
Mám domácí server s debianem, běží tam samba, ssh a logitech media server na portech  3483 a 9000. Server je za NATem, ale přesto bych ho chtěl zabezpečit.
Poradili byste prosím co na to aktuálně použít (iptables?) a případně pomohli napsat konfig ve smyslu všechno zakázat, povolit služby výše zmíněné a to pouze z lokálních adres 192.168.1.x  ?
Pro někoho znalého to je asi trivka, ale když jsem se snažil něco najít tak seriály jsou cca 3-5 let staré a popisují spoustu velmi specificých požadavků, které já asi nepotřebuju, tak v tom plavu... Navíc nevím jak je to s systemd....
díky


Re:Zabezpečení domácího serveru - FW
« Odpověď #1 kdy: 22. 08. 2017, 11:12:15 »
Pokud se takhle ptáte, pak raději žádný firewall nezprovozňujte. Místo toho věnujte energii tomu, abyste měl na tom serveru aktuální software a měl ho správně nakonfigurovaný.

Firewall není něco, co máte, firewall se konfiguruje podle potřeb konkrétní sítě. Ty musíte specifikovat, podle toho si pak firewall nakonfigurujete a udržujete. Takže přesně to, na co vy se ptáte, musíte vědět vy a nikdo z venku vám to neporadí, protože nikdo neví, jaké služby a jakým způsobem tam chcete provozovat.

Lol Phirae

Re:Zabezpečení domácího serveru - FW
« Odpověď #2 kdy: 22. 08. 2017, 11:15:46 »
Poradili byste prosím co na to aktuálně použít (iptables?) a případně pomohli napsat konfig ve smyslu všechno zakázat, povolit služby výše zmíněné a to pouze z lokálních adres 192.168.1.x  ?

Celkem zbytečná práce, pokud to má být přístupné pouze lokálně, tak veškerý přístup zakaž. Provoz mezi stroji na lokální síti se na ten firewall stejně nikdy nedostane, jde to pouze přes switch.

paja

Re:Zabezpečení domácího serveru - FW
« Odpověď #3 kdy: 22. 08. 2017, 11:46:09 »
Firewall není něco, co máte, firewall se konfiguruje podle potřeb konkrétní sítě. Ty musíte specifikovat, podle toho si pak firewall nakonfigurujete a udržujete.

Ale to přece píšu :
Běží tam samba, ssh a logitech media server na portech  3483 a 9000,
chci jinak vše zakázat a povolit pouze tyto služby. Potřeba konkrétní sítě je přístup na tyto služby...

Javeline

Re:Zabezpečení domácího serveru - FW
« Odpověď #4 kdy: 22. 08. 2017, 11:52:05 »
Ahoj. Budeš muset studovat své aplikace a jejich síťové požadavky. Teorii se nevyhneš. Anebo si budeš muset někoho najmout.
Prakticky do startu  Ti může pomoci toto (http://easyfwgen.morizot.net/gen/). Na to nasadíš rozšíření dané Tvou situací (aplikace)...
Hodně úspěchů
J.


Re:Zabezpečení domácího serveru - FW
« Odpověď #5 kdy: 22. 08. 2017, 11:54:13 »
Ale to přece píšu :
Běží tam samba, ssh a logitech media server na portech  3483 a 9000,
chci jinak vše zakázat a povolit pouze tyto služby. Potřeba konkrétní sítě je přístup na tyto služby...
Nepíšete. Odkud ty služby mají být dostupné? A ten server nebude konzumovat žádné služby? Nepotřebuje synchronizaci času, DNS, stahování aktualizací, nemá odpovídat na ping?

chci jinak vše zakázat
Proč?

Potřeba konkrétní sítě je přístup na tyto služby...
Pokud by to byla pravda, je nejjednodušší tu síť prostě fyzicky odpojit od internetu.

paja

Re:Zabezpečení domácího serveru - FW
« Odpověď #6 kdy: 22. 08. 2017, 12:16:45 »
Prakticky do startu  Ti může pomoci toto (http://easyfwgen.morizot.net/gen/). Na to nasadíš Hodně úspěchů
Díky...
Studuji ze zdrojů, ale jsou poměrně staré, např.  https://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-linuxovy-firewall-zaklady-iptables

http://www.abclinuxu.cz/blog/Debian_Lenny/2009/10/zakladni-konfigurace-linux-firewallu-pomoci-iptables

nejlepší je asi toto:
http://support.zcu.cz/index.php/Iptables

Nepíšete. Odkud ty služby mají být dostupné? A ten server nebude konzumovat žádné služby?
Píšu, že na ty služby se bude připojovat z adres 192.168.1.x.


Nepotřebuje synchronizaci času, DNS, stahování aktualizací, nemá odpovídat na ping?
Zatím nemusí, pokud zjistím takovou potřebu, přidám si pravidlo do FW, snad už sám. Chci se to naučit, proto sem chtěl začít s něčím úpně základním.

chci jinak vše zakázat
Proč?
Protože jsem se dočetl, že fw se staví tak, že se zakáže vše a povolí jen to co je potřeba.

Potřeba konkrétní sítě je přístup na tyto služby...
Pokud by to byla pravda, je nejjednodušší tu síť prostě fyzicky odpojit od internetu.
Ano, to dělám, vypínám modem, pokud nepotřebuji na internet. Lokální síť samozřejmě funguje.

j

Re:Zabezpečení domácího serveru - FW
« Odpověď #7 kdy: 22. 08. 2017, 12:36:56 »
...
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT

iptables -P INPUT DROP


Dalsi si dopln dle vlastniho uvazeni. Ale pocitej s tim, ze jeste musis na GW zabranit tomu, aby ti do site pronikly pakety s src ve tvym rozsahu. Pro pripadnou 6tku to funguje stejne, jen pouzijes ip6tables a 6tkovy adresy.

Re:Zabezpečení domácího serveru - FW
« Odpověď #8 kdy: 22. 08. 2017, 13:15:13 »
Chci se to naučit, proto sem chtěl začít s něčím úpně základním.
Základní je uvědomit si, k čemu vlastně firewall slouží. Nakonfigurování nějakých pravidel do firewallu je až ten poslední nezajímavý krok.

Protože jsem se dočetl, že fw se staví tak, že se zakáže vše a povolí jen to co je potřeba.
To ale neodpovídá na otázku, proč to tak chcete mít. Je to jeden ze způsobů, jak nastavit firewall – pokud k takovému nastavení firewallu máte důvod.

Začínáte od konce. Nejprve musíte vědět, jak fungují sítě, jak fungují jednotlivé služby. Pak možná v nějakém okamžiku narazíte na to, že byste potřeboval zařídit to a to – a a uvědomíte si, že to by se dalo nejlépe zařídit firewallem. Pak už se ale samozřejmě nebudete ptát ostatních na to, k čemu vlastně chcete firewall.

...
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT

iptables -P INPUT DROP
To je přesně důvod, jak to nedělat. Vychrlit nějaký seznam pravidel, u kterých jejich adresát neví ani co dělají a už vůbec ne proč to dělají.

Miroslav Šilhavý

Re:Zabezpečení domácího serveru - FW
« Odpověď #9 kdy: 22. 08. 2017, 13:30:38 »
Mám domácí server s debianem, běží tam samba, ssh a logitech media server na portech  3483 a 9000. Server je za NATem, ale přesto bych ho chtěl zabezpečit.
Poradili byste prosím co na to aktuálně použít (iptables?) a případně pomohli napsat konfig ve smyslu všechno zakázat, povolit služby výše zmíněné a to pouze z lokálních adres 192.168.1.x  ?
Pro někoho znalého to je asi trivka, ale když jsem se snažil něco najít tak seriály jsou cca 3-5 let staré a popisují spoustu velmi specificých požadavků, které já asi nepotřebuju, tak v tom plavu... Navíc nevím jak je to s systemd....
díky

Z dotazu není zřejmé, jestli máte server v LAN, nebo jestli internet prostupuje skrz něj. Obojí je řešitelné, jen trochu jinak.

Pro začátek bych zkusil Shorewall, možná je to z počátku o maličko víc učení se, než obšlehnout pár řádků do iptables, ale odměnou je přehledná správa pravidel, s menším rizikem chyb z nepozornosti.

Z praktických důvodů (spolehlivost, jednodušší správa, méně ladění) bych se ale spíš klonil k tomu na serveru firewall nemít, nebo mít, ale nerozlišovat provoz 192.168.1/24 od zbytku. Firewall na serveru bych dělal pouze na omezení služeb (co jste vyjmenoval), bez ohledu na zdroj spojení.

Firewall mezi internetem a LAN bych nechal na modemu / routeru, a pokud tomu nedůvěřujete, můžete vložit ještě nějaký další - třeba nejlevnější Mikrotik, který poslouží stejně a lépe. Pokud tam nemáte velké datové toky, lze filtrovat i na bridgi, takže se to může tvářit naprosto transparentně.

maga

Re:Zabezpečení domácího serveru - FW
« Odpověď #10 kdy: 22. 08. 2017, 14:07:49 »
Ahoj, vzhledem k dotazu bych vubec neresil iptables nastaveni a pouzil bych treba firehol "https://firehol.org/" je to jednoduche na nastaveni a pochopeni.

Sten

Re:Zabezpečení domácího serveru - FW
« Odpověď #11 kdy: 22. 08. 2017, 14:11:58 »
Poradili byste prosím co na to aktuálně použít (iptables?)

Přímo iptables určitě ne, to je pro hodně pokročilé použití. Doporučit můžu firewalld, hlavně protože jeho spuštění je nejjednodušší z pokročilých firewallů, které znám (pro základní funkčnost není potřeba nastavit vůbec nic) a je integrovaný s Network Managerem.

a případně pomohli napsat konfig ve smyslu všechno zakázat, povolit služby výše zmíněné a to pouze z lokálních adres 192.168.1.x  ?

Většina pokročilých firewallů primárně neřeší IP adresy (i když samozřejmě může), ale zóny. Vnitřní rozhraní přidělíte do jedné zóny, ve firewalld typicky home nebo work, vnější do jiné, třeba public. U firewalld:
Kód: [Vybrat]
# eth0 vnější rozhraní, eth1 vnitřní

# Přiřazení do public není nezbytné, public je výchozí zóna pro nepřiřazená rozhraní, ale lze přiřadit i explicitně:
firewall-cmd --zone=public --add-interface=eth0

firewall-cmd --zone=home --add-interface=eth1

Tyhle zóny mají už vlastní předdefinované chování pro základní funkčnost (třeba public blokuje všechno kromě SSH a DHCP klienta, home navíc povoluje mDNS). Služby povolíte tím, že je přidáte do zóny:
Kód: [Vybrat]
firewall-cmd --zone=home --add-service=samba
# Místo přímého uvedení portů můžete nadefinovat službu pro Logitech Media Server a povolit ji
firewall-cmd --zone=home --add-port=3483/tcp --add-port=9000/tcp

Stejně tak můžete u public zakázat SSH:
Kód: [Vybrat]
firewall-cmd --zone=public --remove-service=ssh

Pokud chcete povolit forwarding (otevírání spojení z vnitřní sítě ven):
Kód: [Vybrat]
# eth0 vnější rozhraní, eth1 vnitřní
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i eth1 -o eth0 -j ACCEPT
firewall-cmd --direct --add-rule ipv6 filter FORWARD 0 -i eth1 -o eth0 -j ACCEPT

Firewalld má dva oddělené stavy, runtime a permanent. Runtime je to, co se aktuálně používá, permanent to, co je uložené. Pokud něco změníte a firewall vám přestane fungovat, můžete obnovit uložený stav pomocí:
Kód: [Vybrat]
firewall-cmd --reload

Pokud firewall funguje správně, uložíte jeho nastavení pomocí:
Kód: [Vybrat]
firewall-cmd --runtime-to-permanent

Uložené nastavení se automaticky obnoví při spuštění počítače.

Navíc nevím jak je to s systemd....

systemd se firewall nijak netýká.

uf

Re:Zabezpečení domácího serveru - FW
« Odpověď #12 kdy: 23. 08. 2017, 10:03:43 »
Mám domácí server s debianem, ... server je za NATem, ale přesto bych ho chtěl zabezpečit.
Poradili byste prosím co na to aktuálně použít (iptables?) a případně pomohli napsat konfig ...

Firewall je každopádně rozumné rozhodnutí. Než nějaká ošizená nastavovátka a berličky (hlavně klikací, tam si nenapíšeš ani komentář), šel bych do iptables. Je pravda, že potřebuješ zjistit pár síťových zásad a vědět, jak tvoje programy komunikují (a co vlastně všechno se komunikuje, třeba zmíněné DNS, NTP, ...). A že se nejedná jen o iptables, ale třeba i nastavení v sysctl.conf, a že by se firewall měl nastavit dřív, než se aktivuje síťové rozhraní apod. Návody 3-5 let staré jsou v pořádku, základ iptables funguje mnohem déle pořád stejně. Návodů je na internetu dost, teď na mě vyskočil třeba http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables , samozřejmě použij taky info iptables (man iptables).
Jinak základní strategie iptables (vše (ostatní) zahodit, vše (ostatní) povolit) se nastaví pomocí policy, vědět musíš o tabulkách iptables (aspoň filter a nat) a "ventilech" INPUT a OUTPUT (aspoň; ale zřejmě taky PREROUTING, POSTROUTING a FORWARD). No a pak se seznam s tím, co všechno lze použít pro filtrování v iptables, a jen to všechno slož dohromady. :-)
Není to tak hrozné. Spíš jde o to nezapomenout na něco.

Lol Phirae

Re:Zabezpečení domácího serveru - FW
« Odpověď #13 kdy: 23. 08. 2017, 10:25:41 »
Není to tak hrozné. Spíš jde o to nezapomenout na něco.

O několik dní později:

> HEEELP!!! Vůbec se nemůžu připojit na server, mám tam všechna data!!!1111! Pomoooooooooooooc!

uf

Re:Zabezpečení domácího serveru - FW
« Odpověď #14 kdy: 23. 08. 2017, 10:41:17 »
Není to tak hrozné. Spíš jde o to nezapomenout na něco.

O několik dní později:

> HEEELP!!! Vůbec se nemůžu připojit na server, mám tam všechna data!!!1111! Pomoooooooooooooc!

Má domácí server. Tak se přihlásí normálně z konzole klávesnicí a firewall vypne. :-)