Obecnie mam mój łańcuch WYJŚCIE ustawiony na DROP. Chciałbym zmienić to na ODRZUĆ, aby mieć wskazówkę, że to moja zapora ogniowa powstrzymuje mnie przed dotarciem, a nie problem z usługami, do których próbuję uzyskać dostęp (natychmiastowe odrzucenie zamiast przekroczenia limitu czasu). Jednak iptables nie przejmuje się tym. Jeśli ręcznie edytuję zapisany plik reguł i próbuję go przywrócić, otrzymuję iptables-restore v1.4.15: Can't set policy 'REJECT' on 'OUTPUT' line 22: Bad policy name
i odmawia załadowania reguł. Jeśli spróbuję ustawić to ręcznie ( iptables -P OUTPUT REJECT
), otrzymuję, iptables: Bad policy name. Run 'dmesg' for more information.
ale w dmesg nie ma danych wyjściowych.
Potwierdziłem, że odpowiednia reguła jest wkompilowana w jądro i zrestartowałem się, aby upewnić się, że jest załadowana:
# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=y
***
CONFIG_IP_NF_TARGET_REJECT=y
***
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
(Dodano gwiazdki, aby wyróżnić obowiązującą regułę)
Wszystko, co mogę znaleźć, stwierdza, że REJECT jest prawidłową polityką / celem (ogólnie), ale nie mogę znaleźć niczego, co mówi, że nie jest ważne dla łańcuchów INPUT, FORWARD lub OUTPUT. Moje Google-fu nie pomaga. Jestem na Gentoo, jeśli to robi jakąkolwiek różnicę. Czy ktoś tu ma jakiś wgląd?
źródło
iptables
zasadę, o której mowa?Odpowiedzi:
REJECT
jest rozszerzeniem celu , podczas gdy polityka łańcucha musi być celem . Strona podręcznika mówi, że (choć nie jest to do końca jasne), ale niektóre z jego wypowiedzi są całkowicie błędne.Polityka może być tylko
ACCEPT
alboDROP
na wbudowanym w łańcuchy. Jeśli chcesz uzyskać efekt odrzucenia wszystkich pakietów, które nie pasują do poprzednich reguł, po prostu upewnij się, że ostatnia reguła pasuje do wszystkiego i dodaje regułę zREJECT
rozszerzeniem docelowym. Innymi słowy, po dodaniu wszystkich odpowiednich reguł, zróbiptables -t filter -A OUTPUT -j REJECT
.Zobacz wątek „jakie są możliwe zasady łańcucha” na liście filtrów sieciowych, aby uzyskać więcej informacji.
źródło
Nie mogłem znaleźć tego udokumentowanego, ale odniesienie tutaj wskazuje, że jedynymi dozwolonymi zasadami są AKCEPTACJA lub DROP. Potwierdzają to patrząc na źródło z
libiptc
(który jest odpowiedzialny za manipulację zasady) wokół linii 2429, gdzie koduOryginalny wątek sugeruje, że najlepiej jest dodać ODRZUĆ na końcu łańcucha, który powinien być
iptables -A OUTPUT -j REJECT
.Zauważ, że kod tuż przed tym jest:
Nie można więc w ogóle ustawić zasad w łańcuchu zdefiniowanym przez użytkownika.
źródło
-p
służy do dopasowania w protokole; miał na myśli,-A
jak mówi moja odpowiedź.REJECT
naOUTPUT
nie ma sensu; aREJECT
zwróci pakiet ICMP, który musiałby przemierzać sieć.Dodaj nową
-j LOG
jako ostatnią regułę (a więc przedDROP
zasadą), aby zobaczyć, co się tak daleko wOUTPUT
łańcuchu.źródło
REJECT
pakiet ICMP nie mógł zwrócić interfejsu Lo? Zgadzam się, że aLOG
jest przydatne do rozwiązywania problemów, ale tak naprawdę liczyłem na sposób, aby przypomnieć mi, że „Och, tak ... to prawdopodobnie jest blokowane przez mojeDROP
domyślne ustawienie iptables” zamiast rozwiązywania problemów przez 5 minut, prosi współpracownika o dostęp do serwera XYZ zdaje sobie sprawę, że jest to prawdopodobnie lokalne , co jest moim najczęstszym podejściem, ponieważ mój typowy dzień pracy rzadko uderza w rzeczy, na które nie otworzyłem już dziury. Oczywiście może lepiej o tym pamiętać, ale mieszkanieREJECT
jest bardziej oczywiste.ethX
interfejs generował ruch nalo
interfejsie z wielu powodów. Są bardzo niezależni; możesz łatwo sprawić, by łańcuchy dotyczyły jednego, a nie drugiego.