Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom
Bar]
[Photo of the
Author]
Michael Jastremski
L'Autore: Michael Jastremski ha lavorato sullo Unix negli ultimi quattro anni. Il suo sito web può essere trovato in genere all'http://westphila.net/mike . Ringrazia Andrew per l'aiuto con l'inglese.

Contenuto:
Introduzione
Passi per la sicurezza

Rinforzare la sicurezza nelle distribuzioni Linux più comuni

[Illustration]

Riassunto: Questo articolo discute i modi in cui gli amministratori di sistema possono proteggere i propri sistemi dagli intrusi. Si trattano vari modi per migliorare la sicurezza dei sistemi Linux.




Introduzione

Tentativi su larga scala di compromettere computer di rete stanno diventandoun luogo comune. Linux e FreeBSD sono diventati sempre più bersaglio di recenti attacchi, che implicavano il buffer overflow nell'imapd e nelle fonti BIND. Ogni giorno punti deboli di tutti i tipi e dimensioni vengono rivel ati tra i circa 20000 sottoscrittori della mailing list BUGTRAQ (Se sottoscrivete un'unica list sulla sicurezza, questa è quella giusta).

Sarebbe giudizioso ritenere che almeno uno di quei 19305 sottoscrittori scriverà un for() loop e sfrutterà un taglia e incolla per ottenere efficacemente accesso a quanti più computer possibile.

Prima o poi il loop creerà l'indirizzo del vostro computer. Non c'è un momento migliore di adesso per prepararsi.

Al di là di quanto qualche 'esperto possa avervi fatto credere, installare e mantenere un computer sicuro non è scienza missilistica.... Pratiche di amministrazione sensate servono da protezione dalle minacce della rete globale. Questo articolo descrive le precauzioni e gli accorgimenti che io prendo generalmente nell'installare un sistema RedHat Linux di rete. Anche se questo articolo fornisce delle linee guida per proteggere il vostro computer dai malintenzinati, non intende essere una trattazione completa. While this article provides guidelines for protecting your computer from the malicious intent of others, it is not intended to be a complete reference.

I seguenti sono alcuni passi che sperabilmente eviteranno che la vostra installazione cada preda del prossimo buco reso pubblico del vostro software di rete. ATTENZIONE: Se non sapete esattamente cosa state facendo, non fatelo. Alcuni di questi passi presumono una certa capacità di intuito da parte vostra. Garanzia non valida in Alaska, alle Hawaii e a Puerto Rico. Alla fine sono menzionate alcune letture consigliate..

Passi per la sicurezza

1.Rimuovete dal vostro sistema tutti i servizi di rete non necessari. Me no modi vi sono per accedere al vostro computer meno modi avrà a disposizione un intruso per penetrarvi. Commentate via tutto quello che non vi serve dal file /etc/inetd.conf. Non vi serve il telnet? Disabilitatelo. Lo stesso vale per ftpd, rshd, rexecd, gopher, chargen, echo, pop3d e gli latri. Non dimenticate di eseguire un 'killall -HUP inetd' dopo aver editato inetd.conf. Non trascurate nemmeno la directory /etc/rc.d/init.d. Alcuni servizi di rete (BIND, i printer daemon) sono programmi autonomi avviati da questi script. from these scripts.

2. Installate SSH. SSH è un rimpiazzo per molti di quegli arretrati comandi 'r' della Berkeley. Dall homepage all'http://www.cs.hut.fi/ssh.

SSH (Secure SHell) è un programma per connettersi ad un altro computer in una
rete, eseguire istruzioni sulla macchina remota, e spostare file da una
macchina all'altra. Fornisce comunicazioni sicure e forti protocolli di
riconoscimento su canali insicuri.

Fa anche un sacco di altre cose che ogni aspirante hacker dovrebbe trovare interessanti. Scaricate SSH dall'http://ftp.rge.com/pub/ssh .

