Debian obsahuje několik balíčků, které poskytují nástroje pro správu firewallu s iptables nainstalovanými jako součást základního systému. Pro začátečníky může být složité naučit se používat nástroj iptables ke správné konfiguraci a správě firewallu, ale UFW to zjednodušuje.
UFW (Uncomplicated Firewall) je uživatelsky přívětivý front-end pro správu pravidel brány iptables a jeho hlavním cílem je usnadnit správu iptables nebo, jak název napovídá, nekomplikovat.
V tomto tutoriálu vám ukážeme, jak nastavit firewall s UFW na Debianu 9.
Předpoklady #
Než budete pokračovat v tomto tutoriálu, ujistěte se, že uživatel, pod kterým jste přihlášeni, má oprávnění sudo.
Instalovat UFW #
UFW není v Debianu 9 standardně nainstalováno. Můžete nainstalovat ufw
balíček zadáním:
sudo apt install ufw
Zkontrolujte stav UFW #
Po dokončení procesu instalace můžete zkontrolovat stav UFW pomocí následujícího příkazu:
sudo ufw status verbose
Výstup bude vypadat takto:
Status: inactive
UFW je ve výchozím nastavení zakázáno. Instalace neaktivuje firewall automaticky, aby se zabránilo uzamčení ze serveru.
Pokud je aktivován UFW, výstup bude vypadat podobně jako následující:
Výchozí zásady UFW #
Ve výchozím nastavení UFW zablokuje všechna příchozí připojení a povolí všechna odchozí připojení. To znamená, že kdokoli, kdo se pokusí získat přístup k vašemu serveru, se nebude moci připojit, pokud konkrétně neotevřete port, zatímco všechny aplikace a služby běžící na vašem serveru budou mít přístup k vnějšímu světu.
Výchozí zásady jsou definovány v /etc/default/ufw
soubor a lze jej změnit pomocí sudo ufw default <policy> <chain>
příkaz.
Zásady brány firewall jsou základem pro vytváření podrobnějších a uživatelem definovaných pravidel. Ve většině případů jsou výchozí zásady UFW dobrým výchozím bodem.
Profily aplikací #
Při instalaci balíčku pomocí apt
přidá profil aplikace do /etc/ufw/applications.d
adresář, který popisuje službu a obsahuje nastavení UFW.
Seznam všech aplikačních profilů dostupných na vašem typu systému:
sudo ufw app list
V závislosti na balíčcích nainstalovaných ve vašem systému bude výstup vypadat podobně jako následující:
Available applications:
DNS
IMAP
IMAPS
OpenSSH
POP3
POP3S
Postfix
Postfix SMTPS
Postfix Submission
...
Chcete-li zjistit další informace o konkrétním profilu a zahrnutých pravidlech, použijte následující příkaz:
sudo ufw app info OpenSSH
Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp
AVýstup výše nám říká, že profil OpenSSH otevírá port 22
.
Povolit připojení SSH #
Před povolením brány firewall UFW musíme nejprve povolit příchozí připojení SSH.
Pokud se ke svému serveru připojujete ze vzdáleného umístění, což je téměř vždy případ, a před explicitním povolením příchozích připojení SSH povolíte firewall UFW, nebudete se již moci připojit k serveru Debian.
Chcete-li nakonfigurovat bránu firewall UFW tak, aby umožňovala příchozí připojení SSH, spusťte následující příkaz:
sudo ufw allow OpenSSH
Rules updated
Rules updated (v6)
Pokud SSH server naslouchá na jiném portu, než je výchozí port 22, budete muset tento port otevřít.
Například váš ssh server naslouchá na portu 8822
, pak můžete pomocí následujícího příkazu povolit připojení na tomto portu:
sudo ufw allow 8822/tcp
Povolit UFW #
Nyní, když je váš firewall UFW nakonfigurován tak, aby umožňoval příchozí připojení SSH, můžete jej povolit spuštěním:
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Budete upozorněni, že povolení brány firewall může narušit stávající připojení ssh, stačí zadat y
a stiskněte Enter
.
Povolit připojení na jiných portech #
V závislosti na aplikacích, které běží na vašem serveru, a vašich konkrétních potřebách budete muset také povolit příchozí přístup k některým dalším portům.
Níže je uvedeno několik příkladů, jak povolit příchozí připojení k některým z nejběžnějších služeb:
Otevřený port 80 – HTTP #
Připojení HTTP lze povolit pomocí následujícího příkazu:
sudo ufw allow http
Místo http
profilu, můžete použít číslo portu 80
:
sudo ufw allow 80/tcp
Otevřený port 443 – HTTPS #
Připojení HTTPS lze povolit pomocí následujícího příkazu:
sudo ufw allow https
Chcete-li dosáhnout stejného namísto https
můžete použít číslo portu 443
:
sudo ufw allow 443/tcp
Otevřít port 8080 #
Pokud spustíte Tomcator jakoukoli jinou aplikaci, která naslouchá na portu 8080, můžete povolit příchozí připojení pomocí:
sudo ufw allow 8080/tcp
Povolit rozsahy portů #
Pomocí UFW můžete také povolit přístup k rozsahům portů. Když povolujete rozsahy portů s UFW, musíte zadat protokol, buď tcp
nebo udp
.
Chcete-li například povolit porty z 7100
na 7200
na obou tcp
a udp
, spusťte následující příkaz:
sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp
Povolit konkrétní IP adresy #
Pokud chcete povolit přístup na všechny porty z konkrétní IP adresy, použijte ufw allow from
příkaz následovaný IP adresou:
sudo ufw allow from 64.63.62.61
Povolit konkrétní IP adresy na konkrétním portu #
Chcete-li povolit přístup na konkrétní port, řekněme port 22 z vašeho pracovního stroje s IP adresou 64.63.62.61, použijte následující příkaz:
sudo ufw allow from 64.63.62.61 to any port 22
Povolit podsítě #
Příkaz pro povolení připojení z podsítě IP adres je stejný jako při použití jedné IP adresy, jediný rozdíl je v tom, že je potřeba zadat masku sítě. Pokud například chcete povolit přístup pro adresy IP v rozsahu od 192.168.1.1 do 192.168.1.254 až po port 3360
(MySQL) spustíte následující příkaz:
sudo ufw allow from 192.168.1.0/24 to any port 3306
Povolení připojení ke konkrétnímu síťovému rozhraní #
Chcete-li povolit přístup na konkrétním portu, řekněme port 3360
na konkrétním síťovém rozhraní eth2
, použijte allow in on
příkaz následovaný názvem rozhraní:
sudo ufw allow in on eth2 to any port 3306
Odmítání připojení #
Výchozí zásada pro všechna příchozí připojení je nastavena na deny
což znamená, že UFW zablokuje všechna příchozí připojení, pokud připojení výslovně neotevřete.
Řekněme, že jste otevřeli porty 80
a 443
a váš server je napaden z 23.24.25.0/24
síť. Chcete-li odmítnout všechna připojení z 23.24.25.0/24
, spusťte následující příkaz:
sudo ufw deny from 23.24.25.0/24
Pokud chcete pouze odepřít přístup k portům 80
a 443
od 23.24.25.0/24
byste použili:
sudo ufw deny from 23.24.25.0/24 to any port 80
sudo ufw deny from 23.24.25.0/24 to any port 443
Psaní pravidel odepření je stejné jako psaní povolovacích pravidel, stačí pouze nahradit allow
s deny
.
Smazat pravidla UFW #
Existují dva různé způsoby, jak odstranit pravidla UFW, podle čísla pravidla a zadáním skutečného pravidla.
Smazání pravidel UFW podle čísla pravidla je snazší, zvláště pokud jste v UFW nováčkem.
Chcete-li odstranit pravidlo podle čísla pravidla, musíte nejprve najít číslo pravidla, které chcete odstranit. Chcete-li to provést, spusťte následující příkaz:
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 8080/tcp ALLOW IN Anywhere
Chcete-li například odstranit pravidlo číslo 3, pravidlo povolující připojení k portu 8080, zadejte:
sudo ufw delete 3
Druhou metodou je odstranit pravidlo zadáním skutečného pravidla. Pokud jste například přidali pravidlo pro otevření portu 8069
můžete jej smazat pomocí:
sudo ufw delete allow 8069
Zakázat UFW #
Pokud z jakéhokoli důvodu chcete zastavit UFW a deaktivovat všechna pravidla, spusťte:
sudo ufw disable
Pokud později budete chtít znovu povolit UTF a aktivovat všechna pravidla, napište:
sudo ufw enable
Resetovat UFW #
Resetování UFW deaktivuje UFW a odstraní všechna aktivní pravidla. To je užitečné, pokud chcete vrátit všechny změny a začít znovu.
Chcete-li resetovat UFW, jednoduše zadejte následující příkaz:
sudo ufw reset