Repository 32bit  Forum
Repository 64bit  Wiki

Slackware System Hardening: differenze tra le versioni

Da Slacky.eu.
(Archiviata 10.x - la guida è scritta per 10.2)
 
(35 revisioni intermedie di un utente non mostrate)
Riga 1: Riga 1:
[[Category:Configurazione]]
 
Slackware System Hardening<br>
Slackware System Hardening<br>
Copyright (c) 2002, 2005, 2006 Jeffrey Denton<br>
Copyright (c) 2002, 2005, 2006 Jeffrey Denton<br>
Riga 14: Riga 13:
</pre>
</pre>
Quello che segue è un elenco di alcuni dei passaggi che ho seguito per migliorare la sicurezza dei sistemi su cui uso Slackware. Non vuole essere ssolutamente un elenco completo di tutto ciò che è possibile fare. Potete sia implementare tutti i suggerimenti riportati in questa guida o semplicemente scegliere solo quelli che vi sentite possano aiutare a mettere in sicurezza il vostro sistema.
+
Quello che segue è un elenco di alcuni dei passaggi che ho seguito per migliorare la sicurezza dei sistemi su cui uso Slackware. Non vuole assolutamente essere un elenco completo di tutto ciò che è possibile fare. Potrete sia realizzare tutti i suggerimenti riportati in questa guida oppure scegliere solo quelli che riteniate possano aiutarvi a mettere in sicurezza il vostro sistema.
= Warning =
= Warning =
Effettuare l'hardening di un sistema è un compromesso tra la sicurezza e l'usabilità dello stesso. Alcune delle impostazioni suggerite potrebbe inficiare l'usabilità del vostro sistema, così come danneggiare alcune cose. Tenete a portata di mano, nel caso non riusciate più ad accedere al vostro sistema, almeno uno tra i seguenti:
+
Effettuare l'hardening di un sistema è un compromesso tra la sicurezza e l'utilizzabilità dello stesso. Alcune delle impostazioni suggerite potrebbero inficiare la facilità di 'utilizzo del vostro sistema, così come danneggiare qualcosa all'interno dello stesso. Tenete a portata di mano, nel caso non riusciate più ad accedere al vostro sistema, almeno uno tra i seguenti:
* Tom's Rootboot - http://www.toms.net/rb/
* Tom's Rootboot - http://www.toms.net/rb/
* The "Live" CD that comes with the official version of Slackware
+
* Il "Live" CD della versione di Slackware che utilizzate
* The Slackware Install CDs
+
* I CD di installazione della versione di Slackware che avete installato sulla vostra macchina
Dovreste effettuare un backup di tutto ciò che ritenete importante, chè è difficile da ripristinare o di cui semplicemente non potete fare a meno, prima di procedere ad implementare ciò che è riportato in questa guida. Se non sapete che cosa una particolare impostazione o configurazione è deputata a fare, non utilizzatela sul vostro sistema. I contenuti di questo documento sono esclusivamente riferibili per un utilizzo sulla distribuzione Slackware Linux. Alcune delle impostazioni sono ridondate (massima protezione) o possono andare in conflitto. Siete stati avvisati ''Uomo avvisato, mezzo salvato .... ;)''
+
Prima di procedere con le indicazioni di seguito riportate si raccomanda di effettuare un backup di tutto ciò che ritenete importante, chè è difficile da ripristinare o di cui semplicemente non potete fare a meno. Se non riuscite a capire che cosa una particolare impostazione o configurazione è deputata a fare, non utilizzatela sul vostro sistema. I contenuti di questo documento sono esclusivamente riferibili per un utilizzo sulla distribuzione Slackware Linux. Alcune delle impostazioni sono ridondate (massima protezione) o possono andare in conflitto fra loro. Siete stati avvisati ''Uomo avvisato, mezzo salvato .... ;)''
= Note =
= Note =
* Le impostazioni definite si fondano sull'assunto che sia presente un solo utente sul sistema, "dentonj", modificate come da vostre specifiche esigenze.
* Le impostazioni definite si fondano sull'assunto che sia presente un solo utente sul sistema, "dentonj", modificate come da vostre specifiche esigenze.
* Sono riportate al fine di fornire ulteriore informazione le "man pages" associate alle impostazioni riportate.
+
* Al fine di fornire ulteriore informazioni si è ritenuto opportuno riportare il contenuto delle "man pages" associate alle impostazioni riportate.
* Commenterò questo documento se mai ne avrò il tempo.
+
* Completerò questo documento se mai ne avrò il tempo.
* Il documento è da intendersi ancora come bozza essendo presenti diversi TODO.
* Il documento è da intendersi ancora come bozza essendo presenti diversi TODO.
Riga 62: Riga 61:
</pre>
</pre>
L'opzione "-r" abilita il sistema a ricevere i messaggi relativi ai log di sistema dagli hosts remoti. L'opzione "-h" permette al syslog di inoltrare
+
L'opzione "-r" abilita il sistema a ricevere i messaggi relativi ai log di sistema dagli hosts remoti.
i messaggi che riceve dagli hosts remoti. Questo permette ai messaggi syslog di essere registrati su diversi sistemi, garantendo ridondanza. I messaggi
+
L'opzione "-h" permette al syslog di inoltrare i messaggi che riceve dagli hosts remoti.
syslog che sono inviati in rete non sono cifrati e possono essere facilmente catturati. Fare attenzione a syslog quando inoltra i "loops" usando le opzioni "-r" e "-h".
+
Questo permette ai messaggi syslog di essere registrati su diversi sistemi, garantendo ridondanza.
  +
I messaggi syslog che sono inviati in rete non sono cifrati e possono essere facilmente catturati.
  +
Fare attenzione a syslog quando inoltra i "loops" usando le opzioni "-r" e "-h".
Apre la porta UDP 514.
Apre la porta UDP 514.
Riga 137: Riga 136:
<pre>
<pre>
# Setup the /etc/motd to reflect the current kernel level:
+
# prepara il messaggio file /etc/motd a notificare il kernel:
# THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.
+
# QUESTO CANCELLA AD OGNI NUOVO BOOT QUALSIASI CAMBIAMENTO SIA STATO FATTO AL FILE /ETC/MOTD.
# COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.
+
# AGGIUNGI IL SEGNO DI COMMENTO ALLA RIGA DI SEGUITO SE VUOI CUSTOMIZZARE IL MESSAGGIO.
# echo "$(/bin/uname -sr)." > /etc/motd
# echo "$(/bin/uname -sr)." > /etc/motd
</pre>
</pre>
Riga 149: Riga 148:
/etc/motd, /etc/issue.net, /boot/boot_message.txt:
/etc/motd, /etc/issue.net, /boot/boot_message.txt:
*******************************************************************************************************************************************************
+
********************************************************************************************************
Sono vietati gli accessi non autorizzati; tutti gli accessi e le attività non esplicitamente autorizzate dall'amministratore non sono autorizzati. Tutte le attività sono monitorate e registrate. Non c'è privacy su questo sistema. Accessi e attività non autorizzati e ogni tipo di attività illecita sarà segnalata alle autorità preposte.
+
Sono vietati gli accessi non autorizzati; tutti gli accessi e le attività non esplicitamente autorizzate
*******************************************************************************************************************************************************
+
dall'amministratore non sono autorizzati. Tutte le attività sono CONTROLLATE e registrate.
  +
Non c'è privacy su questo sistema. Accessi e attività non autorizzati e ogni tipo di attività illecita
  +
sarà segnalata alle autorità preposte.
  +
*********************************************************************************************************
</pre>
</pre>
O:
O:
<pre>
<pre>
"Sembra che vi siate persi. Per favore ritornate nel vostro piccolo angolino in Internet."
+
"Sembra che vi siate persi. Per favore ritornate nel vostro piccolo angolo in Internet."
</pre>
</pre>
Riga 162: Riga 161:
</pre>
</pre>
Se lilo restituisce degli errori, provate a capire la natura del problema e rieseguite il comando prima di riavviare il sistema. Altrimenti pootreste
+
Se lilo restituisce degli errori, provate a capire la natura del problema, apportate le necessarie correzioni e rieseguite nuovamente lilo prima di riavviare il sistema. E' importante che lilo non restituisca alcun messaggio di errore prima di eseguire il reboot, altrimenti potreste
trovarvi con un sistema che non si avvia in maniera appropriata.
trovarvi con un sistema che non si avvia in maniera appropriata.
Riga 212: Riga 211:
/var/log/btmp:
/var/log/btmp:
Il file di log btmp registra tutti i tentativi di accesso al sistema falliti. Il comando lastb elenca i contenuti del file di log.
+
Il file di log btmp registra tutti i tentativi non riusciti di accesso al sistema. Il comando lastb elenca i contenuti del file di log.
<pre>
<pre>
Riga 222: Riga 221:
</pre>
</pre>
Gli utenti che provano a loggarsi inserendo per prima la loro password saranno registrati in /var/log/btmp e mostrati dal comando lastb.
+
Gli utenti che provano a loggarsi inserendo la loro password per prima cosa finiranno per essere registrati in /var/log/btmp. Sarà sufficiente eseguire lastb per ottenere a terminale la lista di questi.
<pre>
<pre>
Riga 325: Riga 324:
Molti degli scripts rc sono avviati qui. Dallo script si legge:<br>
Molti degli scripts rc sono avviati qui. Dallo script si legge:<br>
'''Uncomment or comment out sections depending on which services you site requires.'''
+
'''commenta o elimina il segno di commento alle differenti sezioni, in funzione di quali servizi siano necessari al tuo sito.'''
Ci sono due modalità per impedire ai demoni e ai servizi di avviarsi. La prima è quella di rendere lo script che avvia il demone o il servizio non eseguibile:
Ci sono due modalità per impedire ai demoni e ai servizi di avviarsi. La prima è quella di rendere lo script che avvia il demone o il servizio non eseguibile:
Riga 337: Riga 336:
Righe 100-103:
Righe 100-103:
<pre>
<pre>
# Start the BIND name server daemon:
+
# Avvia il demone del server dei nomi BIND:
# if [ -x /etc/rc.d/rc.bind ]; then
# if [ -x /etc/rc.d/rc.bind ]; then
# /etc/rc.d/rc.bind start
# /etc/rc.d/rc.bind start
Riga 343: Riga 342:
</pre>
</pre>
E' inoltre possibile utilizzare entrambi i metodi, anche se questa strada è ridondante. Tuttavia, impiegare entrambe le possibilità dovrebbe impedire ai demoni dall'avviarsi accidentalmente in fase di avvio in caso facciate degli errori nell'assegnazione dei permessi ad un servizio. Alcuni demoni non si avvieranno di default all'avvio in quanto i loro file di configurazione non sono presenti o non sono impostati correttamente.
+
E' inoltre possibile utilizzare entrambi i metodi, anche se questo è un sistema ridondante. Tuttavia, impiegare entrambe le possibilità dovrebbe impedire ai demoni dall'avviarsi accidentalmente in fase di avvio in caso facciate degli errori nell'assegnazione dei permessi ad un servizio. Alcuni demoni non si avvieranno di default all'avvio in quanto i loro file di configurazione non sono presenti o non sono scritti correttamente.
Commentare le seguenti righe:
Commentare le seguenti righe:
<pre>
<pre>
Lines 20 - 53: Disable mounting of NFS filesystems
+
Lines 20 - 53: Disabilita il montaggio di filesystems NFS
Lines 58 - 60: Disable RPC portmapper
+
Lines 58 - 60: Disabilita il sistema di portmapping RPC
Lines 63 - 68: Disable mount of SMB filesystems
+
Lines 63 - 68: Disabilita il montaggio di filesystems SMB
Lines 90 - 92: Disable inetd
+
Lines 90 - 92: Disabilita inetd
Lines 101 - 103: Disable BIND
+
Lines 101 - 103: Disabilita BIND
Lines 106 - 108: Disable NIS
+
Lines 106 - 108: Disabilita NIS
Lines 115 - 117: Disable NFS
+
Lines 115 - 117: Disabilita NFS
</pre>
</pre>
Riga 360: Riga 359:
<pre>
<pre>
Lines 103 - 105: Disable dnsmasq
+
Lines 103 - 105: Disabilita dnsmasq
Lines 108 - 114: Disable CUPS and lpd
+
Lines 108 - 114: Disabilita CUPS and lpd
Lines 117 - 119: Disable netatalk
+
Lines 117 - 119: Disabilita netatalk
Lines 160 - 162: Disable atd
+
Lines 160 - 162: Disabilita atd
Lines 194 - 196: Disable saslauthd
+
Lines 194 - 196: Disabilita saslauthd
Lines 199 - 201: Disable sendmail
+
Lines 199 - 201: Disabilita sendmail
Lines 205 - 212: Disable APM and ACPI
+
Lines 205 - 212: Disabilita APM e ACPI
Lines 230 - 232: Disable HP Officejet
+
Lines 230 - 232: Disabilita HP Officejet
Lines 235 - 237: Disable MySQL
+
Lines 235 - 237: Disabilita MySQL
Lines 240 - 242: Disable Apache
+
Lines 240 - 242: Disabilita Apache
Lines 224 - 226: Disable Samba
+
Lines 224 - 226: Disabilita Samba
Lines 234 - 236: Disable SystemV init scripts
+
Lines 234 - 236: Disabilita SystemV init scripts
</pre>
</pre>
Riga 378: Riga 377:
<pre>
<pre>
Lines 16 - 22: Disable hotplug
+
Lines 16 - 22: Disabilita hotplug
Lines 39 - 43: Disable udev
+
Lines 39 - 43: Disabilita udev
Lines 192 - 196: Disable isapnp
+
Lines 192 - 196: Disabilita isapnp
Lines 292 - 294: Disable SystemV init scripts
+
Lines 292 - 294: Disabilita SystemV init scripts
</pre>
</pre>
Riga 395: Riga 394:
/etc/rc.d/rc.alsa:<br>
/etc/rc.d/rc.alsa:<br>
Advanced Linux Sound Architecture
+
Architettura avanzata del sistema audio di linux (ALSA Advanced Linux Sound Architecture)
<pre>
<pre>
Riga 425: Riga 424:
/etc/rc.d/rc.cups:<br>
/etc/rc.d/rc.cups:<br>
Common UNIX Printing System
+
Sistema di stampa UNIX (CUPS Common UNIX Printing System)
<pre>
<pre>
Riga 435: Riga 434:
/etc/rc.d/rc.dnsmasq:<br>
/etc/rc.d/rc.dnsmasq:<br>
A lightweight DHCP and caching DNS server
+
DNSMASQ è un server DHCP e caching DNS
<pre>
<pre>
Riga 445: Riga 444:
/etc/rc.d/rc.gpm:<br>
/etc/rc.d/rc.gpm:<br>
General Purpose Mouse
+
Sistema di mouse generico (GPM General Purpose Mouse)
<pre>
<pre>
Riga 454: Riga 453:
/etc/rc.d/rc.hotplug:<br>
/etc/rc.d/rc.hotplug:<br>
Linux hotplugging support scripts
+
Scripts di supporto al sistema di hotplugging di Linux
<pre>
<pre>
Riga 463: Riga 462:
/etc/rc.d/rc.httpd:<br>
/etc/rc.d/rc.httpd:<br>
Apache webserver
+
Webserver Apache
<pre>
<pre>
Riga 514: Riga 513:
/etc/rc.d/rc.portmap:<br>
/etc/rc.d/rc.portmap:<br>
The RPC portmapper
+
il portmapper RPC
Questo script è invocato da /etc/rc.d/rc.nfsd. Dal momento che il file /etc/exports non è configurato in maniera appropriata di default, questo servizio non si avvierà.
Questo script è invocato da /etc/rc.d/rc.nfsd. Dal momento che il file /etc/exports non è configurato in maniera appropriata di default, questo servizio non si avvierà.
Riga 578: Riga 577:
/etc/rc.d/rc.udev:<br>
/etc/rc.d/rc.udev:<br>
"udev fornisce un indice dei dispositivi dinamico contenente solo i file per i dispositivi presenti sul sistema allo stato attuale. Crea e rimuove
+
"udev fornisce un indice dei dispositivi dinamico contenente solo i file per i dispositivi effettivamente presenti sul sistema. Udev crea e rimuove
i file dei nodi dei dispositivi solitamente localizzati nella directory /dev."
i file dei nodi dei dispositivi solitamente localizzati nella directory /dev."
Riga 603: Riga 602:
Il Servizio di Informazioni di Rete
Il Servizio di Informazioni di Rete
Il contenuto di questo file è decommentato di default.
+
Il contenuto di questo file è commentato di default.
<pre>
<pre>
Riga 617: Riga 616:
</pre>
</pre>
Questo impedisce agli utenti di leggere il contenuto di tali directory. Al tempo stesso permette loro di continuare a creare, di accedere e di modificare i file presenti in queste directory se conoscono il nome del file. Questa impostazione non impedisce agli utenti di avviare eseguibili presenti nella directory /tmp.
+
Questo impedisce agli utenti di leggere il contenuto di tali directory. Al tempo stesso permette loro di continuare a creare, di accedere e di modificare i file presenti in queste directory se conoscono i nomi dei file contenuti all'interno di esse. Questa impostazione non impedisce agli utenti di avviare eseguibili presenti nella directory /tmp.
<pre>
<pre>
Riga 654: Riga 653:
<pre>
<pre>
# mandatory - enter a password with every boot
+
# mandatory - inserire la password per eseguire il boot del sistema
# restricted - enter a password only when a boot time parameter
+
# limited - richiedere la password solamente quando si vuole effettuare un boot
# is used (e.g. - "linux single")
+
# dando un parametro aggiuntivo (ad esempio - "linux single")
# Pick one
+
# scegli una delle 2 mandatory oppure
mandatory
+
# limited
#restricted
 
# Use the "-p" option with the lilo command to store the hashed password
+
# Utilizza il comando lilo con l'opzione "-p" per memorizzare le hashed password
# in a separate file
+
# in un file a parte
password=""
password=""
Riga 676: Riga 675:
</pre>
</pre>
Utilizzare l'impostazione 'password=""' e poi lilo con l'opzione '-p' vi richiederà di inserire una parola chiave mentre lilo è in fase di esecuzione.
+
Utilizzare l'impostazione 'password=""' e poi lilo con l'opzione '-p' vi richiederà di inserire una parola chiave (password) mentre lilo è in fase di esecuzione. La password è memorizzata sotto forma di hash in /etc/lilo.conf.shs. In realtà la pagina di man di lilo riporta che tale hash è salvato in /etc/lilo.conf.crc. Comunque sia, questo è meglio che avere la password riportata in chiaro all'interno di /etc/lilo.conf. Le opzioni di configurazione sopra riportate richiederanno che sia inserita una password ogni qual volta il sistema si avvia. Potreste non voler utilizzare l'opzione "mandatory" nel caso in cui l'uptime del sistema sia importante o quando normalmente accedete al sistema da remoto. In questi casi, utilizzate invece l'opzione "restricted".
La password è memorizzata sotto forma di hash in /etc/lilo.conf.shs. In realtà la pagina di man di lilo riporta che tale hash è salvato in etc/lilo.conf.crc. Comunque sia, questo è meglio che non avere la password riportata in chiaro all'interno di /etc/lilo.conf. Le opzioni di configurazione sopra riportate richiederanno che sia inserita una password ogni qual volta il sistema si avvia. Potreste non voler utilizzare l'opzione "mandatory" nel caso in cui l'uptime del sistema sia importante o quando normalmente accedete al sistema da remoto. In questi casi, utilizzate invece l'opzione "restricted".
 
