GNU/Linux >> Linux Esercitazione >  >> Debian

Il server perfetto - Debian 10 (Buster) con Apache, BIND, Dovecot, PureFTPD e ISPConfig 3.2

Questo tutorial mostra come preparare un server Debian 10 (con Apache2, BIND, Dovecot) per l'installazione di ISPConfig 3.2 e come installare ISPConfig. Il pannello di controllo del web hosting ISPConfig 3 consente di configurare i seguenti servizi tramite 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 tanti altri. Questa configurazione copre Apache (anziché nginx), BIND e Dovecot.

1 Nota preliminare

In questo tutorial userò il nome host server1.example.com con l'indirizzo IP 192.168.0.100 e il gateway 192.168.0.1. Queste impostazioni potrebbero differire per te, quindi devi sostituirle dove appropriato. Prima di procedere oltre, devi avere un'installazione minima di Debian 10. Potrebbe trattarsi di un'immagine minima di Debian dal tuo provider di hosting oppure usi il tutorial Minimal Debian Server per configurare il sistema di base.

Tutti i comandi seguenti vengono eseguiti come utente root. Accedi direttamente come utente root o accedi come utente normale e quindi usa il comando

su -

per diventare utente root sul tuo server prima di procedere. IMPORTANTE :Devi usare 'su -' e non solo 'su', altrimenti la tua variabile PATH è impostata in modo errato da Debian.

2 Installa il server SSH (opzionale)

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

apt-get install ssh openssh-server

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

3 Installa un editor di testo shell (opzionale)

Useremo nano editor di testo in questo tutorial. Alcuni utenti preferiscono il classico editor vi, quindi installeremo 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 install nano vim-nox

Se vi è il tuo editor preferito, sostituisci nano con vi nei seguenti comandi per modificare i file.

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". Per il nostro nome host server1.example.com, il file sarà simile al seguente:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.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:

systemctl 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

Innanzitutto, assicurati che il tuo /etc/apt/sources.list contenga il repository buster/updates (questo assicura di ottenere sempre gli aggiornamenti di sicurezza più recenti) e che i repository contrib e non gratuiti siano abilitati poiché alcuni pacchetti richiesti non lo sono nel repository principale.

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

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

Corri:

apt-get update

Per aggiornare il database dei pacchetti apt

apt-get upgrade

e 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 -y install ntp

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

8 Installa Postfix, Dovecot, MariaDB, rkhunter e Binutils

Possiamo installare Postfix, Dovecot, MariaDB come alternativa a MySQL, rkhunter e Binutils con un solo comando:

apt-get -y 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 curl

Ti verranno poste le seguenti domande:

Tipo generale di configurazione della posta:<-- Sito Internet
Nome della posta di sistema:<-- server1.example.com

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

mysql_secure_installation

Rispondi alle domande come segue:

Change the root password? [Y/n] <-- y
New password: <-- Enter a new MariaDB root password
Re-enter new password: <-- Repeat the MariaDB root password
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

Decommentare le sezioni submit e smtps come segue e aggiungere righe ove necessario in modo che questa sezione del file master.cf assomigli esattamente a quella sottostante. IMPORTANTE: Rimuovi il # davanti alle righe che iniziano con smtps e submit anche e non solo dalle righe -o dopo queste righe!

[...]
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:

systemctl restart postfix

Vogliamo che MySQL sia in ascolto su tutte le interfacce, non solo su localhost. Pertanto, modifichiamo /etc/mysql/mariadb.conf.d/50-server.cnf e commentiamo la riga bind-address =127.0.0.1 aggiungendo un # davanti ad essa.

nano /etc/mysql/mariadb.conf.d/50-server.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

[...]

Imposta il metodo di autenticazione della password in MariaDB su nativo in modo da poter utilizzare PHPMyAdmin in seguito per connetterci come utente root:

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Modifica il file /etc/mysql/debian.cnf e imposta la password di root MYSQL/MariaDB due volte nelle righe che iniziano con la parola password.

nano /etc/mysql/debian.cnf

La password di root MySQL che deve essere aggiunta è mostrata in rosso. In questo esempio, la password è "howtoforge".

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = howtoforge
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

Per evitare l'errore 'Errore nell'accettazione:troppi file aperti ' imposteremo ora limiti di file aperti più elevati per MariaDB.

Apri il file /etc/security/limits.conf con un editor:

nano /etc/security/limits.conf

e aggiungi queste righe alla fine del file.

mysql soft nofile 65535
mysql hard nofile 65535

Quindi, crea una nuova directory /etc/systemd/system/mysql.service.d/ con il comando mkdir.

mkdir -p /etc/systemd/system/mysql.service.d/

e aggiungi un nuovo file all'interno:

nano /etc/systemd/system/mysql.service.d/limits.conf

incolla le seguenti righe in quel file:

[Service]
LimitNOFILE=infinity

