Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2021-08-25 18:18:57

  wiarus - Użytkownik

wiarus
Użytkownik
Zarejestrowany: 2021-07-28

Wartość TCP MSS i reguła iptables.

Cześć. W roku 2019 jeśli pamiętam, zgłoszono trzy CVE związane z TCP/MSS prowadzące np. do DoS (odkryte chyba przez Netflix).

Po tej aktualizacji dodany został klucz sysctl — 'net.ipv4.tcp_min_snd_mss' z domyślną wartością ustawioną na '48'.
W swoim ogłoszeniu DSA, Deweloperzy sugerowali zwiększenie do '536' (z zastrzeżeniem: "unless you know that your network requires a lower value").

Pamiętacie może te zgłoszenia? (Najważniejsze to chyba CVE-2019-11479). I czy waszym zdaniem dobry pomysł mieli Deweloperzy Debiana sugerując zwiększenie domyślnej wartości?

Czy według Was zwiększenie do '536', jest dobrym pomysłem? Dodatkowo można zastosować regułę firewall'a, w tym przypadku Iptables:

Kod:

iptables -A INPUT -p tcp -m tcpmss --mss 1:500 -j DROP

Teraz atakujący używający małej wartości MSS (w tym przypadku <500) zostanie zablokowany.

A tak w ogóle zauważyłem, że z domyślną wartością '48', testy z wykorzystaniem np. polecenia 'dig +short rs.dns-oarc.net TXT' wskazywały np. coś takiego:

Kod:

"2001:bc8:1824:170f::1 sent EDNS buffer size 1220"
"2001:bc8:1824:170f::1 DNS reply size limit is at least 1206"

Po zakomentowaniu reguły Iptables, wyczyszczeniu Cache, adres był w formacie IPv4.

A więc, co Wy myślicie o tej sytuacji? Zmieniliście rozmiar MSS tak, jak sugerowali Deweloperzy? Jeśli nie to czy ma to sens?
Oczywiście z regułą Iptables w parze ze zmianami.

Pozdro.

Ostatnio edytowany przez wiarus (2022-03-10 10:26:03)

Offline

 

#2  2021-08-25 21:12:52

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Wartość TCP MSS i reguła iptables.

Ja miałem 500, bo ktoś tam kiedyś sugerował, że nie ma co schodzić poniżej tej wartości, bo praktycznie żadna szanująca się sieć nie powinna mieć ustawionego mniejszego MSS. Teraz sobie w sysctl podbiłem do tych rekomendowanych 536, bo to za dużo różnicy i tak już w moim przypadku nie zrobi. xD

Teoretycznie można by sobie dodać regułki blokujące mniejsze MSS ale czy jest sens, skoro kernel przepisze MSS z automatu pakietom z mniejszym MSS niż ustawione w net.ipv4.tcp_min_snd_mss ? Poza tym, MSS występuje jedynie w pakietach SYN i SYN-ACK protokołu TCP (w 3way-handshake), więc ta twoja reguła jest bardzo słaba jeśli chodzi o wydajność. xD Więc bardziej by się przydało coś takiego:

Kod:

iptables -I INPUT -p tcp --tcp-flags SYN SYN -m tcpmss --mss 1:500 -j DROP
ip6tables -I INPUT -p tcp --tcp-flags SYN SYN -m tcpmss --mss 1:500 -j DROP

Ostatnio edytowany przez morfik (2021-08-25 21:13:34)

Offline

 

#3  2021-08-26 10:04:24

  wiarus - Użytkownik

wiarus
Użytkownik
Zarejestrowany: 2021-07-28

Re: Wartość TCP MSS i reguła iptables.

Cześć, dzięki za odpowiedź.

Mam właśnie taką regułę, jaką podałeś, w firewall'u (na razie zakomentowana), ale podałem "szybszy" do napisania na forum wariant :-) Po zwiększeniu tej wartości można też zastosować taką regułę, która powinna wyłapać nietypowe wartości:

Kod:

-A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss ! --mss 536:65535 -j DROP

Nie jest to lepsze rozwiązanie, ze względu na łańcuch PREROUTING? To tylko przykład.

W każdym razie, sprawdzę później tę wartość '536' i odkomentuję wspomnianą regułę.

Ostatnio edytowany przez wiarus (2021-08-26 10:08:54)

Offline

 

#4  2021-08-26 10:19:25

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Wartość TCP MSS i reguła iptables.

Łańcuch PREROUTING jest w tablicy raw, Tablica raw jest przed mechanizmem conntrack, więc nie da rady użyć -m conntrack.

W nftables to coś takiego można sobie wrzucić:

