GNU/Linux >> Linux Esercitazione >  >> Panels >> Panels

Ambiente multiserver virtuale con server Web e MySQL, e-mail e DNS dedicati su Debian Squeeze con ISPConfig 3

Ambiente multiserver virtuale con Web e MySQL dedicati, Server di posta elettronica e DNS su Debian Squeeze con ISPConfig 3

Versione 1.0
Autore:Michel Käser

Questo tutorial descrive come configurare un singolo server dedicato come ambiente multiserver virtuale utilizzando OpenVZ con server Web e MySQL, e-mail e DNS dedicati su Debian Squeeze. Inoltre, imparerai come mantenere tutti questi server. Inoltre, imparerai come installare alcuni pacchetti molto utili su tutti loro, come proteggerli e come monitorarli.

Alla fine avrai un ambiente multiserver virtuale completamente funzionante, pronto per l'hosting condiviso.

Non garantisco che questo funzionerà per te!

1 Requisiti

Per seguire questo tutorial avrai bisogno di quanto segue:

  • un server dedicato
  • almeno 5 IP
  • molto tempo

2 Nota preliminare

In questo tutorial utilizzo questo server dedicato:http://www.hetzner.de/hosting/produkte_rootserver/ex4 con il Flexi-Pack e una sottorete aggiuntiva /28 (14 IP).

L'obiettivo è avere questi server:

  • Tipo:Nodo
  • Hardware:dedicato
  • Nome host:root.example.tld
  • 192.168.1.1
  • Tipo:contenitore
  • Hardware:virtuale
  • Nome host:web.example.tld
  • 192.168.1.2
  • Tipo:contenitore
  • Hardware:virtuale
  • Nome host:mail.example.tld
  • 192.168.1.3
  • Tipo:contenitore
  • Hardware:virtuale
  • Nome host:ns1.example.tld
  • 192.168.1.4
  • Tipo:contenitore
  • Hardware:virtuale
  • Nome host:ns2.example.tld
  • 192.168.1.5

3 Il sistema base

Presumo che tu abbia preso lo stesso server dedicato che ho fatto io. L'interfaccia Web Hetzner consente di installare una gamma di distribuzioni. Prendi la Debian 6.0 minima a 64 bit.

Questo installerà il sistema di base per te e non dovrai configurarlo da solo. Riceverai anche la password di root.

4 Installazione di OpenVZ + OVZ Web Panel

Non appena il tuo server è pronto, accedi utilizzando le credenziali ricevute. Per prima cosa faremo un aggiornamento/upgrade:

apt-get update &&apt-get -y upgrade &&apt-get -y dist-upgrade

che aggiornerà il nostro server all'ultima versione.

Installiamo alcuni pacchetti aggiuntivi su:

apt-get -y install nano wget ntp ntpdate

4.1 Installazione di OpenVZ

Ora vogliamo installare OpenVZ, la base per il nostro ambiente multiserver virtuale.

Un kernel OpenVZ e i pacchetti vzctl, vzquota e vzdump sono disponibili nei repository Debian Squeeze, quindi possiamo installarli come segue:

apt-get install linux-image-openvz-amd64 vzctl vzquota vzdump

Crea un collegamento simbolico da /var/lib/vz a /vz per fornire la compatibilità con le versioni precedenti:

ln -s /var/lib/vz /vz

Apri /etc/sysctl.conf e assicurati di avere le seguenti impostazioni:

nano /etc/sysctl.conf

[...]
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp=1
[...]

Se hai bisogno di modificare /etc/sysctl.conf, esegui

sysctl -p

dopo.

Il passaggio seguente è importante se gli indirizzi IP delle macchine virtuali provengono da una sottorete diversa dall'indirizzo IP del sistema host. Se non lo fai, la rete non funzionerà nelle macchine virtuali!

Apri /etc/vz/vz.conf e imposta NEIGHBOUR_DEVS su tutti:

nano /etc/vz/vz.conf

[...]
# Controls which interfaces to send ARP requests and modify APR tables on.
NEIGHBOUR_DEVS=all
[...]

Infine, riavvia il sistema:

riavvia

Se il tuo sistema si riavvia senza problemi, allora è tutto a posto!

Corri

uname -r

e il tuo nuovo kernel OpenVZ dovrebbe apparire:

[email protected]:~# uname -r
2.6.32-5-openvz-amd64

Poiché Hetzner monta /home su un disco rigido separato, possiamo usarlo come posizione di backup di OpenVZ. Per farlo, esegui:

rm -rf /var/lib/vz/dump
ln -s /home/backup/vz /var/lib/vz/dump

Poiché utilizzeremo fail2ban all'interno dei nostri contenitori virtuali, dobbiamo abilitare alcuni IPTables supporto per loro. Lo facciamo modificando il file /etc/vz/vz.conf:

nano /etc/vz/vz.conf

