Slackware System Hardening: differenze tra le versioni
(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 12: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.
[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
- 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