Server Setup · 10 min read · Jan 25, 2026

Il Server Perfetto - Debian 8.4 Jessie (Apache2, BIND, Dovecot, ISPConfig 3.1) - Pagina 2

10 Installa Apache2, PHP, FCGI, suExec, Pear, phpMyAdmin e mcrypt

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear e mcrypt possono essere installati come segue:

apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached libapache2-mod-passenger

Vedrai le seguenti domande:

Web server da riconfigurare automaticamente: <- apache2  
 Configurare il database per phpmyadmin con dbconfig-common? <- sì  
Inserisci la password dell'utente amministrativo? <- yourrootmysqlpassword  
Inserisci la password dell'applicazione phpmyadmin? <-  Premi semplicemente invio

Quindi esegui il seguente comando per abilitare i moduli Apache suexec, rewrite, ssl, actions e include (più dav, dav_fs e auth_digest se desideri utilizzare WebDAV):

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers

Per garantire che il server non possa essere attaccato attraverso la vulnerabilità HTTPOXY, disabiliteremo l’intestazione HTTP_PROXY in apache globalmente aggiungendo il file di configurazione /etc/apache2/conf-available/httpoxy.conf.

sudo nano /etc/apache2/conf-available/httpoxy.conf

Incolla il seguente contenuto nel file:


    RequestHeader unset Proxy early

E abilita il modulo eseguendo:

a2enconf httpoxy  
service apache2 restart

10.1 Installa HHVM (HipHop Virtual Machine)

In questo passaggio installeremo HHVM dal suo repository ufficiale Debian. 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

10.2 Installa SuPHP (opzionale, ma non raccomandato)

NOTA AGGIORNATA: SuPHP non dovrebbe più essere installato, procedere al passaggio 11

SuPHP non è più disponibile per Debian Jessie. La modalità suphp non dovrebbe più essere utilizzata in ISPConfig poiché ci sono modalità PHP migliori come php-fpm e php-fcgi disponibili. Se hai davvero bisogno di suphp per motivi di compatibilità, segui i passaggi in questo capitolo per compilarlo manualmente. Ma non raccomandiamo la sua installazione.

apt-get install apache2-dev build-essential autoconf automake libtool flex bison debhelper binutils
cd /usr/local/src  
wget http://suphp.org/download/suphp-0.7.2.tar.gz  
tar zxvf suphp-0.7.2.tar.gz  
wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch  
patch -Np1 -d suphp-0.7.2 < suphp.patch  
cd suphp-0.7.2  
autoreconf -if  
./configure --prefix=/usr/ --sysconfdir=/etc/suphp/ --with-apr=/usr/bin/apr-1-config --with-apache-user=www-data --with-setid-mode=owner --with-logfile=/var/log/suphp/suphp.log  
make  
make install  

Crea la directory di configurazione suphp e il file suphp.conf:

mkdir /var/log/suphp  
mkdir /etc/suphp  
nano /etc/suphp/suphp.conf
[global]  
;Percorso al file di log  
logfile=/var/log/suphp/suphp.log  
  
;Livello di log  
loglevel=info  
  
;Utente con cui Apache sta girando  
webserver_user=www-data  
  
;Percorso in cui devono trovarsi tutti gli script  
docroot=/var/www  
  
;Percorso per chroot() prima di eseguire lo script  
;chroot=/mychroot  
  
; Opzioni di sicurezza  
allow_file_group_writeable=false  
allow_file_others_writeable=false  
allow_directory_group_writeable=false  
allow_directory_others_writeable=false  
  
;Controlla se lo script è all'interno di DOCUMENT_ROOT  
check_vhost_docroot=true  
  
;Invia messaggi di errore minori al browser  
errors_to_browser=false  
  
;Variabile di ambiente PATH  
env_path=/bin:/usr/bin  
  
;Umask da impostare, specificare in notazione ottale  
umask=0022  
  
; UID minimo  
min_uid=100  
  
