Server Setup · 13 min read · Oct 27, 2025
Il Server Perfetto – CentOS 7 (Apache2, Dovecot, ISPConfig 3) - Pagina 2
10 Installa Dovecot
Dovecot può essere installato come segue:
yum -y install dovecot dovecot-mysql dovecot-pigeonholeCrea un file dovecot-sql.conf vuoto e un symlink:
touch /etc/dovecot/dovecot-sql.conf
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.confOra crea i link di avvio del sistema e avvia Dovecot:
systemctl enable dovecot
systemctl start dovecot11 Installa Postfix
Postfix può essere installato come segue:
yum -y install postfixQuindi disattiva Sendmail e avvia Postfix e Mariadb (MySQL):
systemctl enable mariadb.service
systemctl start mariadb.servicesystemctl stop sendmail.service
systemctl disable sendmail.service
systemctl enable postfix.service
systemctl restart postfix.serviceDisabilitiamo sendmail per assicurarci che non venga avviato nel caso sia installato sul tuo server. Quindi il messaggio di errore “Failed to issue method call: Unit sendmail.service not loaded.” può essere ignorato.
12 Installa Getmail
Getmail può essere installato come segue:
yum -y install getmail13 Imposta le Password di MySQL e Configura phpMyAdmin
Imposta le password per l’account root di MySQL:
mysql_secure_installation[root@server1 tmp]# mysql_secure_installation
NOTE: E' CONSIGLIATO ESEGUIRE TUTTE LE PARTI DI QUESTO SCRIPT PER TUTTI I SERVER MariaDB IN USO PRODUTTIVO! PER FAVORE LEGGI ATTENTAMENTE OGNI PASSO!Per accedere a MariaDB per metterlo in sicurezza, avremo bisogno della password attuale per l'utente root. Se hai appena installato MariaDB, e non hai ancora impostato la password root, la password sarà vuota, quindi dovresti semplicemente premere invio qui.Inserisci la password attuale per root (invio per nessuna):
OK, password utilizzata con successo, procedendo...Impostare la password root assicura che nessuno possa accedere all'utente root di MariaDB senza la corretta autorizzazione.
Impostare la password root? [Y/n] <-- INVIO
Nuova password: <-- yourrootsqlpassword
Reinserire la nuova password: <-- yourrootsqlpassword
Password aggiornata con successo!
Ricaricamento delle tabelle di privilegio..
... Success!
Per impostazione predefinita, un'installazione di MariaDB ha un utente anonimo, che consente a chiunque di accedere a MariaDB senza dover avere un account utente creato per loro. Questo è inteso solo per testare, e per rendere l'installazione un po' più fluida. Dovresti rimuoverli prima di passare a un ambiente di produzione.
Rimuovere gli utenti anonimi? [Y/n] <-- INVIO
... Success!
Normalmente, root dovrebbe essere autorizzato a connettersi solo da 'localhost'. Questo assicura che qualcuno non possa indovinare la password root dalla rete.
Disabilitare il login remoto per root? [Y/n] <-- INVIO
... Success!
Per impostazione predefinita, MariaDB viene fornito con un database chiamato 'test' a cui chiunque può accedere. Questo è anche inteso solo per testare, e dovrebbe essere rimosso prima di passare a un ambiente di produzione.
Rimuovere il database di test e l'accesso ad esso? [Y/n] <-- INVIO
- Rimozione del database di test...
... Success!
- Rimozione dei privilegi sul database di test...
... Success!
Ricaricare le tabelle di privilegio assicurerà che tutte le modifiche effettuate finora abbiano effetto immediato.
Ricaricare le tabelle di privilegio ora? [Y/n] <-- INVIO
... Success!
Pulizia...
Tutto fatto! Se hai completato tutti i passaggi sopra, la tua installazione di MariaDB dovrebbe ora essere sicura.
Grazie per aver utilizzato MariaDB!
[root@server1 tmp]#Ora configuriamo phpMyAdmin. Cambiamo la configurazione di Apache in modo che phpMyAdmin consenta connessioni non solo da localhost (commentando le due righe “Require ip” e aggiungendo la nuova riga “Require all granted” nella sezione
nano /etc/httpd/conf.d/phpMyAdmin.conf# phpMyAdmin - Browser MySQL basato sul web scritto in php
#
# Consente solo localhost per impostazione predefinita
#
# Ma consentire a phpMyAdmin a chiunque altro oltre a localhost dovrebbe essere considerato
# pericoloso a meno che non sia adeguatamente protetto da SSL
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
# Apache 2.4
# Require ip 127.0.0.1
# Require ip ::1
Require all granted
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
Successivamente cambiamo l’autenticazione in phpMyAdmin da cookie a http:
nano /etc/phpMyAdmin/config.inc.php[...]
/* Tipo di autenticazione */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]Poi creiamo i link di avvio del sistema per Apache e lo avviamo:
systemctl enable httpd.service
systemctl restart httpd.serviceOra puoi indirizzare il tuo browser a http://server1.example.com/phpmyadmin/ o http://192.168.0.100/phpmyadmin/ e accedere con il nome utente root e la tua nuova password root di MySQL.
14 Installa Amavisd-new, SpamAssassin e ClamAV
Per installare amavisd-new, spamassassin e clamav, esegui il seguente comando:
yum -y install amavisd-new spamassassin clamav clamd clamav-update unzip bzip2 unrar perl-DBD-mysqlModifica il file di configurazione freshclam /etc/freshclam.conf
nano /etc/freshclam.confe commenta la riga “Example”
[....]
# Example
[....]Quindi avviamo freshclam, amavisd e clamd.amavisd:
sa-update
freshclam
systemctl enable amavisd.service15 Installazione di Apache2 con mod_php, mod_fcgi/PHP5, PHP-FPM e suPHP
ISPConfig 3 ti consente di utilizzare mod_php, mod_fcgi/PHP5, cgi/PHP5 e suPHP su base per sito web.
Possiamo installare Apache2 con mod_php5, mod_fcgid e PHP5 come segue:
yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel php-fpmSuccessivamente apriamo /etc/php.ini…
nano /etc/php.ini… e cambiamo la segnalazione degli errori (in modo che i messaggi non vengano più mostrati), impostiamo il fuso orario e decommentiamo cgi.fix_pathinfo=1:
[...]
;error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
[...]
; cgi.fix_pathinfo fornisce supporto *reale* per PATH_INFO/PATH_TRANSLATED per CGI. Il comportamento precedente di PHP era impostare PATH_TRANSLATED su SCRIPT_FILENAME, e non comprendere cosa sia PATH_INFO. Per ulteriori informazioni su PATH_INFO, vedere le specifiche cgi. Impostare questo a 1 farà sì che PHP CGI corregga i suoi percorsi per conformarsi alla specifica. Un'impostazione di zero fa sì che PHP si comporti come prima. Il predefinito è 1. Dovresti correggere i tuoi script per utilizzare SCRIPT_FILENAME piuttosto che PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]
date.timezone = 'Europe/Berlin'
[...]Successivamente installiamo suPHP (c’è un pacchetto mod_suphp disponibile nei repository, ma sfortunatamente non è compatibile con ISPConfig, quindi dobbiamo costruire suPHP noi stessi):
cd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gzCentOS 7 utilizza apache-2.4, quindi abbiamo bisogno di un patch suphp prima di poterlo compilare contro Apache. La patch viene applicata in questo modo:
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[root@server1 suphp-0.7.2]# autoreconf -if
libtoolize: mettendo i file ausiliari in AC_CONFIG_AUX_DIR, config'. libtoolize: copiando il fileconfig/ltmain.sh’
libtoolize: Considera di aggiungere AC_CONFIG_MACRO_DIR([m4])' a configure.ac e libtoolize: rieseguire libtoolize, per mantenere i corretti macro di libtool in-tree. libtoolize: Considera di aggiungere-I m4’ a ACLOCAL_AMFLAGS in Makefile.am.
configure.ac:9: avviso: AM_INIT_AUTOMAKE: forme a due e tre argomenti sono deprecate. Per ulteriori informazioni, vedere:
configure.ac:9: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:24: installazione di ‘config/config.guess’
configure.ac:24: installazione di ‘config/config.sub’
configure.ac:9: installazione di ‘config/install-sh’
configure.ac:9: installazione di ‘config/missing’
src/Makefile.am: installazione di ‘config/depcomp’
[root@server1 suphp-0.7.2]#
Applicherà la patch, ora possiamo compilare il nuovo sorgente come segue:
./configure --prefix=/usr/ --sysconfdir=/etc/ --with-apr=/usr/bin/apr-1-config --with-apache-user=apache --with-setid-mode=owner --with-logfile=/var/log/httpd/suphp_log
make
make installPoi aggiungiamo il modulo suPHP alla nostra configurazione di Apache…
nano /etc/httpd/conf.d/suphp.confLoadModule suphp_module modules/mod_suphp.so… e creiamo il file /etc/suphp.conf come segue:
nano /etc/suphp.conf[global]
;Percorso del logfile
logfile=/var/log/httpd/suphp.log
;Livello di log
loglevel=info
;Utente con cui Apache sta girando
webserver_user=apache
;Percorso in cui devono trovarsi tutti gli script
docroot=/
;Percorso per chroot() prima di eseguire lo script
;chroot=/mychroot
; Opzioni di sicurezza
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
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=0077
; 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"Modifica il file /etc/httpd/conf.d/php.confto per abilitare l’analisi php solo per phpmyadmin, roundcube e altri pacchetti di sistema in /usr/share ma non per i siti web in /var/www poiché ISPConfig attiverà PHP per ciascun sito web individualmente.
nano /etc/httpd/conf.d/php.confcambia le righe:
SetHandler application/x-httpd-php
in:
SetHandler application/x-httpd-php
In modo che il gestore PHP sia racchiuso dalla direttiva Directory.
Abilita httpd e PHP-FPM per avviarsi all’avvio e avvia il servizio PHP-FPM.
systemctl start php-fpm.service
systemctl enable php-fpm.service
systemctl enable httpd.serviceInfine riavviamo Apache:
systemctl restart httpd.service15.1 Installazione di mod_python
Il modulo apache mod_python non è disponibile come pacchetto RPM, quindi lo compileremo da sorgente. Il primo passo è installare i file di sviluppo di python e scaricare la versione attuale di mod_python come file tar.gz
yum -y install python-develcd /usr/local/src/
wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz
tar xfz mod_python-3.5.0.tgz
cd mod_python-3.5.0e poi configurare e compilare il modulo
./configure
make
make installed abilitare il modulo in apache
echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf
systemctl restart httpd.service 16 Installa PureFTPd
PureFTPd può essere installato con il seguente comando:
yum -y install pure-ftpdQuindi crea i link di avvio del sistema e avvia PureFTPd:
systemctl enable pure-ftpd.service
systemctl start pure-ftpd.serviceOra 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ì FTP molto più sicuro.
OpenSSL è necessario per TLS; per installare OpenSSL, eseguiamo semplicemente:
yum install opensslApri /etc/pure-ftpd/pure-ftpd.conf…
vi /etc/pure-ftpd/pure-ftpd.confSe desideri consentire sessioni FTP e TLS, imposta TLS su 1:
[...]
# Questa opzione può accettare tre valori :
# 0 : disabilita il livello di crittografia SSL/TLS (predefinito).
# 1 : accetta sia sessioni tradizionali che crittografate.
# 2 : rifiuta connessioni che non utilizzano meccanismi di sicurezza SSL/TLS,
# comprese le sessioni anonime.
# Non decommentare questo alla leggera. Assicurati che :
# 1) Il tuo server è stato compilato con supporto SSL/TLS (--with-tls),
# 2) Un certificato valido è in atto,
# 3) Solo client compatibili accederanno.
TLS 1
[...]Per utilizzare TLS, dobbiamo creare un certificato SSL. Lo creo in /etc/ssl/private/, quindi creo prima quella directory:
mkdir -p /etc/ssl/private/Dopo, 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.pemNome del Paese (codice a 2 lettere) [XX]: <– Inserisci il nome del tuo paese (es. “IT”).
Nome dello Stato o della Provincia (nome completo) []: <– Inserisci il nome del tuo stato o provincia.
Nome della Località (es. città) [Città Predefinita]: <– Inserisci la tua città.
Nome dell’Organizzazione (es. azienda) [Azienda Predefinita Ltd]: <– Inserisci il nome della tua organizzazione (es. il nome della tua azienda).
Nome dell’Unità Organizzativa (es. sezione) []: <– Inserisci il nome della tua unità organizzativa (es. “Dipartimento IT”).
Nome Comune (es. il tuo nome o il nome host del tuo server) []: <– Inserisci il Nome Dominio Completo del sistema (es. “server1.example.com”).
Indirizzo Email []: <– Inserisci il tuo indirizzo email.
Cambia i permessi del certificato SSL:
chmod 600 /etc/ssl/private/pure-ftpd.pemInfine riavvia PureFTPd:
systemctl restart pure-ftpd.serviceQuesto è tutto. Ora puoi provare a connetterti utilizzando il tuo client FTP; tuttavia, dovresti configurare il tuo client FTP per utilizzare TLS.
17 Installa BIND
Possiamo installare BIND come segue:
yum -y install bind bind-utilsFai un backup del file /etc/named.conf esistente e crea un nuovo come segue:
cp /etc/named.conf /etc/named.conf_bak
cat /dev/null > /etc/named.conf
nano /etc/named.conf// named.conf\
//\
// Fornito dal pacchetto bind di Red Hat per configurare il server DNS ISC BIND named(8)\
// come nameserver solo in cache (come risolutore DNS localhost solo).\
//\
// Vedi /usr/share/doc/bind*/sample/ per file di configurazione named di esempio.\
//\
options {\
listen-on port 53 { any; };\
listen-on-v6 port 53 { any; };\
directory "/var/named";\
dump-file "/var/named/data/cache_dump.db";\
statistics-file "/var/named/data/named_stats.txt";\
memstatistics-file "/var/named/data/named_mem_stats.txt";\
allow-query { any; };\
allow-recursion {"none";};\
recursion no;\
};\
logging {\
channel default_debug {\
file "data/named.run";\
severity dynamic;\
};\
};\
zone "." IN {\
type hint;\
file "named.ca";\
};\
include "/etc/named.conf.local";\Crea il file /etc/named.conf.local che viene incluso alla fine di /etc/named.conf ( /etc/named.conf.local verrà successivamente popolato da ISPConfig se crei zone DNS in ISPConfig):
touch /etc/named.conf.localPoi creiamo i link di avvio e avviamo BIND:
systemctl enable named.service
systemctl start named.service18 Installa Webalizer e AWStats
Webalizer e AWStats possono essere installati come segue:
yum -y install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-Builder19 Installa Jailkit
Jailkit è utilizzato per chrootare gli utenti SSH e i cronjob. Può essere installato come segue (importante: Jailkit deve essere installato prima di ISPConfig - non può essere installato dopo!):
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
tar xvfz jailkit-2.17.tar.gz
cd jailkit-2.17
./configure
make
make install
cd ..
rm -rf jailkit-2.17*20 Installa fail2ban
Questo è facoltativo ma raccomandato, perché il monitor di ISPConfig cerca di mostrare il log:
yum -y install fail2banQuindi crea i link di avvio del sistema per fail2ban e avvialo:
systemctl enable fail2ban.service
systemctl start fail2ban.service21 Installa rkhunter
rkhunter può essere installato come segue:
yum -y install rkhunter22 Installa Mailman
Dalla versione 3.0.4, ISPConfig consente anche di gestire (creare/modificare/eliminare) le liste di distribuzione Mailman. Se desideri utilizzare questa funzionalità, installa Mailman come segue:
yum -y install mailmanPrima di poter avviare Mailman, deve essere creata una prima lista di distribuzione chiamata mailman:
touch /var/lib/mailman/data/aliases
/usr/lib/mailman/bin/newlist mailman[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Inserisci l’email della persona che gestisce la lista: <– indirizzo email dell’amministratore, es. [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 programma newaliases:
lista di distribuzione mailman
mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”
Premi invio per notificare il proprietario della lista mailman… <– INVIO
[root@server1 tmp]#
Apri /etc/aliases successivamente…
vi /etc/aliases… e aggiungi le seguenti righe:
[...]
mailman: "|/usr/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/usr/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/usr/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman"Esegui
newaliasessuccessivamente e riavvia Postfix:
systemctl restart postfix.serviceOra apri il file di configurazione di Apache di Mailman /etc/httpd/conf.d/mailman.conf…
nano /etc/httpd/conf.d/mailman.conf… e aggiungi la riga ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/. Commenta Alias /pipermail/ /var/lib/mailman/archives/public/ e aggiungi la riga Alias /pipermail /var/lib/mailman/archives/public/:
#
# impostazioni di configurazione httpd per l'uso con mailman.
#
ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/
ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
#Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /pipermail /var/lib/mailman/archives/public/
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AddDefaultCharset Off
# Decommenta la seguente riga, per reindirizzare le query a /mailman alla
# pagina listinfo (raccomandato).
# RedirectMatch ^/mailman[/]*$ /mailman/listinfoRiavvia Apache:
systemctl restart httpd.serviceCrea i link di avvio del sistema per Mailman e avvialo:
systemctl enable mailman.service
systemctl start mailman.serviceDopo aver installato ISPConfig 3, puoi accedere a Mailman come segue: Puoi utilizzare l’alias /cgi-bin/mailman per tutti i vhost Apache (si prega di notare che suExec e CGI devono essere disabilitati per tutti i vhost da cui desideri accedere a Mailman!), il che significa che puoi accedere all’interfaccia di amministrazione di Mailman per una lista su http://
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.