Přidat pravidlo odmítnutí a sledovat, jak otevřené stahování pokračuje, není chyba UFW. Pravidlo, které jste přidali, stojí až za pravidly, která tok už přijala, a dříve navázané spojení jim dál odpovídá. Oprava znamená vložit ho na správné místo a pochopit, co dřívější pravidla slibují. Úzká verze této změny následuje.

Rozhoduje pořadí, ne existence pravidla

UFW je rozhraní, které zapisuje pravidla netfilteru po fázích: sekce rámce, jež běží před uživatelskými pravidly, pak sama uživatelská pravidla a potom sekce, která běží po nich. Standardní předchozí pravidla přijímají provoz navázaných a souvisejících spojení a tato pravidla se vyhodnocují dřív než cokoli, co přidáte běžným allow nebo deny. Reference příkazů UFW dokumentuje syntaxi vkládání a číslovaný pohled na stav, na kterém tato změna závisí.

Toto pořadí vysvětluje překvapení. Vaše nové pravidlo je skutečné a je ve správné tabulce, ale není prvním rozhodnutím, na které paket narazí. Spojení, které už bylo sledováno jako navázané, se k němu nikdy nedostane.

Pro tuto práci používejte pravidla route, protože paket se přeposílá přes bránu, místo aby byl adresován službám samotné brány. Vstupní pravidlo by filtrovalo špatný provoz a vypadalo by, že nic nedělá.

Vložte je nad široké povolení

Vložení nejdřív zobrazte na nečisto a ověřte, že pravidlo už jinde v seznamu není. Duplikování totožné politiky dělá pozdější odebrání nejednoznačným a ten, kdo odstraní špatnou kopii, si toho týdny nevšimne.

sudo ufw --dry-run route insert 1 deny in on tun0 proto tcp from 10.88.0.55/32 to 192.0.2.88/32

Pokud náhled ukáže přesně jedno pravidlo na očekávané pozici, použijte stejný příkaz bez přepínače dry-run. Pozice 1 ho umístí nad širší uživatelská povolení, ne nad pravidla rámce probraná dříve. Ověřte, že název rozhraní odpovídá tunelovému zařízení na této bráně, protože pravidlo svázané s rozhraním, které už neexistuje, zůstane v seznamu a bude vypadat správně, aniž by se s něčím shodovalo. Přejmenujte odkaz na zařízení před použitím, ne po neúspěšném testu.

V tomto pravidle není cílový port, takže odmítá každý port TCP na této adrese, ne jen HTTPS. Pokud je záměrem jedna služba, pojmenujte port; pravidlo širší než politika je budoucí incident, který čeká na svého prvního čtenáře.

Omezte zdroj na jedinou adresu jen tehdy, když je tato adresa vázaná na zamýšlenou identitu. VPN pool s dynamickým přidělováním může zítra dát stejnou adresu jinému klientovi a odmítnutí by pak sledovalo adresu, ne osobu.

Navázané toky nové pravidlo přežijí

Sledování spojení je důvod, proč stávající relace pokračuje. Jakmile je tok zaznamenán jako navázaný, předchozí pravidla přijmou jeho pakety dřív, než se vaše odmítnutí vůbec zváží, a přenos skončí, jako by se nic nezměnilo. Testování prohlížečem, který znovu používá otevřené spojení, proto o nové politice nic neříká. Odmítnutí může pár minut po nasazení vypadat zbytečně a pro dalšího připojeného uživatele být zcela účinné.

Pokud požadavek zahrnuje přerušení živého provozu, tahle změna uživatelského pravidla to nedokáže. Odvolání sledovaného stavu je samostatná akce s vlastním dosahem a patří vlastníkovi firewallu, ne tomu, kdo pravidlo přidal. Vyprázdnit všechna spojení na bráně, aby jedna relace zmizela, je typ opravy, který vyvolá druhý incident.

Pamatujte i na hranice. Toto pravidlo nic neříká o ICMP, UDP ani IPv6, takže úspěšný ping není důkaz, že odmítnutí selhalo. Jedna adresa IPv4 také není web: jméno se může přeložit na několik adres a pokryta je jen ta, kterou jste uvedli.

Testujte s novým tokem

Přečtěte si očíslovaná uživatelská pravidla a efektivní surový pohled, potom otevřete nové spojení z vybraného klienta:

sudo ufw status numbered
sudo ufw show raw
# from 10.88.0.55, a new TCP connection to 192.0.2.88 should fail

Surový pohled je důležitý, protože status vynechává pravidla rámce psaná ručně, takže pořadí může vypadat jinak, než jaké vynucuje jádro. Porovnejte oba, než usoudíte, že pravidlo je na špatném místě.

Potom zkontrolujte dvě kontroly, které dokazují, že pravidlo je úzké, a ne široké: povolený cíl ze stejného klienta stále funguje a druhý klient se stále dostane na odmítnutý cíl, pokud to jeho politika dovoluje. Odmítnutí, které rozbije oba testy, je změna politiky, ne cílený zásah.

Až test skončí, odstraňte jen pravidlo, které jste přidali, a to přesným zopakováním. Pokud je politika trvalá, předejte ji vlastníkovi firewallu s identitou klienta, vlastníkem cíle a datem revize, aby po přidělení tunelové adresy jinam nezůstalo zastaralé odmítnutí.

Související články