Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 13773|Svar: 0

[Säkerhetshandledning] SYN Flood-attacker, SYN-cookieförsvar och modifiering av kärnparametrar för Linux/FreeBSD

[Kopiera länk]
Publicerad på 2014-10-27 21:37:19 | | |

HackerDet är en önskvärd och lovande karriär. Jag uppskattar bra hackare och hatar dåliga hackare. Den så kallade dåliga hackern är den typen som får någon på andra sidan att jobba övertid.

    SYN Flood-attacker är en typisk överbelastningsattack. Den så kallade denial of service-attacken syftar till att indirekt uppnå syftet med attacken genom att göra offrets värd eller nätverk oförmöget att tillhandahålla god service. Hackare gillar att spela detta för att visa att de är nivå, kapabla och modiga genom att få den andra parten att arbeta övertid, men i själva verket är det ingenting.

   1: Vad är en SYN Flood-attack?

    SYN Flood-attacker utnyttjar den trevägs handskakningsprocessen i TCP-protokollet i IPv4. Detta protokoll föreskriver att om ena änden vill initiera en TCP-anslutning till den andra änden, måste den först skicka ett TCP SYN (synkronisera) paket till den andra parten, och den andra parten skickar tillbaka ett TCP SYN + ACK-paket efter mottaget, och sedan skickar initiatorn ett TCP ACK (ACKnowledge Character)-paket tillbaka, så att de tre handskakningarna är över.

    I ovanstående process finns några viktiga begrepp:

    Kön är inte ansluten: I trevägshandshake-protokollet upprätthåller servern en oansluten kö som öppnar en post för varje klients SYN-paket (syn=j) som indikerar att servern har mottagit SYN-paketet och ger en bekräftelse till kunden, i väntan på kundens bekräftelsepaket. Anslutningen som identifieras av dessa poster är i ett Syn_RECV tillstånd på servern, och när servern mottar ett bekräftelsepaket från kunden raderas posten och servern går in i ETABLERAT tillstånd. Med andra ord, när TCP-servern tar emot TCP SYN-förfrågan, måste TCP-servern först allokera ett dataområde för att betjäna TCP-anslutningen som bildas av denna hand innan TCP SYN+ACK-paketet skickas tillbaka till TCP-klienten. Generellt är anslutningstillståndet när SYN-paketet tas emot men ACK-paketet ännu inte har mottagitsHalvöppen anslutning(Halvöppen anslutning)。

    Backloggparameter: Anger det maximala antalet oanslutna köer.

    SYN-ACK antal återutsändningar: Efter att servern skickat SYN-ACK-paketet, om kundbekräftelsepaketet inte mottags, utför servern den första omöverföringen, väntar en tid och tar inte emot kundbekräftelsepaketet, och utför den andra omöverföringen. Om antalet omöverföringar överstiger det maximala antalet återutsändningar som systemet angett, raderar systemet anslutningsinformationen från halvanslutningskön. Observera att väntetiden för varje omgång inte nödvändigtvis är densamma.

    Semi-sammanhängande överlevnadstid: Avser den maximala tid som en post i semi-anslutningskön överlever, det vill säga den maximala tiden från det att tjänsten tar emot SYN-paketet tills paketet bekräftas vara ogiltigt, och tidsvärdet är summan av den maximala väntetiden för alla omöverföringsförfrågningspaket. Ibland kallar vi också semi-sammankopplad överlevnadstid, SYN_RECV överlevnadstid.

    Vid den vanligaste SYN-floodattacken skickar angriparen ett stort antal TCP SYN-paket till offret på kort tid, varpå angriparen är TCP-klienten och offret är TCP-servern. Enligt beskrivningen ovan skulle offret tilldela en specifik datazon till varje TCP SYN-paket, så länge SYN-paketen hade olika källadresser (vilket skulle vara lätt för angripare att förfalska). Detta kommer att belasta TCP-serversystemet mycket och till slut göra att systemet inte fungerar korrekt.

    2. Principen om SYN-cookies

    Ett av sätten att effektivt förhindra SYN Flood-attacker är SYN-cookies. SYN Cookie Anledning D. Uppfunnen av J. Bernstain och Eric Schenk.

    SYN-cookies är en modifiering av TCP:s serversidiga trevägshandshake-protokoll för att förhindra SYN Flood-attacker.Dess princip är:När TCP-servern tar emot ett TCP SYN-paket och returnerar ett TCP SYN+ACK-paket, allokerar den inte ett dedikerat dataområde, utan beräknar ett cookievärde baserat på detta SYN-paket. När ett TCP ACK-paket tas emot kontrollerar TCP-servern legitimiteten hos TCP ACK-paketet baserat på det cookievärdet. Om det är lagligt är ett dedikerat dataområde avsatt för att hantera framtida TCP-anslutningar.

    Låt oss prata om hur man konfigurerar kärnparametrar för att implementera SYN-cookies i Linux och FreeBSD

    Tre: Linux-inställningar

    Om din serverkonfiguration inte är bra når antalet TCP-TIME_WAIT-sockets 20 000 eller 30 000, och servern kan lätt dras till döds. Genom att modifiera Linux-kärnans parametrar kan antalet TIME_WAIT sockets på servern minskas.

    TIME_WAIT kan visas med följande kommando:

  1. 以下是代码片段:
  2. netstat -an | grep "TIME_WAIT" | wc -l
