Raspberry pi a použití ufw firewallu

UFW je firewall zaměřený na uživatelé, kteří nechtějí nekomplikovaný firewall. UFW využívá firewall iptables. Iptables je docela solidní a flexibilní nástroj, pro začátečníky může být obtížné naučit se, jak jej používat ke správné konfiguraci brány firewall. Pokud chcete začít zabezpečovat svou síť a nejste si jisti, jaký nástroj použít, může být pro vás UFW tou správnou volbou.

Instalace ufw:

sudo apt install ufw

Spuštění ufw.

Než spustíte firewall, tak je potřeba dát pravidla, která vám umožní používat systém vzdáleně, tedy, jste k raspberry pi přihlášení přes ssh, jinak, když firewall spustíte, tak vám zablokuje všecky porty

Ufw se po startu systému automatický spustí, ale jen když je ufw ve stavu aktivní (enable). Protože po instalaci ufw je ve stavu neaktivní (disable).

Jestli chcete použít protokol IPv6 a z nějakého důvodu není nastavený, tak nastavení pro spuštění IPv6 stačí zkontrolovat soubor:

sudo nano /etc/default/ufw

V souboru najdeme řádek s názvem IPV6=yes , kdyby tam bylo něco jiného, tak to změníme.

Uložte a zavřete soubor. Když je nyní povolen UFW, bude nakonfigurován tak, aby zapisoval pravidla brány firewall IPv4 i IPv6.

Spustíme si terminál a napíšeme příkaz pro spuštění.

sudo ufw enable

Nebo, když potřebujeme firewall vypnout, tak ho příkazem vypneme.

sudo ufw disable

Použití.

Pro otestování pravidla, co nám může ze systémem udělat, tedy jen zkusíme co pravidlo ovlivní.Provedeme tak, že předznačíme parametrem –dry-run

Příkazy, které něco provedou:

  • allow – povolit
  • deny – zakázat (pro druhou stranu to vypadá, že nikdo nikdo neodpovídá/neexistuje)
  • reject – zakázat, ale odpovědět, že aktivní odmítáme
  • limit – povolit, ale omezit počet připojeních za nějakou časovou jednotku jako obranu proti brutal-force útokům. Více jak 6 spojeních během posledních 30 vteřin, bude zakázáno.

Nastavení výchozích zásad.

Pokud s bránou firewall teprve začínáte, první pravidla, která je třeba definovat, jsou vaše výchozí zásady. Tato pravidla řídí, jak zacházet s provozem, který výslovně neodpovídá žádným jiným pravidlům. Ve výchozím nastavení je UFW nastavena tak, aby odepřela všechna příchozí připojení a povolila všechna odchozí připojení. To znamená, že kdokoli, kdo by se pokusil dostat na váš server, by se nemohl připojit, zatímco jakákoli aplikace na serveru by byla schopna dosáhnout vnějšího světa.

Když budeme potřebovat zakázat příchozí připojení:

sudo ufw default deny nebo sudo ufw default deny incoming

První příkaz nemá nedefinujeme směr, takže se použije automaticky incoming.

Příkaz pro povolení příchozích připojení:

sudo ufw default allow nebo sudo ufw default allow incoming

Příkaz pro zakázání odchozích připojení:

sudo ufw default deny outgoing

Příkaz pro povolení odchozích připojení:

sudo ufw default allow outgoing

Příkaz outgoing nám zakáže všecky odchozí připojení, dokud nepovolíme port, který můžou všecky aplikace používat. Tedy příklad, nebudete se moci připojit k internetu, dokud nepovolíte port 80 a 443.

Příkaz pro povolení portu je pak sudo ufw allow out 80/tcp, navíc je tam příkaz out

Porty a protokoly.

Povolení nebo zakázaní přenosu podle portu můžete příkazem.

Povolení portu:

sudo ufw allow číslo_portu

Zakázaní portu:

sudo ufw deny číslo_portu

Ukázka použití:

sudo ufw allow 22

sudo ufw deny 22

Další možnost je použít konkretní protokol.

Povolení portu:

sudo ufw allow číslo_portu/protokol

Zakázaní portu:

sudo ufw deny číslo_portu/protokol

Ukázka použití:

sudo ufw allow 22/tcp

sudo ufw deny 22/tcp

Omezení počtu spojeních.

ufw limit 22/tcp

Možnosti zákazu a povolení dle IP

Při práci s UFW můžete také zadat IP adresy. Chcete-li například povolit připojení ze konkrétní adresy IP, například z pracovní nebo domácí adresy IP

Povolení ip adresy:

sudo ufw allow from IPadresa

Zakázaní ip adresy:

sudo ufw deny from IPadresa

Ukázka použití:

sudo ufw allow from 192.168.1.120

sudo ufw deny from 192.168.1.120

Povolení nebo zakázání IP a portu.

Povolení ip adresy a portu:

sudo ufw allow from IPadresa to any port číslo_portu

Zakázaní ip adresy a portu:

sudo ufw deny from IPadresa to any port číslo_portu

Ukázka použití:

sudo ufw allow from 192.168.1.120 to any port 22
nebo s použitím protokolu
sudo ufw allow from 192.168.1.120 to any port 22/tcp

sudo ufw deny from 192.168.1.120 to any port 22
nebo s použitím protokolu
sudo ufw deny from 192.168.1.120 to any port 22/tcp

