Come controllare la rete dalla shell Linux

Monitoring dal Terminale

Monitoring dal Terminale

PREMESSA

Purtroppo rispetto a molte altre nazioni nel mondo e, nella stessa Europa, ci troviamo ad avere ancora delle connessioni ad Internet che, nella maggior parte del paese, sono a dir poco scandalose.

In precedenti articoli abbiamo provato a mettere un po’ di pepe al nostro pc lavorando sulla gestione della RAM oppure sulla modifica dei parametri del kernel tramite Sysctl, oppure accellerando la risoluzione degli indirizzi DNS tramite la creazione di un meccanismo di Cache usando, ad esempio, PDNSD.

Oggi vedremo come colmare quella parte di “monitoring” sulla velocita’ della nostra rete, presentando questo elenco di utilissimi tool, da riga di comando, che vi permetteranno di avere il polso della situazione in tempo reale. Troverete sicuramente quello che fa al caso vostro.

P.S. : I seguenti programmi sono tutti disponibili nei repository principali di Ubuntu, quindi per installarli bastera’ scrivere :

apt-get install nome del programma

NETWORK TOOL

IPTState : un’interfaccia simile a Top collegata alla vostra tabella connection-tracking di netfilter.
Utilizzando iptstate si può verificare in modo interattivo il traffico che attraversa il tuo firewall netfilter/iptables , ordinato per vari criteri, è possibile limitare la visualizzazione con vari criteri, ed e’ possibile cancellare gli stati dalla tabella.

Pktstat : visualizza un elenco in tempo reale delle connessioni attive viste su una interfaccia di rete, e quanta banda viene utilizzata. Parzialmente decodifica i protocolli HTTP e FTP per mostrare il nome del file che viene trasferito. Anche i nomi delle applicazioni X11 sono mostrate.

NetHogs : diversamente da altri, invece che “spacchettare” il traffico verso il “basso” per protocollo o per sottorete, come la maggior parte degli strumenti fanno, mostra la banda utilizzata dai vari programmi. NetHogs non si basa su un modulo del kernel speciale da caricare. Se c’è ad un tratto molto traffico di rete, si può lanciare subito NetHogs e vedere immediatamente quale PID è la causa. Questo rende facile individuare i programmi che sono impazziti e stanno improvvisamente prendendo tutta la vostra banda di rete.

IPTraf : un programma (storico) che raccoglie statistiche di rete per Linux. Anch’esso raccoglie una serie di dati come i pacchetti delle connessioni TCP e conteggio dei byte, le statistiche sulle interfaccie e gli indicatori di attività, dati TCP/UDP sul traffico, e traffico per LAN.

Bmon : bmon è un monitor di banda, destinato per il debug ed il monitoraggio real-time, in grado di recuperare le statistiche da vari tipi d’ingresso. Fornisce metodi di uscita vari tra cui un’interfaccia basata su librerie curses. L’insieme dei moduli per l’input sono specifici per ogni tipologia di architettura e prevedono un nucleo comune con l’elenco delle interfacce e dei loro contatori.

Il nucleo memorizza questi contatori e fornisce una stima della velocità ed una storia degli ultimi 60 secondi, minuti, ore e giorni ai moduli di uscita che li mostrano in base alla configurazione, durante l’esecuzione, è possibile selezionare l’interfaccia da controllare e premere il tasto “g” per vedere un grafico attivo come questo:

Speedometer : si tratta di un interessante progetto che permette di visualizzare e misurare la velocità dei dati attraverso una rete o dei dati che vengono memorizzati in un file,

Come potrete vedere, anche se si tratta di un tool basato sulla riga di comando, ha dei bei colori vivaci e altre cose che lo rendono uno strumento piuttosto user-friendly, ha la capacità di monitorare la velocità in tempo reale di download/upload delle connessioni di rete e può essere utilizzato anche per misurare la velocità di scrittura in un file system.

Nload : nload è un’applicazione da console che controlla il traffico di rete e l’utilizzo della larghezza di banda in tempo reale. Esso visualizza il traffico in entrata ed in uscita utilizzando due grafici e fornisce informazioni aggiuntive come quantità totale di dati trasferiti e min/max di utilizzo della rete.

 

La cosa migliore e’ sicuramente quella di testarli tutti, magari su macchine virtuali, per poter meglio decidere quali fanno esattamente al caso vostro.

 

#ControllalaRetedallaShell

Piu’ veloci tramite la gestione della RAM

