Firewall je nástroj pro sledování a filtrování příchozího a odchozího síťového provozu. Funguje tak, že definuje sadu bezpečnostních pravidel, která určují, zda povolit nebo blokovat konkrétní provoz.
Ubuntu se dodává s konfiguračním nástrojem brány firewall s názvem UFW (Uncomplicated Firewall). Jedná se o uživatelsky přívětivý front-end pro správu pravidel brány firewall iptables. Jeho hlavním cílem je usnadnit správu firewallu nebo, jak název napovídá, nekomplikovat.
Tento článek popisuje, jak používat nástroj UFW ke konfiguraci a správě brány firewall na Ubuntu 20.04. Správně nakonfigurovaný firewall je jedním z nejdůležitějších aspektů celkového zabezpečení systému.
Předpoklady #
Systémový firewall mohou spravovat pouze uživatelé root nebo uživatelé s právy sudo. Nejlepším postupem je spouštět administrativní úlohy jako uživatel sudo.
Instalovat UFW #
UFW je součástí standardní instalace Ubuntu 20.04 a měl by být přítomen ve vašem systému. Pokud z nějakého důvodu není nainstalován, můžete balíček nainstalovat zadáním:
sudo apt update
sudo apt install ufw
Zkontrolujte stav UFW #
UFW je ve výchozím nastavení zakázáno. Stav služby UFW můžete zkontrolovat pomocí následujícího příkazu:
sudo ufw status verbose
Výstup ukáže, že stav brány firewall je neaktivní:
Status: inactive
Pokud je aktivován UFW, výstup bude vypadat následovně:
Výchozí zásady UFW #
Výchozí chování UFW Firewallu je blokovat veškerý příchozí a přesměrovaný provoz a povolit veškerý odchozí provoz. 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. 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 buď ruční úpravou souboru, nebo pomocí sudo ufw default <policy> <chain>
příkaz.
Zásady brány firewall jsou základem pro vytváření složitějších a uživatelem definovaných pravidel. Obecně jsou výchozí zásady UFW dobrým výchozím bodem.
Profily aplikací #
Profil aplikace je textový soubor ve formátu INI, který popisuje službu a obsahuje pravidla brány firewall pro službu. Profily aplikací se vytvářejí v /etc/ufw/applications.d
adresáře během instalace balíčku.
Můžete zobrazit seznam všech aplikačních profilů dostupných na vašem serveru zadáním:
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:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
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 'Nginx Full'
Výstup ukazuje, že profil „Nginx Full“ otevírá porty 80
a 443
.
Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server
Ports:
80,443/tcp
Můžete si také vytvořit vlastní profily pro své aplikace.
Povolení UFW #
Pokud se k Ubuntu připojujete ze vzdáleného umístění, musíte před povolením brány firewall UFW výslovně povolit příchozí připojení SSH. V opačném případě se již nebudete moci k počítači připojit.
Chcete-li nakonfigurovat bránu firewall UFW tak, aby umožňovala příchozí připojení SSH, zadejte následující příkaz:
sudo ufw allow ssh
Rules updated
Rules updated (v6)
Pokud SSH běží na nestandardním portu, musíte tento port otevřít.
Pokud například váš démon ssh naslouchá na portu 7722
, zadejte následující příkaz pro povolení připojení na tomto portu:
sudo ufw allow 7722/tcp
Nyní, když je brána firewall nakonfigurována tak, aby umožňovala příchozí připojení SSH, můžete ji povolit zadá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
.
Otevření portů #
V závislosti na aplikacích, které v systému běží, možná budete muset otevřít i další porty. Obecná syntaxe pro otevření portu je následující:
ufw allow port_number/protocol
Níže je uvedeno několik způsobů, jak povolit připojení HTTP.
První možností je použít název služby. UFW kontroluje /etc/services
soubor pro port a protokol zadané služby:
sudo ufw allow http
Můžete také zadat číslo portu a protokol:
sudo ufw allow 80/tcp
Pokud není zadán žádný protokol, UFW vytvoří pravidla pro oba tcp
a udp
.
Další možností je použití profilu aplikace; v tomto případě „Nginx HTTP“:
sudo ufw allow 'Nginx HTTP'
UFW také podporuje jinou syntaxi pro specifikaci protokolu pomocí proto
klíčové slovo:
sudo ufw allow proto tcp to any port 80
Rozsahy portů #
UFW také umožňuje otevřít rozsahy portů. Počáteční a koncové porty jsou odděleny dvojtečkou (:
) a musíte zadat protokol, buď tcp
nebo udp
.
Například pokud chcete povolit porty z 7100
na 7200
na obou tcp
a udp
, spustíte následující příkaz:
sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp
Konkrétní IP adresa a port #
Chcete-li povolit připojení na všech portech z dané zdrojové IP, použijte from
klíčové slovo následované zdrojovou adresou.
Zde je příklad přidání IP adresy na seznam povolených:
sudo ufw allow from 64.63.62.61
Pokud chcete dané IP adrese povolit přístup pouze ke konkrétnímu portu, použijte to any port
klíčové slovo následované číslem portu.
Například pro povolení přístupu na portu 22
ze stroje s IP adresou 64.63.62.61
, zadejte:
sudo ufw allow from 64.63.62.61 to any port 22
Podsítě #
Syntaxe pro povolení připojení k podsíti IP adres je stejná jako při použití jedné IP adresy. Jediný rozdíl je v tom, že musíte zadat masku sítě.
Níže je uveden příklad, jak povolit přístup pro IP adresy v rozsahu od 192.168.1.1
na 192.168.1.254
na port 3360
(MySQL):
sudo ufw allow from 192.168.1.0/24 to any port 3306
Konkrétní síťové rozhraní #
Chcete-li povolit připojení na konkrétním síťovém rozhraní, použijte in on
klíčové slovo následované názvem síťového 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
a pokud jste to nezměnili, UFW zablokuje všechna příchozí připojení, pokud připojení výslovně neotevřete.
Psaní pravidel odmítnutí je stejné jako psaní pravidel povolení; stačí použít deny
klíčové slovo namísto allow
.
Ř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
spustíte následující příkaz:
sudo ufw deny from 23.24.25.0/24
Zde je příklad odepření přístupu pouze k portům 80
a 443
od 23.24.25.0/24
můžete použít následující příkaz:
sudo ufw deny proto tcp from 23.24.25.0/24 to any port 80,443
Odstranění pravidel 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 podle čísla pravidla je jednodušší, zvláště když s UFW začínáte. Chcete-li nejprve odstranit pravidlo podle čísla pravidla, musíte najít číslo pravidla, které chcete odstranit. Chcete-li získat seznam číslovaných pravidel, použijte ufw status numbered
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
Smazání pravidla číslo 3
, který umožňuje připojení k portu 8080
, zadali byste:
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
Deaktivace UFW #
Pokud z jakéhokoli důvodu chcete zastavit UFW a deaktivovat všechna pravidla, můžete použít:
sudo ufw disable
Pokud později budete chtít znovu povolit UTF a aktivovat všechna pravidla, stačí napsat:
sudo ufw enable
Resetování 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, zadejte následující příkaz:
sudo ufw reset
Masquerading IP #
IP Masquerading je varianta NAT (překlad síťových adres) v linuxovém jádře, která překládá síťový provoz přepisováním zdrojových a cílových IP adres a portů. Pomocí IP Masquerading můžete povolit jednomu nebo více počítačům v privátní síti komunikovat s internetem pomocí jednoho počítače se systémem Linux, který funguje jako brána.
Konfigurace maskování IP pomocí UFW zahrnuje několik kroků.
Nejprve musíte povolit přesměrování IP. Chcete-li to provést, otevřete /etc/ufw/sysctl.conf
soubor:
sudo nano /etc/ufw/sysctl.conf
Najděte a odkomentujte řádek, který zní net.ipv4.ip_forward = 1
:
net/ipv4/ip_forward=1
Dále musíte nakonfigurovat UFW tak, aby umožňoval přeposílat pakety. Otevřete konfigurační soubor UFW:
sudo nano /etc/default/ufw
Vyhledejte DEFAULT_FORWARD_POLICY
a změňte hodnotu z DROP
ACCEPT
:
DEFAULT_FORWARD_POLICY="ACCEPT"
Nyní musíte nastavit výchozí zásady pro POSTROUTING
řetězce v nat
stůl a maškarní pravidlo. Chcete-li tak učinit, otevřete /etc/ufw/before.rules
soubor a připojte řádky zvýrazněné žlutě, jak je znázorněno níže:
sudo nano /etc/ufw/before.rules
Připojte následující řádky:
/etc/ufw/before.rules#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic through eth0 - Change to public network interface
-A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
Nezapomeňte nahradit eth0
v -A POSTROUTING
řádek, který odpovídá názvu rozhraní veřejné sítě:
Až budete hotovi, uložte a zavřete soubor.
Nakonec znovu načtěte pravidla UFW vypnutím a opětovným povolením UFW:
sudo ufw disable
sudo ufw enable