La Rete Configurazione di base della rete Configurazione di base della rete File system distribuiti File system distribuiti La sicurezza della rete La sicurezza della rete Giuseppe Stanghellini - IGM - CNR - Bologna
La rete TCP/IP La rete TCP/IP Le rete che si basa su IP (internet protocol) è stata sviluppata dall'esercito degli stati uniti con lo scopo di creare una topologia di rete che fosse in grado di sopravvivere ad eventuali attacchi. IP è alla base di una struttura di protocollo a livelli, ciascun livello di protocollo fornisce una funzione particolare al livello superiore. Le rete che si basa su IP (internet protocol) è stata sviluppata dall'esercito degli stati uniti con lo scopo di creare una topologia di rete che fosse in grado di sopravvivere ad eventuali attacchi. IP è alla base di una struttura di protocollo a livelli, ciascun livello di protocollo fornisce una funzione particolare al livello superiore. - IP (Internet protocol) - TCP (Transmission control protocol) - UDP (User datagram protocol) - ICMP (Internet control message protocol) - IP (Internet protocol) - TCP (Transmission control protocol) - UDP (User datagram protocol) - ICMP (Internet control message protocol) Insieme dei protocolli che si basano su IP
La rete TCP/IP La rete TCP/IP Lo stack di protocollo IP e i protocolli applicativi
La rete TCP/IP La rete TCP/IP L'header del pacchetto IP - Il protocollo IP non è orientato alle connessioni, cioè ciascun pacchetto è posto in rete ed inviato alla destinazione senza verifica che vi sia realmente giunto. - Nell'header del pacchetto si nota che gli indirizzi sono a 32 bit. - Il protocollo IP non è orientato alle connessioni, cioè ciascun pacchetto è posto in rete ed inviato alla destinazione senza verifica che vi sia realmente giunto. - Nell'header del pacchetto si nota che gli indirizzi sono a 32 bit.
La rete TCP/IP La rete TCP/IP L'header del pacchetto TCP - Il protocollo TCP è orientato alle connessioni, cioè sono garantiti sia la consegna che il corretto ordine dei pacchetti mediante l'uso di numeri sequenza e di conferme. - Il protocollo TCP usa i numeri di porte per instradare i pacchetti al processo corretto negli host di provenienza e destinazione. - Il protocollo TCP è orientato alle connessioni, cioè sono garantiti sia la consegna che il corretto ordine dei pacchetti mediante l'uso di numeri sequenza e di conferme. - Il protocollo TCP usa i numeri di porte per instradare i pacchetti al processo corretto negli host di provenienza e destinazione.
La rete TCP/IP La rete TCP/IP Struttura della rete TCP/IP - La rete TCP/IP è divisa in sottoreti, ognuna delle quali comunica con le altre reti attraverso un dispositivo chiamato gateway. - L'indirizzo di una macchina in rete è univoco ed è a 32 bit, ed è rappresentato come una quaterna di numeri, ognuno dei quali può essere assegnato nell'intervallo che va da 0 a 255, per esempio ' ' - Una sottorete è definita con un quaterna di numeri che specificano quale parte dell'indirizzo a 32 bit è statico e quale dinamico, per esempio la quaterna specifica che i primi tre numeri dell'indirizzo delle macchine della rete sono statici e che il quarto è invece modificabile; questa sottorete ha una disponibilità di 255 indirizzi diversi. - Se per esempio avessimo Ipaddr= , Netaddr= e tentassimo di comunicare con un IPaddr= , allora il sistema si renderebbe conto (tramite Netaddr e IPaddr) che il numero chiamato è al di fuori della sottorete locale e instraderebbe il pacchetto attraverso il gateway. - La rete TCP/IP è divisa in sottoreti, ognuna delle quali comunica con le altre reti attraverso un dispositivo chiamato gateway. - L'indirizzo di una macchina in rete è univoco ed è a 32 bit, ed è rappresentato come una quaterna di numeri, ognuno dei quali può essere assegnato nell'intervallo che va da 0 a 255, per esempio ' ' - Una sottorete è definita con un quaterna di numeri che specificano quale parte dell'indirizzo a 32 bit è statico e quale dinamico, per esempio la quaterna specifica che i primi tre numeri dell'indirizzo delle macchine della rete sono statici e che il quarto è invece modificabile; questa sottorete ha una disponibilità di 255 indirizzi diversi. - Se per esempio avessimo Ipaddr= , Netaddr= e tentassimo di comunicare con un IPaddr= , allora il sistema si renderebbe conto (tramite Netaddr e IPaddr) che il numero chiamato è al di fuori della sottorete locale e instraderebbe il pacchetto attraverso il gateway.
? Configurazione di base della rete Configurazione di base della rete Parametri da configurare: Numero IP (4 byte che identificano la macchina) Netmask (4byte che identificano la rete locale) Gateway (Dispositivo di rete che permette di uscire dalla rete locale) Nome host (Nome che identifica la macchina) DNS (Host che trasla da Nome host a numero IP) Quindi per garantire il collegamento dobbiamo configurare diversi parametri.
? Configurazione di base della rete Configurazione di base della rete
?
?
?
IfconfigIfconfig
IfconfigIfconfig
RouteRoute
HostnameHostname
DNS (domain name system) DNS (domain name system)
I servizi di rete I servizi di rete A questo punto, abbiamo configurato la rete dal punto di vista del basso livello, cioè abbiamo configurato la rete fino al livello di trasporto. Ora dobbiamo configurare i servizi, cioè dobbiamo configurare il livello applicativo. A questo punto, abbiamo configurato la rete dal punto di vista del basso livello, cioè abbiamo configurato la rete fino al livello di trasporto. Ora dobbiamo configurare i servizi, cioè dobbiamo configurare il livello applicativo. ?????? ??????
I servizi di rete I servizi di rete - Sono quei programmi che ci consentono di aprire sessioni telnet, ftp, web, nfs etc. - I servizi che si vogliono fornire sono quindi molti. - Il numero IP invece è unico. QUINDI - Ogni connessione di rete avviene attraverso un canale esclusivo (porta) che identifica in modo univoco la connessione stessa. - Vi sono porte dedicate a ben determinati servizi; quelle fino a 1023 e alcune successive. - Sono quei programmi che ci consentono di aprire sessioni telnet, ftp, web, nfs etc. - I servizi che si vogliono fornire sono quindi molti. - Il numero IP invece è unico. QUINDI - Ogni connessione di rete avviene attraverso un canale esclusivo (porta) che identifica in modo univoco la connessione stessa. - Vi sono porte dedicate a ben determinati servizi; quelle fino a 1023 e alcune successive. Cosa sono
I servizi di rete I servizi di rete Il file /etc/services (corrispondenza porta/servizio)
I servizi di rete I servizi di rete -Vengono implementati tramite programmi (demoni) che si pongono in ascolto su una porta che gli viene assegnata. -La modalità di esecuzione di tali programmi puo' essere di due tipi: 1) Installazione permanente del programma in memoria. 2) Esecuzione del programma su richiestadel client (alla apertura del collegamento). -Vengono implementati tramite programmi (demoni) che si pongono in ascolto su una porta che gli viene assegnata. -La modalità di esecuzione di tali programmi puo' essere di due tipi: 1) Installazione permanente del programma in memoria. 2) Esecuzione del programma su richiestadel client (alla apertura del collegamento). Come sono implementati
I servizi di rete I servizi di rete Modalità 'programma in memoria' Unix e' caratterizzato da una modalità di funzionamento definita 'runlevel', runlevel 1 per la modalita' 'single user', runlevel 3 per quella multiutente e cosi' via... Ad ogni runlevel corrisponde una configurazione dei servizi di rete che vengono offerti (attivati o disattivati). Unix e' caratterizzato da una modalità di funzionamento definita 'runlevel', runlevel 1 per la modalita' 'single user', runlevel 3 per quella multiutente e cosi' via... Ad ogni runlevel corrisponde una configurazione dei servizi di rete che vengono offerti (attivati o disattivati). Unix e i runlevel
I servizi di rete I servizi di rete Impostazione e configurazione dei runlevel I runlevel si impostano tramite il file di configurazione: /etc/inittab /etc/inittab La struttura di directory /etc/rc.d e' utilizzata dal sistema per fare partire o fermare i servizi nei relativi runlevel (rc0.d, rc1.d, rc2.d etc.)
I servizi di rete I servizi di rete Impostazione del runlevel predefinito
I servizi di rete I servizi di rete Configurazione dei runlevel(GUI)
I servizi di rete I servizi di rete Configurazione dei runlevel
I servizi di rete I servizi di rete Modalidtà 'esecuzione alla richiesta' - Si ottiene tramite un 'superservizio' in grado di attivare i servizi alla richiesta di un utilizzatore, si chiama Inetd e deve essere avviato con la modalita' precedente (rcX.d). - Ultimamente e' stato arricchito di una nuova sintassi e chiamato xinetd. (extended inetd) - Si ottiene tramite un 'superservizio' in grado di attivare i servizi alla richiesta di un utilizzatore, si chiama Inetd e deve essere avviato con la modalita' precedente (rcX.d). - Ultimamente e' stato arricchito di una nuova sintassi e chiamato xinetd. (extended inetd)
I servizi di rete I servizi di rete Configurazione di inetd (file /etc/inetd.conf)
I servizi di rete I servizi di rete Tcpd e i file /etc/hosts.* - Tcpd è un contenitore (wrapper) che offre delle capacità di logging e controllo degli accessi. - Viene eseguito prima del programma del servizio. - Intercetta tutto il traffico di rete da e verso il servizio, effettuando su di esso dei controlli che ne aumentano la sicurezza. - Il controllo degli accessi avviene tramite i file /etc/hosts.allow e /etc/hosts.deny. - Tcpd è un contenitore (wrapper) che offre delle capacità di logging e controllo degli accessi. - Viene eseguito prima del programma del servizio. - Intercetta tutto il traffico di rete da e verso il servizio, effettuando su di esso dei controlli che ne aumentano la sicurezza. - Il controllo degli accessi avviene tramite i file /etc/hosts.allow e /etc/hosts.deny.
I servizi di rete I servizi di rete Tcpd (come funziona) - Tre regole molto semplici applicate in cascata: 1) Se l'host è presente nel file hosts.allow la connessione è accettata. altrimenti 2) Se l'host è presente nel file hosts.deny la connessione è rifiutata. altrimenti 3) La connessione è accettata. - Tre regole molto semplici applicate in cascata: 1) Se l'host è presente nel file hosts.allow la connessione è accettata. altrimenti 2) Se l'host è presente nel file hosts.deny la connessione è rifiutata. altrimenti 3) La connessione è accettata.
I servizi di rete I servizi di rete Configurazione di xinetd (come si fa) -Xinted è caratterizzato da un file di configurazione principale e da un file per ogni servizio che puo' attivare ftp, telnet, etc. (ma potrebbe anche essere un file unico, TANTO PER COMPLICARCI LA VITA) -Il principale è /etc/xinetd.conf -Gli altri sono in /etc/xinetd.d/ -Xinted è caratterizzato da un file di configurazione principale e da un file per ogni servizio che puo' attivare ftp, telnet, etc. (ma potrebbe anche essere un file unico, TANTO PER COMPLICARCI LA VITA) -Il principale è /etc/xinetd.conf -Gli altri sono in /etc/xinetd.d/
I servizi di rete I servizi di rete Configurazione di xinetd (/etc/xinetd.conf)
I servizi di rete I servizi di rete Configurazione di xinetd (/etc/xinetd.d/)
I servizi di rete I servizi di rete Restart del servizio -Tutte le volte che si cambia un file di configurazione di un servizio, perchè i cambiamenti abbiano luogo è in genere necessario fare ripartire il servizio stesso. Per farlo è sufficente utilizzare lo script presente in /etc/init.d, per esempio: Per farlo è sufficente utilizzare lo script presente in /etc/init.d, per esempio: /etc/init.d/xinetd restart ma anche cambiamenti alla config. di rete: ma anche cambiamenti alla config. di rete: /etc/init.d/network restart -Tutte le volte che si cambia un file di configurazione di un servizio, perchè i cambiamenti abbiano luogo è in genere necessario fare ripartire il servizio stesso. Per farlo è sufficente utilizzare lo script presente in /etc/init.d, per esempio: Per farlo è sufficente utilizzare lo script presente in /etc/init.d, per esempio: /etc/init.d/xinetd restart ma anche cambiamenti alla config. di rete: ma anche cambiamenti alla config. di rete: /etc/init.d/network restart
File system distribuiti File system distribuiti - Permette ad un host remoto di montare partizioni di un sistema e di usare quelle partizioni come se fossero filesystem locali. - Correntemente ve ne sono due versioni, la 2 e la 3. Linux usa la 3 quando è disponibile, altrimenti prova con la 2. - La versione 3 è più evoluta e fornisce il supporto all'estensione LFS large file support che permette anche ai sistemi a 32 bit di creare e manipolare file più grandi di 2GB. - Permette ad un host remoto di montare partizioni di un sistema e di usare quelle partizioni come se fossero filesystem locali. - Correntemente ve ne sono due versioni, la 2 e la 3. Linux usa la 3 quando è disponibile, altrimenti prova con la 2. - La versione 3 è più evoluta e fornisce il supporto all'estensione LFS large file support che permette anche ai sistemi a 32 bit di creare e manipolare file più grandi di 2GB. NFS (network filesystem)
File system distribuiti File system distribuiti - NFS 2 e NFS 3 sono entrambi implementati sul contenitore tcpd, quindi anche loro utilizzano i file /etc/hosts.allow e /etc/hosts.deny. NFS 3 è meglio perchè: - Ha LFS, importante perchè si sta parlando di un filesystem distribuito, e quindi sistemi UNIX a 64 bit quali Solaris, Digital Unix, Irix etc, possono montare tale filesystem e avere la capacità di creare file più estesi di 2GB come per i loro filesystem proprietari (xfs, ufs, avfs etc). - NFS 3 gestisce meglio i problemi di rete. - NFS 2 e NFS 3 sono entrambi implementati sul contenitore tcpd, quindi anche loro utilizzano i file /etc/hosts.allow e /etc/hosts.deny. NFS 3 è meglio perchè: - Ha LFS, importante perchè si sta parlando di un filesystem distribuito, e quindi sistemi UNIX a 64 bit quali Solaris, Digital Unix, Irix etc, possono montare tale filesystem e avere la capacità di creare file più estesi di 2GB come per i loro filesystem proprietari (xfs, ufs, avfs etc). - NFS 3 gestisce meglio i problemi di rete. NFS (network filesystem)
File system distribuiti File system distribuiti - NFS usa RPC (remote procedure call) per indirizzare le richieste tra client e server. - I processi che lavorano tramite RPC e che permettono ad NFS di funzionare sono: 1) rpc.mountd: Accetta le richieste di 'mount' dai client. 2) rpc.nfsd: Implementa la parte utente della comunicazione NFS, in sostanza monta il file system e ne permette l'utilizzo alla stregua di uno locale. 3) rpc.statd: Implementa il 'Network Status Monitor' (NSM), utilizzato dal client alle inattese cadute del collegamento NFS. 4) rpc.quotad: Gestisce le quote. 5) rpc.lockd: Gestisce i lock sui file (ma ora ci pensa il kernel linux) - NFS usa RPC (remote procedure call) per indirizzare le richieste tra client e server. - I processi che lavorano tramite RPC e che permettono ad NFS di funzionare sono: 1) rpc.mountd: Accetta le richieste di 'mount' dai client. 2) rpc.nfsd: Implementa la parte utente della comunicazione NFS, in sostanza monta il file system e ne permette l'utilizzo alla stregua di uno locale. 3) rpc.statd: Implementa il 'Network Status Monitor' (NSM), utilizzato dal client alle inattese cadute del collegamento NFS. 4) rpc.quotad: Gestisce le quote. 5) rpc.lockd: Gestisce i lock sui file (ma ora ci pensa il kernel linux) Come funziona l'NFS
File system distribuiti (NFS) File system distribuiti (NFS) Configurazione di NFS Parte server: 1) Editare il file /etc/exports 2) Avviare (o riavviare) i servizi rpc.mountd e rpc.nfsd (i due che sono strettamente indispensabili al funzionamento di NFS) Parte Client: Montare i filesytem remoti tramite il comando mount: mount -t nfs hostname:/dir /dir_locale E infine (se tutto va bene): Inserire una riga di configurazione nel file /etc/fstab Parte server: 1) Editare il file /etc/exports 2) Avviare (o riavviare) i servizi rpc.mountd e rpc.nfsd (i due che sono strettamente indispensabili al funzionamento di NFS) Parte Client: Montare i filesytem remoti tramite il comando mount: mount -t nfs hostname:/dir /dir_locale E infine (se tutto va bene): Inserire una riga di configurazione nel file /etc/fstab
File system distribuiti (NFS) File system distribuiti (NFS)
La sicurezza della rete La sicurezza della rete MA SOPRATTUTTO L'erroreL'errore Molte volte trova la strada spianata e si diverte un mondo. - Molti utenti ritengono che i loro sistemi non siano appetibili agli hacker, questi stessi utenti sono esattamente quelli che gli hacker attaccano. - Qualsiasi macchina collegata in rete è appetibile, anche solo per il fatto di costituire essa stessa un nuovo punto di partenza per futuri attacchi. - L'hacker ha come obiettivo primario guadagnare accesso a quante più macchine gli è possibile. - Molti utenti ritengono che i loro sistemi non siano appetibili agli hacker, questi stessi utenti sono esattamente quelli che gli hacker attaccano. - Qualsiasi macchina collegata in rete è appetibile, anche solo per il fatto di costituire essa stessa un nuovo punto di partenza per futuri attacchi. - L'hacker ha come obiettivo primario guadagnare accesso a quante più macchine gli è possibile.
La sicurezza della rete La sicurezza della rete - Cambia i binari peculiari di unix allo scopo di guadagnare informazioni sugli utenti e di mantenersi celato (login, libc, etc.) - Installa nuovo software allo scopo di implementare servizi nascosti (chat-line, fserv per scambio file, etc.) - Utilizza la potenza di calcolo e la banda di rete disponibile per tentare di guadagnare l'accesso ad altre macchine. - Cambia i binari peculiari di unix allo scopo di guadagnare informazioni sugli utenti e di mantenersi celato (login, libc, etc.) - Installa nuovo software allo scopo di implementare servizi nascosti (chat-line, fserv per scambio file, etc.) - Utilizza la potenza di calcolo e la banda di rete disponibile per tentare di guadagnare l'accesso ad altre macchine. Cosa fa l'hacker (1)
La sicurezza della rete La sicurezza della rete - Utilizza lo spazio disco per memorizzare i propri file. - Utilizza proprio software per monitorare la rete (sniffing del traffico). - Utilizza servizi locali per propri scopi (spamming di posta etc.) - Utilizza lo spazio disco per memorizzare i propri file. - Utilizza proprio software per monitorare la rete (sniffing del traffico). - Utilizza servizi locali per propri scopi (spamming di posta etc.) Cosa fa l'hacker (2) E... (buon motivo per tenerlo fuori) - Se vuole CANCELLA TUTTO.
La sicurezza della rete La sicurezza della rete Cosa fa Consente, a chi lo sfrutta, di eseguire codice arbitrario con privilegi di root. Come funziona L'attacco avviene in generale sulle porte di rete attraverso le quali è presente un servizio (ftp, telnet, ssh etc.) che contiene un bug di overflow, l'attaccante sostituisce il programma sotto attacco con una shell, aprendo così a tutti gli effetti un accesso con utente root. Il buffer overflow
La sicurezza della rete La sicurezza della rete Cosa fa Consiste nel tentativo da parte dell'attaccante di impedire che un servizio sia disponibile agli utenti che normalmente ne fanno utilizzo. Come avviene (alcuni esempi) - Syn Flood (esaurimento delle risorse di rete, con conseguente blocco della rete della macchina attaccata) - Echo ICMP (saturazione della rete con messaggi ICMP con conseguente blocco di tutta rete.) - Syn Flood (esaurimento delle risorse di rete, con conseguente blocco della rete della macchina attaccata) - Echo ICMP (saturazione della rete con messaggi ICMP con conseguente blocco di tutta rete.) Il Denial of service (Dos)
La sicurezza della rete La sicurezza della rete Storicamente i servizi più critici sono stati sendmail, ftpd, sshd, telnetd. In ogni caso è buona norma disabilitare tutti i servizi che non servono, e se se ne può fare a meno disabilitare anche ftpd e telnetd (con ssh si fanno le stesse cose che con questi due servizi) Storicamente i servizi più critici sono stati sendmail, ftpd, sshd, telnetd. In ogni caso è buona norma disabilitare tutti i servizi che non servono, e se se ne può fare a meno disabilitare anche ftpd e telnetd (con ssh si fanno le stesse cose che con questi due servizi) Come posso disabilitare i servizi ? I servizi critici Come abbiamo visto precedentemente i servizi vengono attivati tramite i tre principali meccanismi: /etc/inittab, /etc/inetd.conf (xinted.d) e /etc/rc.d/rcX.d. Basta rimuoverli...
La sicurezza della rete La sicurezza della rete Usare ssh al posto di telnet: >ssh Usare scp al posto di ftp: >scp file_sorgente Perchè ssh + scp sono più sicuri di ftp + telnet ? -Utilizzano un solo servizio, e quindi sono fisicamente meno vulnerabili. -Le informazioni che si scambiano client e server sono tutte criptate quindi non e' possibile sniffarne le sessioni in modo intelligibile. -Utilizzano un solo servizio, e quindi sono fisicamente meno vulnerabili. -Le informazioni che si scambiano client e server sono tutte criptate quindi non e' possibile sniffarne le sessioni in modo intelligibile.
Il personal firewall Il personal firewall I dati che viaggiano in rete -I dati inviati in rete sono spediti non come blocco unico ma suddivisi in frammenti, chiamati pacchetti. Ogni pacchetto è costituito da un header che contiene provenienza, destinazione, tipologia e altro, e dai dati veri e propri (body). -Il kernel del computer di destinazione riassembla i dati in modo da ricostruire il flusso originale. -Il kernel è quindi in grado in via teorica di scartare o respingere pacchetti in base alle informazioni contenute nell'header o nel corpo dei dati. -I dati inviati in rete sono spediti non come blocco unico ma suddivisi in frammenti, chiamati pacchetti. Ogni pacchetto è costituito da un header che contiene provenienza, destinazione, tipologia e altro, e dai dati veri e propri (body). -Il kernel del computer di destinazione riassembla i dati in modo da ricostruire il flusso originale. -Il kernel è quindi in grado in via teorica di scartare o respingere pacchetti in base alle informazioni contenute nell'header o nel corpo dei dati.
Il personal firewall Il personal firewall E' un firewall locale, incorporato nel kernel. Ai dati è permesso passare attraverso il firewall solo se soddisfano un insieme di regole (filtri), che agiscono sulla base del tipo di pacchetto (telnet, ssh, etc), e su indirizzi e porte di provenienza e destinazione. Cosa è un firewall ? Un firewall è un dispositivo di rete che instrada i pacchetti verso altri dispositivi di rete, effettuando su di essi un filtraggio secondo una logica programmata. In pratica è un router che fa passare solo ciò che si vuole. Un firewall è un dispositivo di rete che instrada i pacchetti verso altri dispositivi di rete, effettuando su di essi un filtraggio secondo una logica programmata. In pratica è un router che fa passare solo ciò che si vuole. Cosa è un personal firewall
Il personal firewall Il personal firewall Come è implementato In linux vi sono due principali implementazioni: 1) ipchains (kernel 2.2.x) 2) iptables (kernel 2.4.x) Iptables è lo standard di oggi, ed è stato completamente riscritto per avere maggiori prestazioni e più chiarezza, noi esamineremo quest'ultimo. Nel kernel (parte netfilter) ci sono tre tabelle chiamate catene: INPUT, OUTPUT e FORWARD, quando il kernel riceve un pacchetto viene gestito nella modalità seguente: In linux vi sono due principali implementazioni: 1) ipchains (kernel 2.2.x) 2) iptables (kernel 2.4.x) Iptables è lo standard di oggi, ed è stato completamente riscritto per avere maggiori prestazioni e più chiarezza, noi esamineremo quest'ultimo. Nel kernel (parte netfilter) ci sono tre tabelle chiamate catene: INPUT, OUTPUT e FORWARD, quando il kernel riceve un pacchetto viene gestito nella modalità seguente:
Il personal firewall Il personal firewall Come è implementato (2) -All'arrivo del pacchetto, il kernel guarda a chi è destinato (fase di routing), se e' per la macchina locale allora il pacchetto passa all'esame della catena INPUT, se è per un'altra macchina sulla rete e il forward è abilitato (nel kernel) passa all'esame della catena FORWARD. -Se un programma eseguito sulla macchina cerca di spedire un pacchetto, questo pacchetto passa all'esame della catena OUTPUT. -Ogni catena è formata da una lista di regole, ogni regola è del tipo: 'SE IL PACCHETTO E' COSI' ALLORA FAI QUESTO CON IL PACCHETTO' dove QUESTO può essere: ACCEPT, DROP, QUEUE, RETURN. -Il kernel applica la prima regola della catena in esame e se non è soddisfatta passa a quella successiva, una volta che le regole sono esaurite applica la POLICY della catena (cioè la regola dei pacchetti che non soddisfano nessuna regola). -Per questo motivo la POLICY di ogni catena di regole del FIREWALL dovrebbe essere impostata a DROP. -All'arrivo del pacchetto, il kernel guarda a chi è destinato (fase di routing), se e' per la macchina locale allora il pacchetto passa all'esame della catena INPUT, se è per un'altra macchina sulla rete e il forward è abilitato (nel kernel) passa all'esame della catena FORWARD. -Se un programma eseguito sulla macchina cerca di spedire un pacchetto, questo pacchetto passa all'esame della catena OUTPUT. -Ogni catena è formata da una lista di regole, ogni regola è del tipo: 'SE IL PACCHETTO E' COSI' ALLORA FAI QUESTO CON IL PACCHETTO' dove QUESTO può essere: ACCEPT, DROP, QUEUE, RETURN. -Il kernel applica la prima regola della catena in esame e se non è soddisfatta passa a quella successiva, una volta che le regole sono esaurite applica la POLICY della catena (cioè la regola dei pacchetti che non soddisfano nessuna regola). -Per questo motivo la POLICY di ogni catena di regole del FIREWALL dovrebbe essere impostata a DROP.
Il personal firewall Il personal firewall Implementiamone uno molto semplice -La prima cosa da fare è impostare la POLICY in modo che TUTTO CIO' CHE NON E' ESPRESSAMENTE ACCETTATO VENGA RESPINTO >/sbin/iptables -P INPUT DROP E poi abilitare i protocolli da accettare (ssh,dns,pop etc.): > /sbin/iptables -A INPUT -s 0/0 -d p tcp --dport ssh -j ACCEPT > /sbin/iptables -A INPUT -s 0/0 -d p > Ma si può fare anche di più, con i nuovi filtri sullo stato della connessione (NEW, RELATED, ESTABLISHED), si può abilitare in maniera flessibile la connessione verso l'esterno, solo quando è originata dalla macchina locale. -La prima cosa da fare è impostare la POLICY in modo che TUTTO CIO' CHE NON E' ESPRESSAMENTE ACCETTATO VENGA RESPINTO >/sbin/iptables -P INPUT DROP E poi abilitare i protocolli da accettare (ssh,dns,pop etc.): > /sbin/iptables -A INPUT -s 0/0 -d p tcp --dport ssh -j ACCEPT > /sbin/iptables -A INPUT -s 0/0 -d p > Ma si può fare anche di più, con i nuovi filtri sullo stato della connessione (NEW, RELATED, ESTABLISHED), si può abilitare in maniera flessibile la connessione verso l'esterno, solo quando è originata dalla macchina locale.
L'intruso L'intruso Come accorgersi se un hacker ha preso possesso della nostra workstation - Un bravo hacker si nasconde molto bene. - Gli hacker che entrano in un sistema in genere lo perturbano perchè: 1) Si aprono delle backdoor 1) Si aprono delle backdoor 2) Utilizzano la banda di rete per i propri scopi 2) Utilizzano la banda di rete per i propri scopi 3) Utilizzano il filesystem locale per i propri scopi 3) Utilizzano il filesystem locale per i propri scopi 4) Utilizzano la cpu locale per i propri scopi 4) Utilizzano la cpu locale per i propri scopiQUINDI Dobbiamo cercare nel filesystem, nella rete e controllare i processi del sistema. - Un bravo hacker si nasconde molto bene. - Gli hacker che entrano in un sistema in genere lo perturbano perchè: 1) Si aprono delle backdoor 1) Si aprono delle backdoor 2) Utilizzano la banda di rete per i propri scopi 2) Utilizzano la banda di rete per i propri scopi 3) Utilizzano il filesystem locale per i propri scopi 3) Utilizzano il filesystem locale per i propri scopi 4) Utilizzano la cpu locale per i propri scopi 4) Utilizzano la cpu locale per i propri scopiQUINDI Dobbiamo cercare nel filesystem, nella rete e controllare i processi del sistema.
L'intruso L'intruso I cambiamenti nel filesystem - Backdoor: Per backdoor si intende una via secondaria di accesso al sistema, che dovrebbe essere disponibile anche se la via primaria utilizzata dall'hacker viene disabilitata: - Cosa controllare: 1) Che non siano eseguiti all'avvio programmi che implementano servizi che non conosciamo o servizi dal nome sospetto. 2) Che i servizi che lanciamo (ftpd, sshd, telnetd, etc.) siano REALMENTE quelli che vogliamo lanciare (cioè quelli forniti col sistema e non quelli compilati dall'hacker) - Come farlo: Per tenere traccia dei cambiamenti effettuati al filesystem esistono prodotti come tripwire, ma è sufficente fare dei confronti con un backup o con una macchina con la stessa installazione che non sia stata compromessa. - Backdoor: Per backdoor si intende una via secondaria di accesso al sistema, che dovrebbe essere disponibile anche se la via primaria utilizzata dall'hacker viene disabilitata: - Cosa controllare: 1) Che non siano eseguiti all'avvio programmi che implementano servizi che non conosciamo o servizi dal nome sospetto. 2) Che i servizi che lanciamo (ftpd, sshd, telnetd, etc.) siano REALMENTE quelli che vogliamo lanciare (cioè quelli forniti col sistema e non quelli compilati dall'hacker) - Come farlo: Per tenere traccia dei cambiamenti effettuati al filesystem esistono prodotti come tripwire, ma è sufficente fare dei confronti con un backup o con una macchina con la stessa installazione che non sia stata compromessa.
L'intruso L'intruso La banda di rete - L'hacker utilizza la rete per guadagnare l'accesso alle altre macchine ma per poterlo fare deve impostare l'interfaccia di rete nella modalità promiscua. Quando una scheda di rete è in questa modalità, prende tutti i pacchetti che circolano sulla rete come se fossero suoi (ovviamente senza levarli dalla rete). In questo modo l'hacker può leggere, ad esempio, le nostre sessioni telnet, a cominciare dal login (è tutto in chiaro a differenza di ssh). -Quindi se troviamo che l'interfaccia della nostra macchina è in modalità promiscua, è MOLTO PROBABILE che essa sia stata compromessa. - L'hacker utilizza la rete per guadagnare l'accesso alle altre macchine ma per poterlo fare deve impostare l'interfaccia di rete nella modalità promiscua. Quando una scheda di rete è in questa modalità, prende tutti i pacchetti che circolano sulla rete come se fossero suoi (ovviamente senza levarli dalla rete). In questo modo l'hacker può leggere, ad esempio, le nostre sessioni telnet, a cominciare dal login (è tutto in chiaro a differenza di ssh). -Quindi se troviamo che l'interfaccia della nostra macchina è in modalità promiscua, è MOLTO PROBABILE che essa sia stata compromessa.
L'intruso L'intruso La banda di rete (2) -Per controllare la rete è necessario sniffare i pacchetti della propria interfaccia di rete e verificare che tutto ciò che passa è realmente roba nostra, è molto utile a questo scopo installare TCPDUMP, ETHEREAL e NTOP. -L'accoppiata TCPDUMP + ETHEREAL fornisce un buon ambiente, con cui siamo in grado di ricostruire le sessioni TCP e visualizzarle in modalità ascii (nel caso non siano criptate). LINK: -Per controllare la rete è necessario sniffare i pacchetti della propria interfaccia di rete e verificare che tutto ciò che passa è realmente roba nostra, è molto utile a questo scopo installare TCPDUMP, ETHEREAL e NTOP. -L'accoppiata TCPDUMP + ETHEREAL fornisce un buon ambiente, con cui siamo in grado di ricostruire le sessioni TCP e visualizzarle in modalità ascii (nel caso non siano criptate). LINK:
L'intruso L'intruso Il carico della CPU - Controllare il carico della CPU non è banale come sembra. - I comandi top e ps in genere vengono modificati dall'hacker per non tenere conto dei propri processi. E ALLORA ? - Controllare il carico della CPU non è banale come sembra. - I comandi top e ps in genere vengono modificati dall'hacker per non tenere conto dei propri processi. E ALLORA ? Ci viene come al solito in aiuto il buon kernel linux, infatti esso memorizza nel filesystem /proc una serie di file che danno informazioni sul sistema, e tra i quali si trova loadavg (load average): Quindi da un confronto tra l'output di top e di cat /proc/loadavg si può capire se eventuali processi nascosti sono installati nel sistema, a patto che questi ultimi usino abbastanza CPU. Ci viene come al solito in aiuto il buon kernel linux, infatti esso memorizza nel filesystem /proc una serie di file che danno informazioni sul sistema, e tra i quali si trova loadavg (load average): Quindi da un confronto tra l'output di top e di cat /proc/loadavg si può capire se eventuali processi nascosti sono installati nel sistema, a patto che questi ultimi usino abbastanza CPU.
L'intruso L'intruso E se scopro che la mia workstation è stata compromessa cosa faccio ? Reinstallo tutto ! (altro buon motivo per sforzarsi di rendere la propria workstation più sicura) Reinstallo tutto ! (altro buon motivo per sforzarsi di rendere la propria workstation più sicura)