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.
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.
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
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 80cilja 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 -pse pokreće bez grešakatcp_syncookiesjednako 1SyncookiesSentbrojač 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