============================================================================== =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- --------------------[ previous ]---[ index ]---[ next ]--------------------- ------------------------[ AN0NiMiZZARE i SiSTEMi UNiX ]----------------------- -----------------------[ Van Hauser (trad. by Blinking) ]--------------------- - 0.1 Introduzione Ho deciso di tradurre questo documento in lingua inglese scritto da van Hauser, THC <vh@reptile.rug.ac.be> poiche' offre validi spunti per personalizzare il proprio sistema *nix in modo da garantire la massima privacy e riservatezza; ma non solo, anche perche' non ho ancora trovato nessun documento in lingua italiana che tratti in modo pratico della riservatezza dei dati per end-users. Sono qui illustrati alcuni esempi di come possano essere integrati nel sistema operativo in ottimo modo i pacchetti di crittografia disponibili in rete come PGP, CFS, TCFS, SFS, secure_delete solo per citarne alcuni. La mia non ha la pretesa di essere un "howto secure your linux", ma solo una panoramica delle possibilita' offerte da questo sistema operativo. La traduzione e' da considerarsi libera; ho cercato di interpretare il senso di cio' che lo scrittore voleva esprimere, per ogni suggerimento scrivetemi. Le frasi che iniziano con la scritta "NB" sono delle mie considerazioni o aggiunte personali a quanto menzionato nel documento. Buona lettura! - 1. Utilizzatori Questo guida e' stata scritta per ogni persona umana che vuole mantenere i propri dati e la propria privacy lontani da ogni occhio indiscreto, monitoraggi del traffico di rete e furto/accesso dei computer. Hacker, phreaker, membri di partiti democratici in stati totalitari, persone impegnate nella difesa dei diritti umani, persone con alte cariche potrebbero essere interessate a queste informazioni. La guida e' stata scritta in modo particolare per hackers novelli in modo da non essere facilmente arrestati quando scoperti per la loro curiosita'. - 2. Obbiettivi Gli obbiettivi sono quelli di fornire soluzioni ai seguenti enunciati: a. La soluzione dovrebbe essere semplice e facile b. Tutti i dati degli utenti dovrebbero essere inaccessibili a chiunque eccetto il proprietario dei dati stessi c. Nessuno dovrebbe essere in grado di ricostruire cosa sta succedendo nel sistema - 3. Pre-requisiti E' importante soddisfare le seguenti condizioni per questo progetto: a. Il sistema dovrebbe essere sicuro. Nessun exploit remoto (e nemmeno locale) b. Il system administrator deve essere fidato e intenzionato a tutto questo c. Il sistema operativo che permette tutto cio' e' Unix (nel nostro caso Linux) Si noti che la soluzione presentata non si adatta al 100% con tutti i server. Tuttavia e' (vicino alla) perfetta utilizzazione per gli utenti finali. Per la parte Unix, noi mostriamo la soluzione per Linux perche' e' il sistema Unix piu' facile per i principianti (e non solo aggiungo....) per metterci mano ed amministrarlo. La distribuzione Linux che noi usiamo e' la SuSe Linux Distribution 6.0. La Debian e' migliore, ma piu' complicata per i principianti; ed a me non piace RedHat (NB: o RedAss, come dice Cavallo) per la sua mancanza di sicurezza. Dovremmo inoltre conoscere abbastanza di Unix (cosa e' portmap, mount, rc2.d, ecc.) prima di provare a capire questa guida. Non e' un Linux-Howto! - 4. Dati degli utenti 4.1 Dati 'sensibili' degli utenti Cosa sono i dati sensibili degli utenti? Ogni dato di un account di un utente. Questo include: - utmp/wtmp/lastlog (tempo di login e durata piu' host di login) - history files (quali comandi hai digitato durante la tua sessione) - email - files temporanei di applicazioni come emailer, browser, ecc. - applicazioni e le loro configurazioni - i tuoi dati personali (documenti, foto :P, dati confidenziali) - time stamps sui tuoi dati (quando i file hanno avuto accessi o modifiche) - su sistemi multiutente: cosa gli utenti stanno attualmente facendo. Questo include la lista dei processi e le connessioni di rete cosi' come utmp (che e' gia' incluso in un'altra categoria, cioe' quella di rendere proc piu' restrittivo). Stiamo tentando di proteggere tutte queste informazioni. Si noti che tmp/wtmp/lastlog e le email (mqueue/mail/fax/lpd) sono gestiti nella sezione "Dati di sistema". Tutti gli account degli utenti possono essere visti da /etc/passwd, cosi' potresti voler aggiungere qualche (o molti) account fasulli, insieme alle loro directory home e dati criptati. 4.2 Proteggere la directory /home La cosa piu' importante nella protezione dei dati degli utenti e' la protezione della directory /home. Ogni directory home deve essere criptata con un metodo robusto, cosi' anche in caso di accesso fisico al sistema (del tipo se vi portano via l'hdd) i dati non possono essere ugualmente ottenuti. Correntemente conosco solo un software che provvede a fornire una soluzione a questa richiesta: CFS - il filesystem crittografato. Ci sono anche altri soluzioni crittografiche disponibili: TCFS, SFS e il loop filesystem con supporto per la crittografia. Questi sono piu' veloci, ma hanno lo svantaggio che devi ricompilare il tuo kernel con patch per questi tool. Cosi', per scelta di semplicita', scelgo CFS qui. (Gli indirizzi di tutti questi programmi si trovano alla fine). Per abilitare CFS dobbiamo mettere queste sei linee in uno script rc2.d: portmap rpc.mountd -P 894 # mountd should bind to port 894 cfsd 895 # cfsd should bind to port 895 rm -rf /tmp/.tmp mkdir -p -m 700 /tmp/.tmp mount -o port=895,intr localhost:/tmp/.tmp /home In aggiunta, dobbiamo mettere questa linea in /etc/exports: /tmp/.tmp localhost Ok, questo fa partire il sunrpc con il mountdaemon che sono necessari per far partire ed usare CFS. Ora abbiamo bisogno di verificare le seguenti cose: se un utente fa il login ed il sistema ha verificato che e' gia' loggato all'interno deve decidere in quali casi decriptare la directory home dell'utente. Questo sembrerebbe difficle, ma e' facile: la directory /home/user dell'utente user non esiste (ed anche se esistesse le nove linee seguenti del comando mount la farebbero non esistente), cosi' la variabile HOME dell'utente e' settata su '/' (senza apici) della directory di root. Allora la sua login shell che viene avviata cerchera' il proprio script di partenza. Ed e' li dove noi metteremo il nostro zampino. Abbiamo creato (questo esempio e' per la shell bash) il file ./profile con il seguente contenuto cattach /crypt/$USER $USER || exit 0 export HOME=/home/$USER cd $HOME if test -f $HOME/.profile; then . $HOME/.profile fi Quanto un utente fa il login la prima volta, lo script viene eseguito. L'utente deve quindi inserire la password per la sua directory criptata e dopo di questo la variabile HOME corretta e' settata e il normale profilo di login viene caricato ed inizializzato. Se un utente non conosce la password per la sua directory criptata, resta chiuso fuori dal sistema. Ma noi come possiamo rimuovere la directory home decryptandola dopo il logout? Questo script dovrebbe essere intelligente, perche' un utente potrebbe essersi loggato diverse volte, e solo una volta deve essere rimossa quando l'ultima login di shell esce. Grazie a Dio, ache questo e' facile; noi creiamo uno script in /home/user/.bash_logout . # se il numero delle shell dell'utente e' maggiore di 3 allora questa e' # l'ultima hells=`ps xu | grep -- "$USER .* S .* -[^ ]*sh" | wc -l` test $shells -lt 3 || exit 0 export HOME=/ cd / cdetach $USER E' tutto. Da ora in poi, le directory home degli utenti sono sicure. Si noti che un utente ora non puo' piu' fare il login, avviare un processo in background e fare il logout perche' la sua directory home verrebbe rimossa. Lo script .bash_logout completo incluso controlla il file $HOME/.keep e nel caso in cui esista non rimuove la directory $HOME. Per login in rete dovresti tenere in mente che i login non dovrebbero essere fatti con rlogin, telnet, ecc perche' inviano tutto il traffico (incluse le password) in testo semplice attraverso la rete. Dovresti usare un tool che codifica il proprio traffico cone SSLTelnet oppure SSH (per SSH devi settare "UseLogin yes" nel file /etc/sshd_config). Troverai tutti questi script con correzione degli errori, creazione degli utenti, script d'arresto e file di configurazione della sezione "Esempi di configurazione". Si noti che abbiamo lanciato i demoni nella sezione che puo' essere contattata da remoto; se tu non lo vuoi (perche' non ci sono utenti esterni che necessitano di mountare i loro dati cifrati sulla loro macchina) dovresti firewallare queste porte. Guarda nelle pagine del manuale ("man ipchains" oppure "man ipfwadm"). 4.3 Tracciabilita' dell'attivita' degli utenti Tramite i timestamp e' facile vedere chi e' loggato sul sistema e cosa sta facendo. Anche se tutti i tuoi dati sono criptati, controllando l'ultima data di accesso ai tuoi files, qualcuno potrebbe controllare quando ti sei loggato l'ultima volta, per quanto tempo e se eri idle o stavi facendo molte cose. Esempio: il primo accesso per un file criptato nella tua directory home puo' essere visto con: ls -altur /crypt/$USER | head -1 # mostra il file di logout con alcune ls -altu /crypt/$USER | more # cose che troverai al momento del login allora hai anche la durata della sessione. Controllando i cambiamenti/modifiche e il tempo di accesso di questi files criptati con i loro timestamp qualcuno puo' vedere quanto tu stavi lavorando, e trarre conclusioni (ad esempio molti files suddivisi in un ramo a tre livelli con directory che sono stati modificate, probabilmente appertengono ad un browser - cosi' tu stavi navigando...) Questo ora rendera' possibile controllare quali comandi sono stati eseguiti: diciamo che il login e' stato effettuato 22 ore fa, quindi lancieremo: find / -type f -atime 0 -ls # mostra i file che hanno avuto accessi find / -type f -mtime 0 -ls # mostra i file che hanno avuto modifiche (questo puo' essere fatto anche con le directory). Ora controlliamo l'output con l'elenco dei tempi esatti, e analizziamo cosa si puo' trovare. Per esempio e' stato usato il client telnet; e' cosi' probabile che l'utente si sia connesso ad un altro sistema. Ora puoi immaginare cosa sia possibile fare... Proteggerti da tutto cio' e' molto semplice: crea il file /usr/local/bin/touch_them e rendilo eseguibile con i seguenti contenuti find /crypt /tmp /etc /var/spool 2> /dev/null | xargs -n 250 touch Dopodiche inserisci la seguente linea in /etc/crontab 50 * * * * root /usr/local/bin/touch_them e per finire cambia la 4a colonna di tutte le linee in /etc/fstab che hanno la scritta "ext2" nella loro terza colonna (del tipo di filesystem). defaults (o ogni qualsiasi altra cosa) dovrebbe diventare defaults,noatime (il vecchio valore viene mantenuto e noatime aggiunto) esempio: /dev/hda1 / ext2 defaults 1 1 diventa /dev/hda1 / ext2 defaults,noatime 1 1 Cosa abbiamo fatto? Il crontab con lo script aggiorna gli atime, mtime e ctime delle directori speciali (specialmente quelle che potrebbero contenere dati di utenti) all'ora corrente ogni ora. 4.4 Proteggere /var/spool/* /var/spool/mail Ora usiamo uno stratagemma: come possiamo proteggere la nuova posta per un utente ad occhi indiscreti? Non puo' essere spedita direttamente nella directory home dell'utente come qmail vorrebbe fare, perche' e' criptata. La soluzione piu' semplice da utilizzare e' quella di usare pgp per criptare le tue email in uscita e di dire ai tuoi amici che anche loro dovrebbero criptare tutte le loro email per te. Tuttavia questo non e' soddisfacente. Qualcuno potrebbe ancora vedere chi ha spedito all'user l'email; la sola possibilita' di nasconderlo, e' quella di usare un anonymous remailer. Non e' una grande soluzione, percio' questo punto resta aperto (vedi sezione 10.2: Altri pensieri) /var/spool/{mqueue|fax|lpd} : Tutto quello che possiamo fare e' tentare di fare il flush di quelli in lista nella fase di shutdown del sistema. Devi aver deciso se eliminare i files che rimangono in modo sicuro, oppure lasciarli dove sono; oppure se programmare uno script che fa qualcosa con i dati (come compattarli e criptarli con pgp, facendo le operazioni inverse quando il sistema e' riavviato). Potresti anche creare una propria partizione criptata che contenga /var, ma questo richiederebbe qualcuno alla console al momendo del boot ogni volta. - 5. Dati di sistema 5.1 Dati di sistema "sensibili" Cosa sono i dati di sistema sensibili? Ogni cosa che permette di trarre conclusioni sui dati in ingresso e uscita, files di configurazione, log, avvii e spegnimenti del sistema. Questo include: - utmp/wtmp/lastlog (avvio, riavvio, ora dello shutdown e tempi degli utenti) - script per le connessioni dial-up ppp - configurazioni di sendmail e tcp wrapper - dati dei cache proxy (come squid web/ftp proxy) - messaggi del syslog - dati in /var/spool/* {mqueue|fax|lpd|mail} - files temporanei da demoni (daemons) - timestamp sui dati (quando ci sono stati accessi/modifiche) 5.2 Tracciabilita' dell'attivita' di sistema Si puo' tracciare l'attivita' del sistema semplicemente controllando i files temporanei creati da demoni ed applicazioni. Alcuni si trovano in /tmp, mentre per le applicazioni di root solitamente (dovrebbero) si trovano in /var/run. Ne parleremo nella sezione 5.3 "Log". Tutto quello che per ora devi fare e' questo, e devi farlo una volta sola. cd /var mv run log ln -s log/run run Questi comandi spostano la directory /var/run in /var/log/run e creano un link simbolico nella directory iniziale cosi' le applicazioni possono ancora trovare i loro files. 5.3 Log - importanti e pericolosi Loggare e' importante per determinare i problemi come errori di configurazione. Loggare e' pericoloso perche' un curiosone (NB: preferisco chiamarlo cosi'!) potrebbe vedere dati importanti nei file di log, come i gli orari di login e logout di un utente, oppure se ha eseguito "su" oppure altri comandi, etc. Noi cercheremo di trovare un compromesso tra questi due. La nostra soluzione: scrivere tutti i files di log in una directory speciale. La directory e' un RAM disk, in modo tale che i dati vengono persi dopo lo shutdown del sistema. Assicurati che il syslogd [/etc/syslog.conf] ed altri demoni (esempio httpd [apache]) scrivano solo nella nostra directory speciale o nella console di sistema. /var/log dovrebbe essere usato come la directory speciale. Ora inseriamo i seguenti comandi in /sbin/init.d/boot.local umask 027 mke2fs -m0 /dev/ram0 1> /dev/null 2>&1 rm -rf /var/log/* 2> /dev/null mount -t ext2 /dev/ram0 /var/log chmod 751 /var/log cd /var/log mkdir -m 775 run chgrp uucp run for i in `grep /var/log /etc/syslog.conf|grep -v '^#'| \ awk '{print $2}'|sed 's/^-//'` do > $i ; done umask 007 # potrebbe essere anche usato 002 for i in run/utmp wtmp lastlog do > $i ; chgrp tty $i ; done cd / kill -HUP `pidof syslogd` 2> /dev/null Dopo il tuo prossimo reboot il sistema si comportera' come descritto sopra. A qualcuno potrebbe non piacere l'idea di non avere nessun log dopo il reboot, in questo modo non si puo' tracciare un intruso o trovare dai tuoi log che cosa ha fatto crashare il tuo pc. Ad ogni modo puoi sempre comprimere e criptare i files con pgp prima che lo shutdown sia completato (ma i dati verrebbero persi comunque in caso di crash); oppure potresti anche usare ssyslog o syslog-ng, sistemi di log speciali con supporto per la crittografia e scrivere i dati che veramente vuoi tenere in (e' solo un esempio) /var/slog. Puoi anche creare una intera partizione criptata /var, ma questo richiederebbe qualcuno alla console di sistema durante il boot, ogni volta. 5.4 Proteggere la configurazione di sistema Qui ci vuole un po di ingegno, l'obbiettivo e' facile da raggiugere, ma ad un costo: se noi creiamo un account con uid 0 che ha la directory home in /home ed e' da questo momento protetta dalla configurazione di CFS, dovrai essere alla console ad ogni reboot. Questo non e' comodo per i sistemi server che necessitano di essere amministrati e riavviati da remoto. Quindi questa soluzione e' adatta solo per utenti finali di pc. Crea un account con uid settato a 0 (esempio, con login name "admin"), puoi usare lo script create_user dalla sezione 9. Inserisci la configurazione dei dati sensibili in questa directory (script per il dialup ppp, file di sendmail sendmail.cf, squid con la loro directory di cache settata ad una sottodirectory di "admin", etc.). Ora crea un piccolo script di shell che avvia questi demoni con una linea di comando con l'opzione di usare i files di configurazione nella directory home dell'utente chiamato "admin". Il sistema e' quindi sicuro dall'estrapolazione di informazioni sensibili dai files di configurazione, ma con un prezzo: devi loggarti dopo ogni reboot come utente "admin", inserire la password per CFS e lanciare lo script. 5.5 Memoria dei computers e interfaccia /proc Assicurare la privacy nei sistemi multiutente per gli utenti on-line richiede da parte dell'amministratore di nascondere la lista dei processi degli utenti; cosa che un utente potrebbe normalmente vedere quando esegue comandi come "who" oppure "ps". Per proteggere la lista dei processi di un utente, puoi usare la patch per il kernel secure-linux di Solar Designer. Per proteggere utmp/wtmp/lastlog assicurati che questi files siano leggibili solo dalla root e gruppi tty; da questo momento un utente normale non puo' accedere a questi dati (questo viene fatto tramite lo script di esempio boot.local). Ora manca solo un problema cioe' quello che con della RAM normale una organizzazione economicamente dotata puo' salvare i contenuti della memoria anche dopo lo spegnimento del sistema. Con le moderne SDRAM in cui i dati restano nella ram permanentemente fino a quando dei nuovi dati vengono scritti, e' ancora peggio. Per questo ho introdotto un piccolo tool nel "secure_delete" package 2.1 chiamato "smem" che cerca di pulire la memoria; questo programma dovrebbe essere lanciato dallo shutdown, come e' stato fatto nell'esempio 6.4 - 6. Dati cancellati e swap 6.1 Come cancellare i files in modo sicuro Quando un file viene cancellato, solo l'inode viene cancellato mentre i dati contenuti NON sono eliminati e possono essere raccolti con dei tool come "dd" oppure manipulate_data dei THC. Peter Gutmann scrisse il libro "Secure Deletetion of Data from Magnetic and Solid-State Memory" presentato nel 1996 al sesto Usenix Security Symphosium; e' il miglior libro che illustra come eliminare e ripulire i dati in modo che sia difficile recuperarli anche con il microsopio elettronico. In giro ci sono quattro tool che usano le tecniche qui descritte per eliminare i dati in modo sicuro: due chiamati "wipe", uno chiamato "srm" dal pacchetto secure_delete dei THC e "shred" che e' incluso nel pacchetto fileutil GNU. Quello dei THC dovrebbe essere il migliore come progetto, caratteristiche e sicurezza ed ha anche tutte le opzioni in linea di comando (quelle base e avanzate) per una maggiore velocita'. Per usare uno qualsiasi di questi tool per cancellare file, semplicemente si puo' settare un alias in /etc/profile alias rm=srm # oppure wipe oppure shred oppure, ancora meglio, spostare /bin/rm in /bin/rm.orig e copiare il programma per la cancellazione sicura in /bin/rm. Questo assicura che tutti i dati cancellati tramite il comando rm vengano eliminati in modo sicuro. Se non e' possibile installare uno qualsiasi di questi pacchetti (per qualsiasi ragione) si puo' comunque settare il wipe flag nel filesystem ext2 sui file che si vuole pulire prima di rimuoverli con rm. E' all'incirca lo stesso, ma non e' cosi' sicuro come il wipe menzionato precedentemente; chattr +s nomedeifile 6.2 Come pulire (wipe) lo spazio libero dei dischi La maggior parte delle applicazioni (come gli editor nei programmi di posta) scrivono dei file temporanei e tu non ne sai niente - molte volte non ti viene neanche chiesto. Poiche' questi files non vengono eliminati in modo sicuro potrebbero essere recuperati da un intruso che potrebbe prendere tutte le tue email senza che tu nemmeno lo sappia. Cio' non e' buona cosa. La soluzione: usare un programma che pulisca tutto lo spazio libero dalle partizioni dei dischi. Il solo disponibile e' quello dei THC secure_delete (NB: non ne sono sicuro, ma nell'articolo non ne vengono citati altri). Puoi mettere il comando "sfill" (e' cosi' che si chiama) nel crontab cosi' viene lanciato regolarmente anche se questo potrebbe creare problemi quando devono essere lanciate applicazioni piu' importanti; quindi lo si puo' far lanciare almeno quando il sistema fa lo shut down. Metti questo nella sezione "stop" di uno degli script in rc2.d sfill --llf /tmp 2> /dev/null sfill --llf /var/spool 2> /dev/null Si noti che e' anche una buona idea creare una nuova partizione da usare per /tmp e mettere un link simbolico da /usr/tmp e /var/tmp verso /tmp. In questo modo e' piu' facile controllare ed eliminare. Ancora, se non puo installare il pacchetto secure_delete per qualche motivo, puoi ancora usare questa soluzione (anche se e' lenta e non cosi' sicura): dd if=/dev/zero of=/tmp/cleanup sync rm /tmp/cleanup 6.3 Come gestire i dati di swap Cancellazione sicura dei files e pulizia dello spazio libero delle partizioni: che cosa manca? Al giorno d'oggi i MB degli hard disk sono piu' economici delle RAM, ed e' per questo che gli swap sono utilizzati per espandere la RAM disponibile; nella realta' lo swap e' un file o una partizione nel tuo hardisk. Anche qui c'e' solo un tool che aiuta, "sswap" dal pacchetto secure_delete (NB: vale lo stesso discorso di prima, non ho potuto verificare). Metti questa linea dopo la linea "swapoff" in /sbin/init.d/halt sswap -l /dev/XXXX # XXXX e' il device per il tuo swap. # controlla quale e' in /etc/fstab 6.4 Come gestire la RAM Nella sezione 5.1 ho scritto circa le informazioni sensibili nella RAM, la memoria veloce dei computer; essa puo' contenere informazioni molto riservate come le email che hai scritto prima di codificarle con pgp, password, ogni cosa. Per assicurarsi che la memoria venga pulita, usa l'utility sms; dovrebbe essere lanciata come qui nella parte stop di uno degli script in rc2.d (come gia' menzionato precedentemente), dopo il wipe del file /tmp. smem -ll 6.5 Dati temporanei Dopo che hai reso sicuro, anonimizzato, privatizzato il tuo sistema ogni cosa e' pronta - o hai dimenticato qualcosa? Ricordati cosa abbiamo detto nella sezione 6.1, i dati temporanei sono scritti da qualche parte e a volte non lo sai. Se sei sfortunato, tutto quello che abbiamo fatto e' inutile; dobbiamo quindi assicurarci che non ci siano file temporanei sui device e che non possano nemmeno essere recuperati. Ora che abbiamo gia' trattato di /var/log, /var/run e la posta in uscita (/var/spool/...) ed abbiamo ripulito tutto lo spazio libero nei dischi, dobbiamo ripolire anche i dati temporanei. Metti questa linea nella sezione "stop" di uno degli script in rc2.d (prima di sfill dalla ezione 6.3): ( cd /tmp ; ls -A | xargs -n 250 srm -r ; ) Dovrebbe essere anche creata una directory $USER/tmp per tutti gli utenti che hanno la protezione di CFS e sono all'interno di /home; deve quindi anche essere settata la variabile TMPDIR in modo oppurtuno per ogni utente su questa directory (NB: ad esempio se l'utente si chiama abc avra'la directory tmp in /home/abc/tmp e la variabile TMPDIR sara' settata a /home/abc/tmp). Vedere la sezione 9 per tutti questi script... - 7. Connessioni Questa e' una sezione molto specifica del documento. Ho scritto alcuni modi su come si possa proteggere una parte dei dati che vengono trasferiti tramite internet. I prerequisiti base sono i seguenti: che tu abbia un POP3 e un SMPT (mail relayer) esterni dove prendi e spedisci le tue email. Quando vai in irc, preferisci che il tuo vero hostname non venga visualizzato nei canali. Il tuo mail server esterno dovrebbe essere in un altro stato, perche' se qualche agenzia ufficiale ha motivo di pensare che tu stia facendo qualcosa di illegale (e sono sicuro che tu non lo farai) e' piu' difficile garantire una ricerca. E' anche piu' difficile perche' le compagnie o gli individui che cercano i tuoi dati avrebbero bisogno di investire piu' tempo, lavoro e soldi per averli. Puoi instradare la tua connessione SMPT e POP3 attraverso ssh al mail server esterno. Per il POP3 e' semplice, ma per l'SMPT e' un po piu' difficoltoso. Solo per esempio, anche il traffico irc potrebbe essere instradato con ssh, ma le dcc non funzioneranno (in questo modo non funziona, mentre l'altro sarebbe quello di rivelare il tuo indirizzo ip al mittente e i dati non verrebbero codificati da nessuna delle due parti). Si noti che e' anche possibile utilizzare redirector e proxy (NB: bounce, wingate, ecc) per effettuare altri redirector per altri protocolli (www, irc, ftp proxy, ecc). E' tutto. Tutto il traffico via email (e come puoi vedere di seguito anche quello irc) viene codificato tra te e il tuo mail/proxy server. sendmail.cf (parti importanti): DSsmtp:[127.0.0.1] DjTHE_DOMAIN_NAME_OF_YOUR_EMAIL DMTHE_DOMAIN_NAME_OF_YOUR_EMAIL - Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990, + Msmtp, P=[IPC], F=mDFMuXk, S=11/31, R=21, E=\r\n, L=990, (add the "k" switch to the smtp option config line) ~user/.fetchmailrc: poll localhost protocol POP3: user USER_REMOTE with pass PASSWORD_REMOTE is USER_LOCAL here mda "/usr/sbin/sendmail -oem USER_LOCAL" (usa i corrispondenti USER_* e PASSWORD qui) La linea di comando per ssh che instrada il traffico per il POP3, SMTP ed irc: ssh -a -f -x -L 110:localhost:110 -L 6667:irc.server.com:6667 -L \ 25:localhost:25 your_mail_server.com E' tutto, non ti diro' niente di piu'. Usa il cervello ;) - 8. Nascondere i settaggi per la privacy 8.1 Mount e' tuo amico Dai uno sguardo ai seguenti comandi: # ls -l /home total 3 drwxr-x--- 1 root root 1024 Mar 28 14:53 admin drwxr-x--- 1 vh thc 1024 Mar 28 16:22 vh drwxr-x--- 1 user users 1024 Mar 28 11:22 user # mount -t ext2 /dev/hda11 /home # oppure un ramdisk, non fa importanza # ls -l /home total 0 # : oops, dove sono le directory home ? # umount /home # ls -al /home total 3 drwxr-x--- 1 root root 1024 Mar 28 14:53 admin drwxr-x--- 1 vh thc 1024 Mar 28 16:22 vh drwxr-x--- 1 user users 1024 Mar 28 11:22 user # : ah si, ci sono ancora Questa e' un buon modo per nascondere i tuoi dati criptati e i tuoi eseguibili. Devi solo mettere i tuoi files in, per esempio, /usr/local/bin e /usr/local/crypt e fare il mount di un filesystem decoy; se quindi hai un processo avviato nei tuoi script di boot che apre un file sul filesysyem decoy, non puo' essere effettuato l'unmount fino a quando il processo non e' terminato. In questo modo, e' molto piu' difficile per qualcuno scovare i tuoi dati! 8.2 Media rimovibili Una possibilita' migliore sarebbe quella di mettere tutti i tuoi dati sensibili su un supporto rimuovibile, fare il mount e lanciarlo dallo script d'avvio che attiva tutte le cose per la privacy. In questo modo hai fatto un altro passo per rendere piu' difficile a qualcuno conoscere cosa stia succedendo. 8.3 ??? Altre idee? Pensaci! (e magari spediscimele ;-) - 9. Script di configurazione ed esempi NB: preleva il file anonymous-unix-0.7.tar.gz dal sito dei THC (21.613 bytes) - 10. Commenti finali 10.1 Dove prendere i programmi menzionati nel testo _Crypto Filesystems _ CFS (Cryptographic File System) http://www.replay.com TCFS (Transparent CFS) ftp://mikonos.dia.unisa.it/pub/tcfs/ SFS (Stegano File System) http://www.linux-security.org/sfs Crypto Loopback Filesystem ftp://ftp.csua.berkeley.edu/pub/cypherpunks/filesystems/linux/ _Tools_ THC's secure_delete package http://www.infowar.co.uk/thc secure-linux kernel patch http://www.false.com/security syslog-ng http://www.balabit.hu/products/syslog-ng.htm ssylog http://www.core-sdi.com/ssyslog 10.2 Considerazioni aggiuntive - Saluti - Come contattare il gruppo dei thc NB: Sono tutte informazioni che non ho inserito o che potrei non aver interpretato correttamente si possono trovare nella forma completa ed in inglese nel sito: http://r3wt.base.org http://thc.pimmel.com http://www.infowar.co.uk/thc - 100 Conclusione Desidero in ultimo fare alcuni ringraziamenti e saluti a (in ordine casuale): tutta la crew di s0ftpj, HarLoK, 3p41R0x, crl, Alphard, Nobody88, DanteAlig, ulntwh99, area[c], THC. Sono apprezzati suggerimenti, critiche, saluti, aggiunte. Blinking --------------------[ previous ]---[ index ]---[ next ]--------------------- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ==============================================================================