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
- 7.2.7 Installing fail2ban
- 7.2.8 Installing mod_evasive With fail2ban Support
- 7.3 Extending the Mail Server
- 7.3.1 Enhanced e-mail SPAM protection
- 7.3.2 Installing Postgrey
- 7.4 Securing The Servers Using SSL
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