|
|
(5 versioni intermedie di 4 utenti non mostrate) |
Riga 1: |
Riga 1: |
| ==Introduzione==
| | {{Versioni compatibili|Squeeze|Wheezy|Jessie}} |
| Con questa guida intendo spiegare all'utente debian come configurare un server mail basato su Postfix (http://www.postfix.org).
| |
| Postfix � un MTA abbastanza sicuro e di recente sviluppo, molto semplice da usare e per alcuni � considerato il successore di sendmail per altro troppo complicato da gestire e con noti problemi di sicurezza.
| |
|
| |
|
| ==Installazione di Postfix== | | == Introduzione == |
| Prima di tutto abbiamo bisogno di due demoni uno per la gestione del protocollo pop3 e uno per l'imap. Io consiglio popa3d e imapd
| | Come facciamo a scoprire se veniamo infettati da un RootKit? |
| | Con il checksum dei binari di sistema, in questa guida vedremo come fare. |
|
| |
|
| <pre>
| | Partiamo dal presupposto che per poter mettere in atto quanto diremo da qui in poi abbiamo bisogno o di una macchina con sistema operativo appena installato o dobbiamo essere sicuri al 300% che la nostra macchina non sia compromessa. |
| # apt-get update
| |
| # apt-get install popa3d uw-imapd
| |
| </pre>
| |
| | |
| fatto questo in /etc/inetd.conf verranno aggiunti i servizi per il pop3 e l'imapd.
| |
| Procediamo all'installazione dell'MTA vero e proprio
| |
| | |
| <pre>
| |
| # apt-get install postfix
| |
| </pre>
| |
| | |
| ==Configurazione base==
| |
| Quasi tutte le opzioni di configurazione di Postfix si trovano nel file /etc/postfix/main.cf
| |
| | |
| Ecco i principali tag a cui conviene prestare attenzione:
| |
| | |
| <pre>
| |
| myhostname = valore indica il nome che assumer� il vostro server mail (es: mail.nomedominio.it).
| |
| myorigin = valore indica il dominio usato per la posta inviata dal server.
| |
| mydestination = localhost, altri_valori indicano i domini che il server dovr� riconoscere come locali e che smister� internamente.
| |
| mydomain = valore indica il dominio a cui appartiene il server.
| |
| relayhost = valore indica a quale server inoltrare le mail che non si riconoscono come locali.
| |
| mailbox_size_limit = 0 indica la dimensione massima delle caselle mail, 0 per nessun limite.
| |
| mynetworks = valore altri_valori indica le reti nelle quali il server deve operare (es. 127.0.0.1/8 192.168.0.1/24).
| |
| mynetworks_syle = host/subnet/class
| |
| </pre>
| |
| | |
| Su questi ultimi due punti � il caso di soffermarsi. Stiamo considerando ora quali ip considerare validi per l'invio della posta.
| |
| | |
| Postfix non autorizza l'invio della posta da parte di client non autorizzati a farlo e/o di domini sconosciuti, ovvero non � un open-relay. Questo � un gran vantaggio perch� impedisce che il vostro server possa essere usato per spam o peggio.
| |
| | |
| Tranute mynetworks abilito gli ip presenti nella lista a spedire mail, con mynetworks_style posso specificare uno tra i seguenti tre valori:
| |
| | |
| ;host: l'invio sar� consentito solo per la macchina locale.
| |
| ;class: l'invio sar� consentito a tutti i client appartenenti al network di classe A, C o C a cui il server appartiene.
| |
| ;subnet: indica che Postfix autorizza alla trasmissione tutti i client che appartengono alla stessa sottorete locale del mailserver e costituisce il valore di default.
| |
| | |
| ==Gestione degli Alias==
| |
| In teoria ad ogni utente locale del vostro server corrisponde una sola casella mail.
| |
| Si possono per� creare degli alias che corrispondano ad un particolare utente, un secondo indirizzo a cui inviare mail per quel dato user.
| |
| Di default esiste il file /etc/aliases che contiene una lista di alias a sinistra e i rispettivi utenti ai quali appartengono a destra.
| |
| In /etc/postfix/main.cf basta solo aggiungere
| |
| | |
| <pre>
| |
| alias_maps = hash:/etc/aliases
| |
| </pre>
| |
| | |
| e per rendere questo file una mappa utilizzabile da Postfix lanciamo il comando
| |
| | |
| <pre>
| |
| # postalias /etc/aliases
| |
| </pre>
| |
| | |
| ==Multidominio, Virtual Domain e Sender Canonical==
| |
| Nel caso il vostro Server debba ricevre la posta per pi� domini non dobbiamo fare altro che modificare la tag mydestination come segue
| |
| | |
| <pre>
| |
| mydestination = localhost, /etc/postfix/local-domain
| |
| </pre>
| |
| | |
| creare il file /etc/postfix/local-domain e inserire li i domini da considerare locali uno per riga senza virgole.
| |
| | |
| Fatto questo conviene preparare un file per la gestione dei domini virtuali in modo tale da associare il giusto dominio al dato utente
| |
| creiamo allora il file /etc/postfix/virtual
| |
| La sintassi da usare � la seguente:
| |
| | |
| <pre>
| |
| info@dominio1.it marco -> le mail in arrivo per tale indirizzo sono redirezionate a marco
| |
| webmaster@dominio2.it andrea@dominio4.it -> le mail verranno inviate a andrea@dominio4.it
| |
| @dominio3.com alessandro -> tutte le mail inviate a qualsiasi indirizzo @dominio3.com sono inviate all'utente alessandro
| |
| </pre>
| |
| | |
| aggiungiamo in /etc/postfix/main.cf
| |
| | |
| <pre>
| |
| virtual_maps = hash:/etc/postfix/virtual
| |
| </pre>
| |
| | |
| e prepariamo la map con il comando
| |
| | |
| <pre>
| |
| # postmap /etc/postfix/virtual
| |
| </pre>
| |
| | |
| Pu� essere utile sempre per la gestione di pi� domini usare un file che associ ad un nome utente un indirizzo mittente particolare.
| |
| Creiamo perci� un file /etc/postfix/sender_canonical dove con la precedente sintassi associamo al nome utente l'indirizzo mittente da mostrare nelle mail inviate.
| |
| Aggiungiamo in /etc/main.cf la seguente riga:
| |
| | |
| <pre>
| |
| sender_canonical_maps = hash:/etc/postfix/sender_canonical
| |
| </pre>
| |
|
| |
|
| ed infine prepariamo la map con
| | Partiamo con lo scaricarci uno di questi due software: AFICK AIDE (si veda fondo pagina per i link). |
|
| |
|
| | == Configurazione == |
| | Il bello di questi programmi e che oltre che calcolare il checksum dei binari , possono controllare gli accessi, i permessi, il numero di link simbolici e tanto altro ancora, per questa guida io mi baserò su AFICK, a noi interessa il file <code>afick.pl</code> e <code>afick.conf</code> il suo file di configurazione.<br/> |
| | Mettiamo questi due file in <code>/root</code> e prepariamoci per modificare il file di configurazione, per esempio: |
| <pre> | | <pre> |
| # postmap /etc/postfix/sender_canonical | | # esempio di file di configurazione |
| | database:=./afick |
| | warn_dead_symlinks := yes |
| | exclude_suffix := wav WAV mp3 avi |
| | =/ d+i+p+u+g |
| | =/bin p+n+b+m+c+md5 |
| | =/sbin p+n+b+m+c+md5 |
| | =/usr/sbin p+n+b+m+c+md5 |
| | =/usr/bin p+n+b+m+c+md5 |
| </pre> | | </pre> |
|
| |
|
| ==Antivirus - Amavis e ClamaV==
| | dopo aver controllato che la prima riga di <code>afick.pl</code> contenga la locazione precisa dell'eseguibile Perl, possiamo passare a inizializzare il database dei nostri binari,digitiamo da console quanto segue: |
| Passiamo ora alla configurazione dell'antivirus da installare sul vostro MTA.
| |
| Procediamo all'installazione:
| |
| | |
| <pre> | |
| # apt-get install amavisd-new clamav clamav-daemon
| |
| </pre> | |
| | |
| Dopo l'installazione dobbiamo dire a Postfix di far processare le mail dal vostro antivirus. Aggiungiamo a /etc/postfix/main.cf quanto segue:
| |
| | |
| <pre> | | <pre> |
| content_filter = amavis:[127.0.0.1]:10024
| | # ./afick.pl -c afick.conf -i |
| </pre> | | </pre> |
| mentre nel file /etc/postfix/master.cf:
| |
| <pre>
| |
| amavis unix - - n - 2 smtp
| |
| -o smtp_data_done_timeout=1200
| |
| -o disable_dns_lookups=yes
| |
|
| |
|
| 127.0.0.1:10025 inet n - n - - smtpd
| | bene, così abbiamo creato il nostro database di sistema. |
| -o content_filter=
| |
| -o local_recipient_maps=
| |
| -o relay_recipient_maps=
| |
| -o smtpd_restriction_classes=
| |
| -o smtpd_client_restrictions=
| |
| -o smtpd_helo_restrictions=
| |
| -o smtpd_sender_restrictions=
| |
| -o smtpd_recipient_restrictions=permit_mynetworks,reject
| |
| -o mynetworks=127.0.0.0/8
| |
| -o strict_rfc821_envelopes=yes
| |
| </pre>
| |
|
| |
|
| Di per se non si richiedono altre modifiche per il corretto funzionamento, comunque pu� essere utile dare un occhiata al file /etc/amavis/amavisd.conf per eventuali modifiche.
| | == Test di funzionamento == |
| Il Demone clamav-daemon (freshclam) tiene aggiornato il vostro antivirus aggiornandosi 12 volte al giorno, per eventuali modifiche /etc/clamav/fresclam.conf e /etc/clamv/clamavd.conf
| | Ora facciamo passare un po' di tempo e poi controlliamo come va. |
| | |
| ==Antispam - Spamassassin== | |
| Pu� essere utile installare un antispam che filtri le mail nel vostro server. Spamassassin � ci� che fa per voi. Installiamolo insieme a procmail:
| |
|
| |
|
| <pre> | | <pre> |
| # apt-get install spamassassin procmail | | # ./afick.pl -c afick.conf -k |
| </pre> | | </pre> |
|
| |
|
| a questo punto aggiungiamo in /etc/postfix/main.cf quanto segue
| | se non abbiamo modificato nessun binari inserito nel file di configurazione dovrebbe apparirci in risposta dal programma: |
|
| |
|
| <pre> | | <pre> |
| mailbox_command = /usr/bin/spamc | procmail -a "$EXTENSION"
| | Hash Database : numero file scanned 0 changed ecc |
| </pre> | | </pre> |
|
| |
|
| abilitiamo spamassassin modificando in /etc/default/spamassassin
| | bene ora proviamo a modificare qualche file, banalmente: |
|
| |
|
| <pre> | | <pre> |
| ENABLE=1
| | # touch /sbin/lilo |
| | # ln-s /sbin/sulogin /usr/sbin/sulogin |
| </pre> | | </pre> |
|
| |
|
| aggiungiamo al file /etc/procmailrc quanto segue:
| | ora rieseguiamo il controllo come prima, questa volta in risposta avremmo: |
|
| |
|
| <pre> | | <pre> |
| DROPPRIVS=yes
| | new symbolic link : /usr/sbin/sulogin |
| :0fw | | changed file : /sbin/lilo |
| | /usr/bin/spamassassin
| | changed directory :/usr/sbin |
| </pre> | | </pre> |
|
| |
|
| Per settaggi particolari di spamassassin vi consiglio di dare un'occhiata al file /etc/spamassassin/local.cf oppure consultare il sito web http://www.yrex.com/spam/spamconfig.php che vi consente di creare un file di configurazione personalizzato rispondendo alle varie domande.
| | seguito dai dettagli delle varie operazioni compiute. |
|
| |
|
| ==WebMail - Openwebmail==
| | Dal momento che sappiamo che queste modifiche le abbiamo fatte noi, ora dobbiamo riaggiornare il database: |
| Per poter usufruire del servizio di webmail � necessario usare un server web.
| |
| Io vi consiglio apache con supporto php e cgi. In questa guida presumo che nel vostro server sia gi� presente apache configurato a dovere.
| |
| Esistono diversi servizi di WebMail, io ho scelto openwebmail, installiamolo dopo aver aggiunto la repository in /etc/apt/source.list
| |
| | |
| deb http://people.debian.org/~srua/openwebmail/stable/ ./
| |
|
| |
|
| <pre> | | <pre> |
| # apt-get install openwebmail | | # ./afick.pl -c afick.conf -u |
| </pre> | | </pre> |
|
| |
|
| Dopo l'installazione recatevi in /etc/openwebmail e date un occhiata al file apache.conf che contiene le specifiche per configurare apache.
| | ora sappiamo usare il nostro Monitor di sistema. |
| Apriamo ora /etc/openwebmail/openwebmail.conf e apportiamo le nostre personalizzazioni.
| |
| Attenzione alla voce domainnames, spesso auto pu� portare a dei problemi, vi consiglio di specificare il dominio di appartenenza.
| |
| Per altre modifiche consultate il file /usr/share/openwebmail/configs/openwebmail.conf
| |
| | |
| ==Gestione Mailing-List Mailman + Hypermail==
| |
| Ogni mailserver che si rispetti ha anche un gestore di mailing-list. Io vi consiglio di installare mailman che possiede un ottimo supporto web per le varie configurazioni:
| |
|
| |
|
| <pre>
| | Un consiglio che mi sento di darvi è di aggiungere un controllo al db tramite [[Cron]], in base all'uso della macchina, ogni giorno o ogni 2 ore, vedete voi. |
| # apt-get install mailman hypermail
| |
| </pre>
| |
|
| |
|
| Fatto questo modificate /etc/postfix/main.cf aggiungendo quanto segue:
| | ==Non è finita qui== |
| | Credete che questo basti, invece no. Pensate un momento se un hacker riuscisse a penetrare il vostro sistema; anche se il nostro db fosse conservato in una partizione apposita read-only, se l'hacker riuscisse a guadagnare l'accesso come [[root]] potrebbe rimontare la partizione in r/w e compromettere il nostro db, quindi come fare diciamo che sarà la base per un prossimo articolo e si chiama RFC e GRSEC |
|
| |
|
| <pre>
| | ==Link== |
| alias_maps = hash:/etc/aliases
| | * http://afick.sourceforge.net |
| hash:/var/lib/mailman/data/aliases
| | * http://www.cs.tut.fi/~rammer/aide.html |
| transport_maps = hash:/etc/postfix/transport
| |
| relay_domains = lists.vostrodominio.com
| |
| mailman_destination_recipient_limit = 1
| |
| </pre>
| |
| | |
| creiamo /etc/postfix/transport e trasformiamolo in una mappa
| |
| | |
| <pre>
| |
| # echo lists.vostrodominio.com mailman: > /etc/postfix/transport
| |
| # postmap /etc/postfix/transport
| |
| </pre>
| |
| | |
| Modificate ora il file /etc/postfix/master.cf:
| |
| | |
| <pre>
| |
| mailman unix - n n - - pipe flags=FR user=list argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
| |
| </pre>
| |
| | |
| Modificate nel file /etc/mailman/mm_cfg.py i seguenti tag:
| |
| | |
| <pre>
| |
| DEFAULT_EMAIL_HOST = 'vostrodominio.com'
| |
| DEFAULT_URL_HOST = 'www.vostrosito.com'
| |
| MTA='Postfix'
| |
| PUBLIC_EXTERNAL_ARCHIVER = 'hypermail -L it -m /var/lib/mailman/archives/private/%(listname)s.mbox/%(listname)s.mbox -l %(listname)s -d /var/lib/mailman/archives/public/%(listname)s'
| |
| PRIVATE_EXTERNAL_ARCHIVER = 'hypermail -c -L it -m /var/lib/mailman/archives/private/%(listname)s.mbox/%(listname)s.mbox -l %(listname)s -d /var/lib/mailman/archives/private/%(listname)s'
| |
| PUBLIC_ARCHIVE_URL = '/archives/%(listname)s'
| |
| PRIVATE_ARCHIVE_URL = '/archives/%(listname)s'
| |
| ARCHIVE_TO_MBOX = 2
| |
| </pre>
| |
| | |
| Fate attenzione alle voci PUBLIC_ARCHIVE_URL e PRIVATE_ARCHIVE_URL.
| |
| Sono i link che in mailman verranno associati all'archivio delle vostre mailinglist (www.vostrodominio.it/archives/nomelista). di conseguenza un mio consiglio � creare un link simbolico nella DocumentRoot del server apache in questione:
| |
| | |
| <pre>
| |
| # ln -s /var/lib/mailman/archives/public/ archives
| |
| </pre>
| |
| | |
| Create poi una lista mailman di default per il server (altrimenti il suo demone si rifiuta di partire)
| |
| | |
| <pre>
| |
| # newlist mailman
| |
| </pre>
| |
|
| |
|
| ed il gioco � fatto.
| | Un consiglio scaricate pure chkrootkit e utilizzatelo insieme a Cron e al tool per il controllo da voi scelto. |
| Per creare nuove mailing-list basta usare il comando newlist e per rimuoverle rmlist.
| |
| Per le altre configurazione mailman crea nella vostra directory cgi-bin un programma che vi consente tramite web di accedere alle varie mailing-list per poter modificarne alcuni parametri, anche in questo caso si richiede una corretta configurazione di apache.
| |
|
| |
|
| ----
| | * http://www.chkrootkit.org |
| Per qualsiasi informazione
| |
|
| |
|
| www.giorgioravera.it
| | {{Autori |
| | |Autore = [[Utente:TheNoise|TheNoise]] |
| | }} |
|
| |
|
| giorgio@giorgioravera.it
| | [[Categoria:Monitoraggio]] |
| [[Categoria:Server]][[Categoria:Networking]] | |
|
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.
|
Versioni Compatibili Debian 6 "squeeze" Debian 7 "wheezy" Debian 8 "jessie"
|
Introduzione
Come facciamo a scoprire se veniamo infettati da un RootKit?
Con il checksum dei binari di sistema, in questa guida vedremo come fare.
Partiamo dal presupposto che per poter mettere in atto quanto diremo da qui in poi abbiamo bisogno o di una macchina con sistema operativo appena installato o dobbiamo essere sicuri al 300% che la nostra macchina non sia compromessa.
Partiamo con lo scaricarci uno di questi due software: AFICK AIDE (si veda fondo pagina per i link).
Configurazione
Il bello di questi programmi e che oltre che calcolare il checksum dei binari , possono controllare gli accessi, i permessi, il numero di link simbolici e tanto altro ancora, per questa guida io mi baserò su AFICK, a noi interessa il file afick.pl
e afick.conf
il suo file di configurazione.
Mettiamo questi due file in /root
e prepariamoci per modificare il file di configurazione, per esempio:
# esempio di file di configurazione
database:=./afick
warn_dead_symlinks := yes
exclude_suffix := wav WAV mp3 avi
=/ d+i+p+u+g
=/bin p+n+b+m+c+md5
=/sbin p+n+b+m+c+md5
=/usr/sbin p+n+b+m+c+md5
=/usr/bin p+n+b+m+c+md5
dopo aver controllato che la prima riga di afick.pl
contenga la locazione precisa dell'eseguibile Perl, possiamo passare a inizializzare il database dei nostri binari,digitiamo da console quanto segue:
# ./afick.pl -c afick.conf -i
bene, così abbiamo creato il nostro database di sistema.
Test di funzionamento
Ora facciamo passare un po' di tempo e poi controlliamo come va.
# ./afick.pl -c afick.conf -k
se non abbiamo modificato nessun binari inserito nel file di configurazione dovrebbe apparirci in risposta dal programma:
Hash Database : numero file scanned 0 changed ecc
bene ora proviamo a modificare qualche file, banalmente:
# touch /sbin/lilo
# ln-s /sbin/sulogin /usr/sbin/sulogin
ora rieseguiamo il controllo come prima, questa volta in risposta avremmo:
new symbolic link : /usr/sbin/sulogin
changed file : /sbin/lilo
changed directory :/usr/sbin
seguito dai dettagli delle varie operazioni compiute.
Dal momento che sappiamo che queste modifiche le abbiamo fatte noi, ora dobbiamo riaggiornare il database:
# ./afick.pl -c afick.conf -u
ora sappiamo usare il nostro Monitor di sistema.
Un consiglio che mi sento di darvi è di aggiungere un controllo al db tramite Cron, in base all'uso della macchina, ogni giorno o ogni 2 ore, vedete voi.
Non è finita qui
Credete che questo basti, invece no. Pensate un momento se un hacker riuscisse a penetrare il vostro sistema; anche se il nostro db fosse conservato in una partizione apposita read-only, se l'hacker riuscisse a guadagnare l'accesso come root potrebbe rimontare la partizione in r/w e compromettere il nostro db, quindi come fare diciamo che sarà la base per un prossimo articolo e si chiama RFC e GRSEC
Link
Un consiglio scaricate pure chkrootkit e utilizzatelo insieme a Cron e al tool per il controllo da voi scelto.