Semplificate i vostri Firewall

Ipset facilita il Firewall

Ipset facilita il Firewall

Facilitare la gestione del Firewall usando IPSET

Premessa
iptables, che fa parte del più ampio framework netfilter, è notoriamente il tool in user-space destinato alla definizione delle regole di firewall del kernel Linux.

Ipset è una estensione per iptables che permette la creazione di regole firewall applicabili contemporaneamente ad interi insiemi di indirizzi. A differenza di quanto avviene nelle normali catene iptables, che sono memorizzate e traversate linearmente, i sets sono memorizzati in strutture dati indicizzate, caratteristica che ne rende la consultazione molto efficiente, anche in presenza di sets voluminosi, oltre che in situazioni dove è facile immaginarne l’utilità, come il blocco di lunghe liste di “bad” hosts senza doversi preoccupare dell’eccessivo impiego di risorse di sistema o della congestione di quelle di rete, ipset offre anche un nuovo approccio a determinati aspetti inerenti la progettazione di un firewall, semplificandone la configurazione.

Ipset e’ composto da due parti, un modulo kernel e, uno strumento di amministrazione, alcune distribuzioni includono anche dei wrapper di servizio per caricare configurazioni ipset al boot, come l’ipset-service di Fedora.

Prima di proseguire è doveroso spendere un po’ di tempo a rinfrescare alcuni concetti fondamentali di iptables.

In sintesi, la configuratione di un firewall iptables consiste di un set di “chains” built-in (raggruppate in quattro “tables”) che contengono ciascuna una lista di regole o “rules”.

Per ciascun pacchetto, in ciascuna fase del suo trattamento, il kernel consulta la chain appropriata per determinarne il destino.
Le chains vengono consultate in rigoroso ordine, basato sulla direzione del pacchetto (remoto->locale, remoto->remoto oppure locale->remoto) e la sua fase corrente di trattamento o processing (prima o dopo il “routing”).

Il pacchetto viene confrontato con ciascuna delle regole della chain, nell’ ordine, fino a che non viene trovata una corrispondenza. Una volta che ciò avviene, viene intrapresa la azione specificata nel target della regola.
Se viene invece raggiunta la fine della chain senza trovare una corrispondenza, viene intrapresa la azione target di default per la catena, o policy.

Una chain non è altro che una lista ordinata di regole, ed una regola non è altro che una combinazione corrispondenza/target.
Un semplice esempio di corrispondenza è “TCP destination port 25″.
Un semplice esempio di target può essere “scarta il pacchetto” (DROP).
I targets possono anche redirigere ad altre chains definite dall’utente, cosa che fornisce un meccanismo per raggruppare e suddividere le regole seguendo una logica.
Ciascun comando iptables destinato a definire una regola, corto o lungo che sia, è composto di tre parti fondamentali che specificano la table/chain, la corrispondenza (match) ed il target

Per creare una completa configurazione firewall, occorre di fatto mandare in esecuzione una serie di comandi iptables, in uno specifico ordine.

ipset
ipset è una “match extension”, cioè una estensione basata sulla definizione di corrispondenze, per iptables.
Per poterla usare è prima necessario creare e popolare dei “sets” univocamente chiamati utilizzando il tool a linea di comando ipset, e successivamente fare riferimento a tali sets in una o più regole iptables.

Un set può essere semplicemente una lista di indirizzi archiviata per un efficiente ritrovamento.
Prendiamo come riferimento i seguenti normali comandi iptables destinati a bloccare il traffico in ingresso proveniente da 201.121.12.1 e 202.121.12.2:

# iptables -A INPUT -s 201.121.12.1 -j DROP
# iptables -A INPUT -s 202.121.12.2 -j DROP

La sintassi che specifica la corrispondenza (-s 201.121.12.1) significa “i pacchetti il cui indirizzo di origine è 201.121.12.1″. Per bloccare sia 201.121.12.1 che 202.121.12.2, devono venire definite due distinte regole iptables con due distinte specificazioni di corrispondenza (una per 201.121.12.1 ed una per 202.121.12.2).

In alternativa, i seguenti comandi ipset/iptables servono ad ottenere lo stesso risultato:

# ipset -N myset iphash
# ipset -A myset 201.121.12.1
# ipset -A myset 202.121.12.2
# iptables -A INPUT -m set --set myset src -j DROP

I comandi ipset appena visti creano un nuovo set (myset, del tipo iphash) con due indirizzi (201.121.12.1 e 202.121.12.2).
Il successivo comando iptables fa quindi riferimento al set specificando la corrispondenza con -m set –set myset src, che significa “i pacchetti il cui source header è compreso nel set di nome myset”.
Il flag src significa che la corrispondenza deve avvenire su “source”. Analogamente il flag dst avrebbe spostato la corrispondenza su “destination”, mentre il flag src,dst avrebbe riguardato sia source che destination.