; GID minimo  
min_gid=100  
  
[handlers]  
;Handler per gli script php  
x-httpd-suphp="php:/usr/bin/php-cgi"  
  
;Handler per gli script CGI  
x-suphp-cgi=execute:!self  
umask=0022

Successivamente aggiungeremo un file di configurazione per caricare il modulo suphp in apache:

echo "LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so" > /etc/apache2/mods-available/suphp.load

E poi apri /etc/apache2/mods-available/suphp.conf…

nano /etc/apache2/mods-available/suphp.conf

… e aggiungi il seguente contenuto:


        AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
        suPHP_AddHandler application/x-httpd-suphp

    
        suPHP_Engine on
    

    # Per impostazione predefinita, disabilita suPHP per le applicazioni web pacchettizzate di debian poiché i file
    # sono di proprietà di root e non possono essere eseguiti da suPHP a causa di min_uid.
    
        suPHP_Engine off
    

# # Usa un file di configurazione php specifico (una directory che contiene un file php.ini)
#       suPHP_ConfigPath /etc/php5/cgi/suphp/
# # Indica a mod_suphp di NON gestire le richieste con il tipo .
#       suPHP_RemoveHandler 

Abilita il modulo suphp in apache:

a2enmod suphp

Riavvia Apache successivamente:

service apache2 restart

11 Installa Let’s Encrypt

ISPConfig 3.1 ha 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 direttamente da ISPConfig.

Ora aggiungeremo supporto per Let’s Encrypt.

mkdir /opt/certbot  
cd /opt/certbot  
wget https://dl.eff.org/certbot-auto  
chmod a+x ./certbot-auto

Ora esegui il comando certboot-auto che scaricherà e installerà il software e le sue dipendenze.

./certbot-auto

Il comando ti dirà quindi che “nessun nome è stato trovato nei tuoi file di configurazione” e chiede se deve continuare, per favore scegli “no” qui poiché i certificati saranno creati da ISPConfig.

12 Installa PHP-FPM e XCache

XCache è un cache opcode PHP gratuito e open source per la memorizzazione nella cache e l’ottimizzazione del codice intermedio PHP. È simile ad altri cache opcode PHP, come eAccelerator e APC. È fortemente raccomandato avere uno di questi installato per velocizzare la tua pagina PHP.

12.1 PHP-FPM (raccomandato)

A partire da ISPConfig 3.0.5, c’è una modalità PHP aggiuntiva che puoi selezionare per l’uso con Apache: PHP-FPM.

Per utilizzare PHP-FPM con Apache, abbiamo bisogno del modulo mod_fastcgi di Apache (per favore non confonderlo con mod_fcgid - sono molto simili, ma non puoi usare PHP-FPM con mod_fcgid). Possiamo installare PHP-FPM e mod_fastcgi come segue:

apt-get install libapache2-mod-fastcgi php5-fpm

Assicurati di abilitare il modulo e riavviare Apache:

a2enmod actions fastcgi alias  
service apache2 restart

12.2 Installa XCache

XCache può essere installato come segue:

apt-get install php5-xcache

Ora riavvia Apache:

service apache2 restart

13 Installa Mailman

ISPConfig ti consente di gestire (creare/modificare/eliminare) le liste di distribuzione Mailman. Se desideri utilizzare questa funzione, installa Mailman come segue:

apt-get install mailman

Seleziona almeno una lingua, ad esempio:

Languages to support: <-- en (English)  
 Missing site list <-- Ok

Prima di poter avviare Mailman, deve essere creata una prima lista di distribuzione chiamata mailman:

