Co to są przekierowania ICMP i czy należy je blokować?

22

Po włączeniu ufw i audytora bezpieczeństwa Tiger widzę ostrzeżenia:

The system accepts ICMP redirection messages

Co to są wiadomości przekierowujące ICMP? Czy należy je wyłączyć ze względów bezpieczeństwa? Jeśli tak, to jak to zrobić, korzystając z zapory ufw?

jrdioko
źródło

Odpowiedzi:

28

Zgodnie z tym artykułem

Istnieją pewne przypadki, w których pakiety ICMP mogą być użyte do ataku na sieć. Chociaż ten typ problemu nie jest dzisiaj powszechny, zdarzają się sytuacje, w których takie problemy się zdarzają. Tak jest w przypadku przekierowania ICMP lub pakietu ICMP typu 5. Przekierowania ICMP są używane przez routery do określania lepszych ścieżek routingu z jednej sieci, w zależności od wyboru hosta, więc w zasadzie wpływa to na sposób routowania pakietów i miejsc docelowych.

Dzięki przekierowaniom ICMP host może dowiedzieć się, do których sieci można uzyskać dostęp z sieci lokalnej i które routery mają być używane dla każdej takiej sieci. Problem bezpieczeństwa wynika z faktu, że pakiety ICMP, w tym przekierowanie ICMP, są wyjątkowo łatwe do sfałszowania i w zasadzie atakujący może łatwo sfałszować pakiety przekierowania ICMP.

Ataker może następnie zasadniczo zmieniać tabele routingu hosta i przekierowywać ruch do hostów zewnętrznych na wybranej przez siebie ścieżce; nowa ścieżka jest utrzymywana przez router przez 10 minut. Z uwagi na ten fakt i zagrożenia bezpieczeństwa związane z takim scenariuszem nadal zaleca się wyłączanie komunikatów przekierowania ICMP (ignorowanie ich) ze wszystkich publicznych interfejsów.

Musisz edytować plik /etc/sysctl.conf

i zmień

###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0

DO

###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
net.ipv4.conf.all.send_redirects = 0

Następnie zastosuj powyższe modyfikacje parametrów jądra za pomocą:

$ sudo sysctl -p
Manish Sinha
źródło
Dzięki. Prawdopodobnie musisz też odkomentować te linie, nie? :)
jrdioko
O tak. Mój błąd. Zaktualizowałem to.
Manish Sinha,
4
Musisz to zrobić, aby zaakceptować zmiany: sudo sysctl -p
Nie sądzę, że ustawienie net.ipv4.conf.all.accept_redirects = 0 robi cokolwiek; zwróć uwagę na or_ w pliku. Jeśli poprawnie czytam Secure_redirects [ frozentux.net/ipsysctl-tutorial/chunkyhtml/… ], to zastępuje net.ipv4.conf.all.accept_redirects = 0
gerardw
3

Pamiętaj, że jeśli przekazywanie jest wyłączone (nie jesteśmy routerem), wartość net.ipvX.conf.all.accept_redirects będzie wartością specyficzną dla interfejsu ORed, np. Net.ipvX.conf.eth0.accept_redirects. send_redirects jest zawsze ORed.

Pełna poprawka byłaby wtedy:

net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0

Aby skorzystać z ustawień „domyślnych” interfejsy sieciowe należy ponownie skonfigurować.

Marek
źródło