Nella seconda versione è richiesto un solo comando iptables, indipententemente da quanti indirizzi IP siano presenti nel set.
Anche se fossero migliaia, sarebbe necessaria sempre una singola regola iptables, mentre l’approccio tradizionale, senza il vantaggio offerto da ipset, richiederebbe migliaia di regole.

Tipi di set
Ciascun set è di uno specifico tipo, che definisce che genere di valore possa esservi memorizzato (indirizzi IP, networks, porte ecc.) così come debba essere ricercata la corrispondenza (ovvero, quale parte del pacchetto debba essere controllata e come debba essere confrontata coi valori presenti nel set).
Oltre ai tipi più comuni, che controllano gli indirizzi IP, ne sono disponibili addizionali che si riferiscono alla porta, sia all’indirizzo IP che alla porta contemporaneamente, oppure contemporaneamente al MAC address e all’indirizzo IP, ecc.

Ciascun tipo di set ha le proprie regole per tipo, range e distribuzione dei valori che può contenere.
Differenti tipi di set usano anche differenti tipi di indici e risultano ottimizzati per differenti scenari. La scelta del migliore o più efficiente tipo di set dipende quindi dalla situazione.

I tipi più flessibili di set sono iphash, che archivia liste di indirizzi IP arbitrari, e nethash, che archivia liste di networks eterogenee (IP/mask) di varie dimensioni. Si faccia comunque riferimento all man page di ipset per un elenco completo ed una descrizione di tutti i tipi di set.

È anche disponibile il tipo speciale setlist, che consente di raggruppare insieme differenti sets in un set unico.
È vantaggioso se si desidera, ad esempio,avere un singolo set che contenga sia singoli indirizzi IP che networks.

Faccio ora un esempio per capire meglio la potenza di ipset:

Limitare l’accesso restringendolo solo a certi hosts pubblici da parte di certi PC della rete locale
Supponiamo che nell’ufficio di cui gestite la rete passino spesso stagisti e che il megadirettore sia molto infastidito dall’idea che questi impiegati, Pippo, Pluto e Paperino possano passare il tempo a trastullarsi con Internet invece di lavorare e vi chieda di limitare l’accesso da parte dei loro PCs a uno specifico set di siti cui è necessario collegarsi solo per lavoro.
Per limitare i tre PC (192.168.0.5 è quello di Pippo, 192.168.0.6 quello di Pluto e 192.168.0.7 quello di Paperino) ad accedere solamente a corriere.it, repubblica.it e inps.it, si possono utilizzare i seguenti comandi:

# ipset -N limited_hosts iphash
# ipset -A limited_hosts 192.168.0.5
# ipset -A limited_hosts 192.168.0.6
# ipset -A limited_hosts 192.168.0.7
# ipset -N allowed_sites iphash
# ipset -A allowed_sites corriere.it
# ipset -A allowed_sites repubblica.it
# ipset -A allowed_sites inps.it
# iptables -I FORWARD \
-m set --set limited_hosts src \
-m set ! --set allowed_sites dst \
-j DROP

Questo esempio effettua un confronto con due sets in una singola regola. Se il l’indirizzo sorgente è compreso in limited_hosts e la destinazione non è compresa in allowed_sites, il pacchetto viene semplicemente scartato (a limited_hosts è permesso comunicare solamente con allowed_sites).

Si noti che dato che questa regola si trova nella chain FORWARD, non riguarda le comunicazioni da e verso il firewall stesso nè il traffico interno.

Cosi’ come per iptables, ipset vi permette di caricare le regole da un file ed effettuare l’output in un formato adatto al caricamento, nel seguente modo :

# ipset save > /path/to/ipset.save
# ipset restore < /path/to/ipset.save

Ipset vi permettera’ di mantenere la configurazione del vostro firewall piu’ corta, leggibile e molto piu’ facile da mantenere. Se vi servono ulteriori informazioni potete visitare il sito del progetto http://ipset.netfilter.org

 

#IpsetfacilitailvostroFirewall

Proteggere i Server da attacchi SlowHTTP/Slowloris

SlowHTTP difendersi da attacchi DDOS

SlowHTTP difendersi da attacchi DDOS

Gli attacchi del tipo SlowHTTP/Slowloris sono tra i più fastidiosi da ricevere in quanto il server di per sè non riporta nessuna anomalia se non un elevato numero di processi attivo, ma senza carico effettivo sulla macchina, questo perchè l’attacco apre quante più connessioni possibili al webserver e le lascia aperte inviando saltuariamente qualche header per mantenere aperta la connessione saturando di fatto il numero massimo di connessioni che il server può gestire e rendendolo irraggiungibile.

