Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 12603|Odpowiedź: 2

[linux] Zobacz, jak mój Linux chroni przed atakami SYN

[Skopiuj link]
Opublikowano 12.12.2015 00:04:58 | | | |

Kiedy dziś rano dotarłem do firmy, czułem się dość wolny, gdy zalogowałem się na oficjalną stronę firmy, zalogowałem się na serwer, by sprawdzić status dostępu do oficjalnej strony:

[root@web ~]# netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn

     172 ZAŁOŻONO

     59 POŁĄCZONYCH

    589 SYN_RECV

     15 STRUMIEŃ

SYN jest tak wysoki, kontynuuj śledzenie SYN wysyłanego przez te adresy IP:

[root@tweb ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | Uniq -c | sort -nr | więcej

570 x.x.x.x   

(IP nie jest zapisane, jest IP Shandong Zaozhuang Unicom), ale ten jeden adres IP wysłał tak wiele połączeń SYN, a współbieżność naszego serwera WWW nie jest zbyt duża, więc normalne żądania użytkowników nie mogą być korespondowane, a strona nie może zostać otwarta. Ponieważ sprzętowa zapora jest zarządzana przez dział IT grupy, nie mam żadnych uprawnień, więc mogę podjąć tylko pewne działania na lokalnym serwerze, aby częściowo ograniczyć atak SYN.

Przede wszystkim porozmawiajmy o zasadzie ataku w SYN:

W protokole TCP/IP protokół TCP zapewnia niezawodne usługi połączenia, wykorzystując trzykierunkowy handshake do nawiązania połączenia.

Pierwszy handshake: Podczas nawiązywania połączenia klient wysyła pakiet syn (syn=j) do serwera i wchodzi w stan SYN_SEND, czekając na potwierdzenie przez serwer.

Drugi handshake: Gdy serwer otrzymuje pakiet SYN, musi potwierdzić SYN klienta (ack=j+1) oraz wysłać pakiet SYN (syn=k), czyli pakiet SYN+ACK, po czym serwer wchodzi w stan SYN_RECV.

Trzeci handshake: Klient otrzymuje pakiet SYN+ACK od serwera i wysyła pakiet potwierdzający ACK (ack=k+1) do serwera. Po trzech uściskach ręki klient i serwer zaczynają przesyłać dane.


Jeśli użytkownik inicjuje żądanie połączenia z serwerem, a następnie po raz drugi uścisnie dłoń i nie odpowie serwerowi, serwer będzie czekał na potwierdzenie użytkownika. Dlatego wprowadzamy następujące zmiany bezpośrednio z połączenia SYN:

Sprawdź domyślną konfigurację SYN w Linuksie:

[root@web ~]# sysctl -a | Grep _syn

net.ipv4.tcp_max_syn_backlog = 1024

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_synack_retries = 5

net.ipv4.tcp_syn_retries = 5

tcp_max_syn_backlog to długość kolejki SYN, a jej wydłużenie pozwala na większą liczbę połączeń sieciowych oczekujących na połączenie. tcp_syncookies jest przełącznik do włączenia funkcji ciasteczek SYN, która może zapobiegać częściowym atakom SYN. tcp_synack_retries i tcp_syn_retries definiują liczbę połączeń powtórnych dla SYN oraz ograniczają domyślne parametry, aby kontrolować liczbę połączeń SYN tak bardzo, jak to możliwe.

Poniżej przedstawiono parametry, które zmodyfikowałem, a które można dostosować do rzeczywistej sytuacji mojego serwera:

[root@web ~]# więcej /etc/rc.d/rc.local

#!/śmieć/sh

# Ten scrip{filter}t zostanie wykonany *po* wszystkich pozostałych init scrip{filter}ts.

# Możesz tu włożyć własne inicjalizacyjne rzeczy, jeśli nie

# chcę zrobić pełne init w stylu Sys V.

dotyk /var/lock/subsys/lokalny

ulimit -HSn 65535

/usr/local/apache2/bin/apachectl start

#####

sysctl -w net.ipv4.tcp_max_syn_backlog=2048

sysctl -w net.ipv4.tcp_syncookies=1

sysctl -w net.ipv4.tcp_synack_retries=3

sysctl -w net.ipv4.tcp_syn_retries=3

Aby konfiguracja zaczęła działać natychmiast bez restartu serwera, można ją wykonać

#sysctl -w net.ipv4.tcp_max_syn_backlog=2048

#sysctl -w net.ipv4.tcp_syncookies=1

#sysctl -w net.ipv4.tcp_synack_retries=3

#sysctl -w net.ipv4.tcp_syn_retries=3

Niektórzy lubią korzystać z list kontroli dostępu, aby zapobiegać atakom SYN, co do pewnego stopnia spowalnia ataki SYN:

Atak powodzi syn

#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

--limit 1/s ogranicz liczbę syn współbieżności do 1 czasu na sekundę

Skanowanie antyportowe

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Ping śmierci

# iptables -A FORWARD -p icmp --icmp-typ echo-request -m limit --limit 1/s -j ACCEPT

#>iptables-save >/etc/sysconfig/iptables

Do oglądania, #iptables -L

ACCEPT tcp -- wszędzie i wszędzie, flagi TCP: FIN, SYN, RST, ACK/SYN limit: średnio 1/sekunda burst 5

ACCEPT tcp -- wszędzie wszędzie i wszędzie, flagi TCP: FIN, SYN, RST, ACK/RST limit: średnio 1/sekunda burst 5

ACCEPT icmp -- wszędzie gdziekolwiek i gdzie icmp echo-request limit: średnio 1/sek burst 5

Sprawdź ponownie połączenie syn:

[root@web ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | Uniq -c | sort -nr | więcej

     20 10.92.10.220

      1 125.43.36.199

Oczywiście liczba połączeń SYN spadła.






Poprzedni:"Przepraszamy, nie instalujesz oryginalnej aplikacji, instalator nie może kontynuować obejścia z dyskusją"
Następny:SC Create tworzy usługę systemową Windows
Opublikowano 13.12.2015 10:53:04 |
Co za potężny wygląd
Opublikowano 14.12.2015 15:55:43 |
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com