<pre>
<pre>
Riga 690: Riga 689:
</pre>
</pre>
Solo l'utente root e l'utente dentonj possono effettuare il login locale al sistema. Questa impostazione non concerne la procedura di log in tramite ssh.
+
Solo l'utente root e l'utente dentonj possono effettuare il login locale al sistema. Questa impostazione non limita l'accesso da remoto al sistema tramite ssh.
Errore prodotto: "Login incorrect"
+
Messaggio d'errore restituito: "Login incorrect"
<pre>
<pre>
Riga 745: Riga 744:
Solo l'utente dentonj è autorizzato a "passare" ad altri utenti. O, solo i membri del gruppo wheel possono switchare su altri utenti.
Solo l'utente dentonj è autorizzato a "passare" ad altri utenti. O, solo i membri del gruppo wheel possono switchare su altri utenti.
Errore prodotto: "Access to su to that account DENIED." "You are not authorized to su root"
+
Messaggio d'errore restituito: "Access to su to that account DENIED." "You are not authorized to su root"
<pre>
<pre>
Riga 762: Riga 761:
</pre>
</pre>
La terza opzione specifica le finestre temporali in cui è permesso il login al sistema. Se il campo non è impostato, l'utente è impossibilitato a effettuare il login al sistema. L'opzione "*:*:" rappresenta una regola di divieto di default finalizzata a registrare tutti coloro i quali non sono ancora registrati. Il terzo campo riporta i tempi nei quali un utente è autorizzato ad effettuare il login. Se tale campo è vuoto, all'utente non è permesso accedere al sistema.
+
Il terzo campo specifica le finestre temporali in cui è permesso il login al sistema. Se il campo non è impostato, l'utente è impossibilitato a effettuare il login al sistema. L'opzione "*:*:" rappresenta una regola di divieto di default finalizzata a registrare tutti coloro i quali non sono ancora registrati. Il terzo campo riporta i tempi nei quali un utente è autorizzato ad effettuare il login. Se tale campo è vuoto, all'utente non è permesso accedere al sistema.
Il demone logoutd è di solito eseguito al fine di rafforzare le restrizione ai tempi di login elencati in /etc/porttime.
Il demone logoutd è di solito eseguito al fine di rafforzare le restrizione ai tempi di login elencati in /etc/porttime.
Error riprodotto: "Invalid login time"
+
Messaggio d'errore restituito: "Invalid login time"
<pre>
<pre>
Riga 775: Riga 774:
<pre>
<pre>
# Enforce login time restrictions set in /etc/porttime
+
# rinforzare le restrizioni di tipo temporale di login definite in /etc/porttime
if [ -x /usr/sbin/logoutd ]; then
if [ -x /usr/sbin/logoutd ]; then
/usr/sbin/logoutd
/usr/sbin/logoutd
Riga 798: Riga 797:
L'impostazione "* LO" è una regola di default per tutti quelli che non sono stati precedentemente elencati come utenti. Il numero dei login permessi al sistema è impostato a zero, ciò significa che chiunque non preventivamente registrato, non è autorizzato ad effettuare il login. Queste impostazioni non sono riferibili all'utente root.
L'impostazione "* LO" è una regola di default per tutti quelli che non sono stati precedentemente elencati come utenti. Il numero dei login permessi al sistema è impostato a zero, ciò significa che chiunque non preventivamente registrato, non è autorizzato ad effettuare il login. Queste impostazioni non sono riferibili all'utente root.
Errore prodotto: "Too many logins."
+
Messaggio d'errore restituito: "Too many logins."
<pre>
<pre>
Riga 832: Riga 831:
</pre>
</pre>
Non impstare il faillog per l'utente root. E' una delle poche impostazioni che può effettivamente impedire a tale utente di effettuare il login. L'utilizzo di faillog può causare un denial of service nel caso in cui venisse raggiunto il massimo numero di login. Utilizzare con attenzione.
+
Non impostare il faillog per l'utente root. E' una delle poche impostazioni che può effettivamente impedire a tale utente di effettuare il login. L'utilizzo di faillog può causare un denial of service nel caso in cui venisse raggiunto il massimo numero di login. Utilizzare con attenzione.
Errore prodotto: "Login incorrect"
+
Messaggio d'errore restituito: "Login incorrect"
<pre>
<pre>
Riga 871: Riga 870:
</pre>
</pre>
Aggiungere /bin/false as come shell ai seguenti utenti:
+
Aggiungere /bin/false come shell ai seguenti utenti:
<pre>
<pre>
Riga 883: Riga 882:
</pre>
</pre>
Errore riprodotto:
+
Messaggio d'errore restituito:
<pre>
<pre>
Riga 899: Riga 898:
Durata della password:
Durata della password:
Nota: Non utilizzate questa procedura se volete mantenere immutati i file /etc/passwd e /etc/shadow. Se lasciate la password scadere non sarete più in grado di effettuare il login sino a quando la password non sarà resettata. Ma se il file /etc/shadow non è modificabile non sarete più in grado di efettuare il login. Per rimediare al problema occorre che avviate il sistema con tomsrtbt o con un CD di avvio di Linux, montiate la partizione del disco fisso dove si trova la directory /etc e rimuoviate l'attributo di immutabilità dal file mnt/etc/shadow (chattr -i...)
+
Nota: Non utilizzate questa procedura se volete mantenere immutati i file /etc/passwd e /etc/shadow (chattr +i ...). Se lasciate la password scadere non sarete più in grado di effettuare il login sino a quando la password non sarà resettata. Ma se il file /etc/shadow non è modificabile non sarete più in grado di efettuare il login. Per rimediare al problema occorre che avviate il sistema con tomsrtbt o con un CD di avvio di Linux, montiate la partizione del disco fisso dove si trova la directory /etc e rimuoviate l'attributo di immutabilità dal file mnt/etc/shadow (chattr -i...)
<pre>
<pre>
Riga 929: Riga 928:
</pre>
</pre>
Ripetei questi comandi per i gruppi seguenti:
+
Ripetete questi comandi per i gruppi seguenti:
* adm
* adm
Riga 981: Riga 980:
Esistono diverse problematiche di sicurezza quando si permette agli utenti di utilizzare il comando sudo. Assicuratevi di aver letto completamente le pagine di manuale relative a sudo e sudoers.
Esistono diverse problematiche di sicurezza quando si permette agli utenti di utilizzare il comando sudo. Assicuratevi di aver letto completamente le pagine di manuale relative a sudo e sudoers.
Esistono tipicamente due approcci per la configurazione di sudo. Il primo è quello di permettere all'utente di eseguire ogni comando. Questo equivale praticamente a concedere agli utenti un accesso in qualità di super user a root. Se decidete di utilizzare questa modalità, dovreste richiedere all'utente l'inserimento della password di root ogniqualvolta utilizza sudo. Due password sarebbero quindi necessarie per ottenere i privilegi di root.
+
Esistono tipicamente due approcci per la configurazione di sudo. Il primo è quello di permettere all'utente di eseguire ogni comando. Questo equivale praticamente a concedere agli utenti un accesso a root come super user (su). Se decidete di utilizzare questa modalità, dovreste richiedere all'utente l'inserimento della password di root ogniqualvolta utilizza sudo. Due password sarebbero quindi necessarie per ottenere i privilegi di root.
Il secondo approccio è quello di configurare sudo in modo tale da permettere l'esecuzione solo di un numero limitato di comandi. Se decidete di utilizzare questa modalità, ci saranno alcuni comandi che non vorrete permettere di eseguire all'utente. Questi comandi possono essere soggetti ad abuso e assegnare all'utente pieno accesso al sistema. Assicuratevi di non aggiungere i seguenti comandi o quelli elencati nella sezione riportata più oltre e denominata "Scorciatoie della Shell" al file
+
Il secondo approccio è quello di configurare sudo in modo tale da permettere l'esecuzione solo di un numero limitato di comandi. Se decidete di utilizzare questa modalità, ci saranno alcuni comandi che non vorrete permettere di eseguire all'utente. Assegnare all'utente pieno accesso al sistema tramite l'esecuzione di su può essere pericoloso per la stabilità e l'integrità del sistema. Assicuratevi di non aggiungere i seguenti comandi o quelli elencati nella sezione riportata più oltre e denominata "Scorciatoie della Shell" al file /etc/sudoers:
 
/etc/sudoers:
 
<pre>
<pre>
Riga 999: Riga 998:
</pre>
</pre>
Questo elenco potrebbe essere molto più esteso.
+
Questo elenco potrebbe essere molto più lungo.
<pre>
<pre>
Riga 1 010: Riga 1 009:
/etc/ftpusers:<br>
/etc/ftpusers:<br>
Questo file è utilizzato per impedire a tutti quelli in esso elencati il login al server ftp locale. Aggiungete i seguenti account:
+
Questo file è utilizzato per impedire a tutti coloro in esso elencati il login al server ftp locale. Aggiungete i seguenti account:
* bin
* bin
Riga 1 141: Riga 1 140:
#
#
# Xstartup
# Xstartup
# This program is run as root after the user is verified
+
# Questo programma viene eseguito come utente root una volta che l'utente sia stato verificato
#
#
# man xdm
# man xdm
Riga 1 165: Riga 1 164:
# Xreset
# Xreset
#
#
# This program is run as root after the session ends
+
# Questo programma viene eseguito come utente root una volta che la sessione sia terminata
#
#
# man xdm
# man xdm
Riga 1 191: Riga 1 190:
/etc/X11/xserver/SecurityPolicy:<br>
/etc/X11/xserver/SecurityPolicy:<br>
Commentare le righe seguenti:
+
Aggiungere il segno di commento a tutte le righe che seguono:
<pre>
<pre>
# If you are using Motif, you probably want these.
+
# se state usando Motif probabilente dovete utilizzare le linee seguenti.
#property _MOTIF_DEFAULT_BINDINGS root ar iw
#property _MOTIF_DEFAULT_BINDINGS root ar iw
#property _MOTIF_DRAG_WINDOW root ar iw
#property _MOTIF_DRAG_WINDOW root ar iw
Riga 1 201: Riga 1 200:
#property _MOTIF_DRAG_ATOM_PAIRS any ar iw
#property _MOTIF_DRAG_ATOM_PAIRS any ar iw
# If you are running CDE you also need these
+
# se state usando CDE probabilmente avrete bisogno di utilizzare le linee seguenti
#property _MOTIF_WM_INFO root arw
#property _MOTIF_WM_INFO root arw
#property TT_SESSION root irw
#property TT_SESSION root irw
Riga 1 207: Riga 1 206:
#property "SDT Pixel Set" any irw
#property "SDT Pixel Set" any irw
# The next two rules let xwininfo -tree work when untrusted.
+
# le 2 regole seguenti permettono a xwininfo di funzionare qualora untrusted.
#property WM_NAME any ar
#property WM_NAME any ar
# Allow read of WM_CLASS, but only for windows with WM_NAME.
+
# Permette la lettura di WM_CLASS, ma solo per quelle fineste aventi WM_NAME.
# This might be more restrictive than necessary, but demonstrates
+
# Questo potrebbe essere più restrittivo di quanto effettivamente necessario, ma mostra
# the <required property> facility, and is also an attempt to
+
# le possibilità di <required property>, ed è un tentativo di rendere visibili
# say "top level windows only."
+
# le "top level windows only."
#property WM_CLASS WM_NAME ar
#property WM_CLASS WM_NAME ar
# These next three let xlsclients work untrusted. Think carefully
+
# le tre righe seguenti consentono a xlsclients di funzionare qualora untrusted. Pensateci bene
# before including these; giving away the client machine name and command
+
# prima di levare il segno di commento a queste righe; mostrano infatti il comando ed il nome della macchina
# may be exposing too much.
+
# il che potrebbe essere rischioso.
#property WM_STATE WM_NAME ar
#property WM_STATE WM_NAME ar
#property WM_CLIENT_MACHINE WM_NAME ar
#property WM_CLIENT_MACHINE WM_NAME ar
#property WM_COMMAND WM_NAME ar
#property WM_COMMAND WM_NAME ar
# To let untrusted clients use the standard colormaps created by
+
# Queste righe cosentono ad "untrusted clients" di usare le colormaps standard generate da
# xstdcmap, include these lines.
+
# xstdcmap. Se è quello che volete levate il segno di commento alle righe seguenti.
#property RGB_DEFAULT_MAP root ar
#property RGB_DEFAULT_MAP root ar
#property RGB_BEST_MAP root ar
#property RGB_BEST_MAP root ar
Riga 1 232: Riga 1 231:
#property RGB_GRAY_MAP root ar
#property RGB_GRAY_MAP root ar
# To let untrusted clients use the color management database created
+
# Per far si che untrusted clients usino il database d gestione colori generato da
# by xcmsdb, include these lines.
+
# xcmsdb, levate il segno di commento alle linee seguenti.
#property XDCCC_LINEAR_RGB_CORRECTION root ar
#property XDCCC_LINEAR_RGB_CORRECTION root ar
#property XDCCC_LINEAR_RGB_MATRICES root ar
#property XDCCC_LINEAR_RGB_MATRICES root ar
Riga 1 239: Riga 1 238:
#property XDCCC_GRAY_CORRECTION root ar
#property XDCCC_GRAY_CORRECTION root ar
# To let untrusted clients use the overlay visuals that many vendors
+
# Per far si che untrusted clients usino overlay visuals che molti rivenditori
# support, include this line.
+
# supportano, levate il segno di commento alla linea seguente.
#property SERVER_OVERLAY_VISUALS root ar
#property SERVER_OVERLAY_VISUALS root ar
</pre>
</pre>
Riga 1 304: Riga 1 303:
/opt/kde/share/config/kdm/Xstartup:<br>
/opt/kde/share/config/kdm/Xstartup:<br>
Decommentare le righe seguenti:
+
levare il segno di commento (#) alle righe seguenti:
<pre>
<pre>
Riga 1 312: Riga 1 311:
/opt/kde/share/config/kdm/Xreset:<br>
/opt/kde/share/config/kdm/Xreset:<br>
Decommentare le righe seguenti:
+
:<br>
  +
levare il segno di commento (#) alle righe seguenti:
<pre>
<pre>
Riga 1 321: Riga 1 320:
/opt/kde/share/config/kdm/Xaccess:<br>
/opt/kde/share/config/kdm/Xaccess:<br>
Decommentare le righe seguenti:
+
levare il segno di commento (#) alle righe seguenti:
<pre>
<pre>
Riga 1 347: Riga 1 346:
</pre>
</pre>
Allo stato delle cose non penso che quanto di seguito riportatp sia necessario, ma è stato comunque incluso perchè quasi tutti i documenti relativi alla sicurezza su Linux lo raccomandano. Tale impostazione impedisce agli utenti di riavviare il sistema utilizzando la combinazione di tasti Ctrl-Alt-Del. Il riavvio del sistema con Ctrl-Alt-Del funziona unicamente se si ha accesso fisico alla macchina. Comunque anche se disabilitate questa funzionalità, nulla impedisce a qualcuno di staccare l'alimentatore o di premere il pulsante di reset del sistema per forzare un riavvio della macchina. La maggior parte dei window managers blocca comunque il Ctrl-Alt-Del.
+
Allo stato delle cose non penso che quanto di seguito riportato sia necessario, ma è stato comunque incluso perchè quasi tutti i documenti relativi alla sicurezza su Linux lo raccomandano. Tale impostazione impedisce agli utenti di riavviare il sistema utilizzando la combinazione di tasti Ctrl-Alt-Del. Il riavvio del sistema con Ctrl-Alt-Del funziona unicamente se si ha accesso fisico alla macchina. Comunque anche se disabilitate questa funzionalità, nulla impedisce a qualcuno di staccare l'alimentatore o di premere il pulsante di reset del sistema per forzare un riavvio della macchina. La maggior parte dei window managers blocca comunque il Ctrl-Alt-Del.
L'unica occasione in cui disabilitare l'impostazione precedente è proficuo è quando si ha un amministratore di Windows che utilizza Linux. In questo caso infatti non volete che riavviino il sistema tutte le volte che desiderano bloccare il sistema o utilizzare Task Manager.
+
L'unica occasione in cui disabilitare l'impostazione precedente è proficuo è quando si ha un amministratore di Windows che utilizza Linux. In questo caso infatti non volete che riavvino il sistema tutte le volte che desiderano bloccare il sistema o utilizzare Task Manager.
O potete utilizzare /etc/shutdown.allow per controllare quando (non sempre invece da chi) il sistema può essere riavviato con la combinazione di tasti Ctrl-Alt-Del. Vi sono tuttavia preoccupazioni in termini di sicurezza. Controllate la pagina di man per gli ulteriori dettagli relativi a shutdown.
+
O potete utilizzare /etc/shutdown.allow per controllare quando (non da chi) il sistema può essere riavviato con la combinazione di tasti Ctrl-Alt-Del. Utilizzando questo metodo vi sono tuttavia preoccupazioni in termini di sicurezza. Controllate la pagina di man per gli ulteriori dettagli relativi a shutdown.
  +
  +
[/rant]
Aggiungete l'opzione "-a" alla seguente riga di /etc/inittab per utilizzare /etc/shutdown.allow:
Aggiungete l'opzione "-a" alla seguente riga di /etc/inittab per utilizzare /etc/shutdown.allow:
Riga 1 424: Riga 1 423:
Umask controlla i permessi assegnati ai nuovi file e directory che vengono creati. Ad esempio con umask 022, i nuovi file avranno i permessi 644 e le nuove directory i permessi 755. Impostare umask a 077 comporterà avere i nuovi file creati con i permessi 600 e le nuove directory con i permessi 700.
Umask controlla i permessi assegnati ai nuovi file e directory che vengono creati. Ad esempio con umask 022, i nuovi file avranno i permessi 644 e le nuove directory i permessi 755. Impostare umask a 077 comporterà avere i nuovi file creati con i permessi 600 e le nuove directory con i permessi 700.
Utilizzare umask 077 impedisce agli altri account di accedere ai file di proprietà dell'utente. Utilizzare umask 022 permette agli altri account di accedere ai file utente a meno che tale utente non modifichino i permessi. Si può utilizzare cron al fine di rimuovere periodicamente i permessi dalle home directory degli utenti.
+
Utilizzare umask 077 impedisce agli altri account di accedere ai file di proprietà dell'utente. Utilizzare umask 022 permette agli altri account di accedere ai file utente a meno che tale utente non modifichi i permessi. Si può utilizzare cron al fine di rimuovere periodicamente i permessi dalle home directory degli utenti.
Impostare umask in maniera restrittiva può causare problemi nel momento in cui si creano o si modificano i file che necessitano di essere accessibili in lettura da parte di chiunque. Un esempio di file di questo tipo sono le pagine web presenti in /var/www/htdocs.
Impostare umask in maniera restrittiva può causare problemi nel momento in cui si creano o si modificano i file che necessitano di essere accessibili in lettura da parte di chiunque. Un esempio di file di questo tipo sono le pagine web presenti in /var/www/htdocs.
Riga 1 439: Riga 1 438:
man limits
man limits
</pre>
</pre>
 
= Filesystem =
= Filesystem =
Riga 1 580: Riga 1 578:
Non compilare il parametro del kernel CAP_LINUX_IMMUTABLE. Ciò impedisce che sia rimosso l'attributo +i. Io eseguo 'lcap' solitamente dallo script rc.local, che deriva a sua volta da rc.M. Per rimuovere l'attributo +i da un file, occorre riavviare il sistema e accedere in modalità "single user". Di fatto questa è una delle rare occasioni in cui occorre che realmente Linux sia riavviato.
Non compilare il parametro del kernel CAP_LINUX_IMMUTABLE. Ciò impedisce che sia rimosso l'attributo +i. Io eseguo 'lcap' solitamente dallo script rc.local, che deriva a sua volta da rc.M. Per rimuovere l'attributo +i da un file, occorre riavviare il sistema e accedere in modalità "single user". Di fatto questa è una delle rare occasioni in cui occorre che realmente Linux sia riavviato.
Utilizzare lcap nel caso in cui accediate o gestiate il sistema da remoto, può causare dei problemi.
+
Nel caso in cui accediate o gestiate il sistema esclusivamente da remoto l'utilizzo di lcap può causare problemi.
Nota: Applicate queste impostazioni solo dopo avere finito di configurare il vostro sistema.
Nota: Applicate queste impostazioni solo dopo avere finito di configurare il vostro sistema.
Riga 1 615: Riga 1 613:
24) *CAP_SYS_RESOURCE 25) *CAP_SYS_TIME
24) *CAP_SYS_RESOURCE 25) *CAP_SYS_TIME
26) *CAP_SYS_TTY_CONFIG
26) *CAP_SYS_TTY_CONFIG
* = Capabilities currently allowed
+
* = funzionalità attualmente consentite
</pre>
</pre>
Riga 1 723: Riga 1 721:
Shell Escapes:<br>
Shell Escapes:<br>
Di seguito un elenco di programmi che possono portare ad ottenere una shell. Questo può essere fatto o direttamente avviando una nuova shell, eseguendo comandi di shell o avviando un editor di testo che può a sua volta essere utilizzato per avviare la shell.
+
Di seguito un elenco di programmi che possono portare ad ottenere una shell. Questo può essere fatto: direttamente avviando una nuova shell, eseguendo comandi di shell (fra i quali avviare una nuova shell) o avviando un editor di testo che può a sua volta essere utilizzato per avviare la shell.
Questi programmi non sono fonte di preoccupazione in termini di security in quanto tali. Tuttavia se sono impostati SUID root o se vengono utilzzati ricorrendo a sudo, possono consentire agli utenti di ottenere l'accesso ad una shell con privilegi amministrativi.
+
Questi programmi non sono fonte di preoccupazione in termini di security in quanto tali. Tuttavia se sono impostati SUID root o se vengono utilzzati ricorrendo a sudo, possono consentire agli utenti di ottenere l'accesso ad una shell con privilegi di amministratore.
/etc/sudoers:
/etc/sudoers:
Riga 1 795: Riga 1 793:
find / -type l -print | perl -nle '-e || print'
find / -type l -print | perl -nle '-e || print'
</pre>
</pre>
 
