Repository 32bit  Forum
Repository 64bit  Wiki

Parametro del kernel ip_local_port_range

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Parametro del kernel ip_local_port_range

Messaggioda miklos » dom set 23, 2012 9:43

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'
Codice: Seleziona tutto
net.ipv4.ip_local_port_range = 32768 61000
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
ho visto cose che voi astemi non potete immaginare
miklos
Linux 3.x
Linux 3.x
 
Messaggi: 1282
Iscritto il: lun lug 16, 2007 16:39
Località: Roma
Slackware: 14.1 64bit
Kernel: 3.16.3
Desktop: openbox 3.5.2

Re: Parametro del kernel ip_local_port_range

Messaggioda ZeroUno » dom set 23, 2012 11:36

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.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4420
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: Parametro del kernel ip_local_port_range

Messaggioda miklos » dom set 23, 2012 15:05

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
Codice: Seleziona tutto
ab -n 1000000 -c 1000 http:/host
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.
ho visto cose che voi astemi non potete immaginare
miklos
Linux 3.x
Linux 3.x
 
Messaggi: 1282
Iscritto il: lun lug 16, 2007 16:39
Località: Roma
Slackware: 14.1 64bit
Kernel: 3.16.3
Desktop: openbox 3.5.2

Re: Parametro del kernel ip_local_port_range

Messaggioda targzeta » dom set 23, 2012 16:21

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6200
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: Parametro del kernel ip_local_port_range

Messaggioda ZeroUno » dom set 23, 2012 17:08

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..
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4420
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: Parametro del kernel ip_local_port_range

Messaggioda miklos » dom set 23, 2012 17:19

spina ha scritto:Oppure non sto capendo una mazza?
questa è la domanda che mi sono posto quando ho deciso di aprire questo post :D
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
ho visto cose che voi astemi non potete immaginare
miklos
Linux 3.x
Linux 3.x
 
Messaggi: 1282
Iscritto il: lun lug 16, 2007 16:39
Località: Roma
Slackware: 14.1 64bit
Kernel: 3.16.3
Desktop: openbox 3.5.2


Torna a Gnu/Linux in genere

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite