GNU/Linux >> Linux Esercitazione >  >> Debian

Il server perfetto - Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1)

Questo tutorial mostra come preparare un server Debian Jessie (con nginx, BIND, Dovecot) per l'installazione di ISPConfig 3.1 e come installare ISPConfig 3.1. ISPConfig 3 è un pannello di controllo di web hosting che permette di configurare i seguenti servizi attraverso un browser web:server web Apache o nginx, server di posta Postfix, server Courier o Dovecot IMAP/POP3, server dei nomi MySQL, BIND o MyDNS, PureFTPd, SpamAssassin, ClamAV e molti altri. Questa configurazione copre nginx (anziché Apache), BIND come server DNS e Dovecot come server IMAP / POP3.

1 Nota preliminare

In questo tutorial, utilizzo l'hostname server1.example.com con l'indirizzo IP 192.168.1.100 e il gateway 192.168.1.1. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato. Prima di procedere oltre, devi avere un'installazione minima di Debian 8. Potrebbe trattarsi di un'immagine minima di Debian del tuo provider di hosting oppure usi il tutorial Minimal Debian Server per configurare il sistema di base.

2 Installa il server SSH

Se non hai installato il server OpenSSH durante l'installazione del sistema, puoi farlo ora:

apt-get -y install ssh openssh-server

D'ora in poi puoi utilizzare un client SSH come PuTTY e connetterti dalla tua workstation al tuo server Debian 8 e seguire i passaggi rimanenti di questo tutorial.

3 Installa un editor di testo shell (opzionale)

Userò nano editor di testo in questo tutorial. Alcuni utenti preferiscono il classico editor vi, quindi installerò entrambi gli editor qui. Il programma vi predefinito ha uno strano comportamento su Debian e Ubuntu; per risolvere questo problema, installiamo vim-nox:

apt-get -y install nano vim-nox

(Non devi farlo se usi un editor di testo diverso come Joe.)

4 Configura il nome host

Il nome host del tuo server dovrebbe essere un sottodominio come "server1.example.com". Non utilizzare un nome di dominio senza una parte di sottodominio come "example.com" come nome host poiché ciò causerà problemi in seguito con la configurazione della posta. Innanzitutto, dovresti controllare il nome host in /etc/hosts e modificarlo se necessario. La riga dovrebbe essere:"Indirizzo IP - spazio - nome host completo incl. dominio - spazio - parte del sottodominio". Modifica /etc/hosts. Rendilo simile a questo:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.1.100   server1.example.com     server1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Quindi modifica il file /etc/hostname:

nano /etc/hostname

Deve contenere solo la parte del sottodominio, nel nostro caso:

server1

Infine, riavvia il server per applicare la modifica:

reboot

Accedi di nuovo e controlla se il nome host è corretto ora con questi comandi:

hostname
hostname -f

L'output sarà così:

[email protected]:/tmp# hostname
server1
[email protected]:/tmp# hostname -f
server1.example.com

5 Aggiorna la tua installazione Debian

Per prima cosa assicurati che il tuo /etc/apt/sources.list contenga il repository wheezy-updates (questo ti assicura di ottenere sempre gli aggiornamenti più recenti per lo scanner antivirus ClamAV - questo progetto pubblica le versioni molto spesso e talvolta le vecchie versioni smettono di funzionare), e che i repository contrib e non-free siano abilitati (alcuni pacchetti come libapache2-mod-fastcgi non sono nel repository principale).

nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

# Debian backports - Required for Letsencrypt
deb http://ftp.debian.org/debian jessie-backports main

IMPORTANTE: Aggiungi il repository Debian Backports come mostrato sopra.

Corri

apt-get update

per aggiornare il database del pacchetto apt e

apt-get upgrade

per installare gli ultimi aggiornamenti (se presenti).

6 Modifica la shell predefinita

/bin/sh è un collegamento simbolico a /bin/dash, tuttavia abbiamo bisogno di /bin/bash, non di /bin/dash. Pertanto facciamo questo:

dpkg-reconfigure dash

Utilizzare dash come shell di sistema predefinita (/bin/sh)? <-- No

