In questo articolo, vedremo come esporre su internet OWA (Outlook Web Access) in modo sicuro traslando l’URL http con indirizzo privato in un URL https con indirizzo pubblico utilizzando alcune funzionalita’ messe a disposizione da Apache tramite i moduli mod_proxy mod_rewrite e mod_ssl.
Il modulo mod_proxy permette di effettuare relay e caching di richieste provenienti da vari host verso altri host mantenendo questi logicamente separati.
E’ praticamente uno step intermedio fra i client e il server remoto, in modo da non consentire il passaggio diretto delle informazioni, ma sia il proxy a gestire la comunicazione fra le parti.
Puo’ essere utilizzato in modalita’ FORWARD e REVERSE, proprio come se fosse un imbuto.
Nel primo caso il proxy raccoglie le richieste dei client da tutta una LAN e le redirige verso internet (forward), il secondo caso e’ esattamente opposto, il proxy raccoglie le richieste da internet e le redirige su un server della LAN (reverse).
Il modulo mod_rewrite permette di riscrivere un URL in un altro senza che l’utente ne sia a conoscenza. L’associazione avviene al “volo” tramite regole definite nel file di configurazione e/o virtualhosts oppure nel file .htaccess. Questo tipo di riscrittura apre a numerose possibilita’ per “ripulire” un URL e renderlo quindi piu’ semplice per l’utente.
Molti avranno sperimentato che, in particolar modo, con l’uso di CMS (Content Management System) il server produce URL simili a:
| http://www.example.com/catalog.asp?category=bikes&prodID=78 |
sicuramente non semplice da digitare, ma utilizzando la riscrittura la si puo’ rendere:
| http://www.example.com/catalog/bikes/78/ |
decisamente meglio, vero?
Il modulo mod_ssl è il modulo per la gestione del protocollo HTTPS in Apache, basato su OpenSSL capace di supportare i protocolli Secure Sockets Layer (SSL v2/v3) e Transport Layer Security (TLS v1), un tempo sviluppato come “patch” del codice sorgente, oggi modulo cardine della sicurezza.
Non resta che unire queste funzionalita’ in due virtualhost di Apache per ottentere il risultato desiderato.
Dato per assunto che abbiate installato Apache con i moduli richiesti su un server Linux questa e’ la configurazione da fare:
|
<VirtualHost 172.18.27.7:443>
ServerName webmail.dominio.it
ServerAdmin webmaster@dominio.it
ErrorLog logs/443/webmail.error.log
TransferLog logs/443/webmail.transfer.log
SSLEngine On
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/apache2.2/ssl/webmail.crt
SSLCertificateKeyFile /usr/local/apache2.2/ssl/webmail.key
ProxyRequests Off
SSLProxyEngine On
SSLProxyVerify none
ProxyPreserveHost On
CacheDisable *
AddDefaultCharset UTF-8
RequestHeader unset accept-encoding
ProxyVia On
<FilesMatch “\.(cgi|shtml|phtml|php)$”>
SSLOptions +StdEnvVars
</FilesMatch>
<Directory “/usr/local/apache2.2/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch “.*MSIE.*” nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
CustomLog logs/443/webmail.custom.log “%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”
RequestHeader set Front-End-Https “On”
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
RewriteEngine on
RewriteRule ^/$ /owa/ [R]
RewriteRule exchange([^/].*) /exchange/$1 [R,QSA,L]
RewriteRule exchweb([^/].*) /exchweb/$1 [R,QSA,L]
<Location /exchange>
ProxyPass https://aa.bb.cc.dd/exchange/
ProxyPassReverse https://aa.bb.cc.dd/exchange/
SSLRequireSSL
</Location>
<Location exchweb/>
ProxyPass https://aa.bb.cc.dd/exchweb/
ProxyPassReverse https://aa.bb.cc.dd/exchweb/
SSLRequireSSL
</Location>
<Location public/>
ProxyPass https://aa.bb.cc.dd/public/
ProxyPassReverse https://aa.bb.cc.dd/public/
SSLRequireSSL
</Location>
<Location /owa>
ProxyPass https://aa.bb.cc.dd/owa
ProxyPassReverse https://aa.bb.cc.dd/owa
SSLRequireSSL
</Location>
<Location />
ProxyPass https://aa.bb.cc.dd/
ProxyPassReverse https://aa.bb.cc.dd/
SSLRequireSSL
</Location>
</VirtualHost> |
Nella configurazione appena vista deve essere inserito l’indirizzo IP privato del vostro server reverse proxy (nell’esempio 172.18.27.7) su cui sara’ effettuato il NAT (se utilizzate questa tecnica), altrimenti se utilizzate una rete disaccoppiata (server con un indirizzo privato ed un indirizzo pubblico) sara’ necessario creare due virtual host (identici) con gli indirizzi IP (Publico e Privato) del vostro server reverse proxy, “aa.bb.cc.dd” deve essere sostituito con quello del vostro server Exchange e il certificato di crittografia deve essere esportato dal server Exchange 2007 e convertito in formato Apache (per informazioni Esportare un certificato SSL da IIS per utilizzarlo in Apache).
Nella prossima parte dell’articolo ci occuperemo di creare il virtual host http che sara’ rediretto sul virtual host https appena visto.
Tag:
https •
Informatica •
Linux •
OWA •
Technicality