= Rete =
= Rete =
Riga 1 812: Riga 1 809:
/etc/rc.d/rc.firewall:<br>
/etc/rc.d/rc.firewall:<br>
Il file /etc/rc.d/rc.inet2 controlla l'esistenza dello script rc.firewall e poi lo esegue. Create uno script per il firewall e mettetelo qui.
Il file /etc/rc.d/rc.inet2 controlla l'esistenza dello script rc.firewall e poi lo esegue. Create uno script per il firewall e mettetelo qui.
 
= Cron =
= Cron =
Riga 1 879: Riga 1 875:
</pre>
</pre>
Non consentite a tutti di utilzzare at.
+
Non consentite ad alcuno di utilzzare at.
Ancora meglio sarebbe rimuovere il pacchetto at dal sistema:
Ancora meglio sarebbe rimuovere il pacchetto at dal sistema:
Riga 1 918: Riga 1 914:
<pre>
<pre>
# Improve file system performance
+
# migliora le prestazioni del file system
vm.bdflush = 60 64 64 256 500 300 80 0 0
vm.bdflush = 60 64 64 256 500 300 80 0 0
# Increase swap bandwidth system performance
+
# aumenta la banda di swap di conseguenza migliora le prestazioni del sistema
vm.kswapd = 512 32 32
vm.kswapd = 512 32 32
# Enables/Disables memory over commitment
+
# abilita/disabilita l'over commitment di memoria
vm.overcommit_memory = 0
vm.overcommit_memory = 0
# Increases number of page tables keeps in a per-processor cache
+
# aumenta il numero delle page tables mantenute nella cache del processore
vm.pagetable_cache = 25 50
vm.pagetable_cache = 25 50
# Increase limit of file-handles
+
# aumenta il limite del numero max di file-handles
fs.file-max = 8192
fs.file-max = 8192
# Enable/Disable ignoring ping request
+
# abilita/disabilita la possibilità di ignorare le richieste di ping
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_echo_ignore_all = 1
# Enable/Disable ignoring broadcasts request
+
# abilita/disabilita la possibilità di ignorare le richieste di broadcasts
net.ipv4.icmp_ignore_broadcasts = 1
net.ipv4.icmp_ignore_broadcasts = 1
# Enable/Disable IP source routing
+
# abilita/disabilita l'IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Enable/Disable TCP SYN cookie protection
+
# abilita/disabilita la TCP SYN cookie protection
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syncookies = 1
# Enable/Disable ICMP redirect acceptance
+
# abilita/disabilita l'accettazione di reindirizzamento ICMP
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
# Enable/Disable bad error message protection
+
# abilita/disabilita la bad error message protection
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Enable/Disable IP spoofing protection
+
# abilita/disabilita la protezione da IP spoofing
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
# Enable/Disable log spoofed, source routed,redirect packets
+
# abilita/disabilita rispettivamente: log spoofed, source routed,redirect packets
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martions = 1
net.ipv4.conf.default.log_martions = 1
# Improve shared memory size
+
# Aumenta la dimensione della shared memory
kernel.shmall = 134217728
kernel.shmall = 134217728
kernel.shmmax = 134217728
kernel.shmmax = 134217728
# Improve default and maximum window sizes
+
# Aumenta la dimensione di default e la massima della finestra
net.core.vmem_max = 2048000
net.core.vmem_max = 2048000
net.core.vmem_default = 204800
net.core.vmem_default = 204800
# Enable packet forwarding
+
# Abilita il packet forwarding
net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 0
# Change the default TTL to help obscure OS fingerprinting
+
# Cambia il TTL di default come supporto a nascondere l'OS fingerprinting
net.ipv4.ip_default_ttl = 128
net.ipv4.ip_default_ttl = 128
</pre>
</pre>
Riga 1 989: Riga 1 985:
/etc/rc.d/rc.modules:<br>
/etc/rc.d/rc.modules:<br>
Elenca i moduli del kernel che sono caricati dal sistema durante la fase di avvio. Decommentate quelli che vi pare non siano necessari per il vostro sistema.
+
Elenca i moduli del kernel che sono caricati dal sistema durante la fase di avvio. Inserite il simbolo di commento per le righe che
  +
richiamano quelli che risultino non essere necessari per il funzionamento del vostro sistema.
<pre>
<pre>
Riga 2 014: Riga 2 010:
CONFIG_MODULES=n
CONFIG_MODULES=n
</pre>
</pre>
 
= Varie =
= Varie =
Riga 2 052: Riga 2 047:
<pre>
<pre>
# This is hard drive specific, your settings will vary
+
# Questo comando è specifico per il tipo di disco rigido, il settaggio utile al tuo/tuoi HD potrebbe essere diverso
/usr/sbin/hdparm -c3 -a16 -W1 -u1 /dev/hdb
/usr/sbin/hdparm -c3 -a16 -W1 -u1 /dev/hdb
# Turn on NumLock
+
# attiva il NumLock
/usr/bin/setleds -D +num
/usr/bin/setleds -D +num
</pre>
</pre>
Riga 2 109: Riga 2 104:
Password contenute nei file di log e nella cronologia:<br>
Password contenute nei file di log e nella cronologia:<br>
Non è infrequente che un utente commetta uno sbaglio effettuando il login o cambiando tipo di utente, digitando la password nel posto sbagliato. Fate attenzione che la pratica del "dumpster diving" nel log di sistema e all'interno di altri file di cronologia degli utenti è una pratica diffusa tra i malintenzionati che desiderano procurarsi delle password. Tenetelo presente quando decidete di conservare 6 mesi di log sul sistema o quando impostate HISTFILESIZE to a $LARGENUMBER.
+
Non è infrequente che un utente commetta uno sbaglio effettuando il login o cambiando tipo di utente, digitando la password nel posto sbagliato. Fate attenzione che la pratica del "dumpster diving" nel log di sistema e all'interno di altri file di cronologia degli utenti è una pratica diffusa tra i malintenzionati che desiderano procurarsi delle password. Tenetelo presente quando decidete di conservare 6 mesi di log sul sistema o quando impostate HISTFILESIZE usando la variabile $LARGENUMBER.
<pre>
<pre>
Riga 2 277: Riga 2 272:
</pre>
</pre>
TODO - Chroot
+
DA FARE - Chroot
/usr/sbin/sendmail:
/usr/sbin/sendmail:
Riga 2 317: Riga 2 312:
Potete permettere ai programmi di essere eseguiti, ma restringetene il set utilizzando smrsh.
Potete permettere ai programmi di essere eseguiti, ma restringetene il set utilizzando smrsh.
Potete disabilitare l'inoltro in sendmail tutto insieme. Tuttavia alcune conseguenze poco piacevoli si possono verificare.
+
Potete disabilitare completamente l'inoltro in sendmail. Tuttavia alcune conseguenze poco piacevoli si possono verificare.
Cancellate il flag "w" dalla riga presente in /etc/mail/sendmail.cf:
Cancellate il flag "w" dalla riga presente in /etc/mail/sendmail.cf:
Riga 2 395: Riga 2 390:
</pre>
</pre>
Se avete bisogno di eseguire sendmail per la posta locale, utilizzate cron.
+
Se avete bisogno di eseguire sendmail esclusivamente per la posta locale, utilizzate cron.
<pre>
<pre>
Riga 2 577: Riga 2 572:
ListenAddress 192.168.1.2
ListenAddress 192.168.1.2
# HostKey for protocol version 1
+
# HostKey per la versione 1 del protocollo
#HostKey /etc/ssh/ssh_host_key
+
# HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
+
# HostKeys per la versione 2 del protocollo
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_dsa_key
# Lifetime and size of ephemeral version 1 server key
+
# durata e dimensione della versione 1 della chiave server
#KeyRegenerationInterval 1h
#KeyRegenerationInterval 1h
#ServerKeyBits 768
#ServerKeyBits 768
# Logging
# Logging
# obsoletes QuietMode and FascistLogging
+
# obsoleti QuietMode and FascistLogging
SyslogFacility AUTH
SyslogFacility AUTH
LogLevel DEBUG
LogLevel DEBUG
# Authentication:
+
# Autenticazione:
LoginGraceTime 2m
LoginGraceTime 2m
Riga 2 606: Riga 2 601:
AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
+
# affinché questo funzioni hai bisogno di mettere le chiavi in /etc/ssh/ssh_known_hosts
RhostsRSAAuthentication no
RhostsRSAAuthentication no
# similar for protocol version 2
+
# simile per la verione 2 del protocollo
HostbasedAuthentication no
HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
+
# cambia in Yes se non ti fidi di ~/.ssh/known_hosts per
# RhostsRSAAuthentication and HostbasedAuthentication
# RhostsRSAAuthentication and HostbasedAuthentication
IgnoreUserKnownHosts no
IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
+
# Non leggere le ~/.rhosts e gli ~/.shosts files degli utenti
IgnoreRhosts yes
IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
+
# Per disabilitare le tunneled password in chiaro , modifica in no qui di seguito!
PasswordAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
PermitEmptyPasswords no
# Change to no to disable s/key passwords
+
# Modifica in no per disabilitare le s/key passwords
#ChallengeResponseAuthentication yes
#ChallengeResponseAuthentication yes
# Kerberos options
+
# Opzioni di Kerberos
#KerberosAuthentication no
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosOrLocalPasswd yes
Riga 2 629: Riga 2 624:
#KerberosGetAFSToken no
#KerberosGetAFSToken no
# GSSAPI options
+
# Opzioni di GSSAPI
#GSSAPIAuthentication no
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPICleanupCredentials yes
#UsePAM no
+
#usePAM no
AllowTcpForwarding yes
AllowTcpForwarding yes
Riga 2 661: Riga 2 656:
# Ciphers aes256-cbc,aes256-ctr
# Ciphers aes256-cbc,aes256-ctr
# login.conf(5) is not used in Slackware
+
# login.conf(5) non è utilizzato in Slackware
ChallengeResponseAuthentication no
ChallengeResponseAuthentication no
</pre>
</pre>
Riga 2 796: Riga 2 791:
<pre>
<pre>
root@darkstar:~# crontab -e
root@darkstar:~# crontab -e
# Chkrootkit, results are mailed to root
+
# I risultati di Chkrootkit, sono inviati via mail a root
10 4 * * * ( cd /usr/local/sbin && ./chkrootkit 2>&1)
10 4 * * * ( cd /usr/local/sbin && ./chkrootkit 2>&1)
root@darkstar:~# killall -HUP crond
root@darkstar:~# killall -HUP crond
Riga 2 897: Riga 2 892:
</pre>
</pre>
= Mean Tricks =
+
= Espedienti più utili =
/etc/aliases:
/etc/aliases:
Riga 2 947: Riga 2 942:
</pre>
</pre>
Anywhere in /etc/rc.d:
+
da qualche parte in /etc/rc.d:
<pre>
<pre>
reboot
reboot
Riga 3 027: Riga 3 022:
<pre>
<pre>
# If the following variables are not set, exit with an error message
+
# Se le seguenti variabili non sono settate, il sistema invia un messaggio di errore
: ${USER:?Who are you?}
: ${USER:?Who are you?}
: ${LOGNAME:?Who are you?}
: ${LOGNAME:?Who are you?}
: ${HOME:?The homeless need help}
: ${HOME:?The homeless need help}
# If a user doesn't have a home directory listed in /etc/passwd,
+
# Se un utente non ha la home directory elencata in /etc/passwd,
# login is nice enough to set "/" as $HOME
+
# login è sufficientemente gentile da definirli "/" come $HOME
if [ ${HOME} = "/" ]; then
if [ ${HOME} = "/" ]; then
logout
logout
fi
fi
# Kick and lockout users that are UID 0 but are not root
+
# butta fuori e blocca gli utenti che hanno UID 0 e non sono root
if [ `id -u` = "0" -a `echo $USER` != "root" ]; then
if [ `id -u` = "0" -a `echo $USER` != "root" ]; then
# Lock the user out
+
# blocca gli utenti
passwd -l $USER
passwd -l $USER
# Save some info
+
# Salva alcune informazioni
date >> /root/SHIT
date >> /root/SHIT
netstat -peanut >> /root/SHIT
netstat -peanut >> /root/SHIT
Riga 3 052: Riga 3 047:
w | mail -s "$USER has gained ROOT access on $HOSTNAME" dentonj@gmail.com
w | mail -s "$USER has gained ROOT access on $HOSTNAME" dentonj@gmail.com
# Let EVERYONE know
+
# rendilo noto a tutti
wall << EOF
wall << EOF
Riga 3 068: Riga 3 063:
done
done
# Log it
+
# Loggalo
logger -is -f /var/log/messages "$USER has gained ROOT access!!"
logger -is -f /var/log/messages "$USER has gained ROOT access!!"
Riga 3 074: Riga 3 069:
echo -e "\a\n\n You are _NOT_ root!!\n\n\a"
echo -e "\a\n\n You are _NOT_ root!!\n\n\a"
# For the really paranoid (run before killing the user's processes)
+
# per i paranoici puri (eseguilo prima di uccidere i processi dell'utente)
ifconfig eth0 down
ifconfig eth0 down
# Kill the user and their processes
+
# uccidi l'utente ed i suoi processi
skill -9 -u $USER
skill -9 -u $USER
# This should be redundant
+
# questo dovrebbe essere ridondante
logout
logout
exit
exit
Riga 3 089: Riga 3 084:
export LESSOPEN="|/usr/bin/lessopen.sh %s"
export LESSOPEN="|/usr/bin/lessopen.sh %s"
# Set a default shell prompt:
+
# Definisci un prompt di shell di default:
#PS1='`hostname`:`pwd`#'
#PS1='`hostname`:`pwd`#'
#if [ "$SHELL" = "/bin/pdksh" ]; then
#if [ "$SHELL" = "/bin/pdksh" ]; then
Riga 3 103: Riga 3 098:
#fi
#fi
if [ `id -u` = 0 ]; then
if [ `id -u` = 0 ]; then
# A red shell prompt for root
+
# un prompt di shell rosso per root
PS1="\[\033[1;31m\][\j][\u@\h:\w]#\[\033[0m\] "
PS1="\[\033[1;31m\][\j][\u@\h:\w]#\[\033[0m\] "
else
else
# A green shell prompt for everyone else
+
# un prompt di shell verde per tutti gli altri
PS1="\[\033[1;32m\][\j][\u@\h:\w]$\[\033[0m\] "
PS1="\[\033[1;32m\][\j][\u@\h:\w]$\[\033[0m\] "
fi
fi
Riga 3 112: Riga 3 107:
export PATH LESS TERM PS1 PS2
export PATH LESS TERM PS1 PS2
# For non-root users, add the current directory to the search path:
+
# Per gli utenti non-root, aggiungi la seguente directory al path di ricerca:
#if [ ! "`id -u`" = "0" ]; then
#if [ ! "`id -u`" = "0" ]; then
# PATH="$PATH:."
# PATH="$PATH:."
Riga 3 118: Riga 3 113:
#
#
# Stuff I've added
+
# Altro materiale da me aggiunto
#
#
# Add $HOME/bin to the search path
+
# aggiungi $HOME/bin al path di ricerca
PATH=$PATH:$HOME/bin
PATH=$PATH:$HOME/bin
export PATH
export PATH
Riga 3 127: Riga 3 122:
export FIGNORE=".o"
export FIGNORE=".o"
# Set EDITOR for less
+
# Definisci l'editor per less
export EDITOR=vim
export EDITOR=vim
# History
# History
# I use to set these to paranoid settings, such as 100 or 10.
+
# Io di solito utilizzo questi settaggi, 100 o 10.
export HISTSIZE=10000
export HISTSIZE=10000
export HISTFILESIZE=10000
export HISTFILESIZE=10000
# Display timestamp information with each history entry
+
# Mostra l'informazione di timestamp per ogni history entry
export HISTTIMEFORMAT="%F %T "
export HISTTIMEFORMAT="%F %T "
# Logout if a root terminal is not being used
+
# termina la sessione se un terminale di root non viene utilizzato per un certo periodo
if [ `id -u` = "0" ]; then
if [ `id -u` = "0" ]; then
export TMOUT=1200
export TMOUT=1200
Riga 3 149: Riga 3 144:
alias td="tcpdump -nvvSi eth0 | grcat conf.tcpdump"
alias td="tcpdump -nvvSi eth0 | grcat conf.tcpdump"
# shred doesn't delete recursively
+
# shred non cancella in maniera ricorsiva
# use "/bin/rf -rf ..." for directories
+
# use "/bin/rf -rf ..." per le directories
alias rm="shred -uz"
alias rm="shred -uz"
# Disable the bash builtin command kill, forces the use
+
# Disabilita il comando di kill all'interno di bash, ma forza sempre l'uso
# of /bin/kill.
+
# di /bin/kill.
# This was a cute idea, but it prevents jobs from being killed
+
# Questa è una buona idea, ma previene l'uccisione di jobs
#enable -n kill
#enable -n kill
# Misc shell settings
+
# settaggi di shell
shopt -s cdspell
shopt -s cdspell
shopt -s cmdhist
shopt -s cmdhist
Riga 3 165: Riga 3 160:
setterm -bfreq 0
setterm -bfreq 0
# grep options
+
# opzioni di grep
export GREP_OPTIONS="-n --color"
export GREP_OPTIONS="-n --color"
export GREP_COLOR="1;33"
export GREP_COLOR="1;33"
# Secure less
+
# rendi sicuro less
export LESSSECURE=1
export LESSSECURE=1
# This works for single user systems if the luzer who breaks into your
+
# Questo funziona per un sistema monoutente se l'intruso che irrompe nel tuo
# system uses an interactive shell
+
# sistema usa una shell interattiva
if [ `id -u` != "0" -o `id -u` != "1000" ]; then
if [ `id -u` != "0" -o `id -u` != "1000" ]; then
passwd -l $USER
passwd -l $USER
Riga 3 179: Riga 3 174:
fi
fi
# Set these and make them read only to keep users from setting them
+
# definisci le variabili seguenti e rendile solo leggibili per evitare che siano gli utenti stessi a settarle
export HISTCONTROL=""
export HISTCONTROL=""
export HISTIGNORE=""
export HISTIGNORE=""
# Disable builtin shell commands
+
# Disabilità i comandi di builtin shell
# TODO
+
# DA FARE
# Set shell variables as read only, this should be last:
+
# Setta le variabili di shell come read only e con questa dovremmo avere finito:
typeset -r HISTCONTROL
typeset -r HISTCONTROL
typeset -r HISTFILE
typeset -r HISTFILE
Riga 3 218: Riga 3 213:
= Risorse =
= Risorse =
  +
  +
  +