N.B.: con il termine attacco Slowloris s’intende un tipo di attacco chiamato Distributed Denial of Service (DDoS) che, in questo caso, sfrutta lo script Slowloris, scritto da Robert Hansen, grazie a cui vengono create una serie di connessioni web con lo scopo di inviare una enorme quantità di dati al server vittima in modo da renderlo inutilizzabile per gli utenti.

Un’ attacco con tale script permette tra l’altro ad una singola macchina attaccante di occupare le risorse di un server con un’ampiezza di banda minima e limitati effetti collaterali a servizi e porte non coinvolte.

Slowloris prova a mantenere le connessioni aperte ad un server web obiettivo e trattenerle aperte il più a lungo possibile. Fa questo, aprendo le connessioni al server web obiettivo e inviandogli richieste parziali. Periodicamente, invierà le successive intestazioni HTTP, aggiungendo ma mai completando la richiesta. I server attaccati terranno così le connessioni aperte, riempiendo il loro numero di connessioni disponibili, infine negando ulteriori tentativi di connessione dai client. Viene spesso usato anche per effettuare verifiche sulla stabilità di server, che forniscono servizi sotto stress.

Per proteggersi da questo tipo di attacchi si ricorre a degli escamotage, uno dei quali è limitare il numero di connessioni massime per IP in modo da evitare che questo possa intasare il server, per proteggere un server con directadmin, come pannello di gestione, e apache da questo tipo di attacchi basta semplicemente lanciare i seguenti comandi da root

cd /root
wget ftp://ftp.monshouwer.eu/pub/linux/mod_antiloris/installoris

chmod 755 installoris
./installoris

come segnalato sul sito di DirectAdmin

questi comandi non faranno altro che scaricare e installare il modulo mod_antiloris per apache (httpd), installarlo e riavviarlo.

 

#DifendersidaAttacchiSlowHTTP

 

Una distro perfetta

Puppy Linux 6.0 Tahrpup

Puppy Linux 6.0 Tahrpup

Forse ai piu’ il nome non dira’ molto e forse non rende giutizia a questa versione di Linux “Puppy Linux” ,
ma questa volta il team di sviluppatori hanno fatto un lavoro a dir poco eccellente, infatti posso affermare che Linux Puppy 6.0 e’ una delle distribuzioni piu’ veloci che io abbia mai provato.

 

E’ anche una tra le piu’ usabili e pratiche oggi in circolazione. Veramente perfetta sotto ogni aspetto.

Dopo ben 11 anni di sviluppo la distro si e’ molto evoluta e, sempre piu’ in un ambiente ultra veloce, divertente,
pratico e molto semplice da usare. Quest’ultima versione, nome in codice Tahrpup, viene distrbuita in versione Live oppure come immagine ISO. Il progetto offre il download di due versioni, 199Mb-PAE e non PAE.
La prima e’ per i PC che hanno piu’ di 4 GB di Ram, l’altra per le macchine con minore potenza.

Come gestore delle finestre la distro usa JWM, che offre un accesso rapido a tutte le applicazioni. Nonostante le sue piccole dimensioni, la distro e’ piena di applicazioni.
Giudizio
Produttore : Puppy Linux Team
Web Site   : http://www.puppylinux.org
Licenza     : GPL/LGPL

Caratteristiche    10
Prestazioni          10
Facilita’ d’uso      10
Documentazione 10

>> insomma trovare una distro con un livello pari a questa e’ una cosa quasi rara, davvero un’ottima
scelta per tutti.

#PuppyLinux6unasuperdistro

Proteggiti dagli attacchi brute force con APF BFD e DDOS Deflate

APF & BFD difenditi dai Brute Force

APF & BFD difenditi dai Brute Force

Usare password lunghe e complesse spesso non è sufficiente a proteggere il proprio server da eventuali intrusioni, proprio per questo oggi spieghiamo come proteggerli da attacchi di tipo brute force utilizzando due semplici software che sfruttano il firewall iptables.

Questi due software vengono distribuiti gratuitamente dal sito http://www.rfxn.com/ . Vediamo quindi nel dettaglio cosa fanno e come configurarli.


APF

Partiamo da APF (advanced policy firewall), questo software è una sorta di configuratore per iptables, che ci permette di configurare in modo semplice e rapido le regole base di iptables come ad esempio le porte da aprire in base ai servizi che utilizziamo, il tutto a partire da un semplice file di configurazione molto dettagliato e con ogni opzione ben commentata.

INSTALLAZIONE
Per installarlo basta scaricare il pacchetto http://www.rfxn.com/downloads/apf-current.tar.gz e decomprimerlo (per versioni ubuntu/debian possiamo usare sudo apt-get install apf-firewall).

wget http://www.rfxn.com/downloads/apf-current.tar.gz

