Content:

.  Index
.  FAQ
.  Slack Packages
.  Slack Install
. 
Slack Config
.  Slack Tutorial


.  Slack Security
.  Distribuzioni
.  Compilazione
. 
Kernel Linux
.  Downloads
.  Links
. 
Contact


The Slack-it Linux Project

.  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.
 

This site is maintained by velenux
(c) 2003 The Slack-it Linux Project