Salva il file e chiudi il nano editor.

Quindi ricarichiamo systemd e riavviamo MariaDB:

systemctl daemon-reload
systemctl restart mariadb

Ora controlla che la rete sia abilitata. Corri

netstat -tap | grep mysql

L'output dovrebbe essere simile a questo:

[email protected]:/home/administrator# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 16623/mysqld

9 Installa Amavisd-new, SpamAssassin e ClamAV

Per installare amavisd-new, SpamAssassin e ClamAV, eseguiamo

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip 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 libdbd-mysql-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:

systemctl stop spamassassin
systemctl disable spamassassin

10 Installa Apache Web Server e PHP

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

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt  imagemagick libruby libapache2-mod-python php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached libapache2-mod-passenger php7.3-soap php7.3-fpm php7.3-opcache php-apcu libapache2-reload-perl

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

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers actions proxy_fcgi alias

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

Nota: La vulnerabilità si chiama httpoxy (senza 'r') e quindi il file in cui aggiungiamo la configurazione per prevenirla si chiama httpoxy.conf e non httproxy.conf, quindi non c'è 'r' mancante nel nome del file.

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

Incolla il seguente contenuto nel file:

<IfModule mod_headers.c>
    RequestHeader unset Proxy early
</IfModule>

E abilita il modulo eseguendo:

a2enconf httpoxy
systemctl restart apache2

11 Installa Let's Encrypt

ISPConfig sta usando acme.sh ora come client Let's Encrypt. Installa acme.sh usando il seguente comando:

curl https://get.acme.sh | sh -s

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.:

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

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

newlist mailman
[email protected]:~# newlist mailman
Enter the email of the person running the list: <-- admin email address, e.g. [email protected]
Initial mailman password: <-- admin password for the mailman list
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

## 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"

Hit enter to notify mailman owner... <-- ENTER

[email protected]:~#

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

e riavvia Postfix:

systemctl restart postfix

Infine, dobbiamo abilitare la configurazione di Mailman Apache:

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 un elenco su http://server1.example.com/cgi-bin/mailman/admin/ e il la pagina web per gli utenti di una mailing list è disponibile all'indirizzo http://server1.example.com/cgi-bin/mailman/listinfo/.

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

Riavvia Apache in seguito:

systemctl restart apache2

Quindi avvia il demone Mailman:

systemctl restart mailman

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

Crea il file dhparam per pure-ftpd:

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

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
Country Name (2 letter code) [AU]: <-- Enter your Country Name (e.g., "DE").
State or Province Name (full name) [Some-State]: <-- Enter your State or Province Name.
Locality Name (eg, city) []: <-- Enter your City.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter your Organization Name (e.g., the name of your company).
Organizational Unit Name (eg, section) []: <-- Enter your Organizational Unit Name (e.g. "IT Department").
Common Name (eg, YOUR name) []: <-- Enter the Fully Qualified Domain Name of the system (e.g. "server1.example.com").
Email Address []: <-- Enter your Email Address.

Modifica le autorizzazioni del certificato SSL:

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

Quindi riavvia PureFTPd:

systemctl restart pure-ftpd-mysql

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=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 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

Una spiegazione sull'argomento può essere trovata qui.

15 Installa Webalizer, AWStats e GoAccess

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 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

Installazione dell'ultima versione di GoAccess direttamente dal repository GoAccess:

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
apt-get update
apt-get install goaccess

16 Installa Jailkit

Jailkit è necessario solo se si desidera eseguire il chroot degli utenti SSH. Può essere installato come segue:

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

Ora puoi installare il pacchetto Jailkit .deb come segue:

cd ..
dpkg -i jailkit_2.20-1_*.deb
rm -rf jailkit-2.20*

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

E aggiungi la seguente configurazione.