3. Usate vipw(1) per bloccare ogni accesso senza login. Tenete nota del fatto che su RedHat Linux, l'accesso con il nome di una shell di login null è il default per /bin/sh, il che probabilmente non è quello che volete. Assicuratevi anche che nessuno dei vostri account abbia il campo della password vuoto. Il seguente è un esempio di come dovrebbe apparire la parte di sistema di un file di password sano.

  daemon:*:2:2:daemon:/sbin:/bin/sync
  adm:*:3:4:adm:/var/adm:/bin/sync
  lp:*:4:7:lp:/var/spool/lpd:/bin/sync
  sync:*:5:0:sync:/sbin:/bin/sync
  shutdown:*:6:0:shutdown:/bin:/sync
  halt:*:7:0:halt:/sbin:/bin:/sync
  mail:*:8:12:mail:/var/spool/mail:/bin/sync
  news:*:9:13:news:/var/spool/news:/bin/sync
  uucp:*:10:14:uucp:/var/spool/uucp:/bin/sync
  operator:*:11:0:operator:/root:/bin/sync
  games:*:12:100:games:/usr/games:/bin/sync
  gopher:*:13:30:gopher:/usr/lib/gopher-data:/bin/sync
  ftp:*:14:50:FTP User:/home/ftp:/bin/sync
  nobody:*:99:99:Nobody:/:/bin/sync                    

4. Rimuovete i bit 's' ai programmi posseduti da root che non hanno bisogno di questo pivilegio. Questo si può fare con il comando 'chmod a-s' con i nomidei file in questione come argomenti.

Questi programmi includono, ma non sono limitati a questi:

  1. programmi che non usate mai
  2. programmi che non volete possa far girare un qualsiasi utente non root
  3. programmi che usate qualche volta e che non vi crea problemi dover fare su(1) a root per farli girare..

Ho messo un asterisco (*) vicino ai programmi che personalmente disabiliterei. Ricordate che il vostro sistema richiede alcuni porgrammi con i privilegi di root per funzionare correttamente, quindi state attenti.

In alternativa potreste creare uno speciale gruppo chiamato 'suidexec', e posizionare gli account di utenti fidati in questo gruppo. Con chgrp(1) spostate i programmi suid fidati nel gruppo suidexec, e togliete a tutti gli altri il permesso di exec.

     
# find / -user root -perm "-u+s"    
*/bin/ping              
*/bin/mount              -- solo root dovrebbe poter montare file system                            
*/bin/umount             -- lo stesso vale qui   
/bin/su                  -- questo non toccatelo!
/bin/login
/sbin/pwdb_chkpwd
*/sbin/cardctl           -- utilità di controllo per le PCMCIA card
*/usr/bin/rcp            -- Usate ssh
*/usr/bin/rlogin         -- come sopra
*/usr/bin/rsh            --  "
*/usr/bin/at             -- usate cron, o disabilitateli entrambi
*/usr/bin/lpq            -- installate LPRNG
*/usr/bin/lpr            -- "
*/usr/bin/lprm           -- "
*/usr/bin/mh/inc
*/usr/bin/mh/msgchk
/usr/bin/passwd          -- non toccate! 
*/usr/bin/suidperl       -- ogni nuova versione di suidperl 
                            sembra avere un buffer overflow
*/usr/bin/sperl5.003     -- usatelo solo se necessario
/usr/bin/procmail        -- 
*/usr/bin/chfn
*/usr/bin/chsh
*/usr/bin/newgrp
*/usr/bin/crontab               
*/usr/X11R6/bin/dga      -- un sacco di buffer overflow 
                            anche in X11 
*/usr/X11R6/bin/xterm    -- "
*/usr/X11R6/bin/XF86_SVGA   -- "    
*/usr/sbin/usernetctl           
/usr/sbin/sendmail
*/usr/sbin/traceroute    -- potete sopportare di dover digitare la password di 
                            root ogni tanto                     