tar zxf apf-current.tar.gz

ora entriamo nella directory appena estratta e installare APF

cd apf-9.7-2/

./install.sh

Installing APF 9.7-2: Completed.

Installation Details:
Install path: /etc/apf/
Config path: /etc/apf<firewall>/conf.apf
Executable path: /usr/local/sbin/apf

Other Details:
Listening TCP ports: 21,22,80,631,3306,5900,15749,17500
Listening UDP ports: 5353,15749,17500,38366
Note: These ports are not auto-configured; they are simply presented for information purposes. You must manually configure all port options.
ora andiamo a modificare il file di configurazione /etc/apf<firewall>/conf.apf

DEVEL_MODE="1"
questo parametro indica se apf è in modalità sviluppo (e quindi non applica le regole) o in modalità produzione e quindi rende effettive le regole del firewall, prima di impostarlo a 0 per renderlo attivo modifichiamo il resto delle regole altrimenti rischiamo di chiuderci fuori dal server

Impostiamo le porte in ascolto modificando il paramentro IG_TCP_CPORTS

# Common inbound (ingress) TCP ports
IG_TCP_CPORTS="22,21,20,80,25,53,110,143,443,2222,587,953,993,995,4949"
esempio d'impostazioni che sono valide per i servizi ssh,ftp,web,mail (pop/imap/smtp),directadmin e munin

questi invece gli esempi per le impostazioni per le porte in uscita

# Common outbound (egress) TCP ports
EG_TCP_CPORTS="21,25,80,443,43"
e poi più sotto impostiamo a “1″ le seguenti variabili che ci permettono di scaricare delle liste di ip conosciuti come malevoli in modo da filtrare a priori il loro traffico

DLIST_PHP="1"
DLIST_SPAMHAUS="1"
DLIST_DSHIELD="1"
DLIST_RESERVED="1"

ora salviamo ed avviamo apf tramite il comando

apf -s

