Uživatelské nástroje

Nástroje pro tento web


navody:server:firewall

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
navody:server:firewall [2015/10/14 12:19] krcmarnavody:server:firewall [2023/08/02 18:18] (aktuální) Aither
Řádek 1: Řádek 1:
 +<note important>
 +Tento článek je zastaralý, doporučujeme se řídit dokumentací nebo wiki distribuce, kterou používáš.
 +Pokud chceš, můžeš tento článek doplnit a aktualizovat.
 +</note>
 +
 ====== Firewall ====== ====== Firewall ======
  
Řádek 5: Řádek 10:
 Linuxové jádro obsahuje firewall zvaný Netfilter, který je obsluhován pomocí utility ''iptables''. Tento přístup je nízkoúrovňový a umožňuje nastavit velké množství různých parametrů a variant. Pohodlnější variantou je například nadstavba Shorewall, což je sada skriptů, které dovolují pravidla pro Netfilter z jednodušších konfiguračních souborů. Linuxové jádro obsahuje firewall zvaný Netfilter, který je obsluhován pomocí utility ''iptables''. Tento přístup je nízkoúrovňový a umožňuje nastavit velké množství různých parametrů a variant. Pohodlnější variantou je například nadstavba Shorewall, což je sada skriptů, které dovolují pravidla pro Netfilter z jednodušších konfiguračních souborů.
  
-Na našem VPS je v každém případě nejprve potřeba povolit podporu iptables. V detailu VPS je potřeba zapnout podporu iptables a potvrdit. Dojde restartu VPS a podpora je zapnutá. +Při prvotních hrátkách s firewallem je možné, že si neopatrným zásahem odříznete cestu k VPS. Nepanikařte a přejděte na návod ke [[navody:vps:konzole|vzdálené konzoli]] nebo [[navody:vps:oprava|opravě rozbité VPS]].
- +
-{{:navody:vps:features.png?300|}}+
  
 ===== IPtables ===== ===== IPtables =====
 +
 +Současný stav je možné zjistit pomocí
 +
 +  iptables -L
 +  
 +Výstup bude vypadat pravděpodobně nějak takto
 +
 +<code>  Chain INPUT (policy ACCEPT)
 +  target     prot opt source               destination
 +
 +  Chain FORWARD (policy ACCEPT)
 +  target     prot opt source               destination
 +
 +  Chain OUTPUT (policy ACCEPT)
 +  target     prot opt source               destination</code>
 +  
 +Ve výpisu jsou zobrazeny tři řetězce (chain): vstup, průchod a výstup. V nich v současné době nejsou žádná pravidla, která by regulovala průchod paketů. V takovém případě se uplatňuje výchozí politika (policy), která je ve všech třech případech nastavena na „povol“ (ACCEPT). Všechny pakety tedy nyní projdou bez filtrace.
 +
 +<note>Všechny tři řetězce jsou oddělené, paket prochází vždy jen jedním z nich. Pokud je zdrojem náš server, dostane se paket do řetězce OUTPUT. Pokud je naopak náš server cílem, paket přichází do INPUT. Pokud jsou zdroj i cíl mimo náš stroj a paket tedy jen prochází skrz, dostane se do FORWARD.</note>
 +
 +Je čas naučit náš firewall nějaká pravidla. Jejich syntaxe je následující:
 +
 +  řetězec pravidlo akce
 +
 +Každé pravidlo musí patřit do nějakého řetězce, na procházející paket se pak aplikuje pravidlo a v případě vyhovění se provede akce. Tedy například: do řetězce INPUT přidej pravidlo „pokud je cílem TCP paketu port 80“, akce je „propusť“. Konkrétně:
 +
 +  iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 +
 +Takto můžete ručně zapsat různá pravidla a sledovat chování. Takto zapsaná pravidla ale **nejsou perzistentní** a po restartu vašeho VPS zmizí. Pokud je potřebujete vysypat cíleně a zbavit se veškerého nastavení, použijte
 +
 +   iptables -F
 +
 +Pokud naopak potřebujete pravidla zachovat, zapište je například do souboru ''/etc/iptables.rules''. Na pořadí zapsání záleží! Netfilter pak pravidla prochází sekvenčně a provede jen první akci, u které daný paket vyhověl pravidlu.
 +
 +<note important>Pravidla se pak sice zapisují stejně, ale bez příkazu ''iptables'' na začátku. Řádek tedy začíná rovnou na -A…</note>
 +
 +<code>*filter
 +
 +# Pusť veškerý loopback (lo0) provoz a zahoď provoz z 127/8, který nepochází z rozhraní lo0
 +-A INPUT -i lo -j ACCEPT
 +-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
 +
 +# Propusť všechen provoz už navázaných spojení
 +-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 +
 +# Povol veškerý odchozí provoz
 +-A OUTPUT -j ACCEPT
 +
 +# Otevři příchozí porty pro HTTP a HTTPS
 +-A INPUT -p tcp --dport 80 -j ACCEPT
 +-A INPUT -p tcp --dport 443 -j ACCEPT
 +
 +# Povol veškerá spojení na SSH
 +-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
 +# Povol spojení jen z mé IP adresy
 +# -I INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT
 +
 +# Zakaž všechno ostatní, co prošlo až sem.
 +-A INPUT -j REJECT
 +-A FORWARD -j REJECT
 +
 +COMMIT
 +</code>
 +
 +Takový konfigurační soubor je možné získat i tak, že uložíte aktuální pravidla zapsaná právě ve firewallu. Pokud jste tedy pravidla zadali ručně z řádky, můžete si je všechna uložit:
 +
 +  iptables-save > /etc/iptables.rules
 +
 +Stejně tak je možné obsah souboru znovu načíst do jádra:
 +
 +  iptables-restore < /etc/iptables.rules
 +
 +Pokud chcete, aby se tento příkaz spouštěl při startu systému a tedy aby se při startu VPS načetla všechna zadaná pravidla, zapište do souboru ''/etc/network/if-pre-up.d/iptables'' tyto dva řádky:
 +
 +<code>#!/bin/sh
 + /sbin/iptables-restore < /etc/iptables.rules</code>
 +
 +Soubor pak učiňte spustitelným:
 +
 +  chmod +x /etc/network/if-pre-up.d/iptables
 +
 +Od této chvíle se při startu serveru aplikují firewallová pravidla podle vašich přání.
  
 ===== Shorewall ===== ===== Shorewall =====
