Protokół komunikatu kontroli Internetu, znany również jako ICMP, jest protokołem używanym do sprawdzania łączności hostów w sieci. Możemy również użyć tego protokołu do diagnozowania problemów w sieci. Ale z punktu widzenia bezpieczeństwa może być również użyty do wykonania ataku DDOS. Atak Ping Flood lub rozproszona usługa odmowy (DDOS) jest formą ataku, w której ktoś wysyła wiele żądań ping. Aby uniknąć tego rodzaju sytuacji, administratorzy sieci zwykle blokują ICMP w swojej sieci. W tym artykule dowiemy się, w jaki sposób tabele IP można użyć do blokowania ICMP na naszym serwerze.
Jakie są tabele IP?
Tabele IP to program narzędzi zapory dla systemów operacyjnych Linux. Można go użyć do akceptowania, odmowy lub zwracania ruchu sieciowego do lub ze źródła. Obserwuje nadchodzący ruch sieciowy za pomocą różnych zestawów reguł zdefiniowanych w tabeli. Te zestawy reguł są nazywane łańcuchami. Tabele IP obserwują pakiety danych i które pakiet pasuje do reguł, są skierowane do innego łańcucha lub przypisane jedną z następujących wartości.
Instalowanie tabel IP
W przypadku większości rozkładów Linux tabele IP są wstępnie zainstalowane. Możesz sprawdzić, czy tabele IP są zainstalowane, czy nie, wpisując następujące polecenie w terminalu.
Ubuntu@ubuntu: ~ $ iptables --versionJeśli tabele IP nie są zainstalowane, możesz je zainstalować, uruchamiając następujące polecenie w terminalu.
Ubuntu@ubuntu: ~ $ sudo apt-get aktualizacjaMożemy sprawdzić domyślny status tabel IP, uruchamiając następujące polecenie w terminalu.
ubuntu@ubuntu: ~ $ sudo iptables -l -vFlaga „-L” wymienia wszystkie reguły, a flaga „-v” pokazuje szczegółowe informacje.
Alternatywnie możemy również wymienić wszystkie reguły dodane do tabel IP przez działające następujące polecenie w terminalu.
Ubuntu@ubuntu: ~ $ sudo iptables -sDomyślnie wszystkie łańcuchy akceptują pakiety, a łańcuchy te nie mają przypisania reguły.
Przypisywanie zasad do łańcuchów
Początkowo żadna reguła nie jest przypisywana do żadnego łańcucha i wszystkie akceptują ruch sieciowy. Teraz w tej sekcji zobaczymy, w jaki sposób możemy zdefiniować niestandardowe reguły w celu blokowania lub umożliwienia ruchu sieciowego. Aby zdefiniować nową regułę, używamy flagi „A” (dołączanie), która informuje tabele IP, że nowa reguła zostanie zdefiniowana. Używane są również następujące opcje wraz z flagą „A” do opisania reguły.
-I (interfejs): Ta opcja wskazuje, przez jaki interfejs chcesz, aby ruch sieciowy był dozwolony lub zablokowany. Możesz uzyskać listę wszystkich interfejsów w systemie, uruchamiając następujące polecenie w terminalu.
Ubuntu@ubuntu: ~ $ ifconfig-P (protokół): Ta opcja określa, który protokół chcesz filtrować za pomocą tabel IP. Może to być TCP, UDP, ICMP, ICMPV6 itp. Możesz zastosować reguły do wszystkich protokołów za pomocą wszystkich opcji.
-S (Źródło): Ta opcja pokazuje źródło ruchu sieciowego, takiego jak adres IP lub nazwa domeny.
-dport (Port docelowy): Ta opcja służy do wskazania portu docelowego dla ruchu sieciowego.
-J (cel): Ta opcja służy do pokazania celu. Może być akceptowanie, upuszczenie, odrzucenie lub powrót. Ta opcja jest obowiązkowa dla każdej reguły.
Ogólnie rzecz biorąc, podstawowa składnia do dodania reguły będzie następująco:
Ubuntu@ubuntu: ~ $ sudo iptables -a -i -jBlokowanie ICMP za pomocą tabel IP
Jak dotąd mamy podstawowe zrozumienie tabel IP i ich użycie, aby umożliwić lub blokować ruch w określonych portach przez określone interfejsy. Teraz użyjemy tabel IP do blokowania ICMP na naszym serwerze.
Poniższe polecenie doda regułę, aby zablokować ICMP na komputerze:
Ubuntu@ubuntu: ~ $ sudo iptables -a input -J odrzucanie -p icmp --cmp -type echo -requestPo uruchomieniu powyższego polecenia sprawdź teraz status tabel IP.
ubuntu@ubuntu: ~ $ sudo iptables -l -vWidzimy, że reguła została dodana do łańcucha wejściowego, co pokazuje, że cały ruch ICMP zostanie odrzucony. Teraz, jeśli pingujemy nasz system z dowolnego innego systemu z tej samej sieci, odrzuci żądanie. Widzimy wynik, składając żądanie ping od LocalHost
Ubuntu@ubuntu: ~ $ ping 127.0.0.1Widzimy, że otrzymujemy komunikaty odrzucające z systemu, jeśli spróbujemy złożyć na to żądanie ping.
Alternatywnie, do dodania reguł w celu blokowania ICMP na naszym serwerze można użyć następujących dwóch poleceń.
Ubuntu@ubuntu: ~ $ sudo iptables -a input -p icmp -j drop --cmp -type echo -requestPo dodaniu tych dwóch reguł, teraz sprawdź status tabel IP.
ubuntu@ubuntu: ~ $ sudo iptables -l -vWidzimy, że powyższe polecenie dodało dwie reguły, jedną do łańcucha wejściowego, a drugą do łańcucha wyjściowego.
Różnica między upuszczeniem a odrzuceniem polega na tym, że kiedy używamy odrzucenia, pokazuje nam ostrzeżenie (port docelowy nieosiągalny) podczas ping. Z drugiej strony, gdy używamy kropli, po prostu upuszcza wyjście. Wejście nie jest odrzucane, jest przetwarzane, ale wyjście nie jest wyświetlane, jak pokazano poniżej
Wniosek
Hakerzy przyjmują różne metody wykonywania ataków rozproszonych usług odmowy (DDOS) na serwerach. Powódź ping jest również formą ataku DDOS. Hakerzy wysyłają tak wiele żądań ping na serwer, że serwer wykorzystuje całą swoją moc obliczeniową do przetwarzania żądań ping i nie wykonuje faktycznego przetwarzania. W tym scenariuszu lub wielu innych scenariuszach może być konieczne zablokowanie ICMP na serwerze.
W tym artykule nauczyliśmy się różnych sposobów blokowania ICMP za pomocą tabel IP. Omówiliśmy, w jaki sposób możemy dodać różne reguły, aby zablokować ICMP na naszym serwerze. W ten sam sposób możemy użyć tabel IP do blokowania dowolnego ruchu na dowolnym porcie za pomocą tabel IP.