Očvršćivanje Linux kernela putem sysctl.conf. Zaštita protiv SYN flood napada i podešavanje TCP-a. | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Očvršćivanje Linux kernela putem sysctl.conf. Zaštita protiv SYN flood napada i podešavanje TCP-a.

Uvod

U ovom vodiču, učvrstit ćete Linux kernel koristeći sysctl.conf, zaštititi svoj poslužitelj od SYN flood napada i optimizirati ponašanje TCP stoga. Podešavanje na razini kernela poboljšava otpornost protiv mrežnih napada uskraćivanja usluge (DoS) i poboljšava ukupne TCP performanse. Također ćete simulirati SYN flood napad u kontroliranom okruženju i provjeriti da vaši mehanizmi zaštite ispravno funkcioniraju.

Preduvjeti

Ciljana publika: Srednje iskusni sistem administratori
Procijenjeno vrijeme: 45–60 minuta

Sistemski zahtjevi

  • Operativni sustav: Ubuntu 24.04 LTS (testirano); kompatibilan s Debian 12/13 i drugim modernim Linux distribucijama
  • Verzija kernela: 5.x ili novija
  • Minimalno 1 GB RAM-a
  • Root ili sudo privilegije
  • Mrežni pristup između testnih strojeva

Potrebni alati

Instalirajte sljedeće alate:

sudo apt update

sudo apt install -y hping3 net-tools procps iproute2

Provjerite instalaciju: hping3 --version
Očekivani ishod: informacije o verziji koje potvrđuju uspješnu instalaciju.

Tip

Izvedite simulaciju SYN flood napada samo u kontroliranom laboratorijskom okruženju. Nikada ne testirajte na sustavima koje ne posjedujete ili nemate dopuštenje za testiranje.

Korak 1: Izradite sigurnosnu kopiju trenutne sysctl konfiguracije

Prije nego što napravite promjene, izradite sigurnosnu kopiju.

sudo cp /etc/sysctl.conf /etc/sysctl.conf.backup

Rezultat: Stvorena je sigurnosna kopija datoteke /etc/sysctl.conf.backup.

Korak 2: Konfigurirajte parametre kernela za zaštitu od SYN flood napada

Otvorite konfiguracijsku datoteku:

sudo nano /etc/sysctl.conf

Dodajte ili izmijenite sljedeće parametre.

Omogućite SYN kolačiće

net.ipv4.tcp_syncookies = 1

Svrha: Omogućuje SYN kolačiće kada se SYN red čekanja preplavi.
Vrijednosti:

  • 0 – Onemogućeno
  • 1 – Omogućeno kada dođe do preplavljivanja SYN reda čekanja (preporučeno)
  • 2 – Uvijek omogućeno (rijetko korišteno)

Zašto: SYN kolačići sprječavaju iscrpljivanje memorije izbjegavanjem alokacije resursa do završetka rukovanja.

Tip

U modernim distribucijama ova je opcija omogućena prema zadanim postavkama. Možete je provjeriti sljedećom naredbom: sysctl -a | grep net.ipv4.tcp_syncookies

Povećajte SYN red čekanja

net.ipv4.tcp_max_syn_backlog = 4096

Svrha: Maksimalni broj zahtjeva za povezivanje u redu čekanja koji čekaju potvrdu.
Zašto: Veći red čekanja omogućuje više poluotvorenih veza prije nego što kernel počne odbacivati iste.

Smanjite SYN-ACK ponovne pokušaje

net.ipv4.tcp_synack_retries = 3

Svrha: Broj ponovnih prijenosa za SYN-ACK pakete.
Zašto: Smanjenje ovog broja smanjuje vrijeme čekanja na zlonamjerne poluotvorene veze.

Omogućite ponovnu upotrebu TCP Time-Wait

net.ipv4.tcp_tw_reuse = 1

Svrha: Omogućuje ponovnu upotrebu TIME-WAIT utičnica za nove odlazne veze.
Vrijednosti:

  • 0 – Onemogućeno
  • 1 – Omogućeno

Zašto: Smanjuje iscrpljivanje utičnica pod velikim opterećenjem.

Smanjite FIN timeout

net.ipv4.tcp_fin_timeout = 15

Svrha: Vrijeme koje utičnica ostaje u FIN-WAIT-2 stanju.
Zašto: Smanjuje korištenje resursa zbog zastarjelih veza.

Omogućite filtriranje povratnog puta

net.ipv4.conf.all.rp_filter = 1

Svrha: Provjerava izvorne IP adrese prema tablici usmjeravanja.
Vrijednosti:

  • 0 – Onemogućeno
  • 1 – Strogi način
  • 2 – Labavi način

Zašto: Pomaže u ublažavanju napada lažiranja IP adresa.

Povećajte maksimalni broj otvorenih datoteka