RAM vs SWAPRAM  vs  SWAP 

La maggior parte dei moderni sistemi operativi sono in grado di utilizzare una partizione, nota come swap o file di paging, per estendere la quantità di RAM disponibile scrivendo alcuni dati sul disco rigido. Con il termine swap si intende, l’estensione della capacità della memoria volatile complessiva del computer, oltre il limite imposto dalla quantità di RAM installata, attraverso l’utilizzo di uno spazio sul disco fisso.

Se il vostro computer dispone di 2 GB di RAM o più, difficilmente, nella maggior parte dei casi, avrete bisogno di utilizzare l’area di swap. La RAM infatti è molto più veloce di un disco rigido ed è conveniente lasciare che la RAM gestisca la maggior parte dei processi. La tendenza a ricorrere all’area di swap è chiamata swappiness. Quest’ultima accetta valori numerici interi da 0 a 100: assegnandogli 0 linux utilizzerà lo swap solo quando la ram sarà finita, per evitare che il sistema si blocchi; assegnandogli 100 invece utilizzerà praticamente sempre lo swap. In genere, su Ubuntu (e OS derivati), la priorità è a 60: questo significa che lo swap verrà usato quando la ram sarà piena il 40%. Se avete abbastanza ram, potete abbassare la priorità dello swap in modo che venga usato solo quando la ram occupata è al 90%, ma anche all’ 80% se preferite. Per ridurre lo swappiness in modo tale da forzare l’utilizzo dell RAM del vostro sistema possiamo digitare da terminale il seguente comando:

sudo sysctl -w vm.swappiness=60

Ora quello che possiamo fare per lavorare sulla gestione della RAM da parte del kernel e’ di “abbassare” questo valore, quindi fate coma al solito una copia di backup del file, prima di effettuare le modifiche, e cerchiamo di fare alcuni test per vedere quale valore meglio si adatta al vostro PC ed alla vostra RAM.

Le modifiche effettuate da questo comando però resteranno attive solo per la sessione in corso e non al successivo riavvio del sistema. Se invece, vogliamo mantenere le modifiche in maniera permanente bastera’ editare il file sysctl.conf:

sudo gedit /etc/sysctl.conf

Inserire il valore vm.swappiness=10 al termine del file e salvarlo;a questo punto potete tenere sotto controllo le modifiche effettuate ed i relativi miglioramenti tramite l’utilizzo di un comodo tool qual’e’ htop .

Ma, nel caso in cui  si doveste necessariamente dover creare un file per aumentare lo swap allora eseguite questa procedura:

dd if=/dev/zero of=/media/swapfile bs=1M count=1024
mkswap /media/swapfile
swapon /media/swapfile
cat /proc/swaps
nano /etc/fstab
/media/swapfile swap swap defaults 0 0

 

Vedi anche (proteggersi da scansioni ed intrusi)

Proteggersi da scansioni ed intrusioni

SysctlSysctl

Molte volte si pensa che per poter difendere il nostro amato PC da occhi indiscreti ci voglia chissa’ quale software sofisticato , oppure una decennale esperienza nella scrittura di regole con iptables ; certo tutto questo aiuta comunque, ma e’ anche vero che nella maggior parte dei casi il nostro PC non e’ poi cosi’ invitante e non contiene nessun vero segreto che valga la pena, per un hacker ( o x meglio dire chracker ) di perderci del tempo. Quindi molte volte alziamo fortificazioni esagerate, oltre il nostro vero sapere e controllo, senza avere un buon motivo. Si potrebbe invece iniziare a prendere dimestichezza con tutta quella serie di tools che Linux fornisce di base per cominciare a restringere le possibilita’ di accesso agli estranei ed ai curiosi.

Oggi inizieremo da sysctl ossia ” la gestione dei parametri del kernel  ”

Il comando sysctl viene usato per la personalizzazione dei parametri in run-time del kernel che si trovano in /proc/sys.
Per avere uno sguardo dell’output del comando basterà digitare da root:

sysctl -a

Le categorie

                 debug
                 dev
                 fs
                 kernel
                 net
                 vm

Significato
parametri per il debug.
parametri dei dispositivi.
parametri dei filesystem.
parametri generici del kernel.
parametri della rete.
parametri della memoria virtuale.

Praticamente possiamo modificare molti valori riguardanti il sistema,la rete,ecc.

