Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 12603|Svare: 2

[Linux] Se hvordan Linux-en min beskytter mot SYN-angrep

[Kopier lenke]
Publisert på 12.12.2015 00:04:58 | | | |

Da jeg ankom selskapet i morges, følte jeg meg ganske treg da jeg logget inn på selskapets offisielle nettside, logget inn på serveren for å sjekke tilgangsstatusen til den offisielle nettsiden:

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

     172 ETABLERT

     59 CONNECTED

    589 SYN_RECV

     15 STREAM

SYN er faktisk så høy, fortsett å spore SYN-en som sendes av disse IP-ene:

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

570 x.x.x.x   

(IP-en er ikke skrevet, det er en IP til Shandong Zaozhuang Unicom), men denne ene IP-en har sendt så mange SYN-forespørsler, og samtidigheten med webserveren vår er ikke særlig høy, slik at vanlige brukerforespørsler ikke kan korresponderes, og siden kan ikke åpnes. Fordi maskinvarebrannmuren administreres av gruppens IT-avdeling, har jeg ingen myndighet, så jeg kan bare iverksette noen tiltak på den lokale serveren for delvis å dempe SYN-angrepet.

Først og fremst, la oss snakke om angrepsprinsippet i SYN:

I TCP/IP-protokollen gir TCP-protokollen pålitelige tilkoblingstjenester ved å bruke et treveis håndtrykk for å etablere en forbindelse.

Første håndtrykk: Når en tilkobling etableres, sender klienten en syn-pakke (syn=j) til serveren og går inn i SYN_SEND-tilstanden, og venter på at serveren skal bekrefte.

Det andre håndtrykket: Når serveren mottar SYN-pakken, må den bekrefte kundens SYN (ack=j+1), og også sende en SYN-pakke (syn=k), det vil si SYN+ACK-pakke, hvorpå serveren går inn i SYN_RECV-tilstanden.

Tredje håndtrykk: Klienten mottar SYN+ACK-pakken fra serveren og sender bekreftelsespakken ACK (ack=k+1) til serveren. Etter tre håndtrykk begynner klient og server å sende data.


Hvis brukeren initierer en tilkoblingsforespørsel til serveren bare for å håndhilse for andre gang og ikke svarer serveren, vil serveren fortsette å vente på brukerens bekreftelse. Så vi gjør følgende endringer direkte fra SYN-tilkoblingen:

Sjekk standard SYN-konfigurasjon i Linux:

[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 er lengden på SYN-køen, og å øke lengden på SYN-køen kan imøtekomme flere nettverkstilkoblinger som venter på å bli koblet til. tcp_syncookies er en bryter som slår på SYN-cookie-funksjonen, som kan forhindre delvise SYN-angrep. tcp_synack_retries og tcp_syn_retries definerer antall retry-tilkoblinger for SYN, og reduserer standardparameterne for å kontrollere antall SYN-tilkoblinger så mye som mulig.

Følgende er parametrene jeg har endret, som kan tilpasses etter den faktiske situasjonen på serveren min:

[root@web ~]# mer /etc/rc.d/rc.local

#!/bin/sh

# Denne scrip{filter}t vil bli utført *etter* alle de andre init scrip{filter}ts.

# Du kan legge inn dine egne initialiseringsgreier her hvis du ikke gjør det

# vil gjøre hele Sys V-stilen init-greiene.

trykk på /var/lock/subsys/local

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

For at konfigurasjonen skal tre i kraft umiddelbart uten å starte serveren på nytt, kan den utføres

#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

Noen liker å bruke tilgangskontrolllister for å forhindre SYN-angrep, noe som bremser SYN-angrep til en viss grad:

Syn-flomangrep

#iptables -A INPUT -p tcp --syn -m grense --grense 1/s -j AKSEPTER

--begrens 1/s begrens antall syn-samtidighet til 1 gang per sekund

Antiport-skanning

# iptables -A FORWARD -p tcp --tcp-flagg SYN,ACK,FIN,RST RST -m grense --limit 1/s -j AKSEPTER

Dødens ping

# iptables -A FORWARD -p icmp --icmp-type ekkoforespørsel -m grense --grense 1/s -j AKSEPTER

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

For å se, #iptables -L

AKSEPTER TCP – hvor som helst hvor som helst TCP-flagg: FIN,SYN,RST,ACK/SYN grense: gjennomsnittlig 1/sek burst 5

AKSEPTER TCP – hvor som helst hvor som helst TCP-flagg: FIN,SYN,RST,ACK/RST grense: gjennomsnittlig 1/sek burst 5

AKSEPTER icmp -- hvor som helst hvor som helst icmp ekkoforespørselsgrense: gjennomsnitt 1/sekund burst 5

Sjekk syn-tilkoblingen igjen:

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

     20 10.92.10.220

      1 125.43.36.199

Åpenbart har antallet SYN-tilkoblinger gått ned.






Foregående:"Beklager, du installerer ikke en ekte app, installasjonsprogrammet kan ikke fortsette å utføre discuz"-løsningen
Neste:SC Create oppretter en Windows-systemtjeneste
Publisert på 13.12.2015 10:53:04 |
For et kraftfullt utseende
Publisert på 14.12.2015 15:55:43 |
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com