Kod:

nft add rule inet raw PREROUTING meta l4proto tcp tcp flags & (syn | rst) == syn tcp option maxseg size 1-500 counter drop

Offline

 

#5  2021-08-26 11:07:44

  wiarus - Użytkownik

wiarus
Użytkownik
Zarejestrowany: 2021-07-28

Re: Wartość TCP MSS i reguła iptables.

Ok, dzięki. Czyli, w sumie, pozostaje reguła, którą napisałeś w poprzedniej wiadomości (do czasu przejścia na nft).

Pozdro.

Offline

 

#6  2021-08-26 14:36:15

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Wartość TCP MSS i reguła iptables.

W iptables też możesz sobie taką wrzucić.

Kod:

iptables -t raw -I PREROUTING -p tcp -m tcp --tcp-flags SYN SYN -m tcpmss --mss 1:500 -j DROP

Ostatnio edytowany przez morfik (2021-08-26 14:37:00)

Offline

 

#7  2021-08-26 19:20:34

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Wartość TCP MSS i reguła iptables.

Co do  CVE-2019-11479, to tu piszą, że to już dawno załatane:
https://vuldb.com/?id.136652

Także zarówno Gentuś jak i OpenWRT mam już raczej odporne:
np router:

Kod:

OpenWrt 21.02-SNAPSHOT, r16263-4003eeab35
Linux Router 5.4.137 #0 Mon Aug 2 20:42:46 2021 mips GNU/Linux

Pozdro

Ostatnio edytowany przez Jacekalex (2021-08-26 19:20:54)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#8  2021-08-26 19:38:38

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Wartość TCP MSS i reguła iptables.

No bo te reguły iptables były tylko jako tymczasowe obejście problemu i nie ma potrzeby ich dodawania już.

Offline

 

#9  2021-08-26 20:56:54

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Wartość TCP MSS i reguła iptables.

Hmm, po przeanalizowaniu doszedłem do wniosku, że coś tutaj chyba jednak nie działa za dobrze. xD

Generalnie to piszą, że ten net.ipv4.tcp_min_snd_mss ma zmienić po cichu wartość MSS na tę którą się tutaj określi. No to sprawdziłem jak sprawa wygląda przy pomocy maszyny wirtualnej, gdzie do trasy domyślnej dodałem sobie advmss 100. Ten parametr ma wymusić w pakietach SYN ustawienie MSS na 100. No i potem z maszyny wirtualnej próbowałem połączyć się via ssh na mojego kompa. Podejrzałem co tam wireshark zanotował, no i widzę MSS w pakiecie SYN ustawiony na 100, a nie 536 (być może to jest to zwiększenie MSS po cichu). xD

Próbowałem przepisać wszystkie ustawienia od MSS w sysctl, tj. te poniższe:

Kod:

# sysctl -a | egrep -i "mss|mtu"
net.ipv4.ip_forward_use_pmtu = 0
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.route.min_adv_mss = 536
net.ipv4.route.min_pmtu = 536
net.ipv4.route.mtu_expires = 600
net.ipv4.tcp_base_mss = 536
net.ipv4.tcp_min_snd_mss = 536
net.ipv4.tcp_mtu_probe_floor = 536
net.ipv4.tcp_mtu_probing = 1

net.ipv6.conf.all.accept_ra_mtu = 1
net.ipv6.conf.all.mtu = 1280
net.ipv6.conf.default.accept_ra_mtu = 1
net.ipv6.conf.default.mtu = 1280
net.ipv6.route.min_adv_mss = 1220
net.ipv6.route.mtu_expires = 600

No i przy próbie połączenia dalej widzę w pakiecie SYN z maszyny wirtualnej MSS 100.

Nie wiem czy MSS jest ustawiony jedynie w pakiecie i po tym jak trafia do kernela, to ten mu go zwiększa, bo nawet jeśli robi to po chichu, to nie ma tego jak zweryfikować. xD Za to reguła na zaporze łapie ten zaniżony MSS:

Kod:

# nft list table inet raw
table inet raw {
        chain PREROUTING {
                type filter hook prerouting priority raw; policy accept;
                tcp flags & (syn | rst) == syn tcp option maxseg size 1-500 counter packets 51 bytes 3060 drop
        }

        chain OUTPUT {
                type filter hook output priority raw; policy accept;
        }
}

Więc teoretycznie ta regułka poprawia bezpieczeństwo, bo blokuje ten niski MSS zanim kernel coś z tym pakietem będzie później robił.

Także nie wiem co o tym myśleć ale sobie te regułkę na wszelki wypadek zostawię. xD

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)