Cerca nella riga che inizia con IPTABLES e commentala (#). Successivamente incolla quanto segue:

[...]
IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state"

Quindi, attiva il modulo di stato nel kernel:

modprobe xt_state

4.2 Installazione di OVZ Web Panel

L'OpenVZ Web Panel è un'interfaccia grafica basata sul Web per il controllo dell'hardware e dei server virtuali con la tecnologia di virtualizzazione OpenVZ.

Il modo più semplice per installare OpenVZ Web Panel è eseguire il comando seguente:

wget -O - http://ovz-web-panel.googlecode.com/svn/installer/ai.sh | sh

Dopo l'installazione, il pannello dovrebbe essere disponibile al seguente URL:

http://<192.168.1.1>:3000

Le credenziali di amministratore predefinite sono:admin/admin. Non dimenticare di cambiare la password predefinita.

Ambiente multiserver virtuale con server Web e MySQL, e-mail e DNS dedicati su Debian Squeeze con ISPConfig 3 - Pagina 2

5 Creazione dei server virtuali

Ora utilizzeremo il pannello Web di OVZ per creare i nostri server virtuali. Accedi al pannello e aggiungi i tuoi IP in Indirizzi IP. Quindi, fai clic su localhost e modelli del sistema operativo.

Ora dobbiamo scaricare un modello per i nostri server virtuali. Per farlo, fai clic su Installa nuovo modello OS -> Contributo e seleziona debian-6.0-amd64-minimal.

Ora torna a localhost e fai clic su Crea server virtuale. Compila i campi come di seguito:

  • Server ID (VEID):un numero (sceglierei l'ultima parte del tuo IP, quindi 2 per la prima)
  • Modello OS:già selezionato a destra
  • Modello server:illimitato
  • Indirizzo IP:192.168.1.2
  • Nome host:web.example.tld
  • Server DNS:8.8.4.4 8.8.8.8 (che sono i DNS di Google)
  • lascia il resto così com'è e assegna spazio su disco, RAM e CPU come vuoi...

Ripeti questo passaggio per tutti i tuoi server virtuali (finalmente 4 volte:Web, Mail, 2x DNS).

5.1 Preparazione dei server virtuali

Ora dovresti accedere a ogni singolo server virtuale ed eseguire questi comandi:

apt-get update &&apt-get -y upgrade &&apt-get -y dist-upgrade
apt-get -y install nano wget ntp ntpdate

che li aggiornerà all'ultima versione e installerà alcuni pacchetti mancanti.

6 Installazione dei server dedicati

6.1 Installazione del server Web/DB

Modifica il file hosts e aggiungi gli indirizzi IP e i nomi host per tutti i server. I nomi host e gli indirizzi IP devono essere adattati in modo che corrispondano alla tua configurazione.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Imposta il nome host del server:

echo web.example.tld> /etc/hostname
/etc/init.d/hostname.sh start

Installa il server MySQL. Un'istanza del server MySQL è necessaria su ogni server poiché ISPConfig la utilizza per sincronizzare la configurazione tra i server.

apt-get -y install mysql-client mysql-server

Immettere la nuova password per MySQL quando richiesto dall'installatore.

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

nano /etc/mysql/mio.cnf

[...]

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1

[...]

Quindi riavvia MySQL:

/etc/init.d/mysql riavvia

Ora installa Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear e mcrypt come segue:

apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5 -cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby sudo zip wget

Vedrai la seguente domanda:

Server Web da riconfigurare automaticamente:<-- apache2

Quindi esegui il comando seguente per abilitare i moduli Apache suexec, rewrite, ssl, actions, headers, expires e include:

a2enmod suexec riscrivi le azioni ssl includono ruby ​​dav_fs dav auth_digest le intestazioni scadono

PureFTPd può essere installato con il seguente comando:

apt-get -y install pure-ftpd-common pure-ftpd-mysql

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

vi /etc/default/pure-ftpd-common

... e assicurati che virtualchroot sia impostato VIRTUALCHROOT=true:

[...]
VIRTUALCHROOT=true
[...]

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

Se vuoi consentire sessioni FTP e TLS, esegui

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

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

mkdir -p /etc/ssl/private/

Successivamente, possiamo generare il certificato SSL come segue:

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

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

Modifica le autorizzazioni del certificato SSL:

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

Installa vlogger, webalizer e awstats:

apt-get -y install vlogger webalizer awstats

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

vi /etc/cron.d/awstats

... e commenta entrambi i lavori cron in quel file:

#*/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

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

apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./debian/rules binary
cd ..
dpkg -i jailkit_2.14-1_*.deb
rm -rf jailkit-2.14*

Installa fail2ban: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, crea il file /etc/fail2ban/jail.local:

vi /etc/fail2ban/jail.local

[pureftpd]

enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

Quindi crea il seguente file di filtro:

vi /etc/fail2ban/filter.d/pureftpd.conf

[Definition]
failregex = .*pure-ftpd: \(.*@<HOST>\) \[WARNING\] Authentication failed for user.*
ignoreregex =

Riavvia fail2ban in seguito:

/etc/init.d/fail2ban riavvia

Successivamente installeremo ISPConfig 3. Per ottenere l'URL di download dell'ultima versione stabile di ISPConfig 3, visitare il sito Web ISPConfig:http://www.ispconfig.org/ispconfig-3/download/

Questo server è il server master nella nostra configurazione che esegue l'interfaccia del pannello di controllo ISPConfig. Per consentire alle altre istanze MySQL di connettersi al database MySQL su questo nodo durante l'installazione, dobbiamo aggiungere i record utente root MySQL nel database master per ogni nome host e indirizzo IP del server slave. Il modo più semplice per farlo è utilizzare lo strumento di amministrazione phpmyadmin basato sul Web che abbiamo già installato. Apri l'URL http://192.168.1.2/phpmyadmin in un browser web, accedi come utente root MySQL ed esegui queste query MySQL:

CREATE USER 'root'@'192.168.1.3' IDENTIFICATO DA 'myrootpassword';
CONCEDERE TUTTI I PRIVILEGI SU * . * A 'root'@'192.168.1.3' IDENTIFICATO DA 'myrootpassword' CON L'OPZIONE GRANT MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

CREATE USER 'root'@'192.168.1.4' IDENTIFICATO DA 'myrootpassword';
CONCEDERE TUTTI I PRIVILEGI SU * . * A 'root'@'192.168.1.4' IDENTIFICATO DA 'myrootpassword' CON L'OPZIONE GRANT MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

CREATE USER 'root'@'192.168.1.5' IDENTIFICATO DA 'myrootpassword';
CONCEDERE TUTTI I PRIVILEGI SU * . * A 'root'@'192.168.1.5' IDENTIFICATO DA 'myrootpassword' CON L'OPZIONE GRANT MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

CREA UTENTE 'root'@'mail.example.tld' IDENTIFICATO DA 'myrootpassword';
CONCEDI TUTTI I PRIVILEGI SU * . * A 'root'@'mail.example.tld' IDENTIFICATO DA 'myrootpassword' CON L'OPZIONE GRANT MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

CREATE USER 'root'@'ns1.example.tld' IDENTIFICATO DA 'myrootpassword';
CONCEDERE TUTTI I PRIVILEGI SU * . * A 'root'@'ns1.example.tld' IDENTIFICATO DA 'myrootpassword' CON L'OPZIONE GRANT MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

CREATE USER 'root'@'ns2.example.tld' IDENTIFICATO DA 'myrootpassword';
CONCEDERE TUTTI I PRIVILEGI SU * . * A 'root'@'ns2.example.tld' IDENTIFICATO DA 'myrootpassword' CON L'OPZIONE GRANT MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Nei comandi sql precedenti, sostituisci gli indirizzi IP (192.168.1.3 - 192.168.1.5) con gli indirizzi IP dei tuoi server e sostituisci mail.example.tld, ns1.example.tld e ns2.example.tld con i nomi host del tuo server e myrootpassword con la password di root desiderata.

Fare clic sul pulsante delle autorizzazioni di ricarica o riavviare MySQL. Quindi chiudi phpmyadmin.

Torna alla shell di web.example.tld e scarica l'ultima versione stabile di ISPConfig 3:

cd /tmp
wgethttp://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/ installa/

Quindi avvia lo script di installazione:

php -q install.php

Selezionare la lingua (en,de) [en]:<-- en
Modalità di installazione (standard,expert) [standard]:<-- expert
Nome host completo (FQDN) del server, ad es. server2 .domain.tld [web.example.tld]:<-- web.example.tld
nome host del server MySQL [localhost]:<-- localhost
nome utente radice MySQL [root]:<-- root
Password root MySQL []:<-- Inserisci qui la tua password root MySQL
Database MySQL per creare [dbispconfig]:<-- dbispconfig
MySQL charset [utf8]:<-- utf8
Questo server deve unirsi a una configurazione multiserver ISPConfig esistente (y,n) [n]:<-- n
Configura Mail (y,n) [y]:<-- n
Configura Jailkit (y,n) [y]:<-- y
Configura server FTP (y,n) [y]:<-- y
Configura server DNS (y,n) [y]:<-- n
Configura server Apache (y,n) [y]:<-- y
Configura server firewall (y,n) [y]:<--n
Installa ISPConfig Web -Interface (y,n) [y]:<--y
ISPConfig Port [8080]:<-- 8080
Abilita SSL per l'interfaccia web ISPConfig (y,n) [y]:<-- y
Nome paese (codice a 2 lettere) [AU]:<-- ENT ER
Nome stato o provincia (nome completo) [Stato-Stato]:<-- ENTER
Nome località (es. città) []:<-- ENTER
Nome organizzazione (es. società) [Internet Widgits Pty Ltd]:<-- INVIO
Nome dell'unità organizzativa (ad es. sezione) []:<-- INVIO
Nome comune (ad es. il TUO nome) []:<-- INVIO
Indirizzo e-mail []:<-- INVIO
Una password di verifica []:<-- INVIO
Un nome di azienda facoltativo []:<-- INVIO

Pulisci le directory di installazione:

cd /tmp
rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

6.2 Installazione del server di posta

Modifica il file hosts e aggiungi gli indirizzi IP e i nomi host per tutti i server. I nomi host e gli indirizzi IP devono essere adattati in modo che corrispondano alla tua configurazione.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Imposta il nome host del server:

echo mail.example.tld> /etc/hostname
echo mail.example.tld> /etc/mailname
/etc/init.d/hostname.sh start

Installa postfix, dovecot e MySQL con un solo comando:

apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d

Inserisci la nuova password per mysql quando richiesto dall'installatore e rispondi alle domande successive come descritto di seguito:

Tipo di configurazione generale? <-- Sito Internet
Nome e-mail? <-- mail.example.tld

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

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

Se vuoi usare le mailinglist sul tuo server, installa mailman. Questo passaggio è facoltativo. mailman richiede un server web apache, quindi se non vuoi eseguire un'istanza apache sul tuo server di posta, non installare mailman.

apt-get -y install mailman

Il programma di installazione apt per mailman ti chiederà quindi di selezionare le lingue per la mailing list. Abilita tutte le lingue che desideri utilizzare per mailman. Quindi crea la mailing list "postino".

postino della nuova lista

e inserisci l'indirizzo email e la nuova password per l'amministratore della mailinglist. Questo è l'ultimo passaggio dell'installazione di mailman. Il prossimo comando per installare php deve essere eseguito su ogni server, indipendentemente dal fatto che tu abbia installato o meno mailman.

Quindi installa installa la versione a riga di comando di PHP per essere in grado di eseguire script di shell basati su PHP per ISPConfig:

apt-get -y install php5-cli php5-mysql php5-mcrypt mcrypt

Installa fail2ban: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:

vi /etc/fail2ban/jail.local

[dovecot-pop3imap]

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

Quindi crea il seguente file di filtro:

vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf

[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P<host>\S*),.*
ignoreregex =

Riavvia fail2ban in seguito:

/etc/init.d/fail2ban riavvia

Ora installerò ISPConfig 3 su questo server. Per ottenere l'URL di download dell'ultima versione stabile di ISPConfig 3, visitare il sito Web di ISPConfig:http://www.ispconfig.org/ispconfig-3/download/

Scarica l'ultima versione stabile di ISPConfig 3:

cd /tmp
wgethttp://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/ installa/

Quindi avvia lo script di installazione:

php -q install.php

Seleziona la lingua (en,de) [en]:<-- en
Modalità di installazione (standard,expert) [standard]:<-- expert
Nome host completo (FQDN) del server, ad es. server1 .domain.tld [mail.example.tld]:<-- mail.example.tld
nome host del server MySQL [localhost]:<-- localhost
nome utente radice MySQL [root]:<-- root
Password root MySQL []:<-- Inserisci qui la tua password root MySQL
Database MySQL per creare [dbispconfig]:<-- dbispconfig
MySQL charset [utf8]:<-- utf8
Deve questo server unirsi a una configurazione multiserver ISPConfig esistente (y,n) [n]:<-- y
Nome host del server principale MySQL []:<-- web.example.tld
Master MySQL nome utente root del server [root]:<-- root
Password root del server master MySQL []:<-- Immettere qui la password di root del server master
Nome database del server master MySQL [dbispconfig]:<- - dbispconfig
Configura posta (y,n) [y]:<-- y

Nome del paese (codice di 2 lettere) [AU]:<-- DE (Inserisci il codice ISO del paese in cui vivi qui)
Nome dello stato o della provincia (nome completo) [Stato-Stato]:<-- Niedersachsen (Inserisci lo stato in cui vivi qui)
Nome località (ad es. città) []:<-- Lueneburg (inserisci qui la città)
Nome organizzazione (ad es. azienda) [Internet Widgits Pty Ltd]:<-- INVIO
Nome dell'unità organizzativa (ad es. sezione) []:<-- INVIO
Nome comune (ad es. il TUO nome) []:<-- INVIO
Indirizzo e-mail []:<-- ENTRA

Configura Jailkit (y,n) [y]:<-- n
Configura server FTP (y,n) [y]:<-- n
Configura server DNS (y,n) [y] :<-- n
Configura server Apache (y,n) [y]:<-- n
Configura server firewall (y,n) [y]:<--n
Installa Interfaccia Web ISPConfig (y,n) [y]:<--n

Corri...

rm -f /var/www/ispconfig

... per rimuovere il collegamento dell'interfaccia ISPConfig nella directory /var/www.

Pulisci le directory di installazione:

rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

Ambiente multiserver virtuale con server Web e MySQL, e-mail e DNS dedicati su Debian Squeeze con ISPConfig 3 - Pagina 3

6.3 Installazione del server DNS primario

Modifica il file hosts e aggiungi gli indirizzi IP e i nomi host per tutti i server. I nomi host e gli indirizzi IP devono essere adattati in modo che corrispondano alla tua configurazione.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Imposta il nome host del server:

echo ns1.example.tld> /etc/hostname
/etc/init.d/hostname.sh start

Installa client e server MySQL:

apt-get -y install mysql-client mysql-server

Immettere la nuova password per MySQL quando richiesto dall'installatore.

Quindi installa installa la versione a riga di comando di PHP per essere in grado di eseguire script di shell basati su PHP per ISPConfig:

apt-get -y install php5-cli php5-mysql php5-mcrypt mcrypt

Installa fail2ban:questo è facoltativo ma consigliato, perché il monitor ISPConfig tenta di mostrare il registro:

apt-get install fail2ban

Installa il server DNS BIND:

apt-get -y install bind9 dnsutils

Quindi installa ISPConfig 3 sul server DNS. Per ottenere l'URL di download dell'ultima versione stabile di ISPConfig 3, visitare il sito Web di ISPConfig:http://www.ispconfig.org/ispconfig-3/download/

Scarica l'ultima versione stabile di ISPConfig 3:

cd /tmp
wgethttp://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/ installa/

Quindi avvia lo script di installazione:

php -q install.php

Selezionare la lingua (en,de) [en]:<-- en
Modalità di installazione (standard,expert) [standard]:<-- expert
Nome host completo (FQDN) del server, ad es. server2 .domain.tld [ns1.example.tld]:<-- ns1.example.tld
nome host del server MySQL [localhost]:<-- localhost
nome utente radice MySQL [root]:<-- root
Password root MySQL []:<-- Inserisci qui la tua password root MySQL
Database MySQL per creare [dbispconfig]:<-- dbispconfig
MySQL charset [utf8]:<-- utf8
Deve questo server unirsi a una configurazione multiserver ISPConfig esistente (y,n) [n]:<-- y
Nome host del server principale MySQL []:<-- web.example.tld
Master MySQL nome utente root del server [root]:<-- root
Password root del server master MySQL []:<-- Immettere qui la password di root del server master
Nome database del server master MySQL [dbispconfig]:<- - dbispconfig
Configura posta (y,n) [y]:<-- n
Configura Jailkit (y,n) [y]:<-- n
Configura server FTP (y, n) [y]:<-- n
Configura server DNS (y,n) [y]:<-- y
Configura e Server Apache (y,n) [y]:<-- n
Configura Firewall Server (y,n) [y]:<--n
Installa ISPConfig Web-Interface (y,n) [y]:<--n

Corri...

rm -f /var/www/ispconfig

... per rimuovere il collegamento dell'interfaccia ISPConfig nella directory /var/www.

Pulisci le directory di installazione:

rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

6.4 Installazione del server DNS secondario

Modifica il file hosts e aggiungi gli indirizzi IP e i nomi host per tutti i server. I nomi host e gli indirizzi IP devono essere adattati in modo che corrispondano alla tua configurazione.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Imposta il nome host del server:

echo ns2.example.tld> /etc/hostname
/etc/init.d/hostname.sh start

Installa client e server MySQL:

apt-get -y install mysql-client mysql-server

Immettere la nuova password per MySQL quando richiesto dall'installatore.

Quindi installa installa la versione a riga di comando di PHP per essere in grado di eseguire script di shell basati su PHP per ISPConfig:

apt-get -y install php5-cli php5-mysql php5-mcrypt mcrypt

Installa fail2ban:questo è facoltativo ma consigliato, perché il monitor ISPConfig tenta di mostrare il registro:

apt-get install fail2ban

Installa il server DNS BIND:

apt-get -y install bind9 dnsutils

Quindi installa ISPConfig 3 sul server DNS. Per ottenere l'URL di download dell'ultima versione stabile di ISPConfig 3, visitare il sito Web di ISPConfig:http://www.ispconfig.org/ispconfig-3/download/

Scarica l'ultima versione stabile di ISPConfig 3:

cd /tmp
wgethttp://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/ installa/

Quindi avvia lo script di installazione:

php -q install.php

Selezionare la lingua (en,de) [en]:<-- en
Modalità di installazione (standard,expert) [standard]:<-- expert
Nome host completo (FQDN) del server, ad es. server2 .domain.tld [ns2.example.tld]:<-- ns2.example.tld
nome host del server MySQL [localhost]:<-- localhost
nome utente radice MySQL [root]:<-- root
Password root MySQL []:<-- Inserisci qui la tua password root MySQL
Database MySQL per creare [dbispconfig]:<-- dbispconfig
MySQL charset [utf8]:<-- utf8
Deve questo server unirsi a una configurazione multiserver ISPConfig esistente (y,n) [n]:<-- y
Nome host del server principale MySQL []:<-- web.example.tld
Master MySQL nome utente root del server [root]:<-- root
Password root del server master MySQL []:<-- Immettere qui la password di root del server master
Nome database del server master MySQL [dbispconfig]:<- - dbispconfig
Configura posta (y,n) [y]:<-- n
Configura Jailkit (y,n) [y]:<-- n
Configura server FTP (y, n) [y]:<-- n
Configura server DNS (y,n) [y]:<-- y
Configura e Server Apache (y,n) [y]:<-- n
Configura Firewall Server (y,n) [y]:<--n
Installa ISPConfig Web-Interface (y,n) [y]:<--n

Corri...

rm -f /var/www/ispconfig

... per rimuovere il collegamento dell'interfaccia ISPConfig nella directory /var/www.

Pulisci le directory di installazione:

rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

6.5 Regola le impostazioni del server in ISPConfig

Accedi a ISPConfig sul server master con un browser web:

http://192.168.1.2:8080

Fare clic su Sistema> Servizi server> web.example.tld e disabilitare tutte le caselle di controllo tranne la casella di controllo Server Web, Fileserver e DB-Server e fare clic su Salva.

Fare clic su Sistema> Servizi server> mail.example.tld e disabilitare tutte le caselle di controllo tranne quella del server di posta e fare clic su Salva.

Fare clic su Sistema> Servizi server> ns1.example.tld e disabilitare tutte le caselle di controllo tranne quella del server DNS e fare clic su Salva.

Fare clic su Sistema> Servizi server> ns2.example.tld e disabilitare tutte le caselle di controllo tranne quella del server DNS e selezionare ns1.example.tld nella casella di selezione È mirror del server e fare clic su Salva.

6.6 Impostazione del DNS inverso

Poiché la maggior parte dei server di posta verifica una voce DNS inversa valida, dobbiamo configurarne una per il nostro server di posta. Hetzner ci permette di farlo nella loro interfaccia web:

Notare la voce per IP 176.9.221.50. Per te, con IP 192.168.1.3 dovresti compilare:mail.example.tld

Ambiente multiserver virtuale con server Web e MySQL, e-mail e DNS dedicati su Debian Squeeze con ISPConfig 3 - Pagina 4

7 Estendere i nostri server

Ora abbiamo un ambiente perfettamente funzionante di un server dedicato che esegue i nostri server virtuali. Tuttavia, ci sono molte modifiche che possiamo e dobbiamo applicare a loro. Lo faremo ora. Non che tutti questi siano facoltativi ma altamente raccomandati.

I primi passaggi possono essere ripetuti su tutti i server.

7.0.1 SSH con chiave di autenticazione anziché password

L'utilizzo dell'autenticazione con chiave SSH è molto più sicuro della password, perché è necessario possedere la chiave privata per accedere al server. Se non ne hai già uno, crea una coppia di chiavi RSA (sul tuo computer locale):

ssh-keygen

Generazione di una coppia di chiavi RSA pubblica/privata.
Inserisci il file in cui salvare la chiave (/home/username/.ssh/id_rsa):Inserisci passphrase (vuota per nessuna passphrase):
Inserisci di nuovo la stessa passphrase:
La tua identificazione è stata salvata in /home/username/.ssh/id_rsa.
La tua chiave pubblica è stata salvata in /home/username/.ssh/id_rsa.pub.

Una volta installata la chiave pubblica sul server, l'accesso verrà concesso senza alcuna domanda di password. SSH di solito viene fornito con un'utilità chiamata ssh-copy-id che aggiunge semplicemente il contenuto del ~/.ssh/id_rsa.pub del client ai ~/.ssh/authorized_keys del server:

ssh-copy-id -i .ssh/id_rsa.pub [email protected]

A questo punto, l'account root sul server può essere bloccato per l'autenticazione con password:

Prova ad accedere al server usando la chiave prima di eseguire questo comando!

passwd -l root

7.0.2 Installazione di Logwatch

Logwatch è un piccolo pacchetto che ti invierà rapporti dettagliati su ciò che è successo/è in esecuzione sul tuo server. È assolutamente utile per il monitoraggio.

apt-get -y install logwatch

Quindi regola la sua configurazione:

nano /usr/share/logwatch/default.conf/logwatch.conf

e imposta questi valori:

Output = mail
Format = text
MailTo = [email protected]
Detail = High
Service = All

Ora riceverai un'e-mail da Logwatch ogni giorno. Vedrai, è fantastico!

7.0.3 Abilitazione di regole fail2ban aggiuntive

Fail2ban è un ottimo modo per impedire agli utenti indesiderati di accedere ai nostri server. Dal momento che lo abbiamo già installato sul nostro server Web e MySQL e sul nostro server di posta, puoi saltare il primo passaggio su di essi. Eseguilo sul tuo nodo e su entrambi i server DNS:

apt-get -y install fail2ban

Ora diremo a fail2ban quali servizi dovrebbe monitorare e come gestire le richieste non valide:

Questi devono essere eseguiti su tutti i server (incluso il server Web e MySQL e il server di posta):

nano /etc/fail2ban/jail.local

e aggiungi quanto segue al file (non sostituire il contenuto già esistente!):

[ssh]
enables = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 3

[ssh-ddos]

enabled = true
port    = ssh
filter  = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 5

Fail2ban ora rileverà i tentativi di intrusione SSH e li bloccherà. Infine, riavvia fail2ban:

/etc/init.d/fail2ban restart

7.1 Estensione del Node Server

7.1.1 Installazione di Ajenti

Ajenti è un bel pannello di controllo del server. Lo uso principalmente per la gestione del firewall e per il filemanager, la console e il terminale integrati.

Per prima cosa dobbiamo aggiungere il suo repository al nostro sources.list:

nano /etc/apt/sources.list

e aggiungi:

deb http://repo.ajenti.org/debian main main

Successivamente devi importare la sua chiave:

wget http://repo.ajenti.org/debian/key -O- | sudo apt-key add -

Ora dovrebbe essere possibile accedere al CP tramite:http://192.168.1.1:8000. Il nome utente/password predefinito è:admin

Se prevedi di utilizzare il terminale integrato devi installare il modulo Python PIL:

apt-get -y install python-imaging

7.1.2 Installazione di Archey

Questo è molto opzionale, tuttavia mi piace. Archey ti mostrerà alcune belle informazioni sull'accesso.

Per installarlo, esegui semplicemente:

apt-get install lsb-release scrot
cd /tmp
wget https://github.com/downloads/djmelik/archey/archey-0.2.8.deb
dpkg -i archey- 0.2.8.deb
rm archey-0.2.8.deb
nano /etc/bash.bashrc

Alla fine, aggiungi:archey.

7.2 Estensione del server Web/DB

Questi passaggi vengono eseguiti solo sul nostro server Web/DB.

7.2.1 Installazione di cURL

apt-get -y install curl php5-curl libcurl3-dev

7.2.2 Installazione di ionCube Loader

Ora dovresti essere in grado di farlo da solo. Basta scaricare la versione corretta su http://www.ioncube.com/loaders.php e seguirne le introduzioni.

7.2.3 Installazione di APC e altre app utili

In questa sezione installeremo apc (php accelarator), che è sviluppato dai ragazzi che sviluppano php e alcune app (htop, iptraf, logwatch, tiger).

apt-get -y install php-apc htop iptraf tiger

Modifica /etc/php5/conf.d/apc.ini, in modo da aumentare la cache di memoria:

nano /etc/php5/conf.d/apc.ini

E aggiungi la seguente riga:

apc.shm_size=128

Infine riavvia Apache:

/etc/init.d/apache2 restart

Con htop puoi vedere le informazioni di sistema in un modo migliore rispetto a top, con iptraf puoi vedere le statistiche in tempo reale per la tua connessione e con tiger puoi farti inviare periodicamente un report sulle vulnerabilità di sicurezza del tuo sistema (se presenti).

Poiché molti script/app inviano molti messaggi di posta all'utente root, puoi alias posta di root a un indirizzo email più "reale". Quindi, dopo aver impostato una posta "reale" per il tuo dominio example.tld, puoi modificare gli alias e aggiungere un alias all'utente root:

nano /etc/aliases

e cambia la linea

root:root

a qualcosa come

root:[email protected]

Dopo questo esegui:

newaliases

Se vuoi installare Drupal (o altri cms) probabilmente avrai bisogno di uploadprogress e json. Per completare la loro installazione, eseguire:

apt-get -y install php5-dev php-services-json
pecl install uploadprogress
touch /etc/php5/apache2/conf.d/uploadprogress.ini
nano /etc/php5/ apache2/conf.d/uploadprogress.ini

E aggiungi la seguente riga:

extension=uploadprogress.so

Infine riavvia Apache:

/etc/init.d/apache2 restart

7.2.4 Installazione di mod_security

Installa il modulo apache mod-security 2 con apt dai repository Debian:

apt-get -y install libapache-mod-security

Crea la cartella per i file di configurazione di mod-security:

mkdir /etc/apache2/mod-security
chmod 600 /etc/apache2/mod-security

Scarica e decomprimi le regole di sicurezza mod:

cd /tmp
wget http://www.modsecurity.org/download/modsecurity-core-rules_2.5-1.6.1.tar.gz
tar fvx modsecurity-core-rules_2.5-1.6.1.tar.gz
mv *.conf /etc/apache2/mod-security/
ln -s /var/log/apache2 /etc/apache2/logs

Configure apache to load the activated mod-security rules:

nano /etc/apache2/conf.d/mod-security.conf
Include /etc/apache2/mod-security/*.conf

To enable mod-security, edit the file

nano /etc/apache2/mod-security/modsecurity_crs_10_config.conf

and remove the # in front of the line:

SecDefaultAction
"phase:2,log,deny,status:403,t:lowercase,t:replaceNulls,t:compressWhitespace"

Then reload Apache.

/etc/init.d/apache2 force-reload

Mod security will now start to block hack attempts to your websites and log the actions in the file /var/log/apache2/modsec_audit.log.

tail /var/log/apache2/modsec_audit.log

You will see very likely some falsely blocked URL's. To whitelist them, you can add the ID's of the rules that should not be used in the whitelist file.

Example:

nano /etc/apache2/mod-security/modsecurity_crs_99_whitelist.conf
SecRuleRemoveById 960015
SecRuleRemoveById 960016

7.2.5 MySQL Tuning

Download tuning-primer.sh and mysqltuner.pl. These will help you to improve mysql's configuration file.

cd /root/scripts
wget http://www.day32.com/MySQL/tuning-primer.sh
wget http://mysqltuner.com/mysqltuner.pl
chmod 700 tuning-primer.sh mysqltuner.pl

To execute them:

perl /root/scripts/mysqltuner.pl
/root/scripts/tuning-primer.sh

The scripts will ask some simple questions (user/pass) and will display in red colour, their suggestions for critical settings. You can use their suggestions to boost the performance of mysql-server.

7.2.6 Installing RoundCube

Following the above instructions you can install roundcube via apt-get. However following another logic (if you have the time and the courage) you can install roundcube in it's own subdomain, manually.

In "Perfect Server ...." you usually install Squirrelmai. However if you don't want it you can remove it:

apt-get remove squirrelmail
rm /etc/apache2/conf.d/squirrelmail.conf

Install roundcube. (You MUST have the mysql administrator's password before you proceed -- Let dbconfig-common configure the database. You will be asked some questions about the password of the db administrator and the password of the new user that will be created for roundcube. Answer those questions and continue:

apt-get -y install roundcube roundcube-mysql

Examle answers:
"Configure database for roundcube with dbconfig-common?" .... Answer Yes
"Database type to be used by roundcube:...Answer mysql
"Password of the database's administrativeuser:" ... Answer your-admin-DB-password
"MySQL application password for roundcube:" ... Answer the-password-you-want-to-give-to-the-roundcube-user
"Password confirmation:"... Answer the-password-you-want-to-give-to-the-roundcube-user

If something goes wrong you can always run:

dpkg-reconfigure roundcube-core

For more information, please see this post.

For everyone to be able to access his webmail (under his domain name) you have to create or edit the file /etc/apache2/conf.d/roundcube so as to set the alias to 'webmail'. If you want SSL you should include the last two directives (IfModule mod_rewrite.c) to have apache ALWAYS redirect to your SSL installation of ISPConfig.

nano /etc/apache2/conf.d/roundcube
# Those aliases do not work properly with several hosts on your apache server
# Uncomment them to use it or adapt them to your configuration
# Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/
Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube

# Access to tinymce files
<Directory "/usr/share/tinymce/www/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>

<Directory /var/lib/roundcube/>
Options +FollowSymLinks
# This is needed to parse /var/lib/roundcube/.htaccess. See its
# content before setting AllowOverride to None.
AllowOverride All
order allow,deny
allow from all
</Directory>

# Protecting basic directories:
<Directory /var/lib/roundcube/config>
Options -FollowSymLinks
AllowOverride None
</Directory>

<Directory /var/lib/roundcube/temp>
Options -FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
</Directory>

<Directory /var/lib/roundcube/logs>
Options -FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
</Directory>

<IfModule mod_rewrite.c>
<IfModule mod_ssl.c>
<Location /webmail>
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}:50443%{REQUEST_URI} [L]
</Location>
</IfModule>
</IfModule>

<IfModule mod_rewrite.c>
<IfModule mod_ssl.c>
<Location /roundcube>
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}:50443%{REQUEST_URI} [L]
</Location>
</IfModule>
</IfModule>

Edit /var/lib/roundcube/config/main.inc.php:

nano /var/lib/roundcube/config/main.inc.php

and SET some variables in the file (if this is the first time you edit the file the lines are 60 and 66):

auto_create_user = TRUE;
$rcmail_config['default_host'] = 'mail.example.tld';

If you will install the following plugin (the logger that helps fail2ban) you have to extend the list of plugins in the same file. Ifthe only plugin is the one that will be istalled right afterward you have to edit the line (42) as below:

$rcmail_config['plugins'] = array('fail2ban'); 

Install the roundcube logger plugin from http://mattrude.com/projects/roundcube-fail2ban-plugin/.

Basically you have to download the file (fail2ban.php) and paste it in the fail2ban folder in the plugins folder of roundcube. Finally you must have this file:  /usr/share/roundcube/plugins/fail2ban/fail2ban.php. Execute:

cd /usr/share/roundcube/plugins/
wget --no-check-certificate http://cloud.github.com/downloads/mattrude/rc-plugin-fail2ban/roundcube-fail2ban-plugin.1.1.tgz
tar -xvzf roundcube-fail2ban-plugin.1.1.tgz
touch /var/log/roundcube/userlogins
rm roundcube-fail2ban-plugin.1.1.tgz
chown www-data:www-data /var/log/roundcube/userlogins

This plugin will update the log file with each failed login attempt:/var/log/roundcube/userlogins

Don't forget to edit the link for the webmail in ISPConfig (System -> Interface Config -> (tab) Mail) and set it to /webmail. Lastly, restart apache.

/etc/init.d/apache2 restart

You can now access webmail at http://web.example.tld/webmail

Virtual Multiserver Environment With Dedicated Web &MySQL, Email &DNS Servers On Debian Squeeze With ISPConfig 3 - Page 5

In questa pagina

  1. 7.2.7 Installing fail2ban
  2. 7.2.8 Installing mod_evasive With fail2ban Support
  3. 7.3 Extending the Mail Server
  4. 7.3.1 Enhanced e-mail SPAM protection
  5. 7.3.2 Installing Postgrey
  6. 7.4 Securing The Servers Using SSL
  • 8 Maintaining Our Servers
  • 9 Links/Credits/Sources
  • 7.2.7 Installing fail2ban

    Extend the jail.local file that falko suggests in ThePerfect Server - Debian Squeeze (Debian 6.0) With BIND &Courier [ISPConfig 3]:/etc/fail2ban/jail.local

    nano /etc/fail2ban/jail.local

    You have to append or edit the following:

    [roundcube]
    enabled = true
    port = http
    filter = roundcube
    logpath = /var/log/roundcube/userlogins
    maxretry = 5

    Last (and very important) don't forget to create the roundcube.conf file /etc/fail2ban/filter.d/roundcube.conf.

    nano /etc/fail2ban/filter.d/roundcube.conf

    with the following contents:

    [Definition]
    failregex = FAILED login for .*. from <HOST>
    ignoreregex =

    Restart fail2ban:

    /etc/init.d/fail2ban restart

    You can check that all jails are active with the command:

    iptables -L -n 

    7.2.8 Installing mod_evasive With fail2ban Support

    mod_evasive is an Apache module for handling DDoS attacks. We will install it and configure fail2ban to auto ban/unban reported attacks.

    apt-get install libapache2-mod-evasive
    mkdir /var/lock/mod-evasive
    chown www-data /var/lock/mod-evasive
    ln -s /etc/alternatives/mail /bin/mail
    nano /etc/apache2/mods-available/mod-evasive.conf

    and paste:

    <IfModule  mod_evasive20.c>
       DOSHashTableSize 3097
       DOSPageCount 3
       DOSSiteCount 60
       DOSPageInterval 1
       DOSSiteInterval 2
       DOSBlockingPeriod 15
       DOSEmailNotify [email protected]
       DOSLogDir "/var/lock/mod_evasive"
    </IfModule>

    Afterwards we activate the module and restart apache

    a2enmod mod-evasive
    /etc/init.d/apache2 restart

    mod_evasive will not detect DDoS attacks. To ban them by IPTables, we have to create the file:/etc/fail2ban/filter.d/apache-dosevasive.conf:

    # Fail2Ban configuration file
    #
    # Author: Xela
    #
    # $Revision: 728 $
    #
    
    [Definition]
    
    # Option:  failregex
    # Notes.:  regex to match the Forbidden log entrys in apache error.log
    #          maybe (but not only) provided by mod_evasive
    #
    # Values:  TEXT
    #
    failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client <HOST>\] client denied by server configuration:\s
    
    # Option:  ignoreregex
    # Notes.:  regex to ignore. If this regex matches, the line is ignored.
    # Values:  TEXT
    #
    ignoreregex =

    and to /etc/fail2ban/jail.local we add:

    [apache-dosevasive]
    
    enabled = true
    filter  = apache-dosevasive
    action = iptables-allports[name=dos]
    logpath = /var/log/apache*/*error.log
    bantime = 600
    maxretry = 10

    7.3 Extending the Mail Server

    7.3.1 Enhanced e-mail SPAM protection

    The command below enables a stricter SPAM handling for postfix on ISPConfig 3 servers.

    postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_unauth_destination, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_rbl_client cbl.abuseat.org,reject_rbl_client dul.dnsbl.sorbs.net,reject_rbl_client ix.dnsbl.manitu.net, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination'

    Then restart postfix:

    /etc/init.d/postfix restart

    7.3.2 Installing Postgrey

    Postgrey will eliminate 99% of all spam emails you receive. To install it, run these commands:

    apt-get install postgrey
    /etc/init.d/postgrey start

    The Postfix configuration files are located in /etc/postfix. Edit /etc/postfix/main.cf and add check_policy_service inet:127.0.0.1:60000 to the smtpd_recipient_restrictions.

    Then reload postfix's configuration:

    postfix reload

    7.4 Securing The Servers Using SSL

    Last but not least you should follow this tutorial:https://www.howtoforge.com/securing-your-ispconfig-3-installation-with-a-free-class1-ssl-certificate-from-startssl. Don't forget to execute the commands on the right server!

    8 Maintaining Our Servers

    You should regulary run this to keep your servers up-to-date:

    apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade

    9 Links/Credits/Sources

    Since most is not from me, here are all the links used for this tutorial:

    • http://www.faqforge.com/linux/enhanced-e-mail-spam-protection-in-ispconfig-3/
    • https://www.howtoforge.com/greylisting_postfix_postgrey
    • https://www.howtoforge.com/extending-perfect-server-debian-squeeze-ispconfig-3-p4
    • http://spielwiese.la-evento.com/xelasblog/archives/56-Apache-DOS-Attacken-erschweren-mit-mod_evasive.html
    • http://www.faqforge.com/linux/apache-mod-security-installation-on-debian-6-0-squeeze/
    • http://forum.whmcs.com/showpost.php?s=f876c3e3a7d56bd2f325685a80d746cf&p=16768&postcount=4
    • https://www.howtoforge.com/extending-perfect-server-debian-squeeze-ispconfig-3-p3
    • http://debian.nimmervoll.eu/tag/debian-logwatch-einrichten/
    • http://www.debian-administration.org/articles/530
    • https://www.howtoforge.com/securing-your-ispconfig-3-installation-with-a-free-class1-ssl-certificate-from-startssl
    • https://www.howtoforge.com/multiserver-setup-with-dedicated-web-email-dns-and-mysql-database-servers-on-debian-squeeze-with-ispconfig-3
    • http://debian.nimmervoll.eu/archey-debian-installation/
    • http://ajenti.org/
    • http://code.google.com/p/ovz-web-panel/wiki/Installation
    • https://www.howtoforge.com/installing-and-using-openvz-on-debian-squeeze-amd64

    Panels
    1. Server Web con bilanciamento del carico e server MySQL

    2. Creazione di semplici host virtuali con mod_mysql_vhost su Lighttpd (Debian Etch)

    3. Come eseguire il backup dei database MySQL con mylvmbackup su Debian Squeeze

    4. Creazione di semplici host virtuali con mod_mysql_vhost su Lighttpd (Debian Squeeze)

    5. Aggiornamento da Debian 6 Squeeze con ISPConfig e corriere/postfix a Debian 7 Wheezy

    Come installare Drupal 5.6 su Debian Etch con ISPConfig

    Come eseguire i propri server DNS (primari e secondari) con ISPConfig 3 (Debian Squeeze)

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

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

    Installazione di un cluster di database Web, e-mail e MySQL su Debian 6.0 con ISPConfig 3

    Configurazione multiserver con server di database Web, e-mail, DNS e MySQL dedicati su Debian Squeeze con ISPConfig 3