Utrjevanje jedra Linux prek sysctl.conf. Zaščita pred SYN poplavnimi napadi in nastavitev TCP. | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Utrjevanje jedra Linux prek sysctl.conf. Zaščita pred SYN poplavnimi napadi in nastavitev TCP.

Uvod

V tem vodiču boste utrdili jedro Linuxa z uporabo sysctl.conf, zaščitili svoj strežnik pred SYN poplavnimi napadi in optimizirali vedenje TCP sklada. Nastavitev na ravni jedra izboljša odpornost proti napadom zavrnitve storitve (DoS) na osnovi omrežja in izboljša splošno zmogljivost TCP. Prav tako boste simulirali SYN poplavni napad v nadzorovanem okolju in preverili, ali vaši zaščitni mehanizmi delujejo pravilno.

Predpogoji

Ciljna publika: Srednje izkušeni sistemski administratorji
Ocenjeni čas: 45–60 minut

Sistemske zahteve

  • Operacijski sistem: Ubuntu 24.04 LTS (preizkušeno); združljivo z Debian 12/13 in drugimi sodobnimi distribucijami Linuxa
  • Različica jedra: 5.x ali novejša
  • Najmanj 1 GB RAM-a
  • Root ali sudo privilegiji
  • Omrežni dostop med testnimi stroji

Zahtevana orodja

Namestite naslednje pripomočke:

sudo apt update

sudo apt install -y hping3 net-tools procps iproute2

Preverite namestitev: hping3 --version
Pričakovani izhod: informacije o različici, ki potrjujejo uspešno namestitev.

Tip

Simulacijo SYN poplave izvajajte le v nadzorovanem laboratorijskem okolju. Nikoli ne testirajte na sistemih, ki niso vaši ali za katere nimate dovoljenja za testiranje.

Korak 1: Varnostno kopirajte trenutno konfiguracijo sysctl

Preden naredite spremembe, ustvarite varnostno kopijo.

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

Rezultat: Ustvarjena je varnostna kopija datoteke /etc/sysctl.conf.backup.

Korak 2: Konfigurirajte parametre jedra za zaščito pred SYN poplavami

Odprite konfiguracijsko datoteko:

sudo nano /etc/sysctl.conf

Dodajte ali spremenite naslednje parametre.

Omogočite SYN piškotke

net.ipv4.tcp_syncookies = 1

Namen: Omogoča SYN piškotke, ko se SYN čakalna vrsta prepolni.
Vrednosti:

  • 0 – Onemogočeno
  • 1 – Omogočeno, ko pride do prepolnitve SYN čakalne vrste (priporočeno)
  • 2 – Vedno omogočeno (redko uporabljeno)

Zakaj: SYN piškotki preprečujejo izčrpavanje pomnilnika z izogibanjem dodeljevanju virov do zaključka rokovanja.

Tip

V sodobnih distribucijah je ta možnost privzeto omogočena. Preverite jo lahko z naslednjim ukazom: sysctl -a | grep net.ipv4.tcp_syncookies

Povečajte čakalno vrsto SYN

net.ipv4.tcp_max_syn_backlog = 4096

Namen: Največje število čakajočih zahtevkov za povezavo, ki čakajo na potrditev.
Zakaj: Večja čakalna vrsta omogoča več polodprtih povezav, preden jih jedro začne zavračati.

Zmanjšajte ponovitve SYN-ACK

net.ipv4.tcp_synack_retries = 3

Namen: Število ponovitev za SYN-ACK pakete.
Zakaj: Znižanje tega zmanjša čas, porabljen za čakanje na zlonamerne polodprte povezave.

Omogočite ponovno uporabo TCP Time-Wait

net.ipv4.tcp_tw_reuse = 1

Namen: Omogoča ponovno uporabo TIME-WAIT vtičnic za nove odhodne povezave.
Vrednosti:

  • 0 – Onemogočeno
  • 1 – Omogočeno

Zakaj: Zmanjšuje izčrpavanje vtičnic pri veliki obremenitvi.

Zmanjšajte časovno omejitev FIN

net.ipv4.tcp_fin_timeout = 15

Namen: Čas, ko vtičnica ostane v stanju FIN-WAIT-2.
Zakaj: Zmanjšuje porabo virov zaradi zastarelih povezav.

Omogočite filtriranje povratne poti

net.ipv4.conf.all.rp_filter = 1

Namen: Preverja izvorne IP naslove glede na usmerjevalno tabelo.
Vrednosti:

  • 0 – Onemogočeno
  • 1 – Strogi način
  • 2 – Ohlapni način

Zakaj: Pomaga ublažiti napade z lažnimi IP naslovi.

