Puncte:0

Permiteți numai pachetelor SYN să portul 80 care se potrivesc cu un ipset

drapel in

am un ipset numit permiteLista.

Vreau să permit fiecare conexiune la mașina mea pe fiecare port, cu excepția portului 80, care acolo vreau să permit conexiuni numai la ipset: permiteLista.

Vreau să vizez doar SYN pachete din portul 80 pentru eficiență, astfel încât:

  1. dacă tcp flag = SYN
  2. dacă portul este 80
  3. dacă se potrivește cu ipsetul numit permiteLista

Apoi permiteți conexiunea, altfel aruncați pachetul (dacă pachetul este SYN 80 și nu se potrivea cu permiteLista).

Ordinea este importantă pentru eficiență, deoarece nu vreau să filtrez sau să încetinesc o conexiune stabilită.

Încerc să scriu reguli iptables pentru el.

Nikita Kipriyanov avatar
drapel za
Ai un caz real sau doar te prostești cu speculații teoretice? Dacă aveți un caz real, arată-ne măsurătorile dvs. care arată că procesarea iptables este lentă (cu reguli normale, fără ciudatenii), în timp ce fără iptables procesarea este uluitor de rapidă. În caz contrar, întrebarea ta este în afara subiectului pe ServerFault, pentru că aici vorbim despre cazuri reale de afaceri, nu despre speculații teoretice. În acest caz, va fi închis.
Puncte:0
drapel za

O astfel de potrivire secvențială poate fi implementată folosind lanțuri personalizate:

iptables -N c1
iptables -N c2
iptables -A INPUT -p TCP --syn -j c1
iptables -A c1 -p tcp --dport 80 -j c2
iptables -A c2 -m set --match-set allowList src -j ACCEPT
iptables -A c2 -j DROP

Cu toate acestea, mă îndoiesc că vei reuși orice câștig de eficiență vizibil din aceasta. În plus, următorul admin care va fi responsabil să susțină acest lucru după ce cu siguranță te va blestema, cel puțin.

Mai bine nu încercați optimizarea prematură și combinați toate potrivirile într-o singură regulă. Sunt sigur că există câteva puncte în sistemul dvs. care ar putea fi optimizate cu un câștig mult mai vizibil.

iTaMaR avatar
drapel in
Nu folosesc portul 80 pentru `HTTP`, cei care se conectează rămân conectați și sunt deja pe conexiune `stabilită`, nu vreau să fac o `căutare` pentru acele pachete.
iTaMaR avatar
drapel in
Există vreo modalitate de a realiza acest lucru fără schimbare? va funcționa asta: `iptables -A INPUT -p tcp --syn --dport 80 -m set --match-set alowList src -j ACCEPT` `iptables -A INPUT -p tcp --dport 80 -j DROP`
Ginnungagap avatar
drapel gu
@iTaMaR, ați efectuat vreun fel de benchmarking sau de colectare de metrici pentru a măsura impactul unei reguli normale (adică „am optimizat”)? Ce fel de factor vorbim?
Nikita Kipriyanov avatar
drapel za
Acest tip de regulă evident mai bine, pentru că este mult mai ușor de înțeles. Munca omului este mult mai costisitoare decât munca la calculator. Nu sunt sigur dacă își verifică toate modulele „în ordine”, dar cred că nu se mai potrivește odată ce condiția falsă este îndeplinită. i.e. s-ar putea să verifice mai întâi portul 80, sau mai întâi syn, sau chiar să setat mai întâi, dar odată ce ceva revine „fără potrivire”, nu se va deranja să verifice pe alții. Aș spune din nou, optimizați prematur și, extrem de probabil, în locul greșit (cum este întotdeauna cazul cu optimizarea prematură).
iTaMaR avatar
drapel in
@NikitaKipriyanov ce se întâmplă dacă setul conține milioane de ip-uri.. nu te poți aștepta ca performanța să fie aceeași dacă traversarea ar începe de la potrivirea setului și ar cădea asupra celorlalți
Nikita Kipriyanov avatar
drapel za
Setat în firewall Linux poate conține cel mult 65536 de înregistrări.Performanța sa este independentă de cât de multe articole sunt în el, deoarece este fie un bloc de adrese, fie un hash, adică are întotdeauna complexitatea algoritmică O(1).
iTaMaR avatar
drapel in
@NikitaKipriyanov este totul despre eficiență, fie că este „Manwork” sau orice altceva.. acum este o chestiune de implementare iptables, ordinea ar putea aduce îmbunătățiri semnificative în condiții, așa cum vedem în fiecare limbaj de programare, spunând că nu este important, este prea arogant.. ce dacă există miliarde de ip este în set și `regula` ar putea fi respinsă mai devreme într-o condiție mult mai simplă??
iTaMaR avatar
drapel in
@NikitaKipriyanov `set` este un `modul` și modulele sunt deschise și le-ar putea schimba complexitatea, ordinea ar putea întotdeauna optimiza `regula`!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.