Reguły w zaporze sieciowej filtru sieciowego (iptables) są sprawdzane sekwencyjnie, a los pakietu (ACCEPT, DROP, REJECT itp.) Jest ustalany na podstawie pierwszego meczu.
Ustawiając zaporę stanową i pierwszą regułę, typowa -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
jest znaczna większość legalnego ruchu do serwera po przejściu tylko tej jednej reguły. Ten ruch nie musi przekraczać żadnych innych reguł.
W zależności od rozmiaru podstawy reguł, co może oznaczać znaczącą różnicę w wydajności zapory.
Jedynym ruchem, który zapora ogniowa musi teraz sprawdzić, są wyraźnie nowe połączenia.
To znaczy porównaj zaporę dla publicznego serwera WWW z dostępem dla garstki webmasterów ze swoich stacji roboczych:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -m iprange --src-range 10.9.8.7-10.9.8.10 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Około 99% legalnych pakietów będzie należeć do ustanowionych połączeń, z zachowaniem tylko pierwszej reguły. Z pakietów, które nie pasują do tej reguły, większość powinna stanowić nowe połączenia z witryną, moduł wieloportowy może przyznać dostęp do HTTP lub HTTPS w ramach jednej reguły. Webmasterzy logują się z wielu stacji roboczych ze stałymi adresami przy użyciu ssh i sftp i wszystko inne jest odrzucane.
Zapora ogniowa, w której reguły są logicznie uporządkowane przez port TCP:
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.7 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.8 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.9 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 --source 10.9.8.10 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Tutaj każdy pakiet do twojego serwera HTTP musiałby zostać sprawdzony pod kątem 5 reguł przed udzieleniem dostępu. A przy większej liczbie usług działających na serwerze, które mogą z łatwością stać się 50 regułami lub znacznie więcej, gdy na przykład użyjesz fail2ban lub podobnych produktów.
related/established
linia jest obecna, ale kolejne reguły nie zapewniająNEW
?NEW
oznacza, że pakiet rozpoczął nowe połączenie.Jest obsługiwane przez moduły jądra zwanych
ip_conntrack_*
które sprawiają, że Twój Firewall Stateful . Zapory stanowe mogą oglądać strumienie ruchu.Jeśli podasz tylko protokół i numer portu, zapora sieciowa nie będzie stanowa, ale bezstanowa. Oznacza, że po prostu ogranicza lub blokuje pakiety. Tego typu zapory ogniowe nie są świadome przepływów danych.
Dobrym przykładem jest FTP: aktywny FTP używa portu 21 dla kanału sterującego, ale następnie używa portu 20 dla kanału danych. W przypadku stanowej zapory ogniowej nie trzeba jawnie otwierać portu 20, ponieważ jest on związany z poprzednim nowym ustanowionym połączeniem na porcie 21.
Oto fragment
iptables
strony man:źródło
Powyższy zestaw reguł pozwoli pakietom na port TCP 22 ze stanem
INVALID
przelotuACCEPT
/unix/57423/how-to-understand-why-the-packet-was-consanted-invalid-by-the-iptables
Ustawienie STATE
NEW
zapewnia, że pakiety NIEPRAWIDŁOWE nie zostaną przypadkowo przyzwolone.I aby wyjaśnić znaczenie:
źródło