Sicurezza Slackware Linux
|
Sicurezza
|
Indice
1. Controllare
2. Chiudere
3. Tenersi
aggiornati
4. Binding
5. Firewall
6. Altro
Controllare
Il primo passo per poter
essere in grado di mettere in relativa sicurezza un computer sul quale
gira un qualsiasi sistema operativo che utilizzi un kernel linux o che
comunque derivi da UNIX, è di accertarsi prima di tutto di quali siano
i daemons che effettivamente girano e ascoltano sul tuo pc.
Per fare questo puoi utilizzare netstat o un qualsiasi port scanner.
Con netstat basta fare ad esempio un:
# netstat -l
Questo ti darà come output tutte le porte che risultano 'aperte' sul
tuo pc, l'interfaccia sulla quale ascoltano e altri dati. Per quanto
riguarda i vari port scanner, vi rimando alle loro man pages.. un
valido port scanner è, se volete un consiglio, nmap che ha anche una
interfaccia grafica (nmapfe), comoda per chi non si vuole sbattere più
di tanto da linea di comando =)
Ora che avete una lista dei daemons che girano sul vostro pc e le porte
che utlizzano, potete passare alla pagina che è dedicata a chiudere
quei servizi.
Chiudere
Una volta che avete visto i
servizi che girano sul vostro pc, bisogna chiudere un pò di robaccia
inutile ;)
Prima di tutto bisogna eliminare tutti i servizi potenzialmente
pericolosi o comunque non necessari che girano lanciati dal super
server inetd. Per fare questo, aprite con il vostro editor preferito
(vi, vim, pico, joe, etc) il file /etc/inetd.conf e commentate mettendo
un cancelletto (#) all'inizio della riga che fa partire un servizio che
non vi serve.
Se siete alle prime armi, vi basti sapere che nessuno di quei servizi è
strettamente necessario al funzionamento di slackware in internet,
quindi commentare TUTTO tranne la riga corrispondente ad auth è
probabilmente la scelta migliore.. almeno in caso non siate sicuri vi
serva altro.
Una volta modificato il file e commentato tutto tranne auth (che serve
con alcuni ftp, email e irc servers), salvate le modifiche e fate
ripartire inetd così che applichi le modifiche che avete apportato al
suo file di configurazione. Potete farlo semplicemente eseguendo:
# killall -1 inetd
Ora potete ricontrollare con netstat o il vostro fedele port scanner
che ci siano _effettivamente_ un pò di porte in meno aperte =)
Ora passiamo o chiudere le altre porte, porte che vengono aperte da
daemons che non dipendono da inetd.
Se non l'avete gia fatto, ricontrollate con netstat o il vostro port
scanner le porte che sono rimaste aperte dopo la modifica di
/etc/inetd.conf. Segnatevi quelle porte ed utilizzate il comando fuser
per vedere quale sia il processo che le tiene aperte (per poter essere
cosi in grado di killare il processo), in questo modo:
# fuser -v
numeroporta/tcp
es:
# fuser -v 22/tcp
L'output sara di questo tipo:
22/tcp root 23411 f.... sshd
Dove root è l'user che ha lanciato il processo, 23411 è il pid del
processo e sshd è il nome del processo che tiene aperta la porta
22/tcp. Per killare questo processo è sufficente un kill -9 pid..
quindi, per questo esempio, per killare il processo che mi tiene aperta
la porta 22, cioè sshd, dovrò fare:
# kill -9 23411
Fate lo stesso per quando riguarda le altre porte aperte e, se volete
che quei servizi non vengano piu lanciati durante l'avvio, basta andare
a vedere e commentare la relativa linea degli scripts di
inizializzazione che si trovano nella directory /etc/rc.d/
Tenersi
aggiornati
Oltre a controllare le porte
aperte, chiudere i servizi non necessari, applicare patches al kernel,
vagliare la possibilità di utilizzare un firewall, bisogna prestare una
_buona_ attenzione anche ai vari exploits ai quali alcuni programmi che
avete installato possono essere vulnerabili.
Gli exploit sono (per dirla semplicemente) programmi che sfruttano un
problema di sicurezza di una applicazione che gira sul computer di una
vittima con il fine di ottenere qualche tipo di privilegio sulla
macchina in questione.
Essere vulnerabili ad un exploit è ovviamente un problema. Se una
persona sfrutta un problema di sicurezza di un tuo pc, significa che
probabilmente sarà in grado di eseguire alcune applicazioni e, se va
davvero male, di ottenere privilegi di root sul tuo pc, il che vuol
dire che quella persona potrà utilizzare il vostro computer come gli
pare per fare ciò che vuole (prendere dati sensibili e rivenderli,
oppure compiere crimini informatici usando il vostro sistema come
ponte).
Per ovviare nei limiti del possibile a questi problemi bisogna tenersi
quanto più possibile aggiornati sul software. Il che non vuol dire
scaricare _sempre_ l'ultima versione disponibile, ma farlo soltanto
quando sia necessario per un problema di sicurezza o per altri bugs :)
Io pubblicherò i vari problemi di sicurezza che si dovessero scoprire
riguardo le varie versioni di slackware su questo sito (e i relativi
aggiornamenti da effettuare), ma voi siete invitati a tenervi comunque
aggiornati usando BUGTRAQ :)
Binding
Bindare un server (o meglio
daemon) per farlo ascoltare solo su alcune interfacce, significa
configurare un "servizio" (come uoò essere sshd, un server ftp, un
webserver, etc.) per funzionare o meglio rispondere solo quando a
richiedere una connessione è un dato IP oppure un IP appartentente ad
una data rete.
Questo è molto utile per restringere alcuni servizi potenzialmente
sensibili ad una cerchia stretta di utenti limitando così la
possibilità di ricevere connessioni indesiderate.
Analizzare i modi per bindare i daemon uno per uno mi pare francamente
impossibile, ad ogni modo, se siete interessati a questo metodo di
"protezione" vi invito a leggere le man pages relative ai servizi ai
quali desiderate limitare l'accesso.
Inoltre, almeno in genere, i siti ufficiali delle varie applicazioni
sono una miniera inesauribile di documentazione e FAQ riguardo la loro
configurazione, basta aver voglia di leggere! :)
Firewall
Al contrario di quanto si
possa immaginare, l'utilizzo di un firewall non è affatto
indispensabile il più delle volte.
Infatti un firewall dovrebbe servire solo a rafforzare la politica di
sicurezza del sistema preesistente e non dovrebbe (come molti sembrano
credere) essere la politica di sicurezza principale.
A mio avviso è molto più rilevante dare maggiore importanza a chiudere
tutti i servizi o daemon non indispensabili per l'uso che vogliamo fare
del nostro pc, è ancora più importante sfruttare i files di
configurazione e le opzioni dei daemons che lasciamo girare per farli
'ascoltare' solo sulle interfacce strettamente necessarie.
Una volta fatto tutto ciò si può considerare l'utilizzo di un firewall
per rafforzare queste politiche di sicurezza.
E' però necessario però sapere che un firewall, se usato su un pc
domestico non può bloccare attacchi come i vari (D)DoS, smurf o altro,
ma ne può solo attenuare (e di poco il più delle volte) la portata (e
solo in caso questi attacchi non siano massicci).
Questi tipi di attacchi potrebbero essere bloccati con successo solo
dal provider stesso.
In Slackware Linux 8.1 è presente iptables, ed è questo che bisogna
utilizzare per 'costruire' un firewall. Non voglio certo spiegarvi il
funzionamento di iptables qui e nemmeno come creare scripts e regole
per esso, vi posso però consigliare alcuni firewall basati su iptables
che sono relativamente facili da comprendere e da far funzionare,
eccovene due che a mio avviso sono tra i più validi:
Guarddog
Firestarter
Questi non sono ovviamente gli unici disponibili, se non vi piacciono
ne potete sempre cercare altri ;)
Altro
Oltre alle politiche di
sicurezza già prese in considerazione in questa sezione, esistono molti
altri metodi per rendere un pc connesso ad internet "più" sicuro.
Esistono cose come delle patch specifiche per il kernel linux che
aggiungono allo stesso funzioni che gli conferiscono una maggior
sicurezza, introducendo protezione contro possibili problemi che il
software può avere (cose come i buffer overflows, etc), protezione sul
filesystem (restrizioni su /proc ad esempio) ed altre utilissime cose,
come gli ACL (Access Control List) che permettono, in sostanza, di
negare l'accesso ad alcuni files 'sensibili' persino ad utenti con
privilegi di root.
Probabilmente la patch più comunemente nota che introduce queste
funzioni è grsecurity che vi consiglio di scaricare nel caso siate
interessati. Grsec è ben documentato, e vi rimando quindi alle risorse
presenti sul suo sito per capire utilizzo e metodi d'impiego.