Kopiera koden

På Linux, som CentOS, kan du uppnå detta genom att ändra filen /etc/sysctl.conf.

    Lägg till följande rader:

  1. 以下是代码片段:
  2. net.ipv4.tcp_fin_timeout = 30
  3. net.ipv4.tcp_keepalive_time = 1200
  4. net.ipv4.tcp_syncookies = 1
  5. net.ipv4.tcp_tw_reuse = 1
  6. net.ipv4.tcp_tw_recycle = 1
  7. net.ipv4.ip_local_port_range = 1024    65000
  8. net.ipv4.tcp_max_syn_backlog = 8192
  9. net.ipv4.tcp_max_tw_buckets = 5000
  10. net.ipv4.tcp_synack_retries = 2
  11. net.ipv4.tcp_syn_retries = 2
Kopiera koden

Illustrera:

net.ipv4.tcp_syncookies = 1 betyder att SYN-cookies är aktiverade, vilket är en BOOLEAN. När SYN väntar på att kön ska fyllas, aktivera cookies för att hantera den, vilket kan förhindra ett litet antal SYN-attacker, och standarden är 0, vilket betyder att den är stängd.
net.ipv4.tcp_tw_reuse = 1 betyder att återanvändning är aktiverad, vilket är en BOOLEAN. Tillåter återanvändning av TIME-WAIT-sockets för nya TCP-anslutningar, med standard 0, vilket indikerar stängning;
net.ipv4.tcp_tw_recycle = 1 betyder att snabb återvinning av TIME-WAIT-sockets i TCP-anslutningar aktiveras, vilket är en BOOLEAN, och standarden är 0, vilket betyder att den är stängd.
net.ipv4.tcp_fin_timeout = 30 betyder att om socketen stängs av en lokal förfrågan, avgör denna parameter hur länge den kommer att förbli i FIN-WAIT-2-tillståndet. Enheten är sekunder.
net.ipv4.tcp_keepalive_time = 1200 anger hur ofta TCP skickar keepalive-meddelanden när keepalive används. Standarden är 2 timmar, ändrat till 20 minuter. Enheten är sekunder.
net.ipv4.ip_local_port_range = 1024 65000 anger intervallet av portar som används för utgående anslutningar. Standardfallet är litet: 32768 till 61000, ändrat till 1024 till 65000.
net.ipv4.tcp_max_syn_backlog = 8192 anger längden på SYN-kön, som som standard är 1024, och längden på den ökade kön är 8192 för att rymma fler nätverksanslutningar som väntar på anslutning.
net.ipv4.tcp_max_tw_buckets = 5000 anger det maximala antalet socklar som systemet har vid TIME_WAIT samma tidpunkt, och om detta antal överskrids kommer TIME_WAIT sockets omedelbart att rensas och ett varningsmeddelande skrivs ut. Standardvärdet är 180000, ändrat till 5000. För servrar som Apache och Nginx kan parametrarna i de tidigare serierna minska antalet socklar TIME_WAIT bra, men för Squid är effekten inte särskilt bra. Denna parameter styr det maximala antalet TIME_WAIT sockets för att förhindra att Squid-servern dras ut av ett stort antal TIME_WAIT sockets.
net.ipv4.tcp_synack_retries och net.ipv4.tcp_syn_retries definierar antalet SYN-försök.

