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

Utsikt: 12603|Svar: 2

[Linux] Se hur min Linux skyddar mot SYN-attacker

[Kopiera länk]
Publicerad på 2015-12-12 00:04:58 | | | |

När jag kom till företaget i morse kände jag mig ganska långsam när jag loggade in på företagets officiella webbplats, loggade in på servern för att kontrollera åtkomststatusen på den officiella webbplatsen:

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

     172 GRUNDADE

     59 ANSLUTEN

    589 SYN_RECV

     15 STREAM

SYN är faktiskt så hög, fortsätt spåra SYN:n som skickas av dessa IP-adresser:

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

570 x.x.x.x   

(IP-adressen är inte skriven, det är en IP till Shandong Zaozhuang Unicom), men denna IP har skickat så många SYN-förfrågningsanslutningar, och samtidigheten med vår webbserver är inte särskilt hög, så att normala användarförfrågningar inte kan besvaras och sidan kan inte öppnas. Eftersom hårdvarubrandväggen hanteras av gruppens IT-avdelning har jag ingen befogenhet, så jag kan bara vidta vissa åtgärder på den lokala servern för att delvis mildra SYN-attacken.

Först och främst, låt oss prata om attackprincipen i SYN:

I TCP/IP-protokollet tillhandahåller TCP-protokollet pålitliga anslutningstjänster genom att använda ett trevägshandskakning för att etablera en anslutning.

Första handskakningen: När en anslutning upprättas skickar klienten ett syn-paket (syn=j) till servern och går in i SYN_SEND-tillståndet, i väntan på att servern ska bekräfta.

Det andra handskaket: När servern tar emot SYN-paketet måste den bekräfta kundens SYN (ack=j+1) och även skicka ett SYN-paket (syn=k), det vill säga SYN+ACK-paket, varvid servern går in i SYN_RECV-tillståndet.

Tredje handskakningen: Klienten tar emot SYN+ACK-paketet från servern och skickar bekräftelsepaketet ACK (ack=k+1) till servern. Efter tre handskakningar börjar klienten och servern överföra data.


Om användaren initierar en anslutningsförfrågan med servern bara för att skaka hand för andra gången och inte svarar servern, kommer servern att fortsätta vänta på användarens bekräftelse. Så vi gör följande ändringar direkt från SYN-anslutningen:

Kontrollera standardkonfigurationen för SYN 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 är längden på SYN-kön, och att öka SYN-köens längd kan rymma fler nätverksanslutningar som väntar på att kopplas upp. tcp_syncookies är en strömbrytare för att slå på SYN-cookiefunktionen, vilket kan förhindra partiella SYN-attacker. tcp_synack_retries och tcp_syn_retries definierar antalet återförsöksanslutningar för SYN:en och minskar standardparametrarna för att kontrollera antalet SYN-anslutningar så mycket som möjligt.

Följande är parametrarna jag har ändrat, vilka kan ändras beroende på den faktiska situationen på min server:

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

#!/bin/sh

# Detta scrip{filter}t kommer att exekveras *efter* alla andra init scrip{filter}ts.

# Du kan lägga in dina egna initialiseringsgrejer här om du inte gör det

# vill göra hela Sys V-stilen init-grejerna.

Tryck 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

För att konfigurationen ska träda i kraft omedelbart utan att starta om servern kan den utföras

#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

Vissa gillar att använda åtkomstkontrolllistor för att förhindra SYN-attacker, vilket saktar ner SYN-attacker till viss del:

Syn-flodattack

#iptables -A INPUT -p tcp --syn -m gräns --gräns 1/s -j ACCEPTERA

--begränsa 1/s begränsa antalet syn-samtidighet till 1 gång per sekund

Antiportskanning

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

Dödens ping

# iptables -A FORWARD -p icmp --icmp-typ ekoförfrågan -m gräns --gräns 1/s -j ACCEPTERA

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

För att se, #iptables -L

ACCEPTERA TCP – var som helst var som helst tcp-flaggor: FIN,SYN,RST,ACK/SYN gräns: genomsnitt 1/sek burst 5

ACCEPTERA TCP – var som helst var som helst tcp-flaggor: FIN,SYN,RST,ACK/RST gräns: genomsnitt 1/sekund burst 5

ACCEPTERA icmp – var som helst var som helst icmp ekoförfrågningsgräns: genomsnitt 1/sek burst 5

Kontrollera syn-anslutningen igen:

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

     20 10.92.10.220

      1 125.43.36.199

Uppenbarligen har antalet SYN-anslutningar minskat.






Föregående:"Tyvärr, du installerar inte en äkta app, installatören kan inte fortsätta utföra discuz"-lösningen
Nästa:SC Create skapar en Windows-systemtjänst
Publicerad på 2015-12-13 10:53:04 |
Vilket kraftfullt utseende
Publicerad på 2015-12-14 15:55:43 |
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