In caso contrario, l'installazione di ISPConfig avrà esito negativo.

7 Sincronizzare l'orologio di sistema

È una buona idea sincronizzare l'orologio di sistema con un NTP (n rete t ora p rotocol) server su Internet. Esegui semplicemente

apt-get install ntp

e l'ora del tuo sistema sarà sempre sincronizzata.

8 Installa Postfix, Dovecot, MySQL, rkhunter, binutils

Possiamo installare Postfix, Dovecot, MySQL, rkhunter e Binutils con un solo comando:

apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo

Ti verranno poste le seguenti domande:

Tipo generale di configurazione della posta:<-- Sito Internet
Nome della posta di sistema:<-- server1.example.com
Nuova password per l'utente "root" di MariaDB:<-- yourrootsqlpassword
Ripeti password per l'utente "root" di MariaDB:<-- yourrootsqlpassword

Per proteggere l'installazione di MariaDB / MySQL e disabilitare il database di test, eseguire questo comando:

mysql_secure_installation

Non è necessario modificare la password di root di MySQL poiché ne impostiamo una nuova durante l'installazione. Rispondi alle domande come segue:

Change the root password? [Y/n] <-- n
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

Quindi apri le porte TLS/SSL e di invio in Postfix:

nano /etc/postfix/master.cf

Decommenta le sezioni di invio e smtps come segue (lascia -o milter_macro_daemon_name=ORIGINATING perché non ne abbiamo bisogno):

[...]
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING [...]

Riavvia Postfix in seguito:

service postfix restart

Vogliamo che MySQL ascolti su tutte le interfacce, non solo su localhost, quindi modifichiamo /etc/mysql/my.cnf e commentiamo la riga bind-address =127.0.0.1:

nano /etc/mysql/my.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1
[...]

Quindi riavviamo MySQL:

service mysql restart

Ora controlla che la rete sia abilitata. Corri

netstat -tap | grep mysql

L'output dovrebbe essere simile a questo:

[email protected]:~# netstat -tap | grep mysql
tcp        0      0 *:mysql                 *:*                     LISTEN      218123/mysqld
[email protected]:~#

9 Installa Amavisd-new, SpamAssassin e Clamav

Per installare amavisd-new, SpamAssassin e ClamAV, eseguiamo:

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl postgrey

La configurazione di ISPConfig 3 utilizza amavisd che carica internamente la libreria dei filtri SpamAssassin, quindi possiamo fermare SpamAssassin per liberare un po' di RAM:

service spamassassin stop
systemctl disable spamassassin

9.1 Installazione del server Metronome XMPP (opzionale)

Questo passaggio installa il server Metronome XMPP che fornisce un server di chat compatibile con il protocollo XMPP. Questo passaggio è facoltativo, se non hai bisogno di un server di chat, puoi saltare questo passaggio. Nessun'altra funzione ISPConfig dipende da questo software.

Aggiungi il repository del pacchetto Prosody in Debian.

echo "deb http://packages.prosody.im/debian jessie main" > /etc/apt/sources.list.d/metronome.list
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -

Aggiorna l'elenco dei pacchetti:

apt-get update

Installa i programmi necessari per il processo di compilazione

apt-get install build-essential

e installa i pacchetti con apt.

apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks
luarocks install lpc

Aggiungi un utente shell per Metronome.

adduser --no-create-home --disabled-login --gecos 'Metronome' metronome

Scarica Metronome nella directory /opt e compilalo.

cd /opt; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make install

Metronome è ora installato su /opt/metronome.

10 Installa Nginx, PHP (PHP-FPM) e Fcgiwrap

Nginx è disponibile come pacchetto per Debian che possiamo installare come segue:

apt-get install nginx

Se Apache2 è già installato sul sistema, interrompilo ora...

service apache2 stop

Il messaggio "Impossibile interrompere apache2.service:unità apache2.service non caricata. " va bene e non indica un errore.

... e rimuovi i collegamenti di avvio del sistema di Apache:

systemctl disable apache2

Avvia nginx in seguito:

service nginx start

