Pagina 1 di 1
Parametro del kernel ip_local_port_range
Inviato: dom 23 set 2012, 10:43
da ilmich
Ciao a tutti, studiando un po' lo stack di rete di linux ho trovato questo parametro che si puo' impostare e che, da quello che ho capito io definisce il range di porte all'interno del quale il kernel genera le connessioni client.
il parametro, cosi' come appare sulla mia slackware è questo qua'
quindi da quello che ho capito io ogni qualvolta mi collego ad un server web, per esempio, il
kernel del server web crea una connessione in questo modo
Codice: Seleziona tutto
ip_client:32768 -> ip_server:80
ip_client:32769 -> ip_server:80
e cosi' via fino al max
ip_client:61000 -> ip_server:80
ora oltre alla conferma che ho capito bene, secondo voi si puo' utilizzare come sistema 'naturale' di protezione contro attacchi orientati alla saturazione delle risorse.
dico questo perchè una volta esaurito questo range il kernel si rifiuta di aprire nuove connessioni.
ciau
Re: Parametro del kernel ip_local_port_range
Inviato: dom 23 set 2012, 12:36
da ZeroUno
non ho capito che tipi di protezione intendi.
Ti ricordo, come hai capito bene, che tale range vale per le connessioni in uscita. Se ti attaccano dall'esterno su una porta che hai aperta possono stabilire un milione di connessioni.
Se poi pensi di fermare un attacco in uscita riducendo il numero di connessiono disponibili, é anche vero che una volta saturate quelle neanche i processi 'leciti' possono più farne.
É come se volessi impedire ad un processo di consumare risorse mettendoci un processore più piccolo.
Re: Parametro del kernel ip_local_port_range
Inviato: dom 23 set 2012, 16:05
da ilmich
ZeroUno ha scritto: Se ti attaccano dall'esterno su una porta che hai aperta possono stabilire un milione di connessioni.
non con lo stesso ip pero'.. attualmente con un semplice
posso creare esattamente poco piu' di 27000 connessioni dallo stesso ip, prima che il kernel mi butti fuori il che comporta con un rapido calcolo che nn ci vogliono poi cosi' tanti picci per mandare in crash un piccolo server. e te lo posso assicurare visto che ho scoperto questo parametro con dei benchmark fatti su un server web che ho sviluppato in grado di supportare, su macchine modeste, 2000 richieste al secondo.
ZeroUno ha scritto:Se poi pensi di fermare un attacco in uscita riducendo il numero di connessiono disponibili,
non capisco che intendi come attacco in uscita.
comunque la cosa è nata studiando il famoso problema chiamato 10K, ovvero la possibilità di servire 10000 connessioni contemporaneamente senza fare una piega. una delle sue varianti è chiamata 500k che gioca proprio su questo parametro per aumentare il numero di connessioni che il kernel accetta (in realtà è utile in un contesto dove esiste come minimo un bilanciatore di carico)
siccome pero' contestualmente sto studiando sistemi di sicurezza mi chiedevo se riducendo il numero di connessioni accettabili per ip riduco allo stesso modo il rischio che mi bombardino di richieste...
tutto questo fermo restando che da attacchi ddos è difficile ripararsi e comunque non con una tecnica soltanto.
quello che chiedo è sostanzialmente sapere se ho capito bene il significato del parametro e quanto possa avere senso usarlo per questi scopi.. semmai qualcun'altro l'avesse già fatto.
Re: Parametro del kernel ip_local_port_range
Inviato: dom 23 set 2012, 17:21
da targzeta
Io però non vedo la relazione che ci possa essere tra questo parametro e quello che vuoi fare. Una cosa è la limitazione delle richieste in uscita, un altro è impedire che ti vengano fatte richieste in entrata.
Da quello che ho capito se io "imposto a 2" il parametro in oggetto vuol dire che non posso aprire più di due socket in uscita. Che c'entrano le socket in entrata?
Al massimo potrei giocare con questo parametro per aumentare le porte a disposizione in modo da portare attacchi di tipo ddos dal mio stesso PC.
Oppure non sto capendo una mazza?
Emanuele
Re: Parametro del kernel ip_local_port_range
Inviato: dom 23 set 2012, 18:08
da ZeroUno
Confermo.
Premetto che non sono un esperto di sicurezza.
E' ovvio che dall'esterno non possono farti milioni di richieste dallo stesso ip perchè anche gli attaccanti hanno quel parametro settato.
Quel parametro lavora a livello client. Ciò significa che se io setto quel parametro su un server con un range di 100 porte o lo setto con un range di 1000000 porte, comunque lo stesso numero di connessioni in ingresso posso accettare (dove sia scritto quante non lo so).
Quel parametro lo imposti sul tuo di pc se prevedi di aprire tante connessioni verso uno o più server.
Per bloccare il numero di connessioni per ip si usa iptables.
Ho da poco ricevuto un attacco DDoS che mirava a saturare le risorse della macchina borbandandomi di richieste dns. La soluzione è quella di limitare il numero di richieste simultanee per ip e connessioni per minuto..
Re: Parametro del kernel ip_local_port_range
Inviato: dom 23 set 2012, 18:19
da ilmich
spina ha scritto:Oppure non sto capendo una mazza?
questa è la domanda che mi sono posto quando ho deciso di aprire questo post

leggendo poi le vostre risposte sono andato a leggermi come funziona l'handshake tcp classico e ho visto che nel pacchetto SYN(il primo) di ogni connessione la porta locale viene già inviata dal client quindi questo parametro influenza il client e non il server come erroneamente invece viene fatto capire da alcuni maledetti tutorial
ora mi tornano anche un po' di cose e soprattutto che ho ancora tanto da imparare hehehehe
grazie a tutti