[[Category:Configurazione-10]]

Versione attuale delle 11:19, 21 apr 2011

Slackware System Hardening
Copyright (c) 2002, 2005, 2006 Jeffrey Denton
http://www.cochiselinux.org/files/system-hardening-10.2.txt

Scritto da Jeffrey Denton <dentonj@gmail.com>
2 Settembre 2006
Version - 0.7.1

Questa guida è scritta per:

$ cat /etc/slackware-version
Slackware 10.2.0

Quello che segue è un elenco di alcuni dei passaggi che ho seguito per migliorare la sicurezza dei sistemi su cui uso Slackware. Non vuole assolutamente essere un elenco completo di tutto ciò che è possibile fare. Potrete sia realizzare tutti i suggerimenti riportati in questa guida oppure scegliere solo quelli che riteniate possano aiutarvi a mettere in sicurezza il vostro sistema.

Indice

[modifica] Warning

Effettuare l'hardening di un sistema è un compromesso tra la sicurezza e l'utilizzabilità dello stesso. Alcune delle impostazioni suggerite potrebbero inficiare la facilità di 'utilizzo del vostro sistema, così come danneggiare qualcosa all'interno dello stesso. Tenete a portata di mano, nel caso non riusciate più ad accedere al vostro sistema, almeno uno tra i seguenti:

  • Tom's Rootboot - http://www.toms.net/rb/
  • Il "Live" CD della versione di Slackware che utilizzate
  • I CD di installazione della versione di Slackware che avete installato sulla vostra macchina

Prima di procedere con le indicazioni di seguito riportate si raccomanda di effettuare un backup di tutto ciò che ritenete importante, chè è difficile da ripristinare o di cui semplicemente non potete fare a meno. Se non riuscite a capire che cosa una particolare impostazione o configurazione è deputata a fare, non utilizzatela sul vostro sistema. I contenuti di questo documento sono esclusivamente riferibili per un utilizzo sulla distribuzione Slackware Linux. Alcune delle impostazioni sono ridondate (massima protezione) o possono andare in conflitto fra loro. Siete stati avvisati Uomo avvisato, mezzo salvato .... ;)

[modifica] Note

  • Le impostazioni definite si fondano sull'assunto che sia presente un solo utente sul sistema, "dentonj", modificate come da vostre specifiche esigenze.
  • Al fine di fornire ulteriore informazioni si è ritenuto opportuno riportare il contenuto delle "man pages" associate alle impostazioni riportate.
  • Completerò questo documento se mai ne avrò il tempo.
  • Il documento è da intendersi ancora come bozza essendo presenti diversi TODO.

[modifica] Mantenere il sistema aggiornato

http://www.slackware.com/security/
http://www.slackware.com/lists/

Per iscriversi alla mailing list relativa alla Sicurezza su Slackware, inviare un email a:

 
majordomo@slackware.com

con la frase "subscribe slackware-security" nel corpo della mail.


[modifica] Logging

/etc/rc.d/rc.syslog:

/usr/sbin/syslogd -m 10 -r -h
/usr/sbin/klogd -c 3 -x -p
root@darkstar:~# /etc/rc.d/rc.syslog restart    

L'opzione "-r" abilita il sistema a ricevere i messaggi relativi ai log di sistema dagli hosts remoti. L'opzione "-h" permette al syslog di inoltrare i messaggi che riceve dagli hosts remoti. Questo permette ai messaggi syslog di essere registrati su diversi sistemi, garantendo ridondanza. I messaggi syslog che sono inviati in rete non sono cifrati e possono essere facilmente catturati. Fare attenzione a syslog quando inoltra i "loops" usando le opzioni "-r" e "-h".

Apre la porta UDP 514.

man syslogd
man klogd

/etc/syslog.conf

# Registra tutto su un file
*.*             	- /var/log/messages

# Registra tutto su un Terminal Type (Ctrl-Alt-F12)
*.*			/dev/tty12

# Registra tutto su un sistema che ospita i log
*.*      		@192.168.1.2

# Visualizza le emergenze a tutti quelli che usano wall
*.=emerg		*

# Invia degli alerts direttamente ai terminali degli utenti
*.=alert		root,dentonj
root@darkstar:~# /etc/rc.d/rc.syslog restart
man syslogd
man syslog.conf

/etc/logrotate.conf:

weekly
rotate 26
compress

Assicuratevi di avere sufficiente spazio su disco per immagazzinare 6 mesi di logs. Sarebbe comunque preferibile spostare i logs dal sistema.

    
man logrotate

/etc/logrotate.d/syslog:

/var/log/cron /var/log/debug /var/log/maillog /var/log/messages
/var/log/secure /var/log/spooler /var/log/sulog /var/log/syslog {
	create 0640 root root
        mail dentonj@gmail.com
	mailfirst
	sharedscripts
	postrotate
		/bin/kill -HUP `cat /var/run/syslogd.pid \
		2> /dev/null || true`
	endscript
}
 
man logrotate

/etc/rc.d/rc.S:

# prepara il messaggio file /etc/motd a notificare il kernel:
# QUESTO CANCELLA AD OGNI NUOVO BOOT QUALSIASI CAMBIAMENTO SIA STATO FATTO AL FILE /ETC/MOTD.
# AGGIUNGI IL SEGNO DI COMMENTO ALLA RIGA DI SEGUITO SE VUOI CUSTOMIZZARE IL MESSAGGIO.
# echo "$(/bin/uname -sr)." > /etc/motd
man motd
/etc/motd, /etc/issue.net, /boot/boot_message.txt:

********************************************************************************************************
Sono vietati gli accessi non autorizzati; tutti gli accessi e le attività non esplicitamente autorizzate
dall'amministratore non sono autorizzati. Tutte le attività sono CONTROLLATE e registrate.
Non c'è privacy su questo sistema. Accessi e attività non autorizzati e ogni tipo di attività illecita
sarà segnalata alle autorità preposte.
*********************************************************************************************************

O:

"Sembra che vi siate persi. Per favore ritornate nel vostro piccolo angolo in Internet."
root@darkstar:~# lilo -v -p

Se lilo restituisce degli errori, provate a capire la natura del problema, apportate le necessarie correzioni e rieseguite nuovamente lilo prima di riavviare il sistema. E' importante che lilo non restituisca alcun messaggio di errore prima di eseguire il reboot, altrimenti potreste trovarvi con un sistema che non si avvia in maniera appropriata.

man issue
man motd

/etc/rc.d/rc.local:

# Log icmp packets to syslog
/usr/sbin/icmpinfo -vvv -s -l
man icmpinfo

/sbin/accton:

L'elaborazione degli account è gestita da /etc/rc.d/rc.M. Tuttavia, il relativo file di log non esiste:

root@darkstar:~# touch /var/log/pacct
man ac
man 2 acct
man 5 acct
man accton
man sa
man lastcomm

/etc/rc.d/rc.M:

Incrementare il logging in cron.

/usr/sbin/crond -l7 >> /var/log/cron 2>&1
man crond

/var/log/btmp:

Il file di log btmp registra tutti i tentativi non riusciti di accesso al sistema. Il comando lastb elenca i contenuti del file di log.

root@darkstar:~# touch /var/log/btmp
root@darkstar:~# chmod --reference=/var/log/wtmp /var/log/btmp
root@darkstar:~# chown --reference=/var/log/wtmp /var/log/btmp
root@darkstar:~# ln -s /usr/bin/last /usr/bin/lastb
root@darkstar:~# lastb

Gli utenti che provano a loggarsi inserendo la loro password per prima cosa finiranno per essere registrati in /var/log/btmp. Sarà sufficiente eseguire lastb per ottenere a terminale la lista di questi.

 
man last


[modifica] Disabilitare Servizi/Chiudere Porte

/etc/inetd.conf:

I seguenti servizi sono eseguiti di default:

  • time - TCP port 37
  • time - UDP port 37
  • auth - TCP port 113
  • comsat - UDP port 512

Commentate le righe relative ai servizi di cui non avete necessità.

root@darkstar:~# grep -v "^#" /etc/inetd.conf
man inetd
man in.comsat
man in.identd
man grep

/etc/rc.d/rc.inetd:

root@darkstar:~# /etc/rc.d/rc.inetd stop
root@darkstar:~# chmod a-x /etc/rc.d/rc.inetd
man inetd
man chmod

/usr/X11R6/bin/startx:

defautserverargs="-nolisten tcp"