Povečajte največje število odprtih datotek

fs.file-max = 2097152

Namen: Največje število ročajev datotek v celotnem sistemu.
Zakaj: Preprečuje izčrpavanje deskriptorjev datotek med visoko obremenitvijo povezav.

Korak 3: Uporabite spremembe sysctl

Uporabite spremembe brez ponovnega zagona:

sudo sysctl -p

Pričakovani izhod: vsak parameter prikazan z novo vrednostjo.
Preverite določen parameter: sysctl net.ipv4.tcp_syncookies
Pričakovani izhod: net.ipv4.tcp_syncookies = 1

Rezultat: Parametri jedra so aktivni.

Korak 4: Simulirajte SYN poplavni napad

Info

Pomembno: To izvajajte le v laboratorijskem okolju.

Iz ločenega testnega stroja zaženite:

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

Pojasnilo:

  • -S pošilja SYN pakete
  • --flood pošilja pakete čim hitreje
  • -p 80 cilja na HTTP vrata

Rezultat: Velika količina SYN paketov poslana na strežnik.

Korak 5: Spremljajte strežnik med napadom

Na ciljnem strežniku spremljajte povezave:

netstat -ant | grep SYN_RECV | wc -l

Rezultat: Prikazuje število polodprtih povezav.

Preverite števec SYN piškotkov:

nstat -az | grep Syncookies

Opaziti bi morali naraščajoče števce, kot je TcpExtSyncookiesSent. To potrjuje, da se uporabljajo SYN piškotki.

Korak 6: Primerjajte vedenje pred in po utrditvi

Če testirate brez utrditve:

  • Število SYN_RECV hitro narašča
  • Strežnik lahko postane neodziven
  • Čakalna vrsta povezav se prepolni

Po utrditvi:

  • SYN piškotki se aktivirajo
  • Manj zavrnjenih povezav
  • Strežnik ostane odziven

Namestite spletni strežnik na ciljni strežnik:

sudo apt install nginx

Za testiranje odzivnosti:

curl http://localhost

Rezultat: Strežnik normalno odgovarja tudi med simuliranim napadom.

Korak 7: Nastavitev zmogljivosti TCP (neobvezna napredna optimizacija)

Dodajte dodatne parametre za nastavitev v sysctl konfiguracijo. Zaženite nano /etc/sysctl.conf in dodajte:

net.core.somaxconn = 8192

net.core.netdev_max_backlog = 5000

net.ipv4.tcp_max_tw_buckets = 2000000

Pojasnilo:

  • net.core.somaxconn – največja dolžina čakalne vrste za poslušanje za aplikacije.
  • net.core.netdev_max_backlog – največje število paketov v čakalni vrsti na vhodni strani pred obdelavo.
  • net.ipv4.tcp_max_tw_buckets – največje število TIME-WAIT vtičnic. Ta možnost je pomembna za strežnike z veliko obremenitvijo in zadostnim RAM-om.

To izboljša zmogljivost pri veliki prometni obremenitvi.

Uporabite spremembe:

sudo sysctl -p

Kontrolni seznam za preverjanje

  • sysctl -p se zažene brez napak
  • tcp_syncookies je enak 1
  • Števec SyncookiesSent se povečuje med napadom
  • Strežnik ostane odziven
  • V dnevnikih ni opozoril jedra: dmesg | grep -i syn

Vračanje sprememb

Obnovite izvirno konfiguracijo:

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

sudo sysctl -p

Rezultat: Sistem se vrne na izvirne parametre jedra.

Po želji odstranite testna orodja:

sudo apt remove hping3 -y

Odpravljanje težav

Syncookies se ne povečujejo

Preverite: sysctl net.ipv4.tcp_syncookies
Če je vrednost 0, ponovno uporabite konfiguracijo.

Strežnik še vedno zavrača povezave

Povečajte čakalno vrsto: net.ipv4.tcp_max_syn_backlog = 8192
Nato uporabite spremembe:

sudo sysctl -p

Zaključek

Utrdili ste jedro Linuxa z uporabo sysctl.conf, omogočili zaščitne mehanizme pred SYN poplavami, optimizirali vedenje TCP sklada in preverili zaščite skozi simulacijo nadzorovanega napada. Te spremembe izboljšajo odpornost proti SYN poplavnim napadom in povečajo splošno stabilnost omrežja.

Naslednji koraki

  • Kombinirajte z omejevanjem hitrosti požarnega zidu (iptables ali nftables)
  • Uvedite omejitve sledenja povezavam
  • Namestite sisteme za zaznavanje vdorov (IDS)
  • Spremljajte metrike z uporabo Prometheus in 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