Kör följande kommando för att få konfigurationen att träda i kraft:

  1. 以下是代码片段:
  2. /sbin/sysctl -p
Kopiera koden

Om du inte vill ändra /etc/sysctl.conf kan du också använda kommandot för att göra det:

  1. 以下是代码片段:
  2. /sbin/sysctl -w key=value
Kopiera koden

För det fjärde, uppsatt under FreeBSD

    yayus personliga lärandeperspektiv: försvaret mot syn i FreeBSD kanske inte är detsamma som i Linux, parametrarna som konfigureras är inte exakt desamma, och den relevanta konfigurationen och förståelsen kanske inte är korrekt :)

    Det finns en i TCP-länkenMSL (max segmentlivslängd)BegreppetMaximal genereringstidMSL-värdet tas i 30 sekunder i allmänna implementationer, och vissa implementationer tar 2 minuter. "Passiv avstängning" i TCP-tillståndsmaskinen: Från CLOSE_WAIT till LAST_ACK finns en regel enligt följande: När TCP utför en aktiv avstängning och skickar tillbaka den senaste ACK:n måste anslutningen stanna i TIME_WAIT-tillståndet dubbelt så länge som MSL. Detta gör att TCP kan skicka den sista ACK:n igen om den skulle gå förlorad (den andra änden går ut och skickar om den sista FIN:en).

    Förekomsten av denna regel har till följd att länken (klientadress, port och server-side address, port) på den adressen inte kan användas under denna 2*MSL-tid. Till exempel, om vi stänger en länk efter att ha skapat den och sedan snabbt startar om länken, kommer porten att vara otillgänglig.

    TIME_WAIT tid är 2*MSL. Så du kan minska TIME_WAIT tid genom att justera net.inet.tcp.msl. För webbservern kan detta värde justeras till 7500 eller 2000 (åtkomst till en webb, sidan kan inte flashas mer än 4~15 sekunder, du kan överväga att ge upp -_-)

    Parameterinställningsreferens:

  1. 以下是引用片段:
  2. net.inet.tcp.syncookies=1
  3. 防止DOS攻击

  4. net.inet.tcp.msl=7500
  5. 防止DOS攻击,默认为30000

  6. net.inet.tcp.blackhole=2
  7. 接收到一个已经关闭的端口发来的所有包,直接drop,如果设置为1则是只针对TCP包

  8. net.inet.udp.blackhole=1
  9. 接收到一个已经关闭的端口发来的所有UDP包直接drop
Kopiera koden

På FreeBSD såg Yayu inget kommando som "/sbin/sysctl -p" som kunde göra innehållet i /etc/sysctl.conf effektivt, så han använde bara kommandot:

  1. 以下是代码片段:
  2. sysctl net.inet.tcp.syncookies=1 net.inet.tcp.msl=7500 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1
Kopiera koden






Föregående:Ett brev från en student vid Wuchang Institute of Technology till nyhetsmedierna
Nästa:Återställ sanningen om organiseringen av prostitution på hotell vid högskolor och universitet "Wuchang Institute of Technology: Rykten stannar vid...
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com