Chiude la porta TCP 6000+n, dove n è $DISPLAY (l'impostazione di default è 0).

    
man Xserver

/etc/X11/xdm/Xservers:

:0 local /usr/X11R6/bin/X -nolisten tcp

Chiude la porta TCP 6000.

    
man Xserver
man xdm

/etc/X11/xdm/Xaccess:

Assicuratevi che ogni riga sia commentata.

    
man xdm

/etc/rc.d/rc.4:

exec /usr/X11R6/bin/xdm -nodaemon -udpPort 0

Chiude la porta UDP 177.

   
man xdm

/etc/X11/fs/config:

use-syslog = yes
no-listen = tcp

Chiude la porta TCP 7100.

    
man xfs

/etc/rc.d/rc.inet2:

Molti degli scripts rc sono avviati qui. Dallo script si legge:
commenta o elimina il segno di commento alle differenti sezioni, in funzione di quali servizi siano necessari al tuo sito.

Ci sono due modalità per impedire ai demoni e ai servizi di avviarsi. La prima è quella di rendere lo script che avvia il demone o il servizio non eseguibile:

chmod 600 /etc/rc.d/rc.bind

La seconda è quella di commentare le sezioni di questo script che avviano il demone o il servizio:

Righe 100-103:

# Avvia il demone del server dei nomi BIND:
# if [ -x /etc/rc.d/rc.bind ]; then
#   /etc/rc.d/rc.bind start
# fi

E' inoltre possibile utilizzare entrambi i metodi, anche se questo è un sistema ridondante. Tuttavia, impiegare entrambe le possibilità dovrebbe impedire ai demoni dall'avviarsi accidentalmente in fase di avvio in caso facciate degli errori nell'assegnazione dei permessi ad un servizio. Alcuni demoni non si avvieranno di default all'avvio in quanto i loro file di configurazione non sono presenti o non sono scritti correttamente.

Commentare le seguenti righe:

Lines 20 - 53:    Disabilita il montaggio di filesystems NFS
Lines 58 - 60:    Disabilita il sistema di portmapping RPC
Lines 63 - 68:    Disabilita il montaggio di filesystems SMB
Lines 90 - 92:    Disabilita inetd
Lines 101 - 103:  Disabilita BIND
Lines 106 - 108:  Disabilita NIS
Lines 115 - 117:  Disabilita NFS

/etc/rc.d/rc.M:
Commentare le seguenti righe:

Lines 103 - 105:  Disabilita dnsmasq
Lines 108 - 114:  Disabilita CUPS and lpd
Lines 117 - 119:  Disabilita netatalk
Lines 160 - 162:  Disabilita atd
Lines 194 - 196:  Disabilita saslauthd
Lines 199 - 201:  Disabilita sendmail
Lines 205 - 212:  Disabilita APM e ACPI
Lines 230 - 232:  Disabilita HP Officejet 
Lines 235 - 237:  Disabilita MySQL
Lines 240 - 242:  Disabilita Apache
Lines 224 - 226:  Disabilita Samba
Lines 234 - 236:  Disabilita SystemV init scripts

/etc/rc.d/rc.S:
Commentare le seguenti righe:

Lines 16 - 22:    Disabilita hotplug
Lines 39 - 43:    Disabilita udev
Lines 192 - 196:  Disabilita isapnp
Lines 292 - 294:  Disabilita SystemV init scripts

/etc/rc.d/rc.acpid:
Demone relativo agli eventi ACPI (Advanced Configuration and Power Interface)

root@darkstar:~# /etc/rc.d/rc.acpid stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.acpid

Questo demone non apre alcuna porta sul sistema.

/etc/rc.d/rc.alsa:
Architettura avanzata del sistema audio di linux (ALSA Advanced Linux Sound Architecture)

root@darkstar:~# chmod go-rwx /etc/rc.d/rc.alsa

Questo demone non apre alcuna porta sul sistema.

/etc/rc.d/rc.atalk:
AppleTalk

root@darkstar:~# /etc/rc.d/rc.atalk stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.atalk

Chiude la porta TCP 548.

/etc/rc.d/rc.bind:
BIND

root@darkstar:~# /etc/rc.d/rc.bind stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.bind

Chiude le porte TCP 53 e 953.
Chiude le porte UDP 53 e 32768.

/etc/rc.d/rc.cups:
Sistema di stampa UNIX (CUPS Common UNIX Printing System)

root@darkstar:~# /etc/rc.d/rc.cups stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.cups

Chiude le porte TCP e UDP 631.

/etc/rc.d/rc.dnsmasq:
DNSMASQ è un server DHCP e caching DNS

root@darkstar:~# /etc/rc.d/rc.dnsmasq stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.dnsmasq

Chiude le porte TCP e UDP 53.

/etc/rc.d/rc.gpm:
Sistema di mouse generico (GPM General Purpose Mouse)

root@darkstar:~# chmod go-rwx /etc/rc.d/rc.gpm

Questo demone non apre alcuna porta sul sistema.

/etc/rc.d/rc.hotplug:
Scripts di supporto al sistema di hotplugging di Linux

root@darkstar:~# chmod go-rwx /etc/rc.d/rc.hotplug

Questo demone non apre alcuna porta sul sistema.

/etc/rc.d/rc.httpd:
Webserver Apache

root@darkstar:~# /etc/rc.d/rc.httpd stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.httpd

Chiude la porta TCP 80.

/etc/rc.d/rc.inet1:
Configura le interfacce di rete

Effettuare le modifiche in /etc/rc.d/rc.inet1.conf.

root@darkstar:~# chmod go-rwx /etc/rc.d/rc.inet1

/etc/rc.d/rc.inetd:
Il demone Internet

root@darkstar:~# /etc/rc.d/rc.inetd stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.inetd

Chiude le porte TCP 37 e 113 (di default).
Chiude le porte UDP 37 e 512 (di default).

/etc/rc.d/rc.mysqld:
Il demone del server MYSQL

Di default, mysqld non è avviato. Leggete il file /etc/rc.d/rc.mysqld per avere i dettagli su come fare per avviare il servizio.

Lo script impedisce di default le connessioni di rete in ingresso con l'opzione "--skip-networking". Se tale opzione è commentata, verrà aperta la porta TCP 3306.

Questo demone non apre alcuna porta di default.

root@darkstar:~# chmod go-rwx /etc/rc.d/rc.mysqld

/etc/rc.d/rc.nfsd:
Il demone NFS kfnsd

Di default, questo demone non si avvia in quanto il file /etc/exports non è configurato in maniera appropriata.

root@darkstar:~# chmod go-rwx /etc/rc.d/rc.nfsd

/etc/rc.d/rc.portmap:
il portmapper RPC

Questo script è invocato da /etc/rc.d/rc.nfsd. Dal momento che il file /etc/exports non è configurato in maniera appropriata di default, questo servizio non si avvierà.

root@darkstar:~# chmod go-rwx /etc/rc.d/rc.rc.portmap

/etc/rc.d/rc.samba:
L'SMB File e Print server di Samba

Di default il servizio non si avvia perchè il file /etc/samba/smb.conf non è presente.

root@darkstar:~# chmod go-rwx /etc/rc.d/rc.samba

/etc/rc.d/rc.saslauthd:
Demone di autenticazione con testo in chiaro.

root@darkstar:~# /etc/rc.d/rc.saslauthd stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.saslauthd

/etc/rc.d/rc.sendmail:
Sendmail

root@darkstar:~# /etc/rc.d/rc.sendmail stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.sendmail

Chiude le porte TCP 25 e 587.

/etc/rc.d/rc.sshd:
Il Server Secure Shell

root@darkstar:~# /etc/rc.d/rc.sshd stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.sshd

Chiude la porta TCP 22.

/etc/rc.d/rc.syslog:
Il demone relativo al logging di sistema.

Se l'opzione "-r" è utilizzata, viene aperta la porta UDP 514.

Questo demone di default non apre alcuna porta sul sistema.

root@darkstar:~# chmod 600 /etc/rc.d/rc.syslog

/etc/rc.d/rc.sysvinit:
"Questo file fornisce una compatibilità di base con gli scripts di avvio dello stile SystemV" A meno che non abbiate installato sul vostro sistema un demone che richiede l'utilizzo degli scripts di avvio dello stile SystemV, non c'è bisogno di rendere eseguibile questo script.

root@darkstar:~# chmod 600 /etc/rc.d/rc.sysvinit

/etc/rc.d/rc.udev:
"udev fornisce un indice dei dispositivi dinamico contenente solo i file per i dispositivi effettivamente presenti sul sistema. Udev crea e rimuove i file dei nodi dei dispositivi solitamente localizzati nella directory /dev."

Fa parte del sottosistema hotplug.

Questo demone non apre alcuna porta sul sistema.

root@darkstar:~# chmod 600 /etc/rc.d/rc.udev
man udev

/etc/rc.d/rc.wireless.conf:
Questo file gestisce le impostazioni di configurazione utilizzate da /etc/rc.d/rc.wireless. Esso può contenere chiavi di cifratura in chiaro. Assicurarsi che gli utenti non siano autorizzati a leggere questo file (impostazione di default).

root@darkstar:~# chmod 600 /etc/rc.d/rc.wireless.conf

/etc/rc.d/rc.yp:
Il Servizio di Informazioni di Rete

Il contenuto di questo file è commentato di default.

root@darkstar:~# chmod 600 /etc/rc.d/rc.yp

[modifica] Limitare l'accesso

/etc/rc.d/rc.M:

chmod 1733 /tmp /var/tmp

Questo impedisce agli utenti di leggere il contenuto di tali directory. Al tempo stesso permette loro di continuare a creare, di accedere e di modificare i file presenti in queste directory se conoscono i nomi dei file contenuti all'interno di esse. Questa impostazione non impedisce agli utenti di avviare eseguibili presenti nella directory /tmp.

 
dentonj@darkstar:~$ ls -ld /tmp
drwx-wx-wt  5 root root 4096 2001-06-27 12:54 /tmp/
dentonj@darkstar:~$ cp /bin/date /tmp/test
dentonj@darkstar:~$ /tmp/test
Thu Jun 27 12:55:00 MST 2001
dentonj@darkstar:~$ ls /tmp
ls: /tmp: Permission denied
man chmod

/etc/rc.d/rc.S:

chmod 1733 /tmp/.ICE-unix
chmod 1733 /tmp/.X11-unix

Non lasciate a chiunque accesso in lettura a utmp:

chmod 660 /var/run/utmp
man utmp
man chmod

/etc/lilo.conf:

# mandatory - inserire la password per eseguire il boot del sistema
# limited - richiedere la password solamente quando si vuole effettuare un boot 
# dando un parametro aggiuntivo (ad esempio - "linux single")
# scegli una delle 2 mandatory oppure
# limited

# Utilizza il comando lilo con l'opzione "-p" per memorizzare le hashed password 
# in un file a parte
password=""

prompt
timeout=0
menu-title="Unauthorized Access Prohibited"
message=/boot/boot_message.txt
serial=0,9600n8
root@darkstar:~# lilo -v -p
root@darkstar:~# chmod go-rwx /etc/lilo.conf

Utilizzare l'impostazione 'password=""' e poi lilo con l'opzione '-p' vi richiederà di inserire una parola chiave (password) mentre lilo è in fase di esecuzione. La password è memorizzata sotto forma di hash in /etc/lilo.conf.shs. In realtà la pagina di man di lilo riporta che tale hash è salvato in /etc/lilo.conf.crc. Comunque sia, questo è meglio che avere la password riportata in chiaro all'interno di /etc/lilo.conf. Le opzioni di configurazione sopra riportate richiederanno che sia inserita una password ogni qual volta il sistema si avvia. Potreste non voler utilizzare l'opzione "mandatory" nel caso in cui l'uptime del sistema sia importante o quando normalmente accedete al sistema da remoto. In questi casi, utilizzate invece l'opzione "restricted".

man lilo
man lilo.conf

/etc/login.access:

+:root dentonj:LOCAL
-:ALL:ALL

Solo l'utente root e l'utente dentonj possono effettuare il login locale al sistema. Questa impostazione non limita l'accesso da remoto al sistema tramite ssh.

Messaggio d'errore restituito: "Login incorrect"

    
man login.access

/etc/login.defs:

FAIL_DELAY		20
DIALUPS_CHECK_ENAB	no
LOG_UNKFAIL_ENAB	yes
LOG_OK_LOGINS		yes
SULOG_FILE		/var/log/sulog
ISSUE_FILE		/etc/issue
#HUSHLOGIN_FILE
PASS_MAX_DAYS		90
PASS_MIN_LEN		12
CHFN_RESTRICT		frwh
DEFAULT_HOME		no
#ENVIRON_FILE
#NO_PASSWORD_CONSOLE	null
GETPASS_ASTERISKS	5
 
root@darkstar:~# touch /var/log/sulog
man login.defs
man dpasswd

/etc/suauth:

ALL:ALL EXCEPT dentonj:DENY

O:

ALL:ALL EXCEPT GROUP wheel:DENY	
root@darkstar:~# usermod -g users -G wheel dentonj
root@darkstar:~# chmod go-rwx /etc/suauth

Solo l'utente dentonj è autorizzato a "passare" ad altri utenti. O, solo i membri del gruppo wheel possono switchare su altri utenti.

Messaggio d'errore restituito: "Access to su to that account DENIED." "You are not authorized to su root"

man suauth

/etc/porttime:

tty1,tty2,tty3,tty4,tty5,tty6:root,dentonj:Al0000-2400
*:*:
root@darkstar:~# chmod go-rwx /etc/porttime

Il terzo campo specifica le finestre temporali in cui è permesso il login al sistema. Se il campo non è impostato, l'utente è impossibilitato a effettuare il login al sistema. L'opzione "*:*:" rappresenta una regola di divieto di default finalizzata a registrare tutti coloro i quali non sono ancora registrati. Il terzo campo riporta i tempi nei quali un utente è autorizzato ad effettuare il login. Se tale campo è vuoto, all'utente non è permesso accedere al sistema.

Il demone logoutd è di solito eseguito al fine di rafforzare le restrizione ai tempi di login elencati in /etc/porttime.

Messaggio d'errore restituito: "Invalid login time"

man porttime

/etc/rc.d/rc.local:

# rinforzare le restrizioni di tipo temporale di login definite in /etc/porttime
if [ -x /usr/sbin/logoutd ]; then
    /usr/sbin/logoutd
fi
man logoutd

/etc/limits:

dentonj C0L1
* L0
root@darkstar:~# chmod go-rwx /etc/limits

L'impostazione "* LO" è una regola di default per tutti quelli che non sono stati precedentemente elencati come utenti. Il numero dei login permessi al sistema è impostato a zero, ciò significa che chiunque non preventivamente registrato, non è autorizzato ad effettuare il login. Queste impostazioni non sono riferibili all'utente root.

Messaggio d'errore restituito: "Too many logins."

man limits

/etc/shells:
Permettere agli utenti di eseguire diverse shell può permettere loro di bypassare le restrizioni di sicurezza impostate sulla loro shell di login (ndr. in Slackware di default la bash).

Eliminare i seguenti file:

  • /bin/ash
  • /bin/csh
  • /bin/ksh
  • /bin/tcsh
  • /bin/zsh
root@darkstar:~# removepkg ash
root@darkstar:~# removepkg ksh93
root@darkstar:~# removepkg tcsh
root@darkstar:~# removepkg zsh
man shells

/usr/sbin/faillog:

root@darkstar:~# faillog -u dentonj -m 10
root@darkstar:~# faillog -a

Non impostare il faillog per l'utente root. E' una delle poche impostazioni che può effettivamente impedire a tale utente di effettuare il login. L'utilizzo di faillog può causare un denial of service nel caso in cui venisse raggiunto il massimo numero di login. Utilizzare con attenzione.

Messaggio d'errore restituito: "Login incorrect"

man faillog

/etc/passwd:
Rimuovere gli account inutilizzati.

root@darkstar:~# find / -user adm -ls
root@darkstar:~# userdel adm

Ripetere la procedura per gli altri account:

  • adm
  • games
  • gdm
  • lp
  • news
  • operator
  • pop
  • rpc
  • uucp

Gli account "halt" e "shutdown" non sono operativi di default. L'account "sync" non è necessario.

root@darkstar:~# su halt
halt: must be superuser.
root@darkstar:~# su shutdown
shutdown: you must be root to do that!
rooot@darkstar:~# userdel halt
root@darkstar:~# userdel shutdown
root@darkstar:~# userdel sync

Aggiungere /bin/false come shell ai seguenti utenti:

bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
mail:x:8:12:mail:/:/bin/false
ftp:x:14:50::/home/ftp:/bin/false
smmsp:x:25:25:smmsp:/var/spool/clientmqueue:/bin/false
sshd:x:33:33:sshd:/:/bin/false
nobody:x:99:99:nobody:/:/bin/false

Messaggio d'errore restituito:

darkstar login: test
Password: *************************
Linux 2.4.32
Last login: Wed Jun 27 20:23:42 -0700 2001 on tty2
No mail.

Welcome to Linux 2.4.32 (tty2)

darkstar login:

Durata della password:

Nota: Non utilizzate questa procedura se volete mantenere immutati i file /etc/passwd e /etc/shadow (chattr +i ...). Se lasciate la password scadere non sarete più in grado di effettuare il login sino a quando la password non sarà resettata. Ma se il file /etc/shadow non è modificabile non sarete più in grado di efettuare il login. Per rimediare al problema occorre che avviate il sistema con tomsrtbt o con un CD di avvio di Linux, montiate la partizione del disco fisso dove si trova la directory /etc e rimuoviate l'attributo di immutabilità dal file mnt/etc/shadow (chattr -i...)

root@darkstar:~# passwd -x 90 -w 7 root
root@darkstar:~# passwd -x 90 -w 7 -i 30 dentonj
root@darkstar:~# for i in `cat /etc/passwd | awk -F: '{print $1}'`; do
> passwd -S $i
> done
root@darkstar:~# pwck
man 1 passwd
man 5 passwd
man find
man userdel
man false
man pwck

/etc/group:

root@darkstar:~# find / -group adm -ls
root@darkstar:~# groupdel adm

Ripetete questi comandi per i gruppi seguenti:

  • adm
  • lp
  • news
  • pop
  • uucp
root@darkstar:~# grpck

La rimozione degli account può creare un lungo elenco di file che non appartengono più ad alcun utente o gruppo. Per sapere quali sono questi file potete usare il comando seguente:

root@darkstar:~# find / -nouser -o -nogroup -ls > unowned.out

Per cambiare il proprietario a questi file:

root@darkstar:~# find / -nouser -o -nogroup -exec chown root.root {} \;
man group
man find
man groupdel
man grpck
man chown

/etc/sudoers:

Defaults rootpw
Defaults ! root_sudo
Defaults ignore_dot
Defaults tty_tickets
Defaults requiretty
Defaults path_info
Defaults noexec
%wheel ALL=(ALL) ALL
root@darkstar:~# groups dentonj
root@darkstar:~# usermod -g users -G wheel dentonj

Esistono diverse problematiche di sicurezza quando si permette agli utenti di utilizzare il comando sudo. Assicuratevi di aver letto completamente le pagine di manuale relative a sudo e sudoers.

Esistono tipicamente due approcci per la configurazione di sudo. Il primo è quello di permettere all'utente di eseguire ogni comando. Questo equivale praticamente a concedere agli utenti un accesso a root come super user (su). Se decidete di utilizzare questa modalità, dovreste richiedere all'utente l'inserimento della password di root ogniqualvolta utilizza sudo. Due password sarebbero quindi necessarie per ottenere i privilegi di root.

Il secondo approccio è quello di configurare sudo in modo tale da permettere l'esecuzione solo di un numero limitato di comandi. Se decidete di utilizzare questa modalità, ci saranno alcuni comandi che non vorrete permettere di eseguire all'utente. Assegnare all'utente pieno accesso al sistema tramite l'esecuzione di su può essere pericoloso per la stabilità e l'integrità del sistema. Assicuratevi di non aggiungere i seguenti comandi o quelli elencati nella sezione riportata più oltre e denominata "Scorciatoie della Shell" al file /etc/sudoers:

/bin/cat
/bin/chmod
/bin/chown
/bin/cpio
/bin/mount
/bin/rpm
/bin/tar
/sbin/installpkg
/usr/bin/env
/usr/sbin/useradd
/usr/sbin/usermod

Questo elenco potrebbe essere molto più lungo.

man sudo
man sudoers
man visudo
man groups
man usermod

/etc/ftpusers:
Questo file è utilizzato per impedire a tutti coloro in esso elencati il login al server ftp locale. Aggiungete i seguenti account:

  • bin
  • daemon
  • mail
  • smmsp
  • mysql
  • sshd
  • nobody

Aggiungete tutti gli account di sistema presenti in /etc/passwd.

    
man ftpusers

/etc/host.conf:

nospoof on
spoofalert on
spoof warn
man host.conf

/etc/hosts.allow:
TCP Wrappers

all:local:banners /etc/banners:allow
sshd:192.168.1.:banners /etc/banners:allow
sendmail:all:banners /etc/banners:allow
all:paraniod:spawn /usr/bin/logger "%d deny paraniod %c %p %a %h %u" \
   :banners /etc/banners:deny
all:all:spawn /usr/bin/logger "%d deny %c %p %a %h %u" \
   :banners /etc/banners:deny

Dalle pagine di man di hosts_options:

banners /una/directory Cercate un file all'interno di '/una/directory' avente lo stesso nome del processo relativo al demone (per esempio in.telnetd per il servizio telnet) e copiare il suo contenuto sul client

Se utilizzate qualcuno dei servizi elencati di seguito, assicuratevi di aggiungere una regola del tipo "permetti" a ognuno. Se desiderate un banner diverso per un particolare servizio, cancellate il link simbolico e create un file di testo con lo stesso nome.


root@darkstar:~# mkdir /etc/banners && cd /etc/banners
root@darkstar:/etc/banners# ln -s ../issue.net afpd
root@darkstar:/etc/banners# ln -s ../issue.net imapd
root@darkstar:/etc/banners# ln -s ../issue.net in.identd
root@darkstar:/etc/banners# ln -s ../issue.net in.rexecd
root@darkstar:/etc/banners# ln -s ../issue.net in.rlogind
root@darkstar:/etc/banners# ln -s ../issue.net in.rshd
root@darkstar:/etc/banners# ln -s ../issue.net in.telnetd
root@darkstar:/etc/banners# ln -s ../issue.net popa3d
root@darkstar:/etc/banners# ln -s ../issue.net proftpd
root@darkstar:/etc/banners# ln -s ../issue.net sendmail
root@darkstar:/etc/banners# ln -s ../issue.net sshd
root@darkstar:/etc/banners# ln -s ../issue.net stunnel
root@darkstar:/etc/banners# ln -s ../issue.net vsftpd

Di seguito un comando che può essere utilizzato per determinare quali demoni utilizzano i wrappers TCP:

root@darkstar:~# cd /usr/sbin; for i in `ls | grep -v "@$"`; do \
echo "   $i"; strings $i | grep hosts.allow; done | less

Per verificare le impostazioni di /etc/hosts.allow:

root@darkstar:~# tcpdchk
root@darkstar:~# tcpdmatch sshd localhost
root@darkstar:~# tcpdmatch sshd 1.1.1.1
root@darkstar:~# tcpdmatch sshd 192.168.1.1
man tcpd
man 5 hosts_access
man hosts_options
man tcpdchk
man tcpdmatch

/etc/hosts.deny:
L'unica volta in cui questo file troverà corrispondenza è quando /etc/hosts.allow non è configurato in maniera adeguata.

all:all:spawn /usr/bin/logger "Check hosts.allow - %d deny %c %p %a %h %u" \
   :banners /etc/banners:deny
man tcpd
man 5 hosts_access
man hosts_options

xdm:
Modificate xdm-config e create Xstartup e Xreset in modo tale che i contenuti possano essere aggiunti a utmp e wtmp nel momento in cui un utente effettua il login.

man xdm

/etc/X11/xdm/xdm-config:

DisplayManager._0.startup:   /usr/X11R6/lib/X11/xdm/Xstartup
DisplayManager._0.reset:     /usr/X11R6/lib/X11/xdm/Xreset
DisplayManager*authorize:    true
DisplayManager*authName:     XDM-AUTHORIZATION-1 MIT-MAGIC-COOKIE-1
DisplayManager.requestPort:  0
man xdm

/etc/X11/xdm/Xstartup:

#!/bin/sh
#
# Xstartup
# Questo programma viene eseguito come utente root una volta che l'utente sia stato verificato
#
# man xdm
#
if [ -f /etc/nologin ]; then
    xmessage -file /etc/nologin -timeout 30 -center
    exit 1
fi
sessreg -a -l $DISPLAY -x /usr/X11R6/lib/X11/xdm/Xserver $LOGNAME
/usr/X11R6/lib/X11/xdm/GiveConsole
exit 0
root@darkstar:~# chmod a+x /etc/X11/xdm/Xstartup

/etc/X11/xdm/Xreset:

#!/bin/sh
#
# Xreset
#
# Questo programma viene eseguito come utente root una volta che la sessione sia terminata
#
# man xdm
#
sessreg -d -l $DISPLAY -x /usr/X11R6/lib/X11/xdm/Xservers $LOGNAME
/usr/X11R6/lib/X11/xdm/TakeConsole
exit0
root@darkstar:~# chmod a+x /etc/X11/xdm/Xreset

/etc/X11/xdm/Xresources:

xlogin*greeting:	Unauthorized Access Prohibited
xlogin*allowRootLogin:	false
xlogin*allowNullPasswd:	false
man xdm

/etc/X11/xserver/SecurityPolicy:
Aggiungere il segno di commento a tutte le righe che seguono:

# se state usando Motif probabilente dovete utilizzare le linee seguenti.
#property _MOTIF_DEFAULT_BINDINGS root	ar iw
#property _MOTIF_DRAG_WINDOW	  root	ar iw
#property _MOTIF_DRAG_TARGETS	  any	ar iw
#property _MOTIF_DRAG_ATOMS    	  any   ar iw
#property _MOTIF_DRAG_ATOM_PAIRS  any   ar iw

# se state usando CDE probabilmente avrete bisogno di utilizzare le linee seguenti
#property _MOTIF_WM_INFO         root    arw
#property TT_SESSION             root    irw
#property WM_ICON_SIZE           root    irw
#property "SDT Pixel Set"        any     irw

# le 2 regole seguenti permettono a xwininfo di funzionare qualora untrusted.
#property WM_NAME        any     ar

# Permette la lettura di WM_CLASS, ma solo per quelle fineste aventi WM_NAME.
# Questo potrebbe essere più restrittivo di quanto effettivamente necessario, ma mostra
# le possibilità di <required property>, ed è un tentativo di rendere visibili 
# le "top level windows only."
#property WM_CLASS       WM_NAME ar

# le tre righe seguenti consentono a xlsclients di funzionare qualora untrusted. Pensateci bene
# prima di levare il segno di commento a queste righe; mostrano infatti il comando ed il nome della macchina
# il che potrebbe essere rischioso.
#property WM_STATE       		WM_NAME ar
#property WM_CLIENT_MACHINE      	WM_NAME ar
#property WM_COMMAND     		WM_NAME ar
  
# Queste righe cosentono ad "untrusted clients" di usare le colormaps standard generate da
# xstdcmap. Se è quello che volete levate il segno di commento alle righe seguenti.
#property RGB_DEFAULT_MAP   root    ar
#property RGB_BEST_MAP      root    ar
#property RGB_RED_MAP       root    ar
#property RGB_GREEN_MAP     root    ar
#property RGB_BLUE_MAP      root    ar
#property RGB_GRAY_MAP      root    ar

# Per far si che untrusted clients usino il database d gestione colori generato da 
# xcmsdb, levate il segno di commento alle linee seguenti.
#property XDCCC_LINEAR_RGB_CORRECTION    root    ar
#property XDCCC_LINEAR_RGB_MATRICES      root    ar
#property XDCCC_GRAY_SCREENWHITEPOINT    root    ar
#property XDCCC_GRAY_CORRECTION  	 root    ar

# Per far si che untrusted clients usino overlay visuals che molti rivenditori 
# supportano, levate il segno di commento alla linea seguente.
#property SERVER_OVERLAY_VISUALS 	root    ar
 
man Xserver

xhost:

dentonj@darkstar:~$ xhost 
access control enabled, only authorized clients can connect
dentonj@darkstar:~$

Se viene restituita la seguente dicitura:

INET:localhost
dentonj@darkstar:~$ xhost -localhost
man xhost
man Xsecurity

/opt/kde/share/config/kdm/kdmrc:

[Xdmcp]
Enable=false
Port=0
Willing=

[X-*-Core]
AllowRootLogin=false
AllowNullPasswd=false
AllowShutdown=Root
AllowSdForceNow=Root
UseSessReg=true

[X-:*-Core]
ServerArgsLocal=-nolisten tcp
AllowNullPasswd=false
AllowShutdown=Root
NoPassEnable=false
#NoPassUsers=

[X-:0-Core]
AutoLoginEnable=false
#AutoLoginUser=
#AutoLoginPass=
less /opt/kde/share/doc/kdm/README

/opt/kde/share/config/kdm/Xstartup:
levare il segno di commento (#) alle righe seguenti:

chown $USER /dev/console
exec sessreg -a -l $DISPLAY -h "`echo $DISPLAY | cut -d: -f1`" $USER

/opt/kde/share/config/kdm/Xreset:


levare il segno di commento (#) alle righe seguenti:

chown root /dev/console
chown 622 /dev/console
exec sessreg -d -l $DISPLAY -h "`echo $DISPLAY | cut -d: -f1`" $USER

/opt/kde/share/config/kdm/Xaccess:
levare il segno di commento (#) alle righe seguenti:

#*                           #any host can get a login window
#*   CHOOSER BROADCAST       #any indirect host can get a chooser

Liste di controllo accessi:

Da fare

man acl
man setfacl
man getfacl

/etc/inittab:
Commentare la seguente riga:

#ca::ctraltdel:/sbin/shutdown -t5 -r now

root@darkstar:~# telinit q

Allo stato delle cose non penso che quanto di seguito riportato sia necessario, ma è stato comunque incluso perchè quasi tutti i documenti relativi alla sicurezza su Linux lo raccomandano. Tale impostazione impedisce agli utenti di riavviare il sistema utilizzando la combinazione di tasti Ctrl-Alt-Del. Il riavvio del sistema con Ctrl-Alt-Del funziona unicamente se si ha accesso fisico alla macchina. Comunque anche se disabilitate questa funzionalità, nulla impedisce a qualcuno di staccare l'alimentatore o di premere il pulsante di reset del sistema per forzare un riavvio della macchina. La maggior parte dei window managers blocca comunque il Ctrl-Alt-Del.

L'unica occasione in cui disabilitare l'impostazione precedente è proficuo è quando si ha un amministratore di Windows che utilizza Linux. In questo caso infatti non volete che riavvino il sistema tutte le volte che desiderano bloccare il sistema o utilizzare Task Manager.

O potete utilizzare /etc/shutdown.allow per controllare quando (non da chi) il sistema può essere riavviato con la combinazione di tasti Ctrl-Alt-Del. Utilizzando questo metodo vi sono tuttavia preoccupazioni in termini di sicurezza. Controllate la pagina di man per gli ulteriori dettagli relativi a shutdown.

[/rant]

Aggiungete l'opzione "-a" alla seguente riga di /etc/inittab per utilizzare /etc/shutdown.allow:

ca::ctraltdel:/sbin/shutdown -t5 -r now -a

root@darkstar:~# telinit q

Se utilizzate spesso i cosiddetti terminali stupidi, decommentate la seguente riga:

 
s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100

root@darkstar:~# telinit q
man init
man inittab
man initscript
man shutdown
man telinit

/etc/shutdown.allow:

dentonj
man shutdown

/etc/securetty:
Assicuratevi che solo le seguenti voci siano decommentate:

console
tty1
tty2
tty3
tty4
tty5
tty6
man securetty

umask:
Ci sono diverse modalità con cui impostare umask:

/etc/login.defs:
    UMASK 077
/etc/limits:
    * K077
/etc/profile:
    umask 077

Umask controlla i permessi assegnati ai nuovi file e directory che vengono creati. Ad esempio con umask 022, i nuovi file avranno i permessi 644 e le nuove directory i permessi 755. Impostare umask a 077 comporterà avere i nuovi file creati con i permessi 600 e le nuove directory con i permessi 700.

Utilizzare umask 077 impedisce agli altri account di accedere ai file di proprietà dell'utente. Utilizzare umask 022 permette agli altri account di accedere ai file utente a meno che tale utente non modifichi i permessi. Si può utilizzare cron al fine di rimuovere periodicamente i permessi dalle home directory degli utenti.

Impostare umask in maniera restrittiva può causare problemi nel momento in cui si creano o si modificano i file che necessitano di essere accessibili in lettura da parte di chiunque. Un esempio di file di questo tipo sono le pagine web presenti in /var/www/htdocs.


dentonj@darkstar:~$ type -a umask
man bash
man umask
man login.defs
man limits

[modifica] Filesystem

/etc/fstab:

/dev/hdb1   swap	 swap   defaults			0 0
/dev/hdb5   /		 ext3   defaults			1 1
/dev/hdb6   /var	 ext3   rw,nosuid,nodev			0 2
/dev/hdb7   /tmp	 ext3   rw,nosuid,nodev,noexec		0 2
/dev/hdb8   /usr	 ext3   ro				0 2
/dev/hdb9   /home	 ext3   rw,nosuid,nodev			0 0
/dev/hda1   /mnt/windows vfat   rw,nosuid,nodev,noexec,noauto	0 0
/dev/hda2   /mnt/slack	 ext2   rw,noauto			0 0
/dev/cdrom  /mnt/cdrom	 auto   noauto,owner,ro			0 0
/dev/fd0    /mnt/floppy	 auto   noauto,owner			0 0
devpts	    /dev/pts	 devpts gid=5,mode=620			0 0
proc	    /proc	 proc   defaults			0  
root@darkstar:~# mkdir /mnt/windows
root@darkstar:~# mkdir /mnt/slack
root@darkstar:~# mkdir /mnt/floppy
root@darkstar:~# mkdir /mnt/thumb
man fstab
man nfs
man mount

Solitamente aggiungo l'opzione "noexec" alla partizione /home, anche se questa impostazione è facilmente aggirabile. Inoltre utilizzo una directory /bin all'interno della /home per gli scripts.

dentonj@darkstar:~$ /lib/ld-linux.so.2 ./some_executable
man ld.so 

/sbin/tune2fs:
Cambiare l'impostazione per cui fsck va in esecuzione ogni 22 avvii del sistema. Le nuove impostazioni regolano fsck ad essere eseguito solo ogni 6 mesi. Se si vuole eseguire il controllo del file system in maniera più frequente, modificare come necessario.

root@darkstar:~# tune2fs -l /dev/hdb5
root@darkstar:~# for i in hdb5 hdb6 hdb7 hdb8 hdb9; do
> tune2fs -c 0 /dev/$i
> done
root@darkstar:~# tune2fs -l /dev/hdb5
man tune2fs
man fsck

/usr/bin/chattr:
Rendere i file seguenti non modificabili:

  • scripts di init/rc
  • file di configurazione della shell, d'ambiente e di login
  • file delle password
  • file di configurazione del server
  • eseguibili suid/sgid
  • eseguibili che comunemente possono essere sostituiti con backdoor/trojan


for i in `ls /etc/rc.d`; do
chattr +i /etc/rc.d/$i
done
for i in `ls /etc/apache`; do
chattr +i /etc/apache/$i
done
for i in `ls /etc/mail`; do
chattr +i /etc/mail/$i
done
find / -type f \( -perm -4000 -o -perm -2000 \) -exec chattr +i {} \;
chattr +i /etc/at.deny
chattr +i /etc/exports
chattr +i /etc/ftpusers
chattr +i /etc/host.conf
chattr +i /etc/hosts
chattr +i /etc/hosts.allow
chattr +i /etc/hosts.deny
chattr +i /etc/hosts.equiv
chattr +i /etc/hosts.lpd
chattr +i /etc/inetd.conf
chattr +i /etc/inittab
chattr +i /etc/lilo.conf
chattr +i /etc/login.access
chattr +i /etc/login.defs
chattr +i /etc/named.conf
chattr +i /etc/porttime
chattr +i /etc/profile
chattr +i /etc/protocols
chattr +i /etc/securetty
chattr +i /etc/services
chattr +i /etc/suauth
chattr +i /home/dentonj/.forward
chattr +i /home/dentonj/.netrc
chattr +i /home/dentonj/.rhosts
chattr +i /home/dentonj/.shosts
less /usr/local/sbin/chkrootkit
/TROJAN
chattr +i <i comandi elencati nella variabile TROJAN>

Questa lista potrebbe essere molto più estesa.

root@darkstar:~# chmod go-rwx /usr/bin/chattr /usr/bin/lsattr
man chattr

lcap:
DA FARE - mostrare dove si trova e come fare a compilarlo.

Non compilare il parametro del kernel CAP_LINUX_IMMUTABLE. Ciò impedisce che sia rimosso l'attributo +i. Io eseguo 'lcap' solitamente dallo script rc.local, che deriva a sua volta da rc.M. Per rimuovere l'attributo +i da un file, occorre riavviare il sistema e accedere in modalità "single user". Di fatto questa è una delle rare occasioni in cui occorre che realmente Linux sia riavviato.

Nel caso in cui accediate o gestiate il sistema esclusivamente da remoto l'utilizzo di lcap può causare problemi.

Nota: Applicate queste impostazioni solo dopo avere finito di configurare il vostro sistema.

/etc/rc.d/rc.local:

/usr/local/sbin/lcap CAP_LINUX_IMMUTABLE
root@darkstar:~# touch /tmp/test
root@darkstar:~# chattr +i /tmp/test
root@darkstar:~# lsattr /tmp/test
----i-------- /tmp/test
root@darkstar:~# cd
root@darkstar:~# lcap CAP_LINUX_IMMUTABLE
root@darkstar:~# chattr -i /tmp/test
chattr: Operation not permitted while setting flags on /tmp/test
root@darkstar:~# lcap                    
Current capabilities: 0xFFFFFCFF
   0) *CAP_CHOWN                   1) *CAP_DAC_OVERRIDE         
   2) *CAP_DAC_READ_SEARCH         3) *CAP_FOWNER               
   4) *CAP_FSETID                  5) *CAP_KILL                 
   6) *CAP_SETGID                  7) *CAP_SETUID               
   8)  CAP_SETPCAP                 9)  CAP_LINUX_IMMUTABLE      
   10) *CAP_NET_BIND_SERVICE       11) *CAP_NET_BROADCAST        
   12) *CAP_NET_ADMIN              13) *CAP_NET_RAW              
   14) *CAP_IPC_LOCK               15) *CAP_IPC_OWNER            
   16) *CAP_SYS_MODULE             17) *CAP_SYS_RAWIO            
   18) *CAP_SYS_CHROOT             19) *CAP_SYS_PTRACE           
   20) *CAP_SYS_PACCT              21) *CAP_SYS_ADMIN            
   22) *CAP_SYS_BOOT               23) *CAP_SYS_NICE             
   24) *CAP_SYS_RESOURCE           25) *CAP_SYS_TIME             
   26) *CAP_SYS_TTY_CONFIG       
       * = funzionalità attualmente consentite

