Reguła wchodzi, terminal, który już masz, nadal odpowiada, a następne logowanie jest odrzucane. Ta luka to cała trudność testowania zmiany zapory przez połączenie, które właśnie zmieniasz. Śledzenie połączeń decyduje raz, a potem przestaje patrzeć, więc ustalony przepływ jest jedynym testem, który nie może zobaczyć nowej polityki. Dalej porównano trzy drogi powrotu, a następnie ustalono kolejność zmieniania i sprawdzania reguł.

Dlaczego ocalała sesja jest najsłabszym dowodem

Zapora stanowa ocenia pierwszy pakiet przepływu i trzyma ten wyrok tak długo, jak żyje wpis. Reguły dodane później dotyczą przepływów, które zaczynają się później, dlatego okno, w którym piszesz, pozostaje użyteczne, podczas gdy wszyscy inni są odrzucani. To, czego się z niego dowiesz, opisuje politykę obowiązującą kilka minut temu. Nawet przechwycenie zrobione na tym przepływie pokazuje decyzję, którą maszyna już podjęła.

Traktuj działającą sesję jako wyjście awaryjne, a nie pomiar. Każdy test, który ma sens, musi otworzyć nowy przepływ ze źródła, które oceni nowa reguła, a pierwszy test powinien być tym, którego porażka boli najbardziej. Gdy ta sesja jest jedyną drogą do środka, zmiana nie jest gotowa do wprowadzenia.

Trzy drogi powrotu, uporządkowane według tego, od czego zależy każda

Uporządkuj opcje według tego, jak bardzo zależą od testowanego urządzenia, bo do tej kolejności sięgasz, gdy reguła okaże się błędna. Konsola, która nigdy nie przechodzi przez zaporę, jest niezależna, przećwiczony powrót prawie tak, a już otwarta sesja nie.

Way back inWhat it survivesWhere it fails
out-of-band or hypervisor consolea policy that blocks new loginsneeds separate access you have already tried
rollback rehearsed on that platforma rule that breaks remote accessfails when nobody ever ran it
the session that is already openthe change itselfcannot show whether new flows work

Przed zmianą zaloguj się przez konsolę i udowodnij, że działa, bo ścieżka poza pasmem, której nigdy nie użyłeś, jest schematem, a nie planem awaryjnym. Powrót zasługuje na swoje miejsce dopiero po ćwiczeniu na tej platformie, z tym zestawem reguł, według zatwierdzonej procedury, a nie improwizacji na żywej maszynie. Zapisz kroki i poproś kogoś innego o ich odczytanie. Jeśli sekwencja potrzebuje twojej pamięci, by się zakończyć, to nie jest plan.

Jedna zmiana, potem połączenie, które trzeba ocenić

Zapisz działający zestaw reguł i plik, który jest jego właścicielem, a następnie wykonaj jedną wąską zmianę. Jedna zmiana na test pozwala przypisać wynik; dwie naraz zostawiają działającą maszynę i brak pojęcia, która zmiana wykonała pracę. Tam, gdzie platforma potrafi przeanalizować konfigurację bez jej wczytywania, zrób to najpierw, żeby literówka zawiodła, gdy nic nie jest na szali.

nft list ruleset > /root/ruleset.before
nft -c -f /etc/nftables.conf

Następnie uruchom nową sesję ze źródła, do którego będzie pasować zmieniona reguła, gdy konsola jest jeszcze podłączona. Powtórz raz, jeśli się uda, bo pierwsza próba może trafić na wpis, który tabela już miała. Jeśli się nie uda, nadal masz drogę do środka i decyzję do wycofania, a to najtańszy zły wynik, jaki jest dostępny.

Liczniki, stan i plik odpowiadają na różne pytania

Każda z trzech obserwacji może z osobna wydawać się przekonująca i mylić cię co do dwóch pozostałych. Liczniki pokazują, czy właśnie utworzony przepływ dotarł do edytowanej reguły. Tabela stanu pokazuje, które przepływy maszyna uznaje za już ustalone, i tak zepsuta reguła nadal może wyglądać zdrowo. Zapisany plik pokazuje, co urządzenie zrobi po następnym przeładowaniu, a to może nie być to, co robi teraz działający zestaw reguł.

ss -tn state established

Czytaj liczniki jako deltę, a nie sumę, bo jedyną liczbą, która ma znaczenie, jest ta, którą przesunął twój przepływ testowy. Reguła, której licznik nigdy nie rośnie, nie pasuje, choćby na papierze wyglądała najpoprawniej. Potwierdź też przypadek odrzucenia: polityka, która nigdy niczego nie odrzuciła, nigdy nie dowiodła, że odrzuca to, co chciałeś zablokować. Przejdź przez jeden interfejs w każdej rodzinie, którą wdrożenie naprawdę niesie, bo reguła v4 nie mówi nic o przepływie v6.

Przywróć z zapisanego zestawu reguł, a potem doprowadź plik do zgodności

Gdy zmiana zawiedzie, wczytaj zapisany zestaw reguł zamiast dodawać reguły zezwalające, aż logowania znów zaczną działać. Każde dodatkowe zezwolenie ucisza objaw i zostawia dziurę, która przeżyje incydent i pamięć o nim. Przywróć, połącz się ponownie, a potem trzymaj nieudane porównanie obok zapisu tego, czego próbowałeś.

Po udanej zmianie spraw, by plik na dysku opisywał działający zestaw reguł, i potwierdź, że przeładowanie go odtwarza. Działający zestaw reguł, który oddalił się od własnego pliku konfiguracji, to pułapka zastawiona na następny restart.

Powiązane artykuły