5. Aggiornate sendmail. Scaricate il sorgente da ftp://ftp.sendmail.org/pub/sendma il. Decomprimetelo e seguite le istruzioni. Installate smrsh (fornito con sendmail) se avete due minuti in più. Questo programma risponde a molti dei problemi che ha la gente con sendmail, come l'invio di email a programmi arbitrari. Editate sendmail.cf e settate l'opzione 'PrivacyOptions' a 'goaway':

        O PrivacyOptions=goaway

Se non avete intenzione di ricevere posta da internet, NON FATE GIRARE SENDMAIL IN MODALITA' DI RICEZIONE (sendmail -bd)!. In questo caso, disabilitate /etc/rc.d/init.d/sendmail.init e fate un 'killall -TERM sendmail'. Potrete ancora inviare posta al di fuori del vostro sistema.

6. Aggiornate BIND se lo usate. Il BIND più recente può essere trovato all'http://www.isc.org . Altrimenti disabilitatelo del tutto.

7. Ricompilate il kernel. Di solito lo faccio anche solo per migliorare le prestazioni rispetto al kernel di default. CONSIGLIO: settate tutt le opzioni di firewalling anche se il computer non è un firewall.

       
        CONFIG_FIREWALL=y
        CONFIG_NET_ALIAS=y
        CONFIG_INET=y
        # CONFIG_IP_FORWARD is not set
        # CONFIG_IP_MULTICAST is not set
        CONFIG_SYN_COOKIES=y
        CONFIG_RST_COOKIES=y
        CONFIG_IP_FIREWALL=y
        CONFIG_IP_FIREWALL_VERBOSE=y
        # CONFIG_IP_MASQUERADE is not set
        # CONFIG_IP_TRANSPARENT_PROXY is not set
        CONFIG_IP_ALWAYS_DEFRAG=y
        CONFIG_IP_ACCT=y
        # CONFIG_IP_ROUTER is not set
        # CONFIG_NET_IPIP is not set
        CONFIG_IP_ALIAS=m

8. Applicate i patch: Ogni problema noto con il loro software può essere trovato alla RedHat nelle loro pagine di Errata.(vedi http://www.redhat.com/support/docs/errata.html per trovare le patch da applicare alla tua versione). RedHat fa verament.e un buon lavoro nel tenere aggiornate queste pagine. Vi sono anche li nk ai file RPM che vi serviranno con istruzioni per l'installazione.

9. Configurate i tcp_wrappers: Tcp_wrappers sono un modo per controllare quali computer della rete posssono fare un 'talk' al vostro. Questo pacchetto, scritto dal guru della sicureza Wieste Venema, sta di fronte ai programmi lanciati da inetd (o quelli collegati alle sue librerie) consultando il suo file di configurazone per vedere se concedere o meno transizioni di rete. Per esempio, per consentire il telnet e l'ftp da casa attraverso il vostro isp, bloccando tutto il resto, aggiungete le righe seguenti in /etc/hosts.allow:

        in.ftpd : .dialup.your-isp.com : allow
        all : all : deny 

SSH, sendmail e altri pacchetti possono venire compilati con il supporto di tcp_wrappers. Leggete la pagina del manuale di tcpd(1) per ulteriori informazioni.

Secure Linux patches by Solar Designer:
http://www.false.com/security/li nux/

replay.com RedHat crypto pages:
http://www.replay.com/redhat/

Migliorare la sicurezza del vostro sito penetrando in esso:
http://www.alw.nih.gov/Security/Docs/admin-guide-to-cracking.101.html

Slashdot è una buona fonte per notizie aggiornate:
http://www.slashdot.org

Tenete aggiornato il software, visitate FreshMeat regolarmente:
http://www.freshmeat.net

Colpire nel mucchio:
http:/ /reality.sgi.com/nate/machines/security/P49-14-Aleph-One



Traduzione in italiano a cura di Seipse

Questo sito è gestito da Miguel Angel Sepulveda
© Michael Jastremski
LinuxFocus 1998