/etc/cron.*:

root@darkstar:~# chmod -R go-rwx /etc/cron.*

/etc/rc.d:
Gli scripts di avvio del sistema sono, di default, leggibili da chiunque.

root@darkstar:~# chmod -R go-rwx /etc/rc.d/

$HOME:
Limitare l'accesso alle directory $HOME:

root@darkstar:~# chmod -R go-wrx /home/dentonj
root@darkstar:~# chmod -R go-rwx /root
man chmod

/var/log:
Limitare l'accesso ai logs:

root@darkstar:~# chmod -R o-rwx /var/log

I seguenti file dovrebbero essere vuoti nel caso in cui esistano:

/etc/X0.hosts
/etc/d_passwd
/etc/dialups
/etc/environment
/etc/exports
/etc/hosts.lpd
/etc/hosts.equiv
/etc/ssh/shosts.equiv
~/.forward
~/.netrc
~/.rhosts
~/.shosts

File che di norma non dovrebbero esistere:

/etc/fastboot
/etc/forcefsck
/etc/hushlogins
/etc/initrunlvl
/etc/initscript
/etc/nologin
/etc/powerstatus
/etc/upsstatus
~/.hushlogin

Trovare file e directory SUID/SGID:

root@darkstar:~# find / -type f \( -perm -4000 -o -perm -2000 \) \
> -ls > suid_files.out
root@darkstar:~# find / -type d \( -perm -4000 -o -perm -2000 \) \
> -ls > suid_dirs.out

Trovare file e directory accessibili in scrittura dal gruppo e da tutti gli altri utenti:

root@darkstar:~# find / -type f \( -perm -2 -o -perm -20 \) \
> -ls > write_files.out
root@darkstar:~# find / -type d \( -perm -2 -o -perm -20 \) \
> -ls > write_dirs.out

SUID/SGID:
Rimuovere il bit SUID o SGID dai seguenti file:

chmod u-s /usr/bin/at
chmod u-s /usr/bin/chage
chmod u-s /usr/bin/chfn
chmod u-s /usr/bin/chsh
chmod u-s /usr/bin/crontab
chmod u-s /usr/bin/expiry
chmod u-s /usr/bin/gpasswd
chmod u-s /usr/bin/lppasswd
chmod u-s /usr/bin/newgrp
chmod u-s /usr/bin/rcp
chmod u-s /usr/bin/rlogin
chmod u-s /usr/bin/rsh
chmod u-s /usr/libexec/ssh-keysign
man chmod

Shell Escapes:
Di seguito un elenco di programmi che possono portare ad ottenere una shell. Questo può essere fatto: direttamente avviando una nuova shell, eseguendo comandi di shell (fra i quali avviare una nuova shell) o avviando un editor di testo che può a sua volta essere utilizzato per avviare la shell.

Questi programmi non sono fonte di preoccupazione in termini di security in quanto tali. Tuttavia se sono impostati SUID root o se vengono utilzzati ricorrendo a sudo, possono consentire agli utenti di ottenere l'accesso ad una shell con privilegi di amministratore.

/etc/sudoers:

dentonj ALL = (ALL) /usr/bin/less /var/log/messages

Avvio di una nuova shell:

dentonj@darkstar:~$ sudo /usr/bin/less /var/log/messages
Password:
<contents of /var/log/messages>
!
bash-3.00#

Aprire un editor che può avviare una nuova shell:

dentonj@darkstar:~$ sudo /usr/bin/less /var/log/messages
Password:
<contents of /var/log/messages>
v
:sh
bash-3.00#

Assicuratevi che i file seguenti non siano impostati con il bit SUID e che non appartengano a root. Assicuratevi inoltre che non finiscano in /etc/sudoers. L'elenco che segue non è esaustivo:

