syntax on
" If using a dark background within the editing area and syntax highlighting
- " turn on this option as well
+ " turn on this option as well.
set background=dark
" Uncomment the following to have Vim jump to the last position when
" Uncomment the following to have Vim load indentation rules and plugins
" according to the detected filetype.
+ " This is not recommanded if you often copy and paste into vim,
+ " as it messes all the indentation.
if has("autocmd")
filetype plugin indent on
endif
+
+ " This goes for comments folding: use co to expnad and zc to compress,
+ " zi to toggle on/off
+ set fdm=expr
+ set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
set showcmd " Show (partial) command in status line.
"set showmatch " Show matching brackets.
+ # Ignorecase is quite userfull
set ignorecase " Do case insensitive matching
"set smartcase " Do smart case matching
"set incsearch " Incremental search
Gli archivi sono generalmente:
-* ``deb`` per pacchetti Debian binari
+* ``deb`` per pacchetti Debian binari, pronti per l'installazione.
* ``deb-src`` per i pacchetti sorgenti (quindi da compilare, come il kernel) degli stessi pacchetti binari. In genere se non compilate spesso potete evitare di tracciare i sorgenti per risparmiare tempo e banda.
# Archivio principale debian via http su piffa.net,
# non funziona al di fuori dell'aula dei corsi
- deb http://debian.piffa.net/debian/ Lenny main
+ deb http://debian.piffa.net/debian/ lenny main
# Sono disponibili anche i rami non-free contrib
# deb http://debian.piffa.net/debian/ lenny non-free contrib
+ # Sono disponibili anche le release unstable e testing
+ # deb http://debian.piffa.net/debian/ testing main non-free contrib
+ # deb http://debian.piffa.net/debian/ sid main non-free contrib
- # Mirror da kernel.org da usare a casa:
+ # Mirror da kernel.org europa da usare a casa:
deb http://mirrors.eu.kernel.org/debian/ lenny main
# Security dal sito principale
deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
# Esempio di accesso a un file system locale contenente i pacchetti:
- # deb file:/mnt/mirror Sid main non-free contrib
+ # Potete scaricarei in aula con debmirror da debian.piffa.net
+ # un mirror locale da usare poi a casa anche senza internet
+ # deb file:/mnt/mirror sid main non-free contrib
/etc/apt/apt.conf
allow-query {"localnet" ;} ;
+Ospitare una zona
+---------------------
+
+Se avete acquistato un nome di dominio e vi serve un software DNS per gestirlo Bind e' la scelta piu' diffusa. Ora vedremo come configurare una *zona* (come piffa.net) in modo che Bind sia autoritativoper questa, rispondendo alle query DNS di tutta la rete internet.
+
+
+named.conf.local
+~~~~~~~~~~~~~~~~
+
+Prima di tutti impostiamo il server bind per gestire la zona, per non fare confusione e' opportuno inserire le propie zone DNS nel file ``named.conf.local`` e non in ``named.conf``.
+
+named.conf.local::
+
+ /
+ // Do any local configuration here
+ //
+
+ // Consider adding the 1918 zones here, if they are not used in your
+ // organization
+ //include "/etc/bind/zones.rfc1918";
+
+ zone "piffa.net" {
+ type master;
+ file "/etc/bind/pz/piffa.net";
+ }
+
+type master
+ Il nostro server DNS sara' il principale, al quale poi potremo affiancare dei DNS secondari nel caso questo non sia disponibile.
+
+file "/etc/bind/pz/piffa.net"
+ Dove verranno inserite le informazioni vere e propie di questa zona.
+
+Configurazione della zona
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Ora dovremo preparare il file contenente i record DNS della zona *piffa.net*, come abbiamo indicato prima questi saranno contenuti nel file ``/etc/bind/pz/piffa.net`` . Tenere le zone dentro una sottocartella e' buona abitudine, usare ``pz`` per queste e' una vecchia abitudine.
+
+piffa.net::
+
+ ; Zona per il dominio di secondo livello piffa.net
+
+ $TTL 3D ; 3 days
+ @ IN SOA ns1.piffa.net. hostmaster.piffa.net. (
+ 200905245 ; serial
+ 8H ; refresh (8 hours)
+ 2H ; retry (2 hours)
+ 4W ; expire (4 weeks)
+ 1D ; minimum (1 day)
+ )
+ ;
+ NS ns1
+ NS ns2
+ A 94.23.63.105
+ MX 10 smtp
+ TXT "Piffanet main site"
+ ;
+ ns1 A 94.23.63.105
+ ns2 A 65.98.21.97
+ zoo A 94.23.63.105
+ test.piffa.net. A 94.23.63.105
+ *.piffa.net. A 94.23.63.105 ; *catch all domain
+ www CNAME zoo
+
+
+
+All'interno di questo file si possono inserire dei commenti con il carattere ``;`` (punto-e-virgola), si faccia attenzione alla rigida sintassi: apertura e chiusura delle parentesi tonde nella parte ``IN SOA``, uso del ``punto`` finale per precisare un nome di dominio specifico (*FQDN*: Fully-qualified Domain Name) come ``test.piffa.net.`` a differenza degli altri domini di terzo livello come ``pop,imap,smtp`` .
+
+La zona inizia con una direttiva ``$TTL 3D`` (RFC 2308) che indica la durata (in questo caso tre giorni) che ogni record dovrebbe avrebbe nella cache degli altri serber DNS. Questo valore dovrebbe essere superiore a un giorno, se non modificate spesso i valori dei vostri record DNS e' consigliabile settarlo a 2/3 settimane in modo da limitare la frequenza delle query al propio server. Questo parametro puo' essere modificato per singoli record::
+
+ $TTL 3D ; 3 giorni: default se non specificato altrimenti
+ rapido 5h IN A 94.23.63.105 ; usa un TTL di 5 ore
+ lento 3w IN A 94.23.63.105 ; usa un TTL di 3 settimane
+ normale IN A 94.23.63.105 ; usa il TTL di default: 3 giorni
+
+
+Segue poi il nome della zona, indicato con la ``@`` per richiamare la zona originale precisata nel file ``named.conf.options`` . Segue il campo ``SOA``.
+
+SOA: Start of Authority Record
+`````````````````````````````````
+
+Il record SOA puo' comparire solo una volta in una zona, contiene informazioni relative all'autorita' del server DNS.
+
+ns1.piffa.net. name-server
+ primary master DNS di questo dominio.
+
+hostmaster.piffa.net. email-addr
+ email-addr: indirizzo email della persona responsabile di questa zona, il primo punto viene tradotto in una *chiocciola* ``@`` dato che questo carattere ha un'altro utilizzo all'interno di questo file. Il referente della zona **deve** essere un email valido e controllato, come consuetudine si usa ``hostmaster@dominio.tilde`` .
+
+200905245 serial number
+ Questo valore serve per indicare quando e' stato modificato questo file di configurazione, secondo il formato ``yyyymmddss``: ``yyyy`` = anno, ''mm'' = mese, ''dd'' = giorno, ''ss'' = seriale. Il seriale che deve essere sempre specificato anche per una cifra, va incrementato di una unita' nel caso vengano fatte piu' modifiche *nello stesso giorno*.
+
+8H refresh
+ Indica ai DNS secondari quanto tempo attendere per cercare di aggiornare i loro dati con il DNS master.
+
+2H retry
+ Intervallo di tempo per il DNS slave (secondario) da aspettare prima di cercare di ricontattare il *master* in caso di problemi col *refresh*.
+
+4W expire
+ Indica quando i dati dei dns secondarinon sono piu' autoritativi in caso di impossibilita' degli *slaves* di ri-aggiornarsi con il *master*. Consigliato un valore di 2/4 settimane.
+
+1D minimum
+ Questo valore indicava il TTL fino alla versione 8 di Bind, da Bind 9 e secondo la RFC2308 indica la durata del *negative caching*, quanto i resolvers (ad esempio un server dns cache) puo' mantenere un record *negativo* (che non indica la corrispondenza tra un nome di dominio e un ip, ma la non esistenza del record). Nell'uso per il negative caching viene fissato un valore massimo di 3 ore dalla RFC 2308.
+
+
+Altri campi:
+```````````````
+
+All'interno della zona possono essere utilizati vari tipi di records (RR):
+
+TXT
+ Informazioni testuali associate ad un record
+
+NS
+ Name Server della zona
+
+A
+ Indirizzo ipv4 da associare al record
+
+AAA
+ Indirizzo ipv6 da associare al record
+
+CNAME
+ Canonical Name: un alias per un host
+
+MX
+ Mail Exchanger: server di posta che si occupera' della posta elettronica per questo dominio.E' opportuno avere almeno un server di posta di back-up, per indicare la priorita' di un MX rispettoad un altro si usa un valore di 2 cifre: il valore piu' basso indica priorita' piu' bassa. Es: ``MX 10 smtp.piffa.net.`` per il server SMTP principale e ``MX 40 smtp2.piffa.net`` per il secondario.
+
+PTR
+ Reverse look-up, usato per la mappatura inversa di un indirizzo ip a una stringa identificativa dell'host. Si noti che per poter modificare questi record si deve avere *in gestione* la *zona IP*, se cosi' non fosse si dovra' chiedere al propio provider la modifica di questo record per il propio ip. Links: http://www.zytrax.com/books/dns/ch3/
+
+
+Link suggeriti:
+----------------
+
+* DNS for Rocket Scientists http://www.zytrax.com/books/dns/
+* DNS HOWTO http://www.langfeldt.net/DNS-HOWTO/BIND-9/
Samba
======
Server di posta: Postfix
============================
-Il server di posta che prenderemo in considerazione e' Postfix, a seguire un estratto di un file do configurazione *semplice* con l'abilitazione delle *Maildir* nelle ``/home`` degli utenti per la consegna della posta:
+Il server di posta che prenderemo in considerazione e' Postfix, a seguire un estratto di un file di configurazione *semplice* con l'abilitazione delle *Maildir* nelle ``/home`` degli utenti per la consegna della posta:
``/etc/postfix/main.cf``::
# Se non avete un ip pubblico e statico, con un adeguato record PTR
# dovrete usare un realy host per l'invio della posta
relayhost = smtp.piffa.net
+
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
+ # Se dovete inviare la posta per i client della vostra LAN privata:
+ # mynetworks = 127.0.0.0/8 192.168.0.0/24 [::ffff:127.0.0.0]/104 [::1]/128
+ # E si faccia BEN ATTENZIONE a non diventare un open realay smtp
+
# Per effettuare lo storaggio della posta nelle home directory degli utenti
- # in una Maildir invece che la Mailbox in /var/mail/utente
+ # in una Maildir invece che nella Mailbox in /var/mail/nome_utente
# si disabiliti procmail
#mailbox_command = procmail -a "$EXTENSION"
- # Storaggio della posta nella _cartella_ Maildir/ (si noti lo slash)
- # nella home dell'utente:
+ # cartella_i abiliti lo storaggio della posta nella Maildir/ (si noti lo slash)
+ # all'interno della home dell'utente:
home_mailbox = Maildir/
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
+E' disponibile un file di configurazione di esempio ben piu' articolato e commentato::
+ /usr/share/postfix/main.cf.dist .
+
+Test del server smtp
+-----------------------
+
+Per testare il corretto funzionamento del server di posta si puo' procedere in vari modi.
+
+- Spedire una mail a una casella locale / remota e controllare i log (syslog)
+- Collegarsi via *telnet* al server di posta: http://www.netadmintools.com/art276.html
+- usare una utility come SWAKS
+
+Swaks
+~~~~~~~~~~~
+
+Per gli utenti meno esperti e' consigliabile utilizzare *SWAKS*: si installi l'omonimo pacchetto e si esegua un test con::
+ swaks --to utente@destinatario.tilde --from utente@propio.mail.tilde
+
+Ecco un esempio di una sessione corretta::
+
+ swaks --to andrea@piffa.net from andrea@mydomain.com
+ === Trying smtp.piffa.net:25...
+ === Connected to smtp.piffa.net.
+ <- 220 zoo.piffa.net ESMTP Postfix (Debian/GNU)
+ -> EHLO alice.mydomain.com
+ <- 250-zoo.piffa.net
+ <- 250-PIPELINING
+ <- 250-SIZE 10240000
+ <- 250-VRFY
+ <- 250-ETRN
+ <- 250-STARTTLS
+ <- 250-ENHANCEDSTATUSCODES
+ <- 250-8BITMIME
+ <- 250 DSN
+ -> MAIL FROM:<root@alice.mydomain.com>
+ <- 250 2.1.0 Ok
+ -> RCPT TO:<andrea@piffa.net>
+ <- 250 2.1.5 Ok
+ -> DATA
+ <- 354 End data with <CR><LF>.<CR><LF>
+ -> Date: Thu, 28 May 2009 13:11:19 +0200
+ -> To: andrea@piffa.net
+ -> From: root@alice.mydomain.com
+ -> Subject: test Thu, 28 May 2009 13:11:19 +0200
+ -> X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
+ ->
+ -> This is a test mailing
+ ->
+ -> .
+ <- 250 2.0.0 Ok: queued as 41FB261AFC
+ -> QUIT
+ <- 221 2.0.0 Bye
+ === Connection closed with remote host.
+
+
+
Imap e pop
------------------
-Postfix e' un server SMTP, di conseguenza se volete che i vostri utenti possano *scaricare* in locale la posta generalmente volete mettere a loro disposizione un server *POP3* o ancora meglio *IMAP*. Oppure entrambi.
+Postfix e' un server SMTP, di conseguenza se volete che i vostri utenti possano *scaricare* in locale la posta generalmente volete mettere a loro disposizione un server *POP3* o *IMAP*. Oppure entrambi.
Pacchetti da installare
courier-imap courier-pop
-i noti che IMAP necessita delle Maildir, non funziona con le Mailbox in ``/var/mail/`` .
+Si noti che IMAP necessita delle *Maildir*, non funziona con le Mailbox in ``/var/mail/`` .
+
+Client a riga di comando
+---------------------------
+
+Per testare il corretto funzionamento del server di posta e' utile avere a disposizione delle utility per inviare e leggere la posta: ovviamente da riga di comando.
+
+mailx
+~~~~~~~~~~~~~~
+
+Uno dei client piu' semplici, sopratutto per inviare un messaggioi. e' sufficiente usare una formula come::
+ mail utente@dominio.com
+
+Se il comando ``mail`` non fosse disponibile si installi il pacchetto ``mailx``.
+
+Al primo prompt si digitera' l'oggetto, il testo del messaggio (per terminare l'inserimento lasciare una riga vuota, digitare un ``punto + Invio`` su una riga vuota), la Carbon Copy (se necessaria).
+
+es::
+
+ mail andrea@localhost
+ Subject: Oggetto della mail
+ Testo del messagio,
+ per terminare il messaggio
+ lasciare una riga vuota
+ e un punto (poi Invio).
+
+ .
+ Cc:
+
+Per altrre opzioni si veda la pagina man.
+
+Mutt
+~~~~~
+
+Mutt e' uno dei gestori di posta preferiti da chi preferisce utilizzare l'interfaccia testuale per la gestione della posta.
+
+Mutt ha un file di configurazione ``.muttrc`` nella *home* dell'utente, alcuni settaggi possono essere utili:
+
+set folder="~/Maildir"
+ Per utilizzare ``/home/nome_utente/Maildir come mailbox``, invece del default ``/var/mail/nome_utente``.
+
+set editor="vim"
+ Utilizzare ``vim`` come editor per comporre i messaggi.
+
+
+Spesso e' utile poter *levvere al volo* la Mailbox / Maildir di un utente sul server di posta, per controllare se i messaggi vengono recapitati correttamente::
+
+ mutt -f /var/mail/utente
+ mutt -f /home/utente/Maildir
+
+In modo analogo si puo' consultare al volo la propia mailbox su un server remoto tramite IMAP/POP::
+
+ mutt -f imap://nome_utente@piffa.net
Web client
L'interfaccia dovrebbe essere disponibile all'url: ``http://localhost/squirrelmail`` . Se cosi' non fosse assicuratevi che Apache abbia incluso il file di configurazione di squirrelmail::
cd /etc/apache2/conf.d/
- ln -s /etc/squirrelmail/apache.conf ./
+ ln -s /etc/squirrelmail/apache.conf ./squirrelmail.conf
+
+
+Graylisting
+----------------
+
+Il *graylisting* e' un sistema relativamente poco invasivo, con un limitato consumo di risorse per limitare lo *SPAM* in arrivo sul propio server di posta. Come suggerisce il nome e' una via di mezzo tra una *white list* (una lista di mittenti privilegiata, sempre benvenuti) e una *black list* (mittenti *bannati*, banditi dal poter inviare nuovi messaggi).
+
+Il funzionamento e' relativamente semplice: ogni mittente sconosciuto viene immediatamente rifiutato con un errore *non grave* come un *server non disponibile, provare piu' tardi*. Questo inconveniente non dovrebbe mettere in difficolta' un server di posta / mittente legittimo, che dopo un periodo di attesa tentera' nuovamente di inviare il messaggio ottenendo finalmente il risultato atteso. Diversamente un *bot* per l'invio di SPAM o un applicazione improvvisata (tipicamente di derivazione virale) che stesse inviando il messaggio *probabilmente* non insisterebbe, rinunciano ad inviare il messaggio preferendo destinazioni meno problematiche.
+
+Abilitazione in Postfix
+~~~~~~~~~~~~~~~~~~~~~~~~
+Installare il pacchetto: ``postgrey`` e aggiungere il file di configurazione di Postfix ``/etc/postfix/main.cf``::
+
+ smtpd_recipient_restrictions =
+ permit_mynetworks,
+ reject_unauth_destination,
+ check_policy_service inet:127.0.0.1:60000
+
+Test
+~~~~~~~~
+
+Inviando un messaggio il client dovrebbe ricevere un iniziale messaggio di rifiuto del messaggio::
+
+ swaks --to andrea@piffa.net from andrea@mydonain.com
+ === Trying smtp.piffa.net:25...
+ === Connected to smtp.piffa.net
+ ...
+ <- 250 2.1.0 Ok
+ -> RCPT TO:<andrea@piffa.net>
+ <** 450 4.2.0 <andrea@piffa.net>: Recipient address rejected:
+ Greylisted, see http://postgrey.schweikert.ch/help/piffa.net.html
+ -> QUIT
+ <- 221 2.0.0 Bye
+ === Connection closed with remote host.
+
+A lato server si dovrebbe rilevare su ``/var/log/syslog`` qualcosa di simile::
+
+ connect from alice.mydomain.com[65.98.21.97]
+ May 28 14:53:34 r24266 postgrey: action=greylist, reason=new,
+ client_name=alice.mydomain.com,
+ client_address=10.0.0.1, sender=root@alice.mydomain.com, recipient=andrea@piffa.net
+ May 28 14:53:34 r24266 postfix/smtpd[22538]:
+ NOQUEUE: reject: RCPT from alice.mydomain.com[10.0.0.1]:
+ 450 4.2.0 <andrea@piffa.net>: Recipient address rejected: Greylisted,
+ see http://postgrey.schweikert.ch/help/piffa.net.html;
+ from=<root@alice.mydomain.com> to=<andrea@piffa.net>
+ proto=ESMTP helo=<alice.mydomain.com>
+ May 28 14:53:34 r24266 postfix/smtpd[22538]: disconnect from alice.mydomain.com[10.0.0.1]
+
+
+Statistiche
+~~~~~~~~~~~~~~~
+
+E' sempre utile poter tracciare qualche statistica sulle percentuali di messaggi ricevuti, da chi, messaggi rifiutati (e per quale motivo). Statistiche che attingono dai soliti log del server di posta ``/var/log/syslog`` di default oltre che i dedicati ``/var/log/mail`` .
+
+Una utility semplice per analizzare l'attivita' del propio server smtp potrebbe essere ``pflogsumm`` , installato il pacchetto la si puo' invocare con::
+
+ pflogsumm.pl /var/log/mail.log
+
+oppure utilizzare i log piu' vecchi ad es. ``/var/log/mail.log.0``
Firewall
==========
Il *Masquerading* a differenza dello *SNAT* puro (``-j SNAT --to-source proprio_ip_pubblico ) legge l'indirizzo ip del device ``ppp0``. In questo modo se l'IP cambia automaticamente si aggiorna anche il source natting. Se avete un indirizzo IP statico assegnato al vostro gateway potete invece usare lo SNAT semplice.
+Altri esempi::
+ ## Change source addresses to 1.2.3.4.
+ # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
+
+ ## Change source addresses to 1.2.3.4, 1.2.3.5 or 1.2.3.6
+ # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6
+
+ ## Change source addresses to 1.2.3.4, ports 1-1023
+ # iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 1.2.3.4:1-1023
Brute force
~~~~~~~~~~~~
NOTE
========
-* controllare apache
+Bind:
+ - altri esempi commenti su una zona
+ - esempi di una zona PTR?
+ - dns secondari
+ - nsupdate
sintassi: in ``monospace`` :