BFD
Ora passiamo a BFD (brute force detection) il quale è un software che, analizzando i log, rileva i tentativi
d’intrusione ai servr con metodologia Brute Force, ciò significa che se qualcuno tenta di accedere alla nostra macchina per bucarla, nei log di sistema, BFD troverà traccia dei vari tentativi, e se questi superano una soglia, che possiamo impostare, banna gli ip responsabili tramite APF.
Procediamo con il download (http://www.rfxn.com/downloads/bfd-current.tar.gz) e l’installazione

wget http://www.rfxn.com/downloads/bfd-current.tar.gz
tar zxf bfd-current.tar.gz
cd bfd-1.5/2/
./install.sh

A differenza di apf, bfd viene installato in /usr/local/bfd, procediamo ora alla modifica del fine di configurazione /usr/local/bfd/conf.bfd

# how many failure events must an address have before being blocked?
# you can override this on a per rule basis in /usr/local/bfd/rules/
TRIG="15"

# send email alerts for all events [0 = off; 1 = on]
EMAIL_ALERTS="1"

# local user or email address alerts are sent to (separate multiple with comma)
EMAIL_ADDRESS="<your@email.com>"

# subject of email alerts
EMAIL_SUBJECT="Brute Force Warning for $HOSTNAME"

la prima variabile indica il numero di eventi che devono esser trovati nei file di log per scatenare il ban, questa impostazione può essere modificata successivamente servizio per servizio mentre EMAIL_ALERTS,EMAIL_ADDRESS e EMAIL_SUBJECT servono per ricevere una copia via email dei vari attacchi rilevati e delle azioni intraprese da bfd per bloccare eventuali nuovi attacchi dall’host.

# syslog auth log path
AUTH_LOG_PATH="/var/log/auth.log"

verificate anche che questo file punti correttamente al vostro auth log (di default nell’installazione bfd punta a /var/log/secure)

e come ultima cosa modificate il file /etc/cron.d/bfd e rimuovete le seguenti righe altrimenti il cron non funzionerà

MAILTO=
SHELL=/bin/bash

a questo punto anche bfd è installato e funzionante;

Per avviare BFD usiamo il seguente comando :

# sudo /usr /local /sbin /BFD – s

DDOS Deflate

E’ un piccolissimo script in bash che serve a prevenire attacchi di tipo DoS o DDOS. Principalmente si basa sempre sul blocco degli indirizzi ip come mod_evasive, se quest’ultimi inviano “X” richieste al server in modo continuativo. In tal caso lo script attiva il firewall del server.

Vediamo come installarlo

Installare DDOS Deflate
dalla vostra shell di Linux, lanciate questo comando:

wget http://www.inetbase.com/scripts/ddos/install.sh

Successivamente andranno impostati i permessi al file ed eseguire l’installazione
chmod 0700 install.sh

./install.sh

Leggerete la lincenza dello script, quindi premete
q

Potrete leggere a video che è stato creato un file di configurazione ddos.conf nella directori /usr/local/ddos/
Possiamo notare come lavora in cron lo script, lanciando il comando
ls -l /etc/cron.d

 

#DifenditidagliattacchiBruteForce

10 consigli per migliorare le prestazioni di un SSD

Dischi SSD ottimiziamoli

Dischi SSD ottimiziamoli

Gli SSD hanno delle grosse differenze rispetto ai comuni dischi fissi, sia costruttive che nel funzionamento, e pertanto non possono essere trattati come questi (altrimenti si rischierebbe di provocare più danni che benefici). Per non perdere prestazioni nel tempo, ma soprattutto per rendere sempre al massimo, gli SSD necessitano quindi di una manutenzione accurata e di alcune impostazioni particolari. Ecco quindi alcuni utili consigli da seguire per migliorare le prestazioni di un SSD.

Disattiva la deframmentazione

Questo primo consiglio vale se utilizzi un sistema operativo Windows, questo perché nelle unità a stato solido non c’è il problema della frammentazione dei dati, ragion per cui la deframmentazione non porta alcun beneficio, anzi, col passare del tempo, potrebbe addirittura ridurne decisamente la vita (oltre che le prestazioni).
Di conseguenza, per disattivare la deframmentazione, basta cliccare sul pulsante start e scrivere deframmentazione. Si aprirà quindi l’Utilità di deframmentazione dischi nella quale dovrai cliccare su Configura pianificazione e, successivamente, su Seleziona dischi dove dovrai togliere la spunta a fianco il nome dell’unità a stato solido (se nel computer hai solo un SSD basta togliere invece la spunta direttamente da Esegui in base a una pianificazione (scelta consigliata)) e infine cliccare su OK (una o due volte a seconda del caso).

Disabilita l’indicizzazione

L’indicizzazione permette di fare delle ricerche più rapide ed è molto utile nei classici hard disk. Negli SSD, al contrario, l’indicizzazione provoca continue letture e micro scritture che a lungo andare potrebbero risultare nocive per le unità a stato solido.
Per disabilitare quindi l’indicizzazione nei sistemi operativi Windows, basta andare nelle proprietà del disco (cliccando sull’icona Computer o Questo PC, selezionando l’SSD con il tasto destro del mouse e scegliendo Proprietà) e successivamente togliere la spunta a Consenti l’indicizzazione del contenuto e delle proprietà dei file di questa unità. Oltre a fare questo ti consiglio però di disabilitare anche il relativo servizio quindi fai clic sul pulsante start e digita services.msc (seguito dalla pressione del tasto Invio). Trova il servizio chiamato Windows Search e fermalo (basta cliccare col tasto destro del mouse e selezionare Arresta). Una volta fermato, fai doppio clic sul nome del servizio e dal menu a tendina a fianco la voce Tipo di avvio seleziona Disabilitato, poi clicca su Applica e infine su OK.
Nei sistemi operativi Mac OS X l’indicizzazione viene invece gestita da Spotlight. In questo caso puoi disabilitare completamente il servizio da riga di comando (dalla cartella Applicazioni, seleziona la cartella Utilità e poi clicca sull’icona del Terminale) attraverso la seguente stringa di comando:

sudo mdutil -a -i off

Se vuoi semplicemente escludere dall’indicizzazione solo per determinate cartelle basta agire invece dalle preferenze del programma (Preferenze di sistema > Spotlight > Privacy).

Disabilita l’ibernazione

L’ibernazione si rivela essere utile con i classici hard disk ma può tranquillamente essere disabilitata per gli SSD in quanto, grazie alle loro prestazioni, non serve praticamente a niente poiche’, per come viene eseguita, rappresenta solo un grosso carico di lavoro per le celle di memoria dell’SSD (visto che ogni volta bisogna scrivere l’intero contenuto della memoria RAM nell’unità a stato solido).
Per disabilitare quindi l’ibernazione in ambiente Windows basta aprire il prompt dei comandi e digitare:

powercfg.exe /hibernate off

Una volta premuto il tasto Invio, per rendere effettiva la modifica dovrai semplicemente riavviare il computer. Per quanto riguarda invece il sistema operativo Mac OS X la procedura da seguire è più o meno la stessa. Basta aprire infatti il terminale e digitare:

sudo pmset hibernatemode 0

Inoltre, una volta disabilitata, per liberare lo spazio occupato dall’ibernazione, potresti digitare anche il seguente comando:

sudo rm /var/vm/sleepimage

Elimina il file di paginazione

Oggigiorno i computer hanno (mediamente) molta memoria RAM (quelli di nuova generazione vanno dagli 8 ai 12 GB) ragion per cui l’utilizzo del file di paginazione (chiamato anche page/swap file) non porta alcun beneficio, anzi, in alcuni casi potrebbe essere addirittura svantaggioso.
Per eliminare quindi il file di paginazione nei sistemi operativi Windows basta andare nelle Impostazioni di sistema avanzate (raggiungibile digitando l’omonima voce facendo clic sul pulsante start oppure andando nel Pannello di controllo e selezionando prima Sistema e poi, dal menu in alto a sinistra, Impostazioni di sistema avanzate), selezionare la scheda Avanzate, cliccare Impostazioni nella sezione Prestazioni, poi selezionare di nuovo la scheda Avanzate, fare clic su Cambia, togliere la spunta a Gestisci automaticamente dimensioni file di paging per tutte le unità, selezionare Nessun file di paging e infine cliccare su Imposta (riavviando, appena possibile, il computer).
Per disabilitare il file di paging su Mac OS X basta invece aprire il terminale e digitare:

sudo launchct1 unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Successivamente, tramite il seguente comando, potrai cancellare il file di paging:

sudo rm /private/var/vm/swapfile*

Se per caso in futuro vorrai attivare di nuovo il file di paging basterà lanciare invece il seguente comando:

sudo launchct1 load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Disattiva le tecniche di caching

Su Windows esistono delle particolari tecniche di caching che, se utilizzate su un sistema dotato di hard disk classico, permettono di migliorarne le prestazioni. Sugli SSD, invece, queste tecniche non fanno altro che provocare ripetute micro letture e scritture con il rischio di degradarne le già notevoli prestazioni.
In particolare, la prima di queste tecniche è il Prefetch che permette di monitorare i file più utilizzati durante l’avvio del sistema operativo (e delle applicazioni) salvandoli in una speciale cartella. La seconda tecnica, invece, è il Superfetch che consiste in un’area del disco dedicata ai programmi più utilizzati (in maniera tale da renderli subito disponibili nella memoria RAM).
Per disattivarle entrambe, basta andare quindi nel registro di sistema (digitando Regedit dopo aver fatto clic sul pulsante start) e recarsi nel seguente percorso:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\MemoryManagement\PrefetchParameters

Cliccando due volte prima su EnablePrefetcher e dopo su EnableSuperfetch, modifica il valore che trovi (che di solito è 1 oppure 3) in 0 e, dopo aver fatto clic su OK, riavvia il computer.

Disabilita la cache di scrittura su disco

Nei sistemi operativi Windows esiste una funzionalità che permette di lasciare momentaneamente i dati nella memoria RAM e che solo in un secondo momento, appena possibile, li scrive sul disco. Questa funzionalità si chiama cache di scrittura e, da una parte, permette di aumentare lievemente le prestazioni ma dall’altra aumenta anche il numero delle scritture (con conseguenze che a lungo andare potrebbero provocare dei problemi).
Per disabilitare questa caratteristica basta andare quindi in Gestione dispositivi (cliccando sul pulsante start e scrivendo proprio gestione dispositivi), selezionare Unità disco e cliccare due volte sul nome dell’SSD. A questo punto basta spostarsi nella scheda Criteri, togliere la spunta ad Attiva cache in scrittura sul dispositivo e cliccare su OK (se tuttavia doveste notare un elevato decadimento delle prestazioni allora dovrai riattivare tale funzionalità).

 

Disabilita il ripristino configurazione di sistema

Il ripristino configurazione di sistema è un’altra delle funzionalità che andrebbero disabilitate nei sistemi operativi Windows. Questo perché tale caratteristica occupa prezioso spazio ma anche perché le numerose scritture effettuate sono una continua fonte di stress per un SSD.
Per disabilitare quindi il ripristino configurazione di sistema basta andare nel Pannello di controllo, cliccare su Sistema e, dal menu sulla sinistra, selezionare Protezione sistema. A questo punto clicca su Configura e seleziona Disattiva protezione sistema. Una volta disattivata, potresti anche eliminare tutti i punti di ripristino (che possono occupare parecchie decine di gigabyte) cliccando semplicemente sul pulsante Elimina.

Attiva il comando TRIM

Il comando TRIM, che funziona attraverso la modalità AHCI, permette di indicare all’SSD quali sono le aree della memoria che è possibile cancellare. Sui sistemi operativi recenti (da Windows 7, Mac OS X 10.6.8 e Linux 2.6.33 in poi), non sempre risulta abilitato come impostazione predefinita (neanche se nel sistema è già installato un SSD).
Per verificare quindi che il comando TRIM sui sistemi operativi Windows sia già attivo basta aprire il prompt dei comandi con privilegi amministrativi (cliccando sul pulsante start, scrivendo cmd e cliccando l’icona del terminale premendo contemporaneamente i tasti CTRL e maiuscolo) e, successivamente, lanciare il seguente comando:

fsutil behavior query disabledeletenotify

Se il risultato di questa espressione è uguale a 0 significa che il comando TRIM è attivato (altrimenti, se è uguale ad 1, significa che risulta disabilitato).
Se purtroppo il comando TRIM risulta disabilitato allora dovrai procedere ad abilitarlo manualmente. Per poterlo attivare devi quindi prima scaricare ed installare questa patch e successivamente entrare nel BIOS ed attivare la modalità AHCI mediante una voce simile a SATA Configuration e, dal menu che compare premendo Invio, cliccando su Configure SATA selezionando la voce AHCI (per sapere se e come sia possibile fare un’operazione del genere, ti consiglio comunque di consultare il manuale della tua scheda madre).
Per verificare che il comando TRIM sia attivo sui sistemi operativi Mac OS X basta andare nel menu Apple, selezionare Informazioni su questo Mac e cliccare su Più informazioni. A questo punto dal menu Hardware seleziona la voce ATA seriale e controlla che a fianco la voce Supporto TRIM ci sia scritto Sì. Nel qual caso ci fosse scritto No, per attivarlo dovrai scaricare il programma Trim Enabler e cliccare su On.
Per quanto riguarda Linux (in particolare Ubuntu, Linux Mint ed elementary OS) segui questa procedura:

Prima di abilitare il TRIM assicurarsi che:

  • Si utilizzi un kernel Linux 2.6.33 o successivo. Per conoscere il kernel in uso sul sistema, digitare in un terminale il comando :

    uname -a

  • Si possegga un disco che supporti il TRIM. In un terminale digitare il comando:

    sudo fdisk -l

    per ottenere la lista delle partizioni e dei dischi presenti sul pc, questi ultimi avranno un nome del tipo sdx (ad esempio: sda, sdb, sdc..)

    Per assicurarsi che il proprio SSD supporti il TRIM, digitare il comando:

    sudo hdparm -I /dev/sdx | grep "TRIM supported"

    sostituendo «sdx» con il nome del disco.

    L’output restituito sarà simile al seguente:

    Data Set Management TRIM supported (limit 8 blocks)

    se il TRIM non è supportato, non verrà restituito alcun output.

  • Che le partizioni di Ubuntu siano nel filesystem EXT4 (o BRTFS), digitare in un terminale:

    cat /etc/mtab | grep ext4

    l’output sarà simile al seguente:

    /dev/sda1 / ext4 rw,errors=remount-ro 0 0

    se non vi sono partizioni formattate in EXT4, non verrà restituito alcun output.

N.B.: Poiché sono in pochi ad utilizzare il filesystem BRTFS, la guida verterà sull’abilitazione del TRIM su EXT4.

Abilitazione del TRIM

Una volta verificato che siano soddisfatti i requisiti visti nel precedente paragrafo, è possibile passare all’abilitazione del TRIM.

Abilitazione del TRIM attraverso fstab

  1. Aprire con un editor di testo ed i privilegi amministrativi (sudo) il file /etc/fstab ed aggiungere le opzioni «discard» e «noatime» come nell’esempio successivo:

    <file system> <mount point>   <type>  <options>       <dump>  <pass>
    # / was on /dev/sdb1 during installation
    UUID=1cd2fc4f-7d99-4c7a-8ea7-6f9a2d5e5960 /               ext4    discard,noatime,errors=remount-ro 0       1

  2. Salvare le modifiche e riavviare il sistema.

In alternativa a questo metodo per l’abilitazione del TRIM è possibile seguire le istruzioni del successivo paragrafo.

Pianificazione di un’operazione giornaliera di cron

  1. Aprire con un editor di testo ed i privilegi amministrativi il file /etc/cron.daily/trim ed incollarvi all’interno le seguenti righe:

    #!/bin/sh
    LOG=/var/log/trim.log
    echo "*** $(date -R) ***" >> $LOG
    fstrim -v / >> $LOG
    fstrim -v /home >> $LOG

    Le ultime due righe abilitano il TRIM per la partizione root (/) e la partizione /home.

    Omettere l’ultima riga se non si ha una partizione /home separata.

    Se si hanno altre partizioni occorre aggiungere altre righe secondo la sintassi:

    fstrim -v /nome_partizione>> $LOG

  2. Prima di salvare le modifiche al file, testare se il comando fstrim funziona digitando in un terminale:

    sudo fstrim -v /

    l’output dovrebbe essere simile a questo:

    /: 8158715904 bytes were trimmed

  3. Salvare a questo punto le modifiche e rendere lo script eseguibile con il comando:

    sudo chmod +x /etc/cron.daily/trim

Partizioni criptate

Se si stanno utilizzando partizioni criptate occorrono uteriori passaggi affinché il tutto funzioni.

  1. Aprire con un editor di testo ed i privilegi amministrativi il file /etc/default/grub.

  2. Modificare la riga:

    GRUB_CMDLINE_LINUX=""

    in

    GRUB_CMDLINE_LINUX="allow-discards root_trim=yes"

  3. Salvare il file ed aggiornare Grub con il comando:

    sudo update-grub

  4. Aprire con un editor di testo ed i privilegi amministrativi il file  /etc/crypttab ed aggiungere l’opzione «discard» come nell’esempio succesivo:

    #<target name>    <source device>            <key file>  <options>
    var  UUID=01234567-89ab-cdef-0123-456789abcdef  none  luks,discard

  5. Salvare le modifiche e dare infine il comando:

    sudo update-initramfs -u -k all

 

Aggiorna il firmware

Il firmware è il principale responsabile delle prestazioni di un SSD (questo perché al loro interno gli SSD hanno praticamente solo delle componenti elettroniche) ragion per cui è necessario aggiornarlo sempre all’ultima versione disponibile (in maniera tale da risolvere eventuali problemi ma, soprattutto, per migliorarne le prestazioni).
Nella maggior parte dei casi, per aggiornare il firmware è sufficiente installare il software che di solito rilascia il produttore dell’SSD stesso. Ecco un piccolo elenco per i software dei principali produttori:

Una volta installato uno di questi programmi, ti basterà semplicemente avviarlo per poter controllare (ed eventualmente installare) il nuovo firmware.

Disabilita il risparmio energetico

Il risparmio energetico e’ quell’opzione del sistema che permette di togliere l’alimentazione al disco in maniera tale da diminuire i consumi quando questo non viene utilizzato. Siccome, però, un SSD consuma molto poco quando si trova in standby (in genere meno di un watt all’ora) si può benissimo pensare di disattivare questa funzione.
Per fare coi’ sui sistemi operativi Windows basta andare nel Pannello di controllo, selezionare Opzioni risparmio energia, cliccare la voce presente a fianco della combinazione in uso (simile a Modifica impostazioni combinazione), cliccare poi su Cambia impostazioni avanzate risparmio energia e, una volta individuata la sezione Disco rigido, impostare il valore a 0 (che equivale a dire di non spegnere mai il dispositivo).
Per quanto riguarda invece Mac OS X basta andare nelle Preferenze di sistema, poi in Risparmio Energia e togliere la spunta a Metti in stop il disco rigido quando è possibile.

Un’altro consiglio da seguire è quello di disattivare uno speciale servizio che, attraverso un sensore, permette di spegnere il disco in caso di cadute o urti accidentali. Sebbene possa essere utile per un classico hard disk (soprattutto nei computer portatili), per un SSD questo meccanismo risulta dannoso in quanto spegne e blocca di colpo il disco quando non necessario.
Per disattivare quindi questa funzione in ambiente Windows basta digitare msconfig dopo aver cliccato sul pulsante start, andare nella sezione Avvio, togliere la spunta ad FF_Protection_Application e infine cliccare su Applica e poi su OK (riavviando, appena possibile, il computer).
Per quanto riguarda i sistemi operativi Mac OS X, bisogna seguire una procedura un po’ più complicata. Apri quindi il terminale e, per determinare se il sensore è attivo o meno, scrivi:

sudo pmset -g

Una volta inserita la password dell’amministratore, se ottieni il valore 0 significa che il servizio è disattivato altrimenti, se ottieni 1, significa che il servizio è invece attivo. Per disattivarlo ti basterà dunque scrivere:

sudo pmset -a sms 0

A questo punto controlla tramite il primo comando (sudo pmset -g) e verifica se il servizio è stato correttamente disattivato. Casomai volessi riattivarlo dovrai scrivere:

sudo pmset -a sms 1

Conclusioni

Una volta messi in pratica questi consigli dovreste notare un aumento delle prestazioni del vostro SSD (o quantomeno dovreste avergli allungato la vita). Se comunque volete verificare lo stato di salute dell’ SSD potreste leggere i parametri S.M.A.R.T. oppure verificarne le prestazioni attraverso dei semplici programmi gratuiti come CrystalDiskInfo se utilizzi un sistema operativo Windows, Smart Utility (in versione trial) se utilizzi un sistema operativo Mac OS X e attraverso il package Smartmontools se utilizzi invece un sistema operativo Linux. Inoltre, se usi un sistema operativo Windows, potresti scaricare un ottimo programma gratuito come SSD Fresh che ti permetterà di avere accesso direttamente alle varie impostazioni consigliate in questo articolo in maniera tale da migliorare le prestazioni di un SSD con pochi e semplici clic.

 

#SSDottimizziamoilnostrodisco