Apache2

Da WikiSitech.
Vai alla navigazioneVai alla ricerca

Apache 2.x - Appunti di gestione/configurazione

Duplicare l'istanza di Apache

Per la duplicazione dell'istanza di Apache, fare riferimento alla pagina specifica.

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:

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

  1. Definire una variabile di ambiente nel caso in cui il proxy sia stato utilizzato:

  1. Log the originating ip if use a proxy

SetEnvIfNoCase X-Forwarded-For "." from_proxy=1

  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

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