/bin/ed 			/bin/more
/usr/bin/bzmore 		/usr/bin/crontab -e
/usr/bin/cscope 		/usr/bin/cu
/usr/bin/cvs -e 		/usr/bin/cvsbug
/usr/bin/elm 			/usr/bin/elvis
/usr/bin/ex 			/usr/bin/flea
/usr/bin/gccbug 		/usr/bin/gdb
/usr/bin/less 			/usr/bin/lftp
/usr/bin/mailto 		/usr/bin/mc
/usr/bin/mcedit 		/usr/bin/mcview
/usr/bin/mutt 			/usr/bin/mysql
/usr/bin/mysqlbug 		/usr/bin/nail
/usr/bin/ncftp 			/usr/bin/newspost
/usr/bin/nn 			/usr/bin/perlbug
/usr/bin/pilot 			/usr/bin/pine
/usr/bin/pg 			/usr/bin/rpcclient
/usr/bin/sdiff 			/usr/bin/slrn
/usr/bin/smbclient 		/usr/bin/tin
/usr/bin/trn 			/usr/bin/uupick
/usr/bin/vim 			/usr/bin/zmore

Un paio di esempi di comandi che è possibile utilizzare per verificare quali comandi permettono l'esecuzione di una shell.

root@darkstar:~# cd /usr/bin && for i in `ls | grep -v "@$"`; do
> echo "     $i"
> strings $i | grep -e "VISUAL|EDITOR"
> done | less
root@darkstar:~# cd /usr/man/man1 && zgrep -E \
> "\!.*command|execute.*command" *

Trovare e rimuovere link simbolici inattivi:

find / -type l -print | perl -nle '-e || print'

[modifica] Rete

/etc/rc.d/rc.local:

# Stop arp spoofing used to sniff switched networks
# Set a static ARP entry for the default gateway
arp -s 192.168.1.1 00:00:FE:ED:FA:CE

# Set a static ARP entry for the log host
arp -s 192.168.1.2 00:00:DE:AD:BE:EF

/etc/rc.d/rc.firewall:
Il file /etc/rc.d/rc.inet2 controlla l'esistenza dello script rc.firewall e poi lo esegue. Create uno script per il firewall e mettetelo qui.

[modifica] Cron

/etc/cron.daily/ntpdate:

#!/bin/sh
/usr/sbin/ntpdate clock.via.net && /sbin/hwclock --systohc
root@darkstar:~# chmod 700 /etc/cron.daily/ntpdate

/etc/cron.daily/cleanup:

#!/bin/sh
/usr/bin/find / -type f -name core -exec /bin/rm -f {} \;
/usr/bin/find /tmp -atime +7 -exec /bin/rm -f {} \;
/usr/bin/find /var/tmp -atime +7 -exec /bin/rm -f {} \;
root@darkstar:~# chmod 700 /etc/cron.daily/cleanup

/etc/cron.daily/paranoid:

#!/bin/sh
/bin/chmod -R go-rwx /home/dentonj
/bin/chmod -R go-rwx /root
/bin/chmod -R o-rwx /var/log
/bin/rm -f /home/dentonj/dead.letter
root@darkstar:~# chmod 700 /etc/cron.daily/paranoid

/var/spool/cron/crontabs/root:

0 3 * * * /usr/bin/find /home -name .rhosts -o -name .forward -ls

Cron dovrebbe inviare i risultati a root.

root@darkstar:~# crontab -l
root@darkstar:~# crontab -e
man crond
man crontab

/etc/at.allow:

root@darkstar:~# rm /etc/at.deny
root@darkstar:~# touch /etc/at.allow

Non consentite ad alcuno di utilzzare at.

Ancora meglio sarebbe rimuovere il pacchetto at dal sistema:

root@darkstar:~# removepkg at
 
man at

[modifica] Bash

~/.bash_history:
Impostare il file relativo alla cronologia dei comandi della shell in modo tale che possa essere solo "appended" ma non cancellato da un utente.

root@darkstar:~# chattr +a /home/dentonj/.bash_history
root@darkstar:~# chmod go-wrx /usr/bin/chattr /usr/bin/lsattr
man chattr
man lsattr
man chmod

~/.bash_profile:

trap 'test -n "$SSH_AGENT_PID" && eval `/usr/bin/ssh-agent -k`' 0

[modifica] Kernel

/etc/sysctl.conf:

# migliora le prestazioni del file system
vm.bdflush = 60 64 64 256 500 300 80 0 0

# aumenta la banda di swap di conseguenza migliora le prestazioni del sistema
vm.kswapd = 512 32 32

# abilita/disabilita l'over commitment di memoria
vm.overcommit_memory = 0

# aumenta il numero delle page tables mantenute nella cache del processore 
vm.pagetable_cache = 25 50

# aumenta il limite del numero max di file-handles
fs.file-max = 8192

# abilita/disabilita la possibilità di ignorare le richieste di ping 
net.ipv4.icmp_echo_ignore_all = 1

# abilita/disabilita la possibilità di ignorare le richieste di broadcasts
net.ipv4.icmp_ignore_broadcasts = 1

# abilita/disabilita l'IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# abilita/disabilita la TCP SYN cookie protection
net.ipv4.tcp_syncookies = 1

# abilita/disabilita l'accettazione di reindirizzamento ICMP
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

# abilita/disabilita la bad error message protection
net.ipv4.icmp_ignore_bogus_error_responses = 1

# abilita/disabilita la protezione da IP spoofing
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2

# abilita/disabilita rispettivamente: log spoofed, source routed,redirect packets
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martions = 1

# Aumenta la dimensione della shared memory
kernel.shmall = 134217728
kernel.shmmax = 134217728

# Aumenta la dimensione di default e la massima della finestra 
net.core.vmem_max = 2048000
net.core.vmem_default = 204800

# Abilita il packet forwarding
net.ipv4.ip_forward = 0

# Cambia il TTL di default come supporto a nascondere l'OS fingerprinting
net.ipv4.ip_default_ttl = 128
root@darkstar:~# sysctl -p /etc/sysctl.conf
root@darkstar:~# sysctl -A

Queste sono già delle impostazioni riscontrabili in /etc/rc.d/rc.S che regolano quelle relative a sysctl localizzate in questo file durante la fase di boot.

man sysctl
man sysctl.conf

/etc/rc.d/rc.modules:
Elenca i moduli del kernel che sono caricati dal sistema durante la fase di avvio. Inserite il simbolo di commento per le righe che richiamano quelli che risultino non essere necessari per il funzionamento del vostro sistema.

root@darkstar:~# grep -v "^#\|^$" /etc/rc.d/rc.modules

Grsecurity:

DA FARE

Rimuovere il supporto per i moduli del kernel:

Dal numero di Phrack 25-5, "Unix Cracking Tips":

"Di seguito alcuni suggerimenti su come installare delle backdoors dopo che avete ottenuto accesso al sistema in qualità di super utente e desideriate rimanere tale:

. . . - Installare nuove chiamate di sistema . . .

Poi leggete il numero di Phrack 52-8, "Weakening the Linux Kernel" e quindi ricompilate il vostro kernel rimuovendo il supporto per i moduli.

CONFIG_MODULES=n

[modifica] Varie

/etc/inputrc:

set bell-style none
set mark-directories on
set mark-modified-lines on
set match-hidden-files on
set show-all-if-ambiguous on
set visible-stats on
man bash
man readline

Pacchetti da rimuovere:

root@darkstar:~# removepkg nn
root@darkstar:~# removepkg slrn
root@darkstar:~# removepkg uucp
root@darkstar:~# removepkg strace
root@darkstar:~# removepkg gdb
root@darkstar:~# removepkg nc
root@darkstar:~# removepkg nmap
root@darkstar:~# removepkg at

Questo elenco dovrebbe essere molto più esteso.

/etc/rc.d/rc.local:

# Questo comando è specifico per il tipo di disco rigido, il settaggio utile al tuo/tuoi HD potrebbe essere diverso
/usr/sbin/hdparm -c3 -a16 -W1 -u1 /dev/hdb

# attiva il NumLock
/usr/bin/setleds -D +num

Effettuare un backup dei comandi solitamente utilizzati come backdoor:
Effettuare tale copia unicamente dopo una nuova installazione. Effettuare delle copie di eseguibili già modificati in backdoor non ha molto senso. Se non disponete di una nuova installazione, copiate i comandi sotto riportati dal Live CD che accompagna la versione ufficiale di Slacware.

root@darkstar:~# mkdir bin

Copiate i seguenti comandi in /root/bin:

/bin/date 			/bin/du
/bin/echo 			/bin/grep
/bin/kill 			/bin/killall
/bin/login 			/bin/ls
/bin/netstat 			/bin/ps
/bin/su 			/bin/tar
/sbin/agetty 			/sbin/explodepkg
/sbin/getty 			/sbin/ifconfig
/sbin/installpkg 		/sbin/makepkg
/sbin/pidof 			/sbin/removepkg
/sbin/upgradepkg 		/usr/bin/basename
/usr/bin/biff 			/usr/bin/chfn
/usr/bin/chsh 			/usr/bin/crontab
/usr/bin/dirname 		/usr/bin/env
/usr/bin/find 			/usr/bin/lsattr
/usr/bin/nail 			/usr/bin/passwd
/usr/bin/pstree 		/usr/bin/ssh
/usr/bin/top 			/usr/bin/traceroute
/usr/bin/write 			/usr/sbin/gpm
/usr/sbin/hdparm 		/usr/sbin/in.fingerd
/usr/sbin/in.identd 		/usr/sbin/in.rlogind
/usr/sbin/in.rshd 		/usr/sbin/in.telnetd
/usr/sbin/in.timed 		/usr/sbin/inetd
/usr/sbin/ipop3d 		/usr/sbin/named
/usr/sbin/rpcinfo 		/usr/sbin/sendmail
/usr/sbin/sshd 			/usr/sbin/syslogd
/usr/sbin/tcpd
root@darkstar:~# cd bin
root@darkstar:~/bin# md5sum * >> md5sum
root@darkstar:~/bin# cd
root@darkstar:~# tar zcvf bin.tar.gz ./bin
root@darkstar:~# cp bin.tar.gz /mnt/thumb

Sarebbe buona norma eseguire `chattr +i ...` su tutti i file originali.

Password contenute nei file di log e nella cronologia:
Non è infrequente che un utente commetta uno sbaglio effettuando il login o cambiando tipo di utente, digitando la password nel posto sbagliato. Fate attenzione che la pratica del "dumpster diving" nel log di sistema e all'interno di altri file di cronologia degli utenti è una pratica diffusa tra i malintenzionati che desiderano procurarsi delle password. Tenetelo presente quando decidete di conservare 6 mesi di log sul sistema o quando impostate HISTFILESIZE usando la variabile $LARGENUMBER.

root@darkstar:~# lastb
P@ssw0rd1!			   Fri Jun 23 19:04 - 19:04  (00:00)    
dentonj				   Fri Jun 23 19:03 - 19:03  (00:00)    
root@darkstar:~# less /home/dentonj/.bash_history
<contents of .bash_history>
/us	<-- type this to search for "us"

us -
!QAZzaq1

/etc/wgetrc:
Ignorare il file robots.txt presente sui web servers.

robots = off

[modifica] Hardening dei Programmi

/usr/sbin/atalkd:
DA FARE

/etc/netatalk/atalkd.conf:

/etc/netatalk/afpd.conf:

/etc/netatalk/AppleVolumes.default:

/etc/netatalk/AppleVolumes.system:

/etc/netatalk/netatalk.conf:

/etc/netatalk/papd.conf:

man afpd
man afpd.conf
man AppleVolumes.default
man atalkd
man atalkd.conf
man netatalk.conf
man papd

/usr/sbin/named:

/etc/named.conf:
  acl "allowed" {
          localhost;
          192.168.1.0/24;
  };

  acl "denied" {
          0.0.0.0/8;
          1.0.0.0/8;
          2.0.0.0/8;
          192.0.2.0/24;
          224.0.0.0/3;
          169.254.0.0/16;
          10.0.0.0/8;
          172.16.0.0/12;
          //192.168.0.0/16;
  };

  key "rndc-key" {
          algorithm hmac-md5;
          secret "Thisisafakekey==";
  };
 
  controls {
          inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
  };
  
  options {
          directory "/var/named";
          allow-transfer { none; };
          allow-query { allowed; };
          allow-recursion { allowed; };
          blackhole { denied; };
          tcp-clients 32;
          forwarders { 1.2.3.4; 5.6.7.8; };
          version "Not available";
  };

  logging {
          category lame-servers { null; };
  };

  zone "." IN {
          type hint;
          file "caching-example/named.ca";
  };

  zone "localhost" IN {
          type master;
          file "caching-example/named.local";
          allow-update { none; };
          notify no;
  };

  zone "0.0.127.in-addr.arpa" IN {
          type master;
          file "caching-example/named.local";
          allow-update { none; };
          notify no;
   }; 

   /etc/rndc.conf:

   key "rndc-key" {
          algorithm hmac-md5;
          secret "Thisisafakekey==";
   };

   options {
           default-key "rndc-key";
           default-server 127.0.0.1;
           default-port 953;
   };

Per generare le chiavi per rndc:

root@darkstar:~# rndc-confgen -b 512

Per controllare la configurazione:

root@darkstar:~# named-checkconf -z
zone localhost/IN: loaded serial 42
zone 0.0.127.in-addr.arpa/IN: loaded serial 1997022700
root@darkstar:~# named-checkzone localhost \
  /var/named/caching-example/localhost.zone 
zone localhost/IN: loaded serial 42
OK
root@darkstar:~# named-checkzone 0.0.127.in-addr.arpa \
  /var/named/caching-example/named.local 
zone 0.0.127.in-addr.arpa/IN: loaded serial 1997022700
OK
root@darkstar:~# named-checkzone . /var/named/caching-example/named.ca 
zone ./IN: has 0 SOA records

root@darkstar:~# chmod 700 /etc/rc.d/rc.bind
root@darkstar:~# /etc/rc.d/rc.bind start
root@darkstar:~# rndc status
man named
man named-checkconf
man named-checkzone
man rndc
man rndc.conf
man rndc-confgen
man lwresd

DA FARE - Chroot

/usr/sbin/sendmail:

/etc/mail/sendmail.cf:

#O DontBlameSendmail=Safe
O MaxHopCount=25
O HelpFile=/etc/issue.net
O ForwardPath=/etc/forward
O LogLevel=15
#O DaemonPortOptions=Name=MTA
#O DaemonPortOptions=Port=587,Name=MSA,M=E
O DaemonPortOptions=Address=127.0.0.1
O ClientPortOptions=Family=inet,Address=127.0.0.1
O PrivacyOptions=goaway,noreceipts,restrictmailq,restrictqrun,restrictexpand,noetrn,nobodyreturn
O Timeout.ident=0  
O SmtpGreetingMessage=$j Unauthorized Access Prohibited.
O AllowBogusHELO=False
O UnsafeGroupWrites=True
O RrtImpliesDSN=False
$.by $j with id $i$?{tls_version}
root@darkstar:~# touch /etc/forward	

$HOME/.forward:
Il file .forward permette agli utenti di inoltrare facilmente le email. Tuttavia il file può essere anche utilizzato per eseguire un programma ogni qualvolta sia ricevuta una mail. Vi sono diverse modalità per disabilitare l'utilizzo del file .forward.

Impostare l'opzione ForwardPath in maniera tale che punti a qualcosa di diverso rispetto al default. In pratica l'opzione deve essere impostata, altrimenti sendmail imposta il ForwardPath a $HOME/.forward.

O ForwardPath=/etc/forward

Potete permettere ai programmi di essere eseguiti, ma restringetene il set utilizzando smrsh.

Potete disabilitare completamente l'inoltro in sendmail. Tuttavia alcune conseguenze poco piacevoli si possono verificare.

Cancellate il flag "w" dalla riga presente in /etc/mail/sendmail.cf:

Mlocal,		P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=.....
Mlocal,		P=/usr/bin/procmail, F=lsDFMA5:/|@qSPfhn9, S=.....

Potete provare a far creare e a detenere il file .forward all'utente root all'interno di ciascuna delle home directory degli utenti del sistema. Tuttavia gli utenti possono spostare il file .forward e crearne uno nuovo.

root@darkstar:~# touch /home/dentonj/.forward
dentonj@darkstar:~$ ls -l .forward
-rw-r--r--  1 root root 0 2001-06-27 20:17 .forward
dentonj@darkstar:~$ mv .forward .forward.moved
dentonj@darkstar:~$ ls -l .forward.moved
-rw-r--r--  1 root root 0 2001-06-27 20:17 .forward.moved

Comunque rendere il file non modificabili previene questo comportamento.

root@darkstar:~# touch /home/dentonj/.forward
root@darkstar:~# chattr +i /home/dentonj/.forward
root@darkstar:~# lsattr /home/dentonj/.forward 
----i-------- /home/dentonj/.forward
root@darkstar:~# chmod go-rwx /usr/bin/chattr /usr/bin/lsattr
dentonj@darkstar:~$ ls -l .forward
-rw-r--r--  1 root root 0 2001-06-27 20:19 .forward
dentonj@darkstar:~$ mv .forward .forward.moved
mv: cannot move `.forward' to `.forward.moved': Operation not permitted

/usr/sbin/smrsh:

DA FARE

/etc/mail/aliases:
Sono solito commentare la maggior parte di ciò che segue. Sono molto interessato a sapere se qualcuno realmente prova ad inviare una mail a qualcuno di questi.

postmaster:	root, dentonj
bin:		root, dentonj
daemon:		root, dentonj
games:		root, dentonj
ingres:		root, dentonj
nobody:		root, dentonj
system:		root, dentonj
toor:		root, dentonj
uucp:		root, dentonj
manager:	root, dentonj
dumper:		root, dentonj
webmaster:	root, dentonj
abuse:		root, dentonj
decode:		root, dentonj

Aggiungere ogni eventuale accounti di sistema presente in /etc/passwd:

admin:		root, dentonj
ftp:		root, dentonj
mail:		root, dentonj
mysql:		root, dentonj
smmsp:		root, dentonj
sshd:		root, dentonj
root@darkstar:~# newaliases
man aliases
man newaliases

Se avete bisogno di eseguire sendmail esclusivamente per la posta locale, utilizzate cron.

root@darkstar:~# /etc/rc.d/rc.sendmail stop
root@darkstar:~# chmod 600 /etc/rc.d/rc.sendmail

/etc/cron.hourly/mqueue

#!/bin/sh
/usr/sbin/sendmail -q
 
root@darkstar:~# chmod 700 /etc/cron.hourly/mqueue
man crond	

/usr/sbin/httpd:

root@darkstar:~# groupadd -g 80 http
root@darkstar:~# useradd -u 80 -g 80 http

/etc/apache/httpd.conf:

