Sicurezza con sistemi GNU/Linux Autore: Massimiliano Ferrero m Sicurezza con sistemi GNU/Linux Autore: Massimiliano Ferrero m.ferrero@midhgard.it Questo documento può essere scaricato dall'indirizzo http://www.midhgard.it/docs/
Argomenti Introduzione Sicurezza locale dei sistemi (Host security) Backup e Disaster recovery Sicurezza dei sistemi in rete (Network security) Possibili attacchi (alcuni dei...) Avvisi e aggiornamenti di sicurezza
Introduzione Conoscere ciò che si vuole proteggere Quanta sicurezza e perché? Livelli di rischio accettabili Analisi di rischio (Risk assesment) Rischio residuo Regole di sicurezza (Security policy)
Sicurezza locale dei sistemi (Host security) Sicurezza fisica Sicurezza degli utenti locali Sicurezza dei file system Permessi Integrity checker Logging e analisi dei log Password, autenticazione e crittografia Sicurezza del kernel
Sicurezza fisica Allarmi e antifurti Sistemi "anti-scippo" e "anti-scasso" per i pc Accesso ai locali Badge Smart card Accessi biometrici Password del BIOS Protezione del boot loader lilo grub Password dello screen saver (xlock, vlock)
Sicurezza degli utenti locali Sapere a chi si da gli account Sapere da dove si dovrebbero collegare gli utenti Rimuovere gli account inattivi root Non lavorare collegati come root, usare sudo Fare molta attenzione ai comandi dati come root Attenzione al PATH: mai . nel PATH di root ! No telnet, rlogin, rsh, rexec come root
Sicurezza dei file system (1): permessi unix Struttura dei permessi Lettura, scrittura, esecuzione (read, write, execute) Proprietario, gruppo, mondo (owner, group, world) umask SUID bit SGID bit sticky bit Niente SUID bit nei file system scrivibili da qualcuno che non sia root (nosuid in /etc/fstab)
Sicurezza dei file system (2): alcuni comandi Trovare tutti i file con SUID/SGID impostati find / -type f \( -perm -04000 -o -perm -02000 \) Trovare tutti i file scrivibili da tutti (world writable files) find / -perm -2 ! -type l -ls Trovare tutti i file senza owner: find / \( -nouser -o -nogroup \) -print Eseguire questi controlli periodicamente (di notte) e confrontare i risultati con quelli precedenti
Sicurezza dei file system (3): Integrity checker Tripwire http://www.tripwire.org Aide http://www.cs.tut.fi/~rammer/aide.html Osiris http://osiris.shmoo.com Samhain http://samhain.sourceforge.net Creano un database con le signature dei file rilevanti del sistema Usandoli periodicamente e confrontando i risultati è possibile rilevare modifiche non autorizzate
Logging e analisi dei log File di log /var/log syslog syslogd, klogd /etc/syslog.conf Analisi dei file log (intrusioni, modifiche, "buchi" temporali, ...) Logging remoto Logging sicuro/crittografato
Password /etc/passwd Crittografia DES non reversibile (one-way) MD5 /etc/shadow (Shadow password) Attacchi a forza bruta Crack John the ripper http://www.openwall.com/john
Autenticazione Password Shadow password Kerberos http://web.mit.edu/kerberos/www/ PAM (Pluggable Authentication Module) http://www.kernel.org/pub/linux/libs/pam/
Crittografia Simmetrica DES 3DES IDEA Blowfish Asimmetrica, sistemi a chiave pubblica e privata PGP (Pretty Good Privacy), RSA http://www.pgp.com http://www.pgpi.org GPG (GNU Privacy Guard), Diffie-Hellman, DSA http://www.gnupg.org
Sicurezza del kernel Opzioni / parametri del kernel per: Routing Spoofing ICMP Pacchetti frammentati Patch di sicurezza Openwall http://www.openwall.com/linux/ Patch IPTables, Patch-O-Matic http://www.iptables.org
Backup e Disaster recovery Salvataggi (backup) Politiche di rotazione dei supporti Immagazzinamento dei supporti Test di ripristino (restore) Password in busta chiusa Disaster recovery Documentazione dei sistemi Documentazione delle procedure
Sicurezza dei sistemi in rete (Network security) Servizi di rete e TCP wrappers Firewall SSH Certificati / SSL Protocolli sicuri di posta: APOP, ASMTP, STARTTLS, RBL IPSEC / VPN Packet sniffer, Port Scanner, Vulnerability Scanner, Intrusion Detect Systems
Servizi di rete Boot del kernel: l'ultima azione è il lancio del processo init, il "padre" di tutti gli altri processi init /etc/inittab /etc/init.d /etc/rc.d Demoni e superdemoni inetd, xinetd /etc/inetd.conf /etc/xinetd.conf Rimuovere i servizi inutili
TCP wrappers wrappers: sono dei processi che "avvolgono" (to wrap) altri processi, schermandoli in determinati modi tcpd: un TCP wrapper, permette di accettare connessioni solo da determinati indirizzi /etc/host.allow /etc/host.deny
NIS e NIS+ NIS (Network Information Service) o YP (Yellow Pages) NIS+ Permette di distribuire informazioni e file ai computer collegati su una rete Non ha meccanismi di sicurezza (autenticazione/crittografia) NIS+ Un'implementazione più recente Ha meccanismi di autenticazione e crittografia http://www.ibiblio.org/mdw/HOWTO/NIS-HOWTO
Identd Identd È un demone che tiene traccia delle connessioni iniziate dall'host sul quale è attivo Quando viene interrogato da un host remoto restituisce il nome dell'utente proprietario del processo che ha iniziato la connessione Di solito gli amministratori bloccano questo protocollo o disattivano il demone Se un processo di una nostra macchina cerca di compromettere un host remoto l'amministratore di quell'host può usare identd per identificare l'owner del processo e quindi informarci, noi potremo poi usare questa informazione per capire chi è l'intruso
Firewall ipfw (kernel 2.0) ipchains (kernel 2.2) Netfilter / iptables (kernel 2.4) iptables è un firewall statefull: ha "memoria" dello stato delle connessioni (nuove/già stabilite) Regole del tipo passa (ACCEPT) / non passa (DENY) in base a: Indirizzo/porta sorgente Indirizzo/porta destinazione Stato della connessione, protocollo Altre funzioni: logging, SNAT, DNAT, masquerading, ...
SSH SSH: una suite di protocolli per comunicazioni crittografate ssh v1.x ssh v2.0 OpenSSH: Una serie di strumenti (free) che sostituiscono strumenti classici non sicuri (telnet, rlogin, rcp, ...) http://www.openssh.org Port forwarding: può essere usato per crittografare altri servizi
X X11 xhost xdm: MIT-MAGIC-COOKIE-1, .Xauthority Le comunicazioni X avvengono in chiaro: X11 SSH port forwarding
Certificati / SSL (1) SSL: Secure Socket Layer Protocollo per comunicazioni sicure sviluppato da Netscape http://wp.netscape.com/eng/ssl3/ TLS: Transport Layer Security Una nuova versione del protocollo OpenSSL Una implementazione open source di SSL e TLS http://www.openssl.org S/MIME: protocollo per posta sicura Http://www.imc.org/smime-pgpmime.html
Certificati / SSL (2) Certificati Certification authority Contengono dati personali e la chiave pubblica di una persona Sono delle carte d'identità digitali Vengono emessi da enti certificatori che ne garantiscono l'autenticità Certification authority Emettono e firmano i certificati per gli utenti PKI (Public Key Infrastructure) http://verisign.netscape.com/security/pki/understanding.html
Protocolli sicuri di posta elettronica: ricezione, APOP (1) Normalmente lo scambio di username e password per la ricezione di mail avviene in chiaro APOP: estensione del protocollo POP3, la password viene scambiata crittografata http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc1939.html#page-15
Protocolli sicuri di posta elettronica: invio, ASMTP, STARTTLS, RBL (2) Normalmente l'invio di mail non richiede l'autenticazione dell'utente Ci sono gli spammer ASMTP: Authenticated SMTP POP before SMTP STARTTLS: TLS su SMTP http://www.sial.org/talks/smtpauth-starttls/talk.html Problema dei server di posta open relay Sistemi RBL: http://mail-abuse.org/rbl/
IPSEC IPSEC: un insieme di protocolli per garantire comunicazioni protette Confidenzialità (crittografia) Integrità (crittografia) Autenticità (firma) Comunicazioni non ripetibili AH: Autenticity Header ESP: Encapsulation Security Protocol FreeS/WAN http://www.freeswan.org CIPE: Crypto IP Encapsulation http://sites.inka.de/~bigred/devel/cipe-faq.html
VPN VPN (Virtual Private Network): Reti Private Virtuali Servono a creare canali protetti attraverso reti insicure (es. Internet) vtun http://vtun.sourceforge.net/ FreeS/WAN http://www.freeswan.org VPN su SSH http://www.linux.org/docs/ldp/howto/mini/VPN.html yavipin http://yavipin.sourceforge.net IPSEC, CIPE, ...
Packet sniffer Intercettano i pacchetti in transito sulla rete tcpdump epan, tcpshow: formattano l'output di tcpdump Ethereal http://www.ethereal.com/ Sniffit http://reptile.rug.ac.be/~coder/sniffit/sniffit.html Snort http://www.snort.org/
Port / Vulnerability Scanner Eseguono dei test su host remoti per capire di che tipo di sistemi si tratta, quali servizi vengono offerti e possibili "buchi" nella sicurezza SATAN http://www.trouble.org/~zen/satan/satan.html Nmap http://www.insecure.org/nmap/ Nessus http://www.nessus.org/ Non free SAINT http://www.saintcorporation.com/ ISS http://www.iss.net/
IDS (Intrusion Detection System) Rilevano attacchi in corso sulla rete Si basano sul rilevamento di sequenze (pattern) note degli schemi di attacco Snort http://www.snort.org/ ISS http://www.iss.net/ Possono generare un gran numero di falsi allarmi Altri strumenti http://www.freefire.org
Possibili attacchi (1) Cavalli di troia (Trojan Horses), backdoor Back Orifice (Windows) SubSeven (Windows) Netbus (Windows e Unix) The Trojan List http://www.simovits.com/sve/nyhetsarkiv/1999/nyheter9902.html Pacchetti compromessi Per evitarli vengono usate signature PGP o GPG Spyware Virus, Worm
Possibili attacchi (2) Buffer overflow, exploit Es. Vulnerabilità dell'OpenSSL estate 2002 http://www.cert.org/advisories/CA-2002-23.html Slapper: SSL/Apache worm Root Kit http://www.rootkit.com/ Una volta dentro il sistema si installa un root kit che permette di manterne il controllo, accedere alle password e/o nascondere la presenza dell'intruso es. si modificano login, netstat, ps
Possibili attacchi (3) Attacchi DoS (Denial of Service) L'attacco è basato sul fatto di interrompere i servizi erogati da uno o più host SYN flooding Ping flooding Smurf attack Ping'o'death Teardrop / New Tear Attacchi DoS distribuiti
Possibili attacchi (4) Packet sniffing ARP spoofing IP spoofing / hijacking DNS spoofing Attacchi "man in the middle" Attacchi TEMPEST (intercettazione elettromagnetica)
Avvisi e aggiornamenti di sicurezza Avvisi di sicurezza e vulnerabilità CERT http://www.cert.org Bugtraq http:// Aggiornamenti di sicurezza RHN: Red Hat Network security.debian.org Studiare, studiare, studiare!!! Tenersi informati e aggiornati!!!
WIFI: dove nessun pacchetto è mai giunto prima WIFI: protocolli wireless per comunicazioni senza fili (802.11b, 802.11a) Un sistema wireless è composto (almeno) da: Pc dotati di schede di rete wireless Access point Se non protette adeguatamente le reti wireless possono diventare un paradiso per i cracker WEP: Wireless Encription Protocol
WIFI: dal wardialing al warchalking C'era una volta il wardialing: si chiamavano numeri telefonici in cerca di sistemi nei quali introdursi Oggi la nuova frontiera è il wireless Warwalking Wardriving Warflying Warchalking http://www.warchalking.org
Hacker vs Cracker Hacker Cracker Script kiddies Per studio, solo per studio... Vogliono capire come funzionano le cose, smontarle e rimontarle al contrario Cracker Animati da meno nobili intenzioni Sono quelli che la stampa comunemente definisce “hacker” (erroneamente!!!) Script kiddies Usano script o programmi precotti per “bucare” sistemi, senza preoccuparsi di capire come funzionano e cosa fanno