newlist mailman
root@server1:~# newlist mailman  
Inserisci l'email della persona che gestisce la lista: <-- indirizzo email dell'amministratore, ad esempio [email protected]  
Password iniziale di mailman: <-- password dell'amministratore per la lista mailman  
Per completare la creazione della tua lista di distribuzione, devi modificare il tuo file /etc/aliases (o  
equivalente) aggiungendo le seguenti righe, e possibilmente eseguendo il  
`newaliases' programma:  
   
## 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"  
   
Premi invio per notificare il proprietario di mailman... <-- INVIO  
   
root@server1:~#

Apri /etc/aliases successivamente…

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"

Esegui:

newaliases

e riavvia Postfix:

service postfix restart

Infine, dobbiamo abilitare la configurazione di Apache per Mailman:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

Questo definisce l’alias /cgi-bin/mailman/ per tutti i vhost Apache, il che significa che puoi accedere all’interfaccia di amministrazione di Mailman per una lista su http://server1.example.com/cgi-bin/mailman/admin/, e la pagina web per gli utenti di una lista di distribuzione può essere trovata su http://server1.example.com/cgi-bin/mailman/listinfo/.

Sotto http://server1.example.com/pipermail puoi trovare gli archivi delle liste di distribuzione.

Riavvia Apache successivamente:

service apache2 restart

Quindi avvia il demone Mailman:

service mailman start

14 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 poiché tutte le password e tutti i dati vengono trasferiti in chiaro. Utilizzando TLS, l’intera comunicazione può essere crittografata, rendendo così FTP molto più sicuro.

Se desideri 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
Country Name (2 letter code) [AU]: <-- Inserisci il nome del tuo paese (ad esempio, "IT").  
State or Province Name (full name) [Some-State]: <-- Inserisci il nome del tuo stato o provincia.  
Locality Name (eg, city) []: <-- Inserisci la tua città.  
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Inserisci il nome della tua organizzazione (ad esempio, il nome della tua azienda).  
Organizational Unit Name (eg, section) []: <-- Inserisci il nome della tua unità organizzativa (ad esempio, "IT Department").  
Common Name (eg, YOUR name) []: <-- Inserisci il nome di dominio completamente qualificato del sistema (ad esempio, "server1.example.com").  
Email Address []: <-- Inserisci il tuo indirizzo email.

Cambia i permessi del certificato SSL:

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

Quindi riavvia PureFTPd:

service pure-ftpd-mysql restart

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

nano /etc/fstab
# /etc/fstab: informazioni statiche sul file system.  
#  
# Usa 'blkid' per stampare l'identificatore univoco universale per un  
# dispositivo; questo può essere utilizzato con UUID= come un modo più robusto per nominare i dispositivi  
# che funziona anche se i dischi vengono aggiunti e rimossi. Vedi fstab(5).  
#  
#        
# / era su /dev/sda1 durante l'installazione  
UUID=3dc3b58d-97e5-497b-8254-a913fdfc5408 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# swap era su /dev/sda5 durante l'installazione  
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

15 Installa il Server DNS BIND

BIND può essere installato come segue:

apt-get install bind9 dnsutils

Se il tuo server è una macchina virtuale, è altamente raccomandato installare il demone haveged per ottenere una maggiore entropia per la firma DNSSEC. Puoi installare haveged anche su server non virtuali, non dovrebbe fare male.

apt-get install haveged

Un’ulteriore spiegazione su questo argomento può essere trovata qui.

16 Installa Webalizer e AWStats

Webalizer e AWStats possono essere installati come segue:

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

Apri /etc/cron.d/awstats successivamente…

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

# Genera report statici:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

17 Installa Jailkit

Jailkit è necessario solo se desideri chrootare gli utenti SSH. Può essere installato come segue (importante: Jailkit deve essere installato prima di ISPConfig - non può essere installato successivamente!):

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*

18 Installa fail2ban e UFW Firewall

Questo è facoltativo ma raccomandato, perché il monitor di ISPConfig cerca di mostrare il log:

apt-get install fail2ban

Per far sì che fail2ban monitori 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: \(.*@\) \[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\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 successivamente:

service fail2ban restart

Per installare il firewall UFW, esegui questo comando apt:

apt-get install ufw
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.