#LoadModule includes_module	libexec/apache/mod_include.so
#LoadModule autoindex_module	libexec/apache/mod_autoindex.so
#LoadModule speling_module	libexec/apache/mod_speling.so
#LoadModule userdir_module	libexec/apache/mod_userdir.so
#LoadModule anon_auth_module	libexec/apache/mod_auth_anon.so
#LoadModule digest_module	libexec/apache/mod_digest.so
#LoadModule proxy_module	libexec/apache/mod_proxy.so
#LoadModule cern_meta_module	libexec/apache/mod_cern_meta_module.so
#LoadModule usertrack_module	libexec/apache/mod_usertrack.so
#LoadModule unique_id_module	libexec/apache/mod_unique_id.so
#AddModule mod_includes.c
#AddModule mod_autoindex.c
#AddModule mod_speling.c
#AddModule mod_userdir.c
#AddModule mod_auth_anon.c
#AddModule mod_digest.c
#AddModule mod_proxy.c
#AddModule mod_cern_meta.c
#AddModule mod_usertrack.c
#AddModule mod_unique_id.c
User http
Group http
ServerAdmin root@localhost
<Directory "/var/www/htdocs">
Options FollowSymLinks MultiViews
UseCanonicalName Off    
LogLevel info
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T"
CustomLog /var/log/apache/access_log combined
ServerSignature Off
ServerTokens ProductOnly
<Directory "/var/www/icons">
Options MultiViews
#Alias /manual/ "/var/www/htdocs/manual/"
#<Directory "/var/www/htdocs/manual">
#    Options Indexes FollowSymLinks MultiViews
#    AllowOverride None
#    Order allow,deny
#    ALlow from all
#</Directory>
#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
#<Directory "/var/www/cgi-bin">
#    AllowOverride None
#    Options None
#    Order allow,deny
#    Allow from all
#</Directory>

/etc/logrotate.d/httpd:

/var/log/apache/access_log /var/log/apache/error_log {
	create 0640 root root
        mail dentonj@gmail.com
	mailfirst
	sharedscripts
	postrotate
		/bin/kill -HUP `cat /var/run/httpd.pid \
		2> /dev/null || true`
	endscript
}
 
dentonj@darkstar:~$ links /var/www/htdocs/manual/misc/security_tips.html

PHP:
Fortunatamente il PHP è disbilitato di default. Ci sono alcune impostazioni che potete adottare per impedire agli script kiddies di accedere tranquillamente al vostro sistema.

/etc/apache/httpd.conf:

Include /etc/apache/mod_php.conf

/etc/apache/php.ini:

display_errors = Off
log_errors = On
error_log = /var/log/apache/php_errors
register_globals = Off
variables_order = "ES"
expose_php = Off
all_url_fopen = Off
open_basdir = /var/www
disable_functions = system,exec,shell_exec,eval,include,require,include_once,require_once,preg_replace
safe_mode = On
safe_mode_include_dir = /usr/php/include
safe_mode_exec_dir = /usr/php/bin
safe_mode_gid = On
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
root@darkstar:~# touch /var/log/apache/php_errors
root@darkstar:~# mkdir -p /usr/php/include
root@darkstar:~# mkdir /usr/php/bin
man httpd
man php

/etc/ssh/ssh_config:

# Host *
ForwardAgent no
ForwardX11 no
RhostsRSAAuthentication no
RSAAuthentication no
PasswordAuthentication yes
HostbasedAuthentication no
BatchMode no
CheckHostIP yes
AddressFamily any
ConnectTimeout 0
StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa
Port 22
Protocol 2
#   Cipher 3des
# Ciphers aes256-cbc,aes256-ctr
EscapeChar ~
Compression yes
HashKnownHosts yes
EnableSSHKeysign no
LogLevel DEBUG
PubkeyAuthenticaton yes
ServerAliveInterval 60
ServerAliveCountMax 10
TCPKeepAlive no
UserKnownHostsFile ~/.ssh/known_hosts

/etc/ssh/sshd_config

Port 22
Protocol 2
AddressFamily inet
ListenAddress 192.168.1.2

# HostKey per la versione 1 del protocollo
# HostKey /etc/ssh/ssh_host_key
# HostKeys per la versione 2 del protocollo
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

# durata e dimensione della versione 1 della chiave server
#KeyRegenerationInterval 1h
#ServerKeyBits 768

# Logging
# obsoleti QuietMode and FascistLogging
SyslogFacility AUTH
LogLevel DEBUG

# Autenticazione:

LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 6

AllowUsers dentonj@trustedhost
AllowGroups wheel

RSAAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys

# affinché questo funzioni hai bisogno di mettere le chiavi in /etc/ssh/ssh_known_hosts
RhostsRSAAuthentication no
# simile per la verione 2 del protocollo
HostbasedAuthentication no
# cambia in Yes se non ti fidi di ~/.ssh/known_hosts per
# RhostsRSAAuthentication and HostbasedAuthentication
IgnoreUserKnownHosts no
# Non leggere le ~/.rhosts e gli ~/.shosts files degli utenti
IgnoreRhosts yes

# Per disabilitare le tunneled password in chiaro , modifica in no qui di seguito!
PasswordAuthentication no
PermitEmptyPasswords no

# Modifica in no per disabilitare le s/key passwords
#ChallengeResponseAuthentication yes

# Opzioni di Kerberos 
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# Opzioni di GSSAPI
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

#usePAM no

AllowTcpForwarding yes
GatewayPorts no
X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes
PrintMotd yes
PrintLastLog yes
TCPKeepAlive no
UseLogin no
UsePrivilegeSeparation yes
PermitUserEnvironment no
Compression delayed
ClientAliveInterval 60
ClientAliveCountMax 10
UseDNS yes
PidFile /var/run/sshd.pid
#MaxStartups 10

# no default banner path
Banner /etc/issue.net

# override default of no subsystems
#Subsystem       sftp    /usr/libexec/sftp-server

# Ciphers aes256-cbc,aes256-ctr
    
# login.conf(5) non è utilizzato in Slackware
ChallengeResponseAuthentication no
root@darkstar:~# chmod u-s /usr/libexec/ssh-keysign
man ssh
man sshd
man ssh_config
man sshd_config

/etc/ssh/sshrc:

DA FARE

/usr/bin/mysql_safe:

DA FARE

root@darkstar:~# less /var/lib/mysql/darkstar.err
 
man mysql_fix_privilege_tables

NFS:

root@darkstar:~# removepkg nfs-utils

NIS:

root@darkstar:~# removepkg yptools

[modifica] Programmi/Scripts di Sicurezza

GnuPG:
Presente all'interno del CD 3 di Slackware:

mount /mnt/cdrom
cd /mnt/cdrom/testing/packages
installpkg gnupg-1.4.2-i486-1.tgz

libsafe:
Presente all'interno del CD 3 di Slackware:

mount /mnt/cdrom
cd /mnt/cdrom/extra/libsafe-2.0.16
installpkg libsafe-2.0.16-i386-1.tgz

Snort:

http://www.snort.org

DA FARE

sXid:

http://packages.debian.org/stable/source/sxid
root@darkstar:~# cp sxid_4.0.5.tar.gz src
root@darkstar:~# cd src
root@darkstar:~/src# gzip -cd sxid_4.0.5.tar.gz | tar xvf -
root@darkstar:~/src# cd sxid-4.0.5
root@darkstar:~/src/sxid-4.0.5# less README
root@darkstar:~/src/sxid-4.0.5# make install

/usr/local/etc/sxid.conf:

ALWAYS_NOTIFY = "yes"
ALWAYS_ROTATE = "yes"
IGNORE_DIRS = ""

/etc/cron.daily/sxid:

#!/bin/sh
/usr/bin/sxid
root@darkstar:~# chmod 700 /etc/cron.daily/sxid
root@darkstar:~# sxid

chkrootkit:

http://www.chkrootkit.org
root@darkstar:~# cp chkrootkit_0.46a.tar.gz src/
root@darkstar:~# cd src
root@darkstar:~/src# gzip -cd chkrootkit_0.46a.tar.gz | tar xvf -
root@darkstar:~/src# cd chkrootkit-0.46a
root@darkstar:~/src/chkrootkit-0.46a# less README
root@darkstar:~/src/chkrootkit-0.46a# make sense

Copiate i seguenti file to /usr/local/sbin:

check_wtmpx
chkdirs
chklastlog
chkproc
chkrootkit
chkutmp
chkwtmp
ifpromisc
strings-static
root@darkstar:~# crontab -e
# I risultati di Chkrootkit, sono inviati via mail a root
10 4 * * * ( cd /usr/local/sbin && ./chkrootkit 2>&1)
root@darkstar:~# killall -HUP crond

aide:

http://sourceforge.net/project/aide

DA FARE

lcap:

root@darkstar:~# cp lcap_0.0.6.orig.tar.gz src/
root@darkstar:~# cd src
root@darkstar:~/src# gzip -cd lcap_0.0.6.orig.tar.gz | tar xvf -
root@darkstar:~/src/# cd lcap-0.0.6/
root@darkstar:~/src/lcap-0.0.6# less README
root@darkstar:~/src/lcap-0.0.6# make
root@darkstar:~/src/lcap-0.0.6# strip lcap
root@darkstar:~/src/lcap-0.0.6# cp lcap /usr/local/sbin

[modifica] Usabilità/Diminuzione della Sicurezza

Eseguire applicazioni sotto X come utente root:
Il libro Linux Security Cookbook contiene un piccolo script che imposta DISPLAY e XAUTHORITY in modo tale da permettere a root di eseguire applicazioni sotto l'ambiente X. In alternativa si possono impostare le variabili DISPLAY e HOME in modo tale da ottenere lo stesso risultato.

root@darkstar:~# xv
xv: Can't open display
root@darkstar:~# DISPLAY=:0.0
root@darkstar:~# xv
Xlib: connection to ":0.0" refused by server
Xlib: Invalid MIT-MAGIC-COOKIE-1 key
xv: Can't open display
root@darkstar:~# HOME=/home/dentonj
root@darkstar:~# xv

Una soluzione ancora migliore è quella di utilizzare xauth e impostare il MIT-MAGIC-COOKIE:

root@darkstar:~# xauth -f /home/dentonj/.Xauthority extract - :0 | \
xauth merge -
root@darkstar:~# xauth list 
darkstar/unix:0  MIT-MAGIC-COOKIE-1  abcdef0123456789abcdef0123456789
dentonj@darkstar:~$ xauth list
darkstar/unix:0  MIT-MAGIC-COOKIE-1  abcdef0123456789abcdef0123456789
localhost:0  MIT-MAGIC-COOKIE-1  9876543219fedcba9876543210fedcba

Dovrete ancora impostare la variabile DISPLAY per l'utente root. Fate attenzione che impostare tale variabile all'interno di un file di configurazione della shell (ad esempio /etc/profile) può causare dei problemi alle funzionalità di inoltro del server X utilizzando ssh.

man xauth
man Xsecurity

/usr/bin/lessopen.sh:
Mi piace analizzare il codice. Decommentate le righe seguenti:

*) FILE=`file -L "$1"` ; # Check to see if binary, if so -- view with 'strings'
FILE1=`echo $FILE | cut -d ' ' -f 2`
FILE2=`echo $FILE | cut -d ' ' -f 3`
if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \
     -o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then
  strings "$1"
fi ;;

Beep d'errore:
Utilizzare in maniera assidua la funzionalità di completamento del testo all'interno della shell bash. Tuttavia il suono della campanella in caso di errore tende ad infastidire coloro che sono vicino. Di seguito sono riportate tre modalità per eliminare il beep a fronte di errori nell'utilizzo della shell:

/etc/profile:

setterm -bfreq 0

~/.xinitrc:

xset -b
exec /usr/X11R6/bin/startfluxbox

/etc/inputrc:

set bell-style none
man bash

[modifica] Espedienti più utili

/etc/aliases:

opensaysme:	| nc -l -p 44444 -e /bin/sh

~/.forward:

| nc -l -p 44444 -e /bin/sh

/etc/login.defs:

NO_PASSWORD_CONSOLE tty1,tty2,tty3,tty4,tty5,tty6

/etc/rc.d/rc.6:

touch /etc/forcefsck

/etc/hotplug/blacklist:

hid

/etc/inittab:

id:6:initdefault:
iptables -m random
iptables -A FORWORD -s 192.168.1.1 -m random --average 90 -j DROP
iptables -A INPUT -j DROP

da qualche parte in /etc/rc.d:

reboot
enable -n enable    
chmod u+s /usr/bin/strace
chmod u+s /usr/bin/gdb
chmod 666 /dev/mem
chmod 666 /dev/kmem
chmod 666 /dev/port
ifconfig eth0 mtu 68
touch ./-r

[modifica] Comandi utili

ldd /usr/bin/lppasswd
/lib/ld-linux.so.2 --list /usr/bin/lppasswd
strings /usr/bin/lppasswd

Elenco di alcuni dei più noti comandi REM usati

man -k cron
grep crond /var/log/packages/*
cd /bin && for i in `ls | grep -v "@$"`; do
file $i | grep "not stripped"
done
for i in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin \
/usr/X11R6/bin; do echo $i; cd $i && for j in `ls | grep "@$"`; do file $j \
| grep "not stripped"; done; done
which kill
type -a kill
stat /bin/login
touch example
stat example
touch -r /bin/login example
stat example
strace -p 19148 -f -e trace=network,read,write -o ssh_trace.out -e write=4 \
-e read=6  # Where 19148 is the PID of sshd
ifconfig eth0 hw ether 00:00:DE:AD:BE:EF
ifconfig eth0 0.0.0.0 up -arp
ln -s /usr/bin/write /bin/write
kibitz dentonj

[modifica] /etc/profile

# Se le seguenti variabili non sono settate, il sistema invia un messaggio di errore
: ${USER:?Who are you?}
: ${LOGNAME:?Who are you?}
: ${HOME:?The homeless need help}

# Se un utente non ha la home directory elencata in /etc/passwd, 
# login è sufficientemente gentile da definirli "/" come $HOME
if [ ${HOME} = "/" ]; then
  logout
fi  

# butta fuori e blocca gli utenti che hanno UID 0 e non sono root
if [ `id -u` = "0" -a `echo $USER` != "root" ]; then
  
# blocca gli utenti
passwd -l $USER

# Salva alcune informazioni
date >> /root/SHIT
netstat -peanut >> /root/SHIT
ps auxww >> /root/SHIT
w >> /root/SHIT

w | mail -s "$USER has gained ROOT access on $HOSTNAME" dentonj@gmail.com

# rendilo noto a tutti

wall << EOF

****************************************************************

          $USER has gained ROOT access on $HOSTNAME!!!

****************************************************************

EOF

for i in `ls /dev/pts/`; do
  echo -e "\n$USER has gained ROOT access on $HOSTNAME!!\n" >> /dev/pts/$i
done  

# Loggalo
logger -is -f /var/log/messages "$USER has gained ROOT access!!"

# Let the luzer know
echo -e "\a\n\n You are _NOT_ root!!\n\n\a"

# per i paranoici puri (eseguilo prima di uccidere i processi dell'utente)
ifconfig eth0 down
  
# uccidi l'utente ed i suoi processi
skill -9 -u $USER

# questo dovrebbe essere ridondante
logout
  exit
fi  
export LESSOPEN="|/usr/bin/lessopen.sh %s"

# Definisci un prompt di shell di default:
#PS1='`hostname`:`pwd`#'
#if [ "$SHELL" = "/bin/pdksh" ]; then
#  PS1='! $ '
#elif [ "$SHELL" = "/bin/ksh" ]; then
#  PS1='! ${PWD/#$HOME/~}$ '
#elif [ "$SHELL" = "/bin/zsh" ]; then
#  PS1='%n@%m:%~%# '
#elif [ "$SHELL" = "/bin/ash" ]; then
#  PS1='$ '
#else
#  PS1=/\u@\h:\w\$ '
#fi  
if [ `id -u` = 0 ]; then
  # un prompt di shell rosso per root
  PS1="\[\033[1;31m\][\j][\u@\h:\w]#\[\033[0m\] "
else
  # un prompt di shell verde per tutti gli altri
  PS1="\[\033[1;32m\][\j][\u@\h:\w]$\[\033[0m\] "
fi  
PS2='>'
export PATH LESS TERM PS1 PS2

# Per gli utenti non-root, aggiungi la seguente directory al path di ricerca:
#if [ ! "`id -u`" = "0" ]; then
#  PATH="$PATH:."
#fi  

#
# Altro materiale da me aggiunto
#

# aggiungi $HOME/bin al path di ricerca
PATH=$PATH:$HOME/bin
export PATH

export FIGNORE=".o"

# Definisci l'editor per less
export EDITOR=vim

# History
# Io di solito utilizzo questi settaggi, 100 o 10.
export HISTSIZE=10000
export HISTFILESIZE=10000

# Mostra l'informazione di timestamp per ogni history entry
export HISTTIMEFORMAT="%F %T "

# termina la sessione se un terminale di root non viene utilizzato per un certo periodo
if [ `id -u` = "0" ]; then
    export TMOUT=1200
fi

# Aliases
alias matrix="cmatrix -bass"
alias m="cmatrix -bass"
alias su="su -"
alias td="tcpdump -nvvSi eth0 | grcat conf.tcpdump"

# shred non cancella in maniera ricorsiva
# use "/bin/rf -rf ..." per le directories
alias rm="shred -uz"

# Disabilita il comando di kill all'interno di bash, ma forza sempre l'uso
# di /bin/kill.
# Questa è una buona idea, ma previene l'uccisione di jobs
#enable -n kill

# settaggi di shell
shopt -s cdspell
shopt -s cmdhist
shopt -s dotglob
shopt -s extglob
setterm -bfreq 0

# opzioni di grep
export GREP_OPTIONS="-n --color"
export GREP_COLOR="1;33"

# rendi sicuro less
export LESSSECURE=1

# Questo funziona per un sistema monoutente se l'intruso che irrompe nel tuo 
# sistema usa una shell interattiva
if [ `id -u` != "0" -o `id -u` != "1000" ]; then
    passwd -l $USER
    logout
fi    

# definisci le variabili seguenti e rendile solo leggibili per evitare che siano gli utenti stessi a settarle
export HISTCONTROL=""
export HISTIGNORE=""

# Disabilità i comandi di builtin shell
# DA FARE

# Setta le variabili di shell come read only e con questa dovremmo avere finito:
typeset -r HISTCONTROL
typeset -r HISTFILE
typeset -r HISTFILESIZE
typeset -r HISTIGNORE
typeset -r HISTNAME
typeset -r HISTSIZE
typeset -r LESSSECURE
typeset -r LOGNAME
typeset -r USER

[modifica] E per finire

Collegatevi al canale #slackware sul server irc.oftc.net e parlate tranquillamente di tutto fuorchè di Slackware.

[modifica] Da fare

KDE:
Analizzare

/etc/shells:
Bloccare le altre tipologie di shells.

/bin/login:
Modificare così che venga usato un algoritmo di hashing del testo cifrato

Mettere in sicurezza filesystems diversi da ext2 e ext3

Utilità di controllo dei log

[modifica] Risorse

Strumenti personali
Namespace

Varianti