Introduzione
I servizi, che sui sistemi *NIX spesso sono chiamati demoni,
costituiscono una delle maggiori fonti di problemi per la sicurezza
di un sistema, sia che aprano porte di rete, sia che rimangano in
stand-by, in locale, in attesa di qualche input. I servizi
che aprono una porta di rete possono essere attaccati da remoto, gli
altri possono essere sfruttati da utenti del sistema, ad esempio,
per acquisire i privilegi di root.
L'istallazione della maggior parte delle distribuzioni Linux comporta
l'attivazione automatica di tutta una serie di servizi, in modo, se
vogliamo anche eccessivo, con l'obiettivo di non creare difficoltà
all'utente medio. Fanno eccezione quelle distribuzioni molto specialistiche,
tipo ASTARO, o quelle ultrapersonalizzabili, tipo GENTOO,
che istallano solo ciò che viene espressamente richiesto, ma in entrambe
i casi si tratta di software utilizzato, e utilizzabile, solo da esperti
(checchè ne dicano i loro estimatori più spinti).
L'istallazione e l'avvio in automatico di questi servizi è molto comoda
e solleva l'utente medio da tutti i complessi problemi di configurazione
del sistema, ma può comportare uno spreco di risorse e delle falle
di sicurezza.
Ovviamente la scelta di quali servizi usare è legata al tipo di uso
del computer che vogliamo fare. I possibili profili di utilizzo sono
quasi infiniti, per delimitare il discorso verrà preso in considerazione
il caso dell'utente medio di Linux che svolge principalmente le seguenti
attività possibili fonti di problemi di sicurezza:
- naviga in internet
- usa la posta elettronica
- usa programmi peer-to-peer
- fa qualche sito web
Regole generali
Per amministrare i "servizi" è necessario agire come root,
ma questo non significa che bisogna per forza essersi loggati come
tali. Si può entrare nell'interfaccia grafica come utente e poi acquisire
i poteri di root tramite il comando su - da console:
$ su -
Password: <password>
a questo punto si avrà a disposizione un prompt da cui operare come
amministratore.
È bene lasciare attivi solo i servizi di cui si ha necessità, anche
se non tutti comportano gli stessi rischi per la sicurezza. In generale
si può dire che i più problematici sono quelli che aprono delle porte
di rete.
Se un servizio, che apre porte di rete, ci è necessario, lo
si deve proteggere tramite il firewall dalle connessioni esterne.
Quindi è importante conoscere le porte su cui si pone in ascolto.
Avvio e arresto dei servizi
In quasi tutte le distribuzioni Linux, con l'eccezione di Slackware
e derivate, la gestione della fase di inizializzazione del sistema
e di avvio dei servizi avviene tramite lo schema denominato SystemV
(l'altro sistema è chiamato BSD). Una disamina di questi sistemi
di avvio esula completamente dall'argomento di questo articolo, basta
sapere che Linux può essere avviato o fermato con differenti configurazioni
dette run level, ve ne sono 7 numerate da 0 a 6 e corrispondono:
0
Spegnimento del sistema.
1
Avvio in modalità singolo utente, con il minimo del sistema possibile.
Questa modalità è usata per la soluzione dei problemi e il recupero.
2
Avvio in modalità multiutente senza servizi di rete.
3
Come sopra ma con servizi di rete.
4
Non utilizzato. Questo livello può essere usato per impostarne
uno personalizzato.
5
Avvio in modalità grafica, multiutente e con servizi di rete.
6
Riavvio del sistema.
Per cui un servizio può essere avviato o fermato in relazione ad uno
o più di questi run level.
In fase di avvio del sistema
Per configurare la fase di avvio e arresto dei servizi, in modo automatico,
all'accensione e spegnimento del sistema, su RedHat e derivate, si
utilizza l'utility chkconfig.
Per avere la lista dei servizi utilizzabili e il loro stato:
# chkconfig -list
....
iptables 0:off 1:off 2:off 3:on 4:on 5:on 6:off
....
che ci dice che il servizio iptables non viene attivato (e
se attivo viene arrestato) nei run level 0, 1, 2, 6 e viene
attivato nei run level 3, 4, 5.
Per modificare l'avvio e l'arresto:
# chkconfig -level <run levels> <servizio> <on|off>
Ad esempio se voglio che il servizio httpd sia attivo ai run
level 3 e 5 devo scrivere:
# chkconfig -level 35 httpd on
Se invece voglio che non venga avviato in automatico mai devo scrivere:
# chkconfig -level 0123456 httpd off
A sistema avviato
Potremmo avere la necessità di avviare, fermare, verificare lo stato
o riavviare un servizio a sistema già avviato. per fare ciò useremo
l'utility service che usa la seguente sintassi:
# service <nome servizio> <azione>
Il tipo di azioni possibili dipende dal servizio, l'elenco è ottenibile
digitando:
# service <nome servizio>
Le azioni più comuni sono: START, STOP, RESTART, STATUS.
Interfaccia grafica
RadHat mette a disposizione l'utility redhat-config-services
che consente di effettuare quasi tutte le operazioni viste prima tramite
un'interfaccia grafica.
Come possiamo vedere si tratta di uno strumento molto semplice, composto
da tre quadri. Quello a sinistra dove vi è la lista dei servizi. Il
quadro a destra in alto in cui compare una breve descrizione del servizio.
Quello a destra in basso in cui compare lo stato del servizio. Le
varie operazioni vengono svolte tramite i pulsanti AVVIARE,
ARRESTARE, RIAVVIARE. Purtroppo tramite l'interfaccia grafica non
è possibile usare le altre eventuali operazioni possibili.
Dopo aver introdotto, nel primo articolo di questa breve serie, alcune regole generali sui servizi o demoni linux, in quest'ultima parte vediamo quali sono, come venogno gestiti e a cosa servono i principali servizi di una macchina Linux.
Servizi critici
Non saranno trattati tutti i servizi di Linux (sono veramente tanti),
ma solo quelli che aprono porte di rete e che quindi sono più critici,
e quelli fondamentali per proteggere la macchina.
cups
gestisce le funzioni di stampa con il moderno metodo Common
Unix Print System, che ha sostituito il vecchio "lp".
porta di rete: cups utilizzando il protocollo IPP (Internet
Printing Protocol) è in ascolto sulla porta 631, sulla quale offre
anche un servizio di amministrazione via web.
consigli: Necessario solo se la macchina è collegata ad una
stampante in locale o in rete. In caso negativo, o nel caso che si
utilizzi il vecchio metodo disabilitare cups, anche per chiudere la
porta 631 su cui è in ascolto.
httpd
si tratta del celeberrimo Apache, cioè il webserver standard
di Linux. Viene utilizzato sia per fornire servizi web esterni e interni,
sia come ambiente di sviluppo per applicazioni web.
porta di rete: I web server sono tipicamente in ascolto sulla
porta 80.
consigli: Si consiglia di non tenere un webserver attivo
se non è utilizzato, se si usa solo per servizi interni o come ambiente
di sviluppo allora è necessario impostare il firewall in modo che respinga
qualunque tentativo di connessione dall'esterno della macchina.
iptables
è il servizio che gestisce il complesso sistema "netfilter"
di protezione, reindirizzamento dei pacchetti, ecc... in altre parole
il firewall. Questo programma si appoggia su un intero ramo di moduli
del kernel che gli conferiscono un'efficienza elevatissima.
porta di rete: iptables non opera su nessuna porta in particolare,
ma è in grado di controllarle tutte.
consigli: È da considerasi necessario per qualunque macchina
sia collegata ad una rete.
lisa
servizio che consente la navigazione tramite browser all'interno
di un network utilizzando il protocollo TCP/IP, fornisce funzionalità
simili a quelle di Netbios di Windows.
porta di rete: il servizio è in ascolto sulla porta 7741.
consigli: Si sconsiglia di utilizzare questo servizio, che
può essere sostituito da altri molto più sicuri come Samba, nfs, ecc..
mysqld
servizio server del celeberrimo database RDBMS opensource
MySQL.
porta di rete: il servizio è in ascolto sulla porta 3306.
consigli: L'utilità e la potenza di questo database sono
indiscutibili. È il più usato su internet e sta avanzando in ambito
SOHO. Attivare il servizio solamente se lo si sta utilizzando effettivamente,
poichè apre la porta 3306 con connessione non protetta. Se lo si usa
in locale o come ambiente di sviluppo si consiglia di impostare il firewall
in modo che non accetti connessioni dall'esterno su tale porta.
named
servizio relativo al protocollo DNS per la risoluzione dei
nomi, basato sul celeberrimo programma BIND. È uno dei servizi necessari
per la vita di internet, ma è uno dei più insicuri.
porta di rete: il servizio è in ascolto sulla porta 53.
consigli: La risoluzione dei nomi (cioè la trasformazione
del nome di dominio, ad esempio shishii.com, in indirizzo IP) è uno
dei servizi essenziali per internet e qualuque rete complessa, però
sia per le caratteristiche intrinseche del protocollo DNS, sia per
la sua implementazione software ubiquitaria, BIND, è gravemente insicuro,
per cui si consiglia di attivare sul proprio computer questo servizio
solo se necessario, altrimenti è meglio ricorrere al vecchio ed affidabile
file /etc/hosts.
netfs
servizio dedicato al mount dei filesystem di rete quali NFS
(UNIX), SMB (Lan Manager/Windows), e NCP (NetWare/Novell).
consigli: Attivare solo se si devono utilizzare filesystem
di rete per condividere files, altrimenti disattivare.
nfs
gestisce il protocollo di condivisione files in rete standard
UNIX cioè NFS. In realtà è composto da tre servizi in collaborazione:
rpc.mountd (gestisce il mount sul client dei volumi nfs remoti), nfsd
(gestisce le richieste dei client), rpc.rquotad (gestisce le quote
di spazio assegnato ai client sul server).
porta di rete: il servizio è in ascolto sulla porta 2049.
consigli: da attivare solo se si vuole fungere da server NFS. In caso contrario disattivare in quanto da considerarsi insicuro.
nfslock
gestisce le funzioni di lock sui volumi posti in share tramite
NFS e impedisce la corruzioni di files e partizioni a causa di accessi
concorrenti.
consigli: Assolutamente necessario se si è attivato il servizio
nfs, altrimenti da disattivare.
ntpd
gestisce la sincronizzazione del timer del computer tramite query a dei server centrali utilizzando il protocollo NTP.
porta di rete: il servizio è in funzione sulla porta 123.
consigli: da attivare solo se si ha reale necessità di una
precisa e continua sincronizzazione del timer della macchina, altrimenti
è meglio evitare di avere la porta 123 aperta.
portmap
gestisce le connessioni RPC e quindi è necessario per l'uso
di tutti quei protocolli che ne fanno uso come NFS, NIS, CODA, ecc.
porta di rete: il servizio è in funzione sulla porta 111.
consigli: da attivare solo se si usa un protocollo che ne
necessita. Infatti pur essendo, in tali casi, necessario è una delle
fonti maggiori di problemi di sicurezza per un sistema in rete, basti
dire che è una delle falle che viene cercata con maggiore "desiderio"
da Nmap.
postgresql
servizio che gestisce l'avvio, il fermo e il riavvio
del database RDBMS open source PostgreSQL.
porta di rete: il servizio è in ascolto sulla porta 5432.
consigli: L'utilità e la potenza di questo database sono
indiscutibili. È usato su internet e sta avanzando in ambito SOHO.
Inoltre è più adatto di MySQL per grossi carichi di lavoro, anche
se è più lento. Attivare il servizio solamente se lo si ta utilizzando
effettivamente, poichè apre la porta 5432 con connessione non protetta.
Se lo si usa in locale o come ambiente di sviluppo si consiglia di
impostare il firewall in modo che non accetti connessioni dall'esterno
su tale porta.
sendmail
si tratta del servizio che gestisce il serve di posta MTA più usato al mondo "sendmail", usa il protocollo SMTP.
porta di rete: il servizio è in funzione sulla porta 25.
consigli: Attivare solo se il PC è usato come server SMTP
per la spedizione di posta, o come piattaforma di sviluppo per programmi
che inviano posta, ad esempio le applicazioni web. Altrimenti disabilitare
per evitare i molti problemi di sicurezza che sendmail si porta dietro.
smb
In realtà si tratta di due servizi che vengono lanciati "smbd"
e "nmbd", che gestiscono il server "Samba" per
la condivisione di files, directory, ecc. con macchine Windows.
porta di rete: i due servizi sono in funzione sulle porte
137, 138, 139, 445.
consigli: Attivare solo se il computer deve servire da server
per la condivisione con macchine Windows. In caso contrario disattivare
i servizi che come visto aprono molte porte delicate.
snmpd
Gestisce il protocollo Simple Network Manager Protocol, utilizzato
per tenere sotto controllo sistemi remoti e amministrarli.
porta di rete: il servizio è in funzione sulla porta 161.
consigli: Ha senso solo per sistemi server che devono essere
tenuti sotto controllo e, in maniera limitata, amministrati da remoto.
Si tenga comunque presente che la versione 1 comunica in chiaro, e
quindi è molto insicura, la versione 2 prevede la funzione di crittografia
tramite MD5 relativamente debole. La prossima versione, 3, dovrebbe
risolvere questi ed altri problemi.
snmptrapd
Gestisce la funzione "trap" del protocollo suddetto,
tramite la quale è la macchina tenuta sotto controllo che prende l'iniziativa
delle comunicazione.
porta di rete: il servizio è in funzione sulla porta 162.
consigli: Vedi sopra.
squid
Servizio relativo al più famoso proxy server HTTP e FTP open
source, l'omonimo "Squid".
porta di rete: il servizio è in funzione su una porta a scelta
in genere: 3128, 8080, 8081.
consigli: Si tratta di un eccellente applicazione, molto
utile in tutti casi in cui si ha la necessità di ottimizzare e controllare
l'accesso ad internet.
sshd
Si tratta di uno dei servizi fondamentali per la rete, consente di aprire shell, trasferire files, ed altro su macchine remote, in completa sicurezza, tramite comunicazioni criptate in maniera efficace.
porta di rete: il servizio è in funzione sulla porta 22.
consigli: Si consiglia di attivarlo su tutte quelle macchine
verso cui ci può essere la necessità di doversi collegare da remote
ed aprire una shell. Si possono anche effettuare upload, download,
amministrazione in sicurezza.
xfs
avvia il font server necessario per l'utilizzo dell'interfaccia
grafica "X".
porta di rete: il servizio è in funzione in genere sulla
porta 7100.
consigli: È assolutamente necessario se si vuole utilizzare
Linux in modalità grafica.
xinetd
chiamato anche il "superdemone" serve a fare avviare
e tenere sotto controllo tutta una serie di servizi minori e, tendenzialmente,
poco affidabili, quali: telnet, finger, time, rlogin, rcp, ecc.
porta di rete: poichè questo superservizio non fa altro che
gestire servizi minori le porte impegnate dipendono da quali vengono
avviati.
consigli: Consiglio di avviarlo su qualunque macchina, e
di spostare l'attenzione su quali servizi amministrati fargli avviare
e quali no.