fs.file-max = 2097152

Svrha: Maksimalni broj rukovatelja datotekama na razini sustava.
Zašto: Sprječava iscrpljivanje deskriptora datoteka tijekom velikog opterećenja povezivanja.

Korak 3: Primijenite sysctl promjene

Primijenite promjene bez ponovnog pokretanja:

sudo sysctl -p

Očekivani ishod: svaki parametar prikazan s novom vrijednošću.
Provjerite određeni parametar: sysctl net.ipv4.tcp_syncookies
Očekivani ishod: net.ipv4.tcp_syncookies = 1

Rezultat: Kernel parametri su aktivni.

Korak 4: Simulirajte SYN flood napad

Info

Važno: Izvedite ovo samo u laboratorijskom okruženju.

S drugog testnog stroja, pokrenite:

sudo hping3 -S --flood -V <YOUR_SERVER_IP> -p 80

Objašnjenje:

  • -S šalje SYN pakete
  • --flood šalje pakete što je brže moguće
  • -p 80 cilja HTTP port

Rezultat: Veliki volumen SYN paketa poslan na poslužitelj.

Korak 5: Pratite poslužitelj tijekom napada

Na ciljanom poslužitelju, pratite veze:

netstat -ant | grep SYN_RECV | wc -l

Rezultat: Prikazuje broj poluotvorenih veza.

Provjerite brojač SYN kolačića:

nstat -az | grep Syncookies

Trebali biste primijetiti povećanje brojača kao što je TcpExtSyncookiesSent. Ovo potvrđuje da se koriste SYN kolačići.

Korak 6: Usporedite ponašanje prije i nakon učvršćivanja

Ako testirate bez učvršćivanja:

  • Broj SYN_RECV brzo raste
  • Poslužitelj može postati neodgovarajući
  • Red čekanja za povezivanje se preplavljuje

Nakon učvršćivanja:

  • SYN kolačići se aktiviraju
  • Manje odbačenih veza
  • Poslužitelj ostaje odgovarajući

Instalirajte web poslužitelj na ciljanom poslužitelju:

sudo apt install nginx

Za testiranje odgovora:

curl http://localhost

Rezultat: Poslužitelj normalno odgovara čak i tijekom simuliranog napada.

Korak 7: TCP podešavanje performansi (Opcionalna napredna optimizacija)

Dodajte dodatne parametre za podešavanje u sysctl konfiguraciju. Pokrenite nano /etc/sysctl.conf i dodajte:

net.core.somaxconn = 8192

net.core.netdev_max_backlog = 5000

net.ipv4.tcp_max_tw_buckets = 2000000

Objašnjenje:

  • net.core.somaxconn – maksimalna duljina reda čekanja za aplikacije.
  • net.core.netdev_max_backlog – maksimalni broj paketa u redu na ulaznoj strani prije obrade.
  • net.ipv4.tcp_max_tw_buckets – maksimalni broj TIME-WAIT utičnica. Ova opcija je relevantna za poslužitelje s velikim opterećenjem i dovoljno RAM-a.

Ovo poboljšava performanse pod velikim prometom.

Primijenite promjene:

sudo sysctl -p

Kontrolna lista za verifikaciju

  • sysctl -p se pokreće bez grešaka
  • tcp_syncookies jednako 1
  • SyncookiesSent brojač se povećava tijekom napada
  • Poslužitelj ostaje odgovarajući
  • Nema upozorenja kernela u zapisima: dmesg | grep -i syn

Vraćanje promjena

Vratite izvornu konfiguraciju:

sudo cp /etc/sysctl.conf.backup /etc/sysctl.conf

sudo sysctl -p

Rezultat: Sustav se vraća na izvorne kernel parametre.

Opcionalno uklonite testne alate:

sudo apt remove hping3 -y

Rješavanje problema

Syncookies se ne povećavaju

Provjerite: sysctl net.ipv4.tcp_syncookies
Ako je vrijednost 0, ponovno primijenite konfiguraciju.

Poslužitelj i dalje odbacuje veze

Povećajte red čekanja: net.ipv4.tcp_max_syn_backlog = 8192
Zatim primijenite promjene:

sudo sysctl -p

Zaključak

Učvrstili ste Linux kernel koristeći sysctl.conf, omogućili mehanizme zaštite od SYN flood napada, optimizirali ponašanje TCP stoga i provjerili zaštite kroz simulaciju kontroliranog napada. Ove promjene poboljšavaju otpornost protiv SYN flood napada i povećavaju ukupnu stabilnost mreže.

Sljedeći koraci

  • Kombinirajte s ograničavanjem brzine vatrozida (iptables ili nftables)
  • Implementirajte ograničenja praćenja veza
  • Implementirajte sustave za otkrivanje upada (IDS)
  • Pratite metrike koristeći Prometheus i Grafana

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA