Apache2
Indice
Apache 2.x - Appunti di gestione/configurazione
Duplicare l'istanza di Apache
Per la duplicazione dell'istanza di Apache, fare riferimento al tutorial specifico.
Server virtuali
SSL: Configurazione certificato
Per la parte relativa alla richiesta del certificato, fare riferimento alla sezione apposita nel Wiki Sitech.
Per l'installazione del certificato ipotizziamo di avere i certificati emessi e firmati disponibili nella cartella /tmp/holdcerts e i file di configurazione di apache 2 (SuSe) installati nella cartella /etc/apache2.
Negli esempi che seguono, [host_domain_tld] va sostituito con il nome dell'host di dominio virtuale (Es: webmail.netsitech.com).
- Installazione della key nel host virtuale
cd /tmp/holdcerts mv server.csr /etc/apache2/ssl.csr/[host_domain_tld].csr mv server.crt /etc/apache2/ssl.crt/[host_domain_tld].crt mv server.key /etc/apache2/ssl.key/[host_domain_tld].key mv server.key.secure /etc/apache2/[host_domain_tld].key.secure chmod 400 /etc/apache2/ssl.csr/[host_domain_tld].csr chmod 400 /etc/apache2/ssl.crt/[host_domain_tld].crt chmod 400 /etc/apache2/ssl.key/[host_domain_tld].key chmod 400 /etc/apache2/[host_domain_tld].key.secure
- Modifiche da apportare al file di configurazione del VirtualHost specifico
SSLCertificateFile /etc/apache2/ssl.crt/[host_domain_tld].crt
SSLCertificateKeyFile /etc/apache2/ssl.key/[host_domain_tld].key
Configurazione di un proxy (http front-end processor)
Definizione sul server di front-end
Esempio di definizione di un server virtuale di front-end che risponde all'indirizzo http://wiki.netsitech.com o http://wiki.sede.netsitech.com che inoltra le richieste al server di back-end http://wiki.dmz.sede.netsitech.com
<VirtualHost *:80>
ServerAdmin webmaster@netsitech.com
ServerName wiki.netsitech.com
ServerAlias wiki.sede.netsitech.com
ProxyPass / http://wiki.dmz.sede.netsitech.com/
ProxyPassReverse / http://wiki.dmz.sede.netsitech.com/
</VirtualHost>
Definizione sul server di back-end
Il problema principale da risolvere è quello degli indirizzi IP del client, che in condizoni normali non vengono memorizzati nei log di accesso in quanto le chiamate vengono loggate come effettuate da un indirizzo client corrispondente al server di front-end.
Warnings:
* There is a solution which replaces the client IP used everywhere in apache with the X-Forwarded-For value if it exists. But this solution is to use just with trusted proxy, else it would be a security hole. * X-Forwarded-For is a header field and then can be forged, don't use it for legal or security reason.
Solution:
- Definire due LogFormat, uno con l'IP dell'host che genera la chiamata, un altro con l'IP contenuto nel tag X-Forwarded-For inserito dal proxy:
LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined_forwarded
- Definire una variabile di ambiente nel caso in cui il proxy sia stato utilizzato:
- Log the originating ip if use a proxy
SetEnvIfNoCase X-Forwarded-For "." from_proxy=1
- Utilizzare un log differente a seconda del valore di from_proxy:
CustomLog /var/log/wiki/apache-access.log combined env=!from_proxy
CustomLog /var/log/wiki/apache-access.log combined_forwarded env=from_proxy
- Riavviare il server
apachectl restart
La configurazione finale assomiglierà a questa:
<VirtualHost *:80>
ServerName wiki.netsitech.com
ServerAlias wiki.dmz.sede.netsitech.com
ServerAlias wiki.sede.netsitech.com
...
LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined_forwarded
SetEnvIfNoCase X-Forwarded-For "." from_proxy=1
CustomLog /var/log/wiki/apache-access.log combined env=!from_proxy
CustomLog /var/log/wiki/apache-access.log combined_forwarded env=from_proxy
...
</VirtualHost>