Ricerca nel sito web

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


Su questa pagina

  1. 1 Nota preliminare
  2. 2 Installare il server SSH (facoltativo)
  3. 3 Installare un editor di testo shell (facoltativo)
  4. 4 Configura il nome host
  5. 5 Aggiorna la tua installazione di Debian
  6. 6. Cambia la shell predefinita
  7. 7 Sincronizza l'orologio di sistema
  8. 8 Installa Postfix, Dovecot, MariaDB, rkhunter e Binutils
  9. 9 Installa Amavisd-new, SpamAssassin e ClamAV
  10. 10 Installa Apache Web Server e PHP
  11. 11 Installa Lets Encrypt
  12. 12 Installa Mailman
  13. 13 Installa PureFTPd e Quota
  14. 14 Installa il server BIND DNS
  15. 15 Installa Webalizer, AWStats e GoAccess
  16. 16 Installa il jailkit
  17. 17 Installa fail2ban e UFW Firewall
  18. 18 Installa lo strumento di amministrazione del database PHPMyAdmin
  19. 19 Installa RoundCube Webmail (facoltativo)
  20. 20 Scarica ISPConfig 3
    1. 20 Scarica la versione stabile di ISPConfig (consigliato)

    1. 21.1 Manuale ISPConfig 3

    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 attraverso un browser web: server web Apache o nginx, server di posta Postfix, server Courier o Dovecot IMAP/POP3, MySQL, server dei nomi BIND o MyDNS, PureFTPd, SpamAssassin, ClamAV, e tanti altri. Questa configurazione copre Apache (invece di 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 disporre di un'installazione minima di Debian 10. Questa potrebbe essere un'immagine minima di Debian dal tuo provider di hosting oppure puoi utilizzare il tutorial del server Debian minimo 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 utilizza 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 Installare il server SSH (facoltativo)

    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 Installare un editor di testo della shell (facoltativo)

    Useremo l'editor di testo nano 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 parte del sottodominio come \example.com\ come nome host in quanto ciò causerà problemi in seguito con la configurazione della posta. Innanzitutto, dovresti controllare il nome host in /etc/hosts e modificarlo quando 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 a questo:

    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

    Dovrà 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ì:

    :/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 ricevere sempre gli aggiornamenti di sicurezza più recenti) e che i repository contrib e non-free 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

    Correre:

    apt-get update

    Per aggiornare il database dei pacchetti apt

    apt-get upgrade

    e per installare gli ultimi aggiornamenti (se presenti).

    6. Modificare 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 trattino come shell di sistema predefinita (/bin/sh)? <--No

    Se non lo fai, l'installazione di ISPConfig fallirà.

    7 Sincronizzare l'orologio di sistema

    È consigliabile sincronizzare l'orologio di sistema con un server NTP (network time protocol) su Internet. Corri 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 unico 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 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

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

    nano /etc/postfix/master.cf

    Rimuovere il commento dalle sezioni di invio e smtps come segue e aggiungere righe dove necessario in modo che questa sezione del file master.cf appaia esattamente come quella sottostante. IMPORTANTE: Rimuovi il # davanti alle righe che iniziano con smtps e anche submission 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 ascolti 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 un secondo momento 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 lì la password di root MYSQL/MariaDB due volte nelle righe che iniziano con la parola password.

    nano /etc/mysql/debian.cnf

    La password 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 prevenire l'errore Errore in accept: Too many open files imposteremo ora limiti di file aperti più alti 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

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

    incollare 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. Correre

    netstat -tap | grep mysql

    L'output dovrebbe essere simile a questo:

    :/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, corriamo

    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

    L'installazione di ISPConfig 3 utilizza amavisd che carica internamente la libreria di filtri SpamAssassin, quindi possiamo interrompere SpamAssassin per liberare RAM:

    systemctl stop spamassassin
    systemctl disable spamassassin

    10 Installare 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 seguente comando per abilitare i moduli Apache suexec, rewrite, ssl, actions e include (oltre a 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 attraverso la vulnerabilità HTTPOXY, disabiliteremo globalmente l'intestazione HTTP_PROXY in apache aggiungendo il file di configurazione /etc/apache2/conf-available/httpoxy.conf.

    Nota: la vulnerabilità è denominata httpoxy (senza r) e pertanto il file in cui aggiungiamo la configurazione per prevenirla è denominato httpoxy.conf e non httproxy.conf, quindi non manca alcuna r nel nome del file.

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

    Incollare 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 utilizza acme.sh ora come client Lets Encrypt. Installa acme.sh usando il seguente comando:

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

    12 Installare Mailman

    ISPConfig ti permette di gestire (creare/modificare/cancellare) mailing list di Mailman. Se vuoi 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, è necessario creare una prima mailing list chiamata mailman:

    newlist mailman
    :~#

    Apri /etc/aliases dopo...

    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"

    Correre:

    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 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 Installare 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 dhaparam 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.

    Modificare i permessi del certificato SSL:

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

    Quindi riavvia PureFTPd:

    systemctl restart pure-ftpd-mysql

    Modifica /etc/fstab. Il mio ha questo aspetto (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 Installare il server BIND DNS

    BIND può essere installato come segue:

    apt-get install bind9 dnsutils

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

    apt-get install haveged

    Una spiegazione su questo argomento può essere trovata qui.

    15 Installare 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 dopo...

    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 Installare il jailkit

    Il 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 monitori PureFTPd e Dovecot, crea il file /etc/fail2ban/jail.local:

    nano /etc/fail2ban/jail.local

    E aggiungi la seguente configurazione ad esso.

    [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, eseguire questo comando apt:

    apt-get install ufw

    18 Installa lo strumento di amministrazione del database PHPMyAdmin

    A partire da Debian 10, PHPMyAdmin non è più disponibile come pacchetto .deb. Pertanto lo installeremo dalla fonte.

    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 di PHPMyAdmin:

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

    Scompattare il file di archivio scaricato e spostare i file nella cartella /usr/share/phpmyadmin e ripulire 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 basato sul 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 segreto di blowfish di esempio, impostane uno tuo!

    Quindi aggiungi una riga per impostare la directory che PHPMyAdmin deve utilizzare per archiviare 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 salvala.

    # 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 il negozio di configurazione phpMyadmin (database).

    Accedi a MariaDB come utente root:

    mysql -u root -p

    Nella shell 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 mypassword con una password sicura di tua scelta nei comandi sopra e sotto, usa la stessa password entrambe le volte. Quindi concedere all'utente l'accesso a questo database e ricaricare 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

    Inserisci la password 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 nell'editor nano:

    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 mypassword con la password che hai scelto per l'utente phpmyadmin. Nota che anche il/davanti alle righe è stato rimosso!

    19 Installa RoundCube Webmail (facoltativo)

    In questo capitolo installeremo il client webmail RoundCube. Innanzitutto, dobbiamo creare manualmente il database per Roundcube poiché al momento esiste un problema nell'installer di RoundCube Debian 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 apache /webmail e una per /roundcube, puoi aggiungere la riga proprio all'inizio del file. NOTA: Non utilizzare /mail come alias o il modulo email 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:

    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

    20 Scarica la versione stabile di ISPConfig (consigliato)

    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 Installare 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. Il programma di installazione configurerà per te tutti i servizi come Postfix, Dovecot, ecc. Non è necessaria una configurazione manuale come richiesto per ISPConfig 2 (guide di installazione 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 tuo primo accesso):

    Il sistema è ora pronto per essere utilizzato.

    21.1 ISPConfig 3 Manuale

    Per imparare a utilizzare ISPConfig 3, ti consiglio vivamente di scaricare il manuale ISPConfig 3.

    In 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 il tuo server più sicuro e alla fine include una sezione per la risoluzione dei problemi.

    22 Immagine della macchina virtuale Download di questo tutorial

    Questo tutorial è disponibile come immagine di 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 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.

    23 collegamenti

    • Debian: http://www.debian.org/
    • ISPConfig: http://www.ispconfig.org/