Possiamo cambiare valore ai vari parametri in base alle nostre esigenze, facciamo un esempio.
Vogliamo cambiare valore all’ip forward:

sysctl -a | grep ip_forward

@lorenzo:/etc# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0

Come vediamo il valore è a 0 e noi lo vogliamo mettere a 1:

sysctl -w net.ipv4.ip_forward=”1″

Come possiamo vedere ha preso il valore 1:

@lorenzo:/etc# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0

Ovviamente questa modifica è temporanea infatti dopo un riavvio il valore torna a 0, ma possiamo renderla definitiva andato a editare il file /etc/sysctl.conf (facendo sempre prima un bel backup) mettendo 1 alla voce net.ipv4.ip_forward.

Una volta scritta la regola nel file ed usciti dalla modalita’ scrittura dovremo far rileggere la configurazione dei parametri di questo file tramite il seguente comando:

sysctl -p

Vediamo ora alcuni parametri e scopriamo a cosa servono :

net.ipv4.tcp_syncookies:  Quando abilitato, protegge dagli attacchi SYN FLOOD

net.ipv4.icmp_echo_ignore_broadcasts: Quando abilitato, ignora tutte le richieste ICMP ECHO e TIMESTAMP dirette ad indirizzi broadcast e multi cast proteggendo il server da attacchi SMURF.

net.ipv4.icmp_ignore_bogus_error_responses: Quando abilitato, protegge da errori ICMP maligni

net.ipv4.tcp_keepalive_time: Definisce ogni quanti secondi inviare al client con una connessione keepalive aperta un pacchetto in modo tale da mantenerla aperta.

L’abilitazione dei seguenti paramentri permette di inoltrare il traffico di rete da un’interfaccia ad un’altra agendo come un router:

net.ipv4.ip_forward
net.ipv4.conf.all.send_redirects
net.ipv4.conf.default.send_redirects

net.ipv4.tcp_max_syn_backlog=512   Quando la coda dei segmenti SYN provenienti da un certo host supera il numero stabilito in questo parametro il kernel invece di tenere i dati in arrivo nella coda dei pacchetti SYN in attesa di risposta, invierà un SYN+ACK di risposta.
Si svuota cosi la coda SYN, evitando che diventi troppo grande,

net.ipv4.icmp_echo_ignore_broadcasts = 1  Il kernel ignorerà i ping destinati all’indirizzo di broadcast della rete. Questo può evitare diversi tipi di attacchi DOS.

net.ipv4.ip_conntrack_max=15000  Viene impostato il numero massimo di connessioni che il sistema può gestire. E’ bene dimensionare tale numero in base alle risorse del sistema, per evitare in ogni momento il rischio che la RAM si esaurisca. *** ***Prevenzione attacchi DOS.

net.ipv4.ipfrag_high_tresh=131072

net.ipv4.ipfrag_low_tresh=102400

Queste due opzioni indicano la quantità di RAM massima e minima che deve essere usata nel momento in cui i segmenti TCP vengono riassemblati, per non esaurire la RAM.  ***Prevenzione attacchi DOS.

net.ipv4.ipfrag_time=20 Quest’opzione indica in secondi il tempo che i segmenti TCP devono essere tenuti in memoria

net.ipv4.conf.all.rp_filter=1 Quest’opzione è utile quando un pacchetto arriva in ingresso su un’interfaccia di rete diversa da quella che ci si aspetterebbe secondo le tabelle di routing.  ***Protezione contro attacchi di Spoofing

net.ipv4.tcp_mem = 12288, 16384, 24576
Queste impostazioni istruiscono lo stack TCP su come compostarsi nei riguardi dell’uso della memoria. Indicano al kernel qual’e’ la soglia al di sopra della quale debba iniziare un uso più attento della memoria. Il primo attributo indica il valore per il quale il kernel non si deve preoccupare dell’utilizzo della memoria. Il secondo attributo invece indica la valore per il quale il kernel deve iniziare a forzare la diminuzione dell’uso della memoria. Questo stato si chiama memory pressure mode.
L’ultimo valore indica il valore per il quale il kernel non può piu assegnare pagine di memoria finchè non torna sotto la soglia.

Per l’architettura x86 ad esempio le pagine di memoria sono grandi 4096 byte.
E’ bene dimensionare la configurazione di questa variabile in base alla RAM disponibile sulla propria macchina, per evitare l’esaurimento delle risorse.

Nel prossimo articolo vedremo altri tool ed altri sistemi di protezione integrati , bye !!