Řádek 97: Řádek 182:
 Poté můžeme nechat Shorewall zkontrolovat konfiguraci: Poté můžeme nechat Shorewall zkontrolovat konfiguraci:
  
-  /etc/init.d/shorewall check+  shorewall check
      
-Pokud potvrdí ''Configuration Validated'', můžeme ho spustit+Pokud potvrdí ''Configuration Validated'' nebo ''Shorewall configuration verified'', můžeme ho spustit
  
-  /etc/init.d/shorewall start|stop|restart|...+  shorewall start|stop|restart|...
  
 Další užitečné příkazy: Další užitečné příkazy:
Řádek 111: Řádek 196:
  
 Odkazy: [[http://shorewall.net/ | shorewall.net/]] , [[https://wiki.debian.org/HowTo/shorewall | wiki.debian.org/HowTo/shorewall]]  Odkazy: [[http://shorewall.net/ | shorewall.net/]] , [[https://wiki.debian.org/HowTo/shorewall | wiki.debian.org/HowTo/shorewall]] 
 +
 +===== FirewallD =====
 +
 +Starší verze firewalld potřebují, aby existovaly soubory modulů jádra, i když jsou načtené.
 +
 +Vyrobit jde lze jednoduše pár příkazy:
 +
 +<code>
 +mkdir /⁠lib/⁠modules/⁠$(uname -⁠r)
 +touch /⁠lib/⁠modules/⁠$(uname -⁠r)/⁠modules.{builtin,order}
 +for i in /sys/module/*; do echo kernel/${i##**/}.ko; done >> /lib/modules/$(uname -r)/modules.builtin
 +depmod -⁠a
 +</code>
navody/server/firewall.1444825164.txt.gz · Poslední úprava: 2015/10/14 12:19 autor: krcmar