[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3

[dovecot]
enabled = true
filter = dovecot
logpath = /var/log/mail.log
maxretry = 5

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

Riavvia fail2ban in seguito:

systemctl restart fail2ban

Per installare il firewall UFW, esegui questo comando apt:

apt-get install ufw

18 Installa lo strumento di amministrazione del database PHPMyAdmin

Da Debian 10, PHPMyAdmin non è più disponibile come pacchetto .deb. Pertanto lo installeremo dal sorgente.

Crea cartelle per PHPMyadmin:

mkdir /usr/share/phpmyadmin
mkdir /etc/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setup

Vai alla directory /tmp e scarica i sorgenti PHPMyAdmin:

cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

Decomprimi il file di archivio scaricato e sposta i file nella cartella /usr/share/phpmyadmin e ripulisci la directory /tmp.

tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz
rm -rf phpMyAdmin-4.9.0.1-all-languages

Crea un nuovo file di configurazione per PHPMyaAdmin in base al file di esempio fornito:

cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php

Apri il file di configurazione con nano editor:

nano /usr/share/phpmyadmin/config.inc.php

Imposta una password sicura (Blowfish Secret) che deve essere lunga 32 caratteri:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Non usare il mio esempio segreto di pesce palla, imposta il tuo!

Quindi aggiungi una riga per impostare la directory che PHPMyAdmin utilizzerà per memorizzare i file temporanei:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Successivamente, creiamo il file di configurazione di Apache per PHPMyAdmin aprendo un nuovo file in nano editor:

nano /etc/apache2/conf-available/phpmyadmin.conf

Incolla la seguente configurazione nel file e salvalo.

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php

<IfModule mod_php7.c>
AddType application/x-httpd-php .php

php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/libraries>
Order Deny,Allow
Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Order Deny,Allow
Deny from All
</Directory>

Attiva la configurazione e riavvia Apache.

a2enconf phpmyadmin
systemctl restart apache2

Nel passaggio successivo, configureremo l'archivio di configurazione di phpMyadmin (database).

Accedi a MariaDB come utente root:

mysql -u root -p

Nella shell di MariaDB, crea un nuovo database per PHPMyAdmin:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Quindi crea un nuovo utente:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

Sostituisci la parola miapassword con una password sicura a tua scelta nei comandi sopra e sotto, usa la stessa password entrambe le volte. Quindi concedi all'utente l'accesso a questo database e ricarica le autorizzazioni del database.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Infine, carica le tabelle SQL nel database:

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Immettere la password di root di MariaDB su richiesta.

Tutto quello che dobbiamo fare ora è impostare i dettagli dell'utente phpmyadmin nel file di configurazione. Apri di nuovo il file in nano editor:

nano /usr/share/phpmyadmin/config.inc.php

Scorri verso il basso fino a visualizzare le righe sottostanti e modificale:

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Ho segnato le linee in rosso che ho modificato. Sostituisci miapassword con la password che hai scelto per l'utente phpmyadmin. Nota che anche la // davanti alle righe è stata rimossa!

19 Installa RoundCube Webmail (opzionale)

In questo capitolo installeremo il client webmail RoundCube. Innanzitutto, dobbiamo creare manualmente il database per Roundcube poiché attualmente c'è un problema nel programma di installazione Debian di RoundCube che impedisce la creazione automatica del database. Esegui questo comando per creare il database:

echo "CREATE DATABASE roundcube;" | mysql --defaults-file=/etc/mysql/debian.cnf

Quindi 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
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 su localhost e smtp_server.

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

Quindi modifica il file di configurazione di Apache RoundCube /etc/apache2/conf-enabled/roundcube.conf:

nano /etc/apache2/conf-enabled/roundcube.conf

E aggiungi una riga alias per l'alias di apache /webmail e una per /roundcube, puoi aggiungere la riga direttamente all'inizio del file. NOTA:non utilizzare /mail come alias o il modulo e-mail di ispconfig smetterà di funzionare!

Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube

Quindi ricarica Apache:

systemctl reload apache2

Ora puoi accedere a RoundCube come segue:

http://192.168.0.100/webmail
http://www.example.com/webmail
http://server1.example.com:8080/webmail (dopo aver installato ISPConfig, vedere il capitolo successivo)

Esistono alcuni plugin per integrare RoundCube Webmail con ISPConfig, dai un'occhiata qui per le istruzioni di installazione del plugin ISPConfig RoundCube.

20 Scarica ISPConfig 3

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/

21 Installa ISPConfig

Il passaggio successivo consiste nell'eseguire il programma di installazione di ISPConfig.

php -q install.php

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

# php -q install.php

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

>> Initial configuration
Operating System: Debian 10.0 (Buster) 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.example.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
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 Apache
Configuring vlogger
[INFO] service Metronome XMPP Server not detected
Configuring Ubuntu 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.0.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.

21.1 Manuale di ISPConfig 3

Per imparare a utilizzare 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.

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: admin

Accesso MySQL

Nome utente:root
Password:howtoforge

L'IP della VM è 192.168.0.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 15.04 (Vivid Vervet) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3

  2. Il server perfetto - Ubuntu 15.10 (Wily Werewolf) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3

  3. Il server perfetto - Ubuntu 16.10 (Yakkety Yak) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1

  4. Il server perfetto - Ubuntu 17.04 (Zesty Zapus) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1

  5. Il server perfetto - Ubuntu 17.10 (Artful Aardvark) con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig 3.1

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

Il server perfetto - Debian 9 (Stretch) con Apache, BIND, Dovecot, PureFTPD e ISPConfig 3.1

Il server perfetto - Debian 9 (Nginx, BIND, Dovecot, ISPConfig 3.1)

Il server perfetto - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

Il server perfetto - Debian Squeeze (Debian 6.0) con BIND e Dovecot [ISPConfig 3]

Il server perfetto - Ubuntu 14.10 con Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot e ISPConfig