L'idea di base è quella di eliminare tutto ciò che in rete potrebbe essere facilmente attaccato. Potreste quindi voler seguire le indicazioni contenute nelle prossime sezioni.
In questo file sono indicati alcuni servizi di rete che dovranno essere attivi sulla vostra macchina. Alcune distribuzioni, invece dello standard inetd, utilizzano xinetd che fa uso di una struttura a directory e di un diverso file di configurazione. Se la vostra distribuzione utilizza inetd.conf, vi dovrebbe bastare commentare tutte le righe che servono per attivare servizi che non vi interessa offrire, inserendo un ``#'' all'inizio della riga stessa. Un tipico file inetd.conf al termine dell'installazione di debian (a secondo di quello che È stato installato) potrebbe essere simile al seguente:
# [...]
#
#:INTERNAL: Internal services
echo stream tcp nowait root internal
echo dgram udp wait root internal
chargen stream tcp nowait root internal
chargen dgram udp wait root internal
discard stream tcp nowait root internal
discard dgram udp wait root internal
daytime stream tcp nowait root internal
daytime dgram udp wait root internal
time stream tcp nowait root internal
time dgram udp wait root internal
#:STANDARD: These are standard services.
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/proftpd
#:BOOT: Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
#tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /boot
# [...]
La maggior parte di questi servizi (il nome indicato nella prima colonna),
sono servizi *nix standard, forniti per motivi di conformità con altri
sistemi *nix e per lo più inutili.
Nel nostro caso, il firewall non offrirà alcun servizio, nel senso che non vi sarà installato alcun server, salvo, forse, per il server ``ssh'' per l'amministrazione remota. Dovremmo quindi provvedere a commentare tutte le righe inserendo un cancelletto all'inizio della riga, come mostrato per il servizio ``tftp''.
Nel caso decidiate di lasciare alcuni servizi aperti, fate attenzione alla quinta colonna, che contiene i privilegi con cui il programma verrà eseguito, e alla sesta, che contiene il programma da eseguire. A parte i programmi indicati come internal, la maggior parte delle volte vedrete in sesta colonna il comando ``/usr/sbin/tcpd''. Questo, in gergo, viene definito un ``wrapper''. Quello che fa questo comando, infatti, è semplicemente eseguire ciò che viene indicato nella colonna successiva. L'utilità del wrapper è che prima di eseguire il comando indicato, quando riceverà una connessione, questo si occuperà di effettuare alcune verifiche decidendo se bloccare o consentire l'utilizzo del servizio.
Le decisioni di questo wrapper sono normalmente basate sul contenuto del file /etc/hosts.allow e /etc/hosts.deny. Maggiori informazioni sul formato di questo file possono essere reperite sulla pagina di manuale di ``hosts_access'' e ``hosts_options''.
In questa directory sono normalmente contenute due categorie di script:
Ogni runlevel, poi, può essere utilizzato in modo diverso e gli può venire assegnato un particolare significato. Ad esempio, l'operazione di shutdown consiste nel passaggio dal runlevel corrente al runlevel 0 (per cui, tutti gli script in rc0.d verranno utilizzati per bloccare i vari servizi e per eseguire le operazioni di spegnimento), il runlevel 2 è quello standard che viene eseguito quando si accende il computer, ed il 6 viene usato per il reboot.
Per rendere più sicuro il nostro firewall, dovremmo quindi prodigarci per evitare che durante l'accensione vengano avviati dei servizi che potrebbero essere utilizzati contro di noi.
Il metodo normalmente utilizzato è quello di eliminare i link simbolici (con un semplice rm) relativi a servizi che non ci interessano dalla directory relativa al runlevel utilizzato per avviare il sistema (normalmente ``rc2.d'', almeno in Debian). Alcune distribuzioni utilizzano metodi più esotici per gestire questi link simbolici, per cui vi conviene dare un'occhiata alla documentazione che vi è stata fornita.
In Debian per esempio, è possibile utilizzare lo script ``update-rc.d'', con qualcosa di simile a:
update-rc.d apache remove
per evitare che apache venga caricato durante l'avvio o lo shutdown. Un'altra alternativa
potrebbe essere quella di rimuovere del tutto apache (probabilmente inutile se non lo si
fa partire a boot-up), con il solito:
apt-get --purge remove apache
Per avere un elenco dei programmi attivi che offrono servizi in rete, potreste
voler utilizzare il comando netstat, con
# netstat -npla |less
che vi dovrebbe indicare le porte rimaste aperte ed i relativi processi.
In generale comunque, per i servizi che deciderete di lasciare attivi, ricordatevi dove possibile di:
Per cambiare impostazioni come la porta, i privilegi che il demone dovrà avere o per cambiare i banner di benvenuto, riferitevi alla documentazione specifica fornita col demone installato.