(Se sono installati sia Apache2 che nginx, il programma di installazione di ISPConfig 3 ti chiederà quale vuoi usare - rispondi a nginx in questo caso. Se è installato solo uno di entrambi, ISPConfig eseguirà automaticamente la configurazione necessaria.)

Possiamo far funzionare PHP5 in nginx tramite PHP-FPM (PHP-FPM (FastCGI Process Manager) è un'implementazione PHP FastCGI alternativa con alcune funzionalità aggiuntive utili per siti di qualsiasi dimensione, soprattutto quelli più frequentati) che installiamo come segue:

apt-get install php5-fpm

PHP-FPM è un processo demone (con lo script init /etc/init.d/php5-fpm) che esegue un server FastCGI sul socket /var/run/php5-fpm.sock.

Per ottenere il supporto MySQL in PHP, possiamo installare il pacchetto php5-mysql. È una buona idea installare alcuni altri moduli PHP5 e potresti averne bisogno per le tue applicazioni. Puoi cercare i moduli PHP5 disponibili in questo modo:

apt-cache search php5

Scegli quelli che ti servono e installali in questo modo:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-memcached  php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached

APC è un cacher di codice operativo PHP gratuito e aperto per la memorizzazione nella cache e l'ottimizzazione del codice intermedio PHP. È simile ad altri cacher di codice operativo PHP, come eAccelerator e XCache. Si consiglia vivamente di averne uno installato per velocizzare la tua pagina PHP.

APC può essere installato come segue:

apt-get install php-apc

Quindi apri /etc/php5/fpm/php.ini...

nano /etc/php5/fpm/php.ini

... e imposta cgi.fix_pathinfo=0 e il tuo fuso orario:

[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Berlin"
[...]

(Puoi trovare tutti i fusi orari disponibili nelle directory /usr/share/zoneinfo e nelle sue sottodirectory.)

Ora ricarica PHP-FPM:

service php5-fpm reload

Per ottenere il supporto CGI in nginx, installiamo Fcgiwrap.

Fcgiwrap è un wrapper CGI che dovrebbe funzionare anche per script CGI complessi e può essere utilizzato per ambienti di hosting condiviso perché consente a ciascun vhost di utilizzare la propria directory cgi-bin.

Installa il pacchetto fcgiwrap:

apt-get install fcgiwrap

Dopo l'installazione, il demone fcgiwrap dovrebbe essere già avviato; il suo socket è /var/run/fcgiwrap.socket. Se non è in esecuzione, puoi utilizzare lo script fservice fcgiwrap per avviarlo.

Questo è tutto! Ora, quando crei un vhost nginx, ISPConfig si occuperà della corretta configurazione del vhost.

10.1 Versioni PHP aggiuntive

A partire da ISPConfig 3.0.5, è possibile avere più versioni PHP su un server (selezionabile tramite ISPConfig) che può essere eseguito tramite PHP-FPM incl. PHP 7 e 7.1. Per sapere come creare versioni PHP aggiuntive (PHP-FPM) e come configurare ISPConfig, consulta questo tutorial: Come installare PHP 7 (PHP-FPM e FastCGI) per ISPConfig 3 su Debian 8 (Jessie)

10.2 Installa phpMyAdmin

Installa phpMyAdmin come segue:

apt-get install phpmyadmin

Non selezionare un'opzione quando i programmi di installazione chiedono "Server Web per riconfigurare automaticamente: " e premi ok.

Configure database for phpmyadmin with dbconfig-common? <-- yes
Password of the database's administrative user: <-- Enter the MySQL root password
MySQL application password for phpmyadmin: <-- Press Enter

Ora puoi trovare phpMyAdmin nella directory /usr/share/phpmyadmin/.

Dopo aver installato ISPConfig 3, puoi accedere a phpMyAdmin come segue:

L'app ISPConfig vhost sulla porta 8081 per nginx viene fornita con una configurazione phpMyAdmin, quindi puoi utilizzare http://server1.example.com:8081/phpmyadmin o http://server1.example.com:8081/phpMyAdmin per accedere a phpMyAdmin.

Se vuoi usare un alias /phpmyadmin o /phpMyAdmin che puoi usare dai tuoi siti web, questo è un po' più complicato rispetto ad Apache perché nginx non ha alias globali (cioè alias che possono essere definiti per tutti i vhost). Pertanto devi definire questi alias per ciascuno vhost da cui vuoi accedere a phpMyAdmin.

Per fare ciò, incolla quanto segue nel campo Direttive nginx nella scheda Opzioni del sito Web in ISPConfig:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php5-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Se utilizzi https invece di http per il tuo vhost, dovresti aggiungere la riga fastcgi_param HTTPS su; alla tua configurazione di phpMyAdmin in questo modo:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php5-fpm.sock;
                       fastcgi_param HTTPS on; # <-- add this line
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Se utilizzi sia http che https per il tuo vhost, puoi utilizzare la variabile $https. Vai di nuovo al campo Direttive nginx e invece di fastcgi_param HTTPS su; aggiungi la riga fastcgi_param HTTPS $https; in modo da poter utilizzare phpMyAdmin sia per le richieste http che per https:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php5-fpm.sock;
                       fastcgi_param HTTPS $https; # <-- add this line
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

10.3 Installare HHVM (HipHop Virtual Machine)

In questo passaggio, installeremo HHVM dal suo repository Debian ufficiale. Aggiungi il repository HHVM e importa la chiave.

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/debian jessie main | sudo tee /etc/apt/sources.list.d/hhvm.list

Aggiorna l'elenco dei pacchetti:

sudo apt-get update

e installa HHVM:

sudo apt-get install hhvm

11 Installa Let's Encrypt

ISPConfig 3.1 ha il supporto per l'autorità di certificazione SSL gratuita Let's encrypt. La funzione Let's Encrypt ti consente di creare certificati SSL gratuiti per il tuo sito web da ISPConfig.

apt-get install python-certbot -t jessie-backports

12 Installa Mailman

ISPConfig permette di gestire (creare/modificare/cancellare) le mailing list di Mailman. Se vuoi utilizzare questa funzione, installa Mailman come segue:

apt-get install mailman

Seleziona almeno una lingua, ad es.:

Lingue supportate:<-- it (inglese)
Elenco dei siti mancanti <-- Ok

Prima di poter avviare Mailman, è necessario creare una prima mailing list chiamata mailman:

newlist mailman

[email protetta]:~# mailman newlist
Inserisci l'e-mail della persona che gestisce l'elenco: <-- indirizzo e-mail admin, ad es. [email protetta]
Password del postino iniziale: <-- password amministratore per l'elenco del postino
Per terminare la creazione della lista mail, devi modificare il tuo /etc/alias (o
equivalente) file da parte di aggiungendo le righe seguenti, ed eventualmente eseguendo il programma
`newaliases':

## mailing list di mailman
mailman:             "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman- leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "| /var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-un iscriviti:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Premi invio per notificare il proprietario del postino... <-- ENTER

[email protetta] :~#

Apri /etc/alias in seguito...

nano /etc/aliases

... e aggiungi le seguenti righe:

[...]
## mailman mailing list
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Corri

newaliases

in seguito e riavvia Postfix:

service postfix restart

Quindi avvia il demone Mailman:

service mailman start

Dopo aver installato ISPConfig 3, puoi accedere a Mailman come segue:

L'app ISPConfig vhost sulla porta 8081 per nginx viene fornita con una configurazione Mailman, quindi puoi utilizzare http://server1.example.com:8081/cgi-bin/mailman/admin/ o http://server1.example .com:8081/cgi-bin/mailman/listinfo/ per accedere a Mailman.

Se vuoi usare Mailman dai tuoi siti web, questo è un po' più complicato rispetto ad Apache perché nginx non ha alias globali (cioè, alias che possono essere definiti per tutti i vhost). Pertanto devi definire questi alias per ciascuno vhost da cui vuoi accedere a Mailman.

Per fare ciò, incolla quanto segue nel campo Direttive nginx nella scheda Opzioni del sito Web in ISPConfig:

        location /cgi-bin/mailman {
               root /usr/lib/;
               fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
               include /etc/nginx/fastcgi_params;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               fastcgi_param PATH_INFO $fastcgi_path_info;
               fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
               fastcgi_intercept_errors on;
               fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }

        location /images/mailman {
               alias /usr/share/images/mailman;
        }

        location /pipermail {
               alias /var/lib/mailman/archives/public;
               autoindex on;
        }

Questo definisce l'alias /cgi-bin/mailman/ per il tuo vhost, il che significa che puoi accedere all'interfaccia di amministrazione di Mailman per un elenco su http:///cgi-bin/mailman/admin/, e il la pagina web per gli utenti di una mailing list è disponibile all'indirizzo http:///cgi-bin/mailman/listinfo/.

Sotto http:///pipermail puoi trovare gli archivi della mailing list.

13 Installa PureFTPd e Quota

PureFTPd e quota possono essere installati con il seguente comando:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Modifica il file /etc/default/pure-ftpd-common...

nano /etc/default/pure-ftpd-common

... e assicurati che la modalità di avvio sia impostata su standalone e imposta VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Ora configuriamo PureFTPd per consentire sessioni FTP e TLS. FTP è un protocollo molto insicuro perché tutte le password e tutti i dati vengono trasferiti in chiaro. Utilizzando TLS, l'intera comunicazione può essere crittografata, rendendo così l'FTP molto più sicuro.

Se vuoi consentire sessioni FTP e TLS, esegui

echo 1 > /etc/pure-ftpd/conf/TLS

Per utilizzare TLS, dobbiamo creare un certificato SSL. Lo creo in /etc/ssl/private/, quindi creo prima quella directory:

mkdir -p /etc/ssl/private/

Successivamente, possiamo generare il certificato SSL come segue:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Nome del Paese (codice di 2 lettere) [AU]:<-- Inserisci il nome del tuo Paese (ad es. "DE").
Nome Stato o Provincia (nome completo) [Stato-Stato]:<-- Inserisci il tuo Stato o nome della provincia.
Nome località (ad es. città) []:<-- Inserisci la tua città.
Nome organizzazione (ad es. azienda) [Internet Widgits Pty Ltd]:<-- Inserisci il nome dell'organizzazione (ad es. il nome della tua azienda).
Nome dell'unità organizzativa (ad es. sezione) []:<-- Inserisci il nome dell'unità organizzativa (ad es. "Dipartimento IT").
Nome comune (ad es. IL TUO nome) []:<-- Inserisci il nome di dominio completo del sistema (ad es. "server1.example.com").
Indirizzo e-mail []:<-- Inserisci il tuo indirizzo e-mail.

Modifica le autorizzazioni del certificato SSL:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Quindi riavvia PureFTPd:

service pure-ftpd-mysql restart

Modifica /etc/fstab. Il mio è simile a questo (ho aggiunto ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 alla partizione con il punto di montaggio /):

nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=3dc3b58d-97e5-497b-8254-a913fdfc5408 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=36bf486e-8f76-492d-89af-5a8eb3ce8a02 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Per abilitare la quota, esegui questi comandi:

mount -o remount /
quotacheck -avugm
quotaon -avug

14 Installa il server DNS BIND

BIND può essere installato come segue:

apt-get install bind9 dnsutils

Se il tuo server è una macchina virtuale, ti consigliamo vivamente di installare il demone haveged per ottenere un'entropia maggiore per la firma DNSSEC. Puoi installare haveged anche su server non virtuali, non dovrebbe far male.

apt-get install haveged
systemctl enable haveged
service haveged start

Una spiegazione sull'argomento può essere trovata qui.

15 Installa Webalizer e AWstats

Webalizer e AWstats possono essere installati come segue:

apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl

Apri /etc/cron.d/awstats in seguito...

nano /etc/cron.d/awstats

... e commenta tutto in quel file:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

16 Installa Jailkit

Jailkit è necessario solo se si desidera eseguire il chroot degli utenti SSH. Può essere installato come segue (importante:Jailkit deve essere installato prima di ISPConfig - non può essere installato in seguito!):

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
./debian/rules binary

Ora puoi installare il pacchetto Jailkit .deb come segue:

cd ..
dpkg -i jailkit_2.19-1_*.deb
rm -rf jailkit-2.19*

17 Installare Fail2ban e UFW Firewall

Questo è facoltativo ma consigliato, perché il monitor ISPConfig tenta di mostrare il registro:

apt-get install fail2ban

Per fare in modo che fail2ban controlli PureFTPd e Dovecot, crea il file /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local
[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled  = true
port     = smtp
filter   = postfix-sasl
logpath  = /var/log/mail.log
maxretry = 3

Quindi crea i seguenti due file di filtro:

nano /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@<HOST>\) \[WARNING\] Authentication failed for user.*
ignoreregex =
nano /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P<host>\S*),.*
ignoreregex =

Quindi, per aggiungere la riga ignoreregex nel file di filtro postfix-sasl, esegui:

echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.conf

Riavvia fail2ban in seguito:

service fail2ban restart

Per installare il firewall UFW, esegui questo comando apt:

apt-get install ufw

18 Installa RoundCube

Roundcube non è disponibile nel repository principale di Debian 8, ma possiamo ottenerlo tramite i backport.

Installa RoundCube con questo comando:

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

L'installatore porrà le seguenti domande:

Configure database for roundcube with dbconfig.common? <-- yes
Select the database type: <-- mysql
Password of the databases administrative user: <-- enter the MySQL root password here.
MySQL application password for roundcube: <-- press enter

Quindi modifica il file RoundCube /etc/roundcube/config.inc.php e regola alcune impostazioni:

nano /etc/roundcube/config.inc.php

Imposta default_host e smtp_server su localhost.

$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';

ISPConfig ha alcune configurazioni nelle app nginx vhost per squirrelmail che funziona anche per roundcube. Lo attiviamo con:

ln -s /usr/share/roundcube /usr/share/squirrelmail

Ora puoi accedere a RoundCube come segue:

http://192.168.1.100:8081/webmail
http://server1.example.com:8081/webmail (dopo aver installato ISPConfig, vedere il capitolo successivo)

19 Installa ISPConfig 3

Prima di avviare l'installazione di ISPConfig, assicurati che Apache sia interrotto (se è installato, è possibile che alcuni dei tuoi pacchetti installati abbiano installato Apache come dipendenza a tua insaputa). Se Apache2 è già installato sul sistema, interrompilo ora...

service apache2 stop

... e rimuovi i collegamenti di avvio del sistema di Apache:

update-rc.d -f apache2 remove

Assicurati che nginx sia in esecuzione:

service nginx restart

(Se hai installato sia Apache che nginx, il programma di installazione ti chiede quale vuoi usare:Apache e nginx rilevati. Seleziona il server da usare per ISPConfig:(apache, nginx) [apache]:

Digita nginx. Se sono installati solo Apache o nginx, questo viene rilevato automaticamente dal programma di installazione e non viene posta alcuna domanda.)

Per installare ISPConfig 3 dall'ultima versione rilasciata, procedere come segue:

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Il prossimo passo è eseguire

php -q install.php

Questo avvierà il programma di installazione di ISPConfig 3. Il programma di installazione configurerà per te tutti i servizi come Postfix, SASL, Courier, ecc. Non è necessaria una configurazione manuale come richiesto per ISPConfig 2 (guide di configurazione perfette).

# php -q install.php

--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------

>> Initial configuration
Operating System: Debian 8.0 (Jessie) or compatible
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]: <-- Hit Enter
Installation mode (standard,expert) [standard]: <-- Hit Enter
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.canomi.com]: <-- Hit Enter
MySQL server hostname [localhost]: <-- Hit Enter
MySQL server port [3306]: <-- Hit Enter
MySQL root username [root]: <-- Hit Enter
MySQL root password []: <-- Enter your MySQL root password
MySQL database to create [dbispconfig]: <-- Hit Enter
MySQL charset [utf8]: <-- Hit Enter
Apache and nginx detected. Select server to use for ISPConfig: (apache,nginx) [apache]: <-- nginx

Configuring Postgrey
Configuring Postfix
Generating a 4096 bit RSA private key
.......................................................................++
........................................................................................................................................++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Configuring Mailman
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring BIND
Configuring Jailkit
Configuring Pureftpd
Configuring Nginx
Configuring vlogger
Configuring Metronome XMPP Server
writing new private key to 'localhost.key'
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) [server1.canomi.com]: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Configuring UFW Firewall
Configuring Fail2ban
[INFO] service OpenVZ not detected
Configuring Apps vhost
Installing ISPConfig
ISPConfig Port [8080]:
Admin password [admin]:
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- Hit Enter
Generating RSA private key, 4096 bit long modulus
.......................++
................................................................................................................................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <-- Hit Enter
An optional company name []: <-- Hit Enter
writing RSA key

Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

Il programma di installazione configura automaticamente tutti i servizi sottostanti, quindi non è necessaria alcuna configurazione manuale.

Successivamente puoi accedere a ISPConfig 3 in http(s)://server1.example.com:8080/ o http(s)://192.168.1.100:8080/ (http o https dipende da cosa hai scelto durante l'installazione). Accedi con il nome utente admin e la password admin (dovresti cambiare la password predefinita dopo il primo accesso):

Il sistema è ora pronto per essere utilizzato.

20.1 Manuale di ISPConfig 3

Per imparare a usare ISPConfig 3, consiglio vivamente di scaricare il Manuale di ISPConfig 3.

Su più di 300 pagine, copre il concetto alla base di ISPConfig (amministratore, rivenditori, clienti), spiega come installare e aggiornare ISPConfig 3, include un riferimento per tutti i moduli e i campi dei moduli in ISPConfig insieme a esempi di input validi e fornisce tutorial per le attività più comuni in ISPConfig 3. Descrive anche come rendere più sicuro il tuo server e include una sezione per la risoluzione dei problemi alla fine.

21 Note aggiuntive

21.1 OpenVZ

Se il server Debian che hai appena impostato in questo tutorial è un contenitore OpenVZ (macchina virtuale), dovresti farlo sul sistema host (suppongo che l'ID del contenitore OpenVZ sia 101 - sostituiscilo con il VPSID corretto sul tuo sistema):

VPSID=101
for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
do
  vzctl set $VPSID --capability ${CAP}:on --save
done

22 Download dell'immagine della macchina virtuale di questo tutorial

Questo tutorial è disponibile come immagine della macchina virtuale pronta per l'uso in formato ovf/ova compatibile con VMWare e Virtualbox. L'immagine della macchina virtuale utilizza i seguenti dettagli di accesso:

Accesso SSH/Shell

Nome utente:amministratore
Password:howtoforge

Nome utente: root
Password:howtoforge

Accesso a ISPConfig

Nome utente:admin
Password:howtoforge

Accesso MySQL

Nome utente:root
Password:howtoforge

L'IP della VM è 192.168.1.100, può essere modificato nel file /etc/network/interfaces. Si prega di modificare tutte le password di cui sopra per proteggere la macchina virtuale.

  • Debian:http://www.debian.org/
  • Configurazione ISP:http://www.ispconfig.org/


Debian
  1. Il server perfetto - Ubuntu 14.10 (nginx, BIND, Dovecot, ISPConfig 3)

  2. Il server perfetto - OpenSUSE 12.3 x86_64 (nginx, Dovecot, ISPConfig 3)

  3. Il server perfetto - Ubuntu 15.04 (nginx, BIND, Dovecot e ISPConfig 3)

  4. Il server perfetto - Ubuntu 12.04 LTS (nginx, BIND, Dovecot, ISPConfig 3)

  5. Il server perfetto - Ubuntu 12.10 (nginx, BIND, Dovecot, ISPConfig 3)

Il server perfetto - OpenSUSE 12.2 x86_64 (nginx, Dovecot, ISPConfig 3)

Il server perfetto - CentOS 6.3 x86_64 (nginx, Dovecot, ISPConfig 3)

Il server perfetto - Debian Wheezy (nginx, BIND, Dovecot, ISPConfig 3)

Il server perfetto - Ubuntu 13.04 (Apache2, BIND, Dovecot, ISPConfig 3)

Il server perfetto - CentOS 6.4 x86_64 (nginx, Dovecot, ISPConfig 3)

Il server perfetto - Debian Wheezy (Apache2, BIND, Dovecot, ISPConfig 3)