Podsítě.

Pokud chcete povolit podsíť IP adres, můžete tak učinit pomocí notace CIDR k určení masky sítě. Například pokud chcete povolit všechny adresy IP v rozsahu od 192.168.1.0do 192.168.1.254můžete použít tento příkaz:

sudo ufw allow from 192.168.1.0/24
nebo zakázání
sudo ufw deny from 192.168.1.0/24

Podobně můžete také určit cílový port, ke kterému se může podsíť připojit.

sudo ufw allow from 192.168.1.0/24 to any port 22
nebo zakázání
sudo ufw deny from 192.168.1.0/24 to any port 22

Rozsahy.

Povolit také můžeme rozsah portů pro specifický protokol.
Například pro rozsah portů 450 – 550:

sudo ufw allow 450:550/tcp
nebo zakázání
sudo ufw deny 450:550/tcp

Připojení ke konkrétnímu síťovému rozhraní.

Chcete-li vytvořit pravidlo brány firewall, které se vztahuje pouze na konkrétní síťové rozhraní.

První si zjistíme, jaké máme síťové rozhraní.

ip addr

Název rozhraní může být třeba eth0, ale i enp2s1 atd.

Pokud má tedy váš server veřejné síťové rozhraní eth0, můžete mu povolit přenos pomocí tohoto příkazu:

sudo ufw allow in on eth0 to any port 80
nebo s použitím protokolu
sudo ufw allow in on eth0 to any port 80/tcp

Odstranění pravidel.

Vědět, jak odstranit pravidla, je stejně důležité jako vědět, jak je vytvořit. Existují dva různé způsoby, jak určit, která pravidla se mají odstranit. Podle čísla pravidla nebo podle skutečného pravidla. Začneme metodou mazání podle čísla pravidla, protože je to jednodušší.

Pokud k odstranění pravidel používáte číslo pravidla, první věcí, kterou budete chtít udělat, je získat seznam pravidel brány firewall. Příkaz stavu UFW má možnost zobrazit čísla vedle každého pravidla, jak je ukázáno zde:

sudo ufw status numbered

A teď si vybereme, co chceme odstranit.

sudo ufw delete 1

Další možnost je podle portu.

sudo ufw delete allow 22

Na rozdíl od mazání podle čísla se odstraní pravidla IPv4 i IPv6.

Kontrola stavu a pravidel UFW.

Stav UFW můžete kdykoli zkontrolovat pomocí tohoto příkazu:

sudo ufw status verbose

Pokud chcete zkontrolovat, jak je firewall nakonfiguroval a jaká pravidla jsou použita, funguje jen když je firewall zapnutý.

sudo ufw status status

Příklady.

Webový server.

Webové servery, jako je Apache a Nginx, obvykle naslouchají požadavkům na portu 80 a 443 pro připojení HTTP a HTTPS. Pokud je vaše výchozí zásada pro příchozí provoz nastavena na zrušení nebo odmítnutí, budete chtít vytvořit pravidla, která vašemu serveru umožní na tyto požadavky reagovat.

Chcete-li povolit všechna příchozí připojení HTTP, spusťte tento příkaz:

sudo ufw allow 80
nebo s použitím protokolu
sudo ufw allow 80/tcp

Chcete-li povolit všechna příchozí připojení HTTPS, spusťte tento příkaz:

sudo ufw allow 443
nebo s použitím protokolu
sudo ufw allow 443/tcp

Pokud chcete povolit provoz HTTP i HTTPS, můžete vytvořit jedno pravidlo, které povolí oba porty. Spusťte tento příkaz:

sudo ufw allow proto tcp from any to any port 80,443

Jestli jste si všimli, že je tam proto tcp, tak to je protokol, a ten je potřeba u více portu specifikovat.

Nastavení pošty.

Poštovní servery, jako Postfix, naslouchají na různých portech v závislosti na použitých protokolech pro doručování pošty. Pokud používáte poštovní server, určete, které protokoly používáte, a povolte příslušné typy přenosu. Ukážeme vám také, jak vytvořit pravidlo pro blokování odchozí pošty SMTP.

Pokud by váš server neměl odesílat odchozí poštu, můžete tento druh provozu zablokovat. Spusťte tento příkaz:

sudo ufw deny out 25

Povolit všechny příchozí SMTP.

sudo ufw allow 25

Povolit všechny příchozí IMAP.

sudo ufw allow 143

Povolit všechny příchozí IMAPS.

sudo ufw allow 993

Povolit všechny příchozí POP3.

sudo ufw allow 110

Povolit všechny příchozí POP3S.

sudo ufw allow 995

MySQL.

MySQL naslouchá připojení klientů na portu 3306. Pokud je váš databázový server MySQL používán klientem na vzdáleném serveru, musíte tento provoz povolit.

Chcete-li povolit příchozí připojení MySQL ze konkrétní adresy IP nebo podsítě, Například pokud chcete povolit celou 192.168.1.0/24podsíť, spusťte tento příkaz:

sudo ufw allow from 192.168.1.0/24 to any port 3306

Chcete-li povolit připojení MySQL ke konkrétnímu síťovému rozhraní, použijte tento příkaz:

sudo ufw allow in on eth0 to any port 3306