[ Tuto Apache2 ] Faire un reverse proxy pour OWA ou autre

Faire un reverse proxy pour OWA ou autre [ Tuto Apache2 ] - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 20-02-2006 à 18:47:03    

OWA aussi connu sous le nom d'Outlook Web Access permet d'accéder à ses mails depuis un navigateur.
On suppose que le site web qui permet celà est déjà hebergé sur notre réseau local et fonctionnel.
On y accède avec http://nom_du_serveur/exchange
 
Ce qui nous interesse est de rendre cet accès possible depuis le Web.
Mais pour éviter d'exposer directement le serveur et le contenu des mails, on souhaite insérer une machine qui va filtrer l'accès.
 
Comme on ne souhaite pas transférer en clair notre login/pass, on va crypter tout le traffic entre notre PC et la machine qui filtre.
Cette machine n'acceptera que les connexions sur le port 443.
On ajoutera également le port 80 à des fins de compatibilités.
Ainsi si l'on tappe www.domaine.com (HTTP : port 80), on tombera sur une page web basique avec un lien vers la connexion securisée.
 
Pour faire celà, on utilise Apache2 et ses fonctionnalités de reverse proxy.
 
Voilà les présentations sont faites :)
----------------------
Ayant pas mal galeré, je met à contribution mes quelques notes sur le sujet.
A noter que je suis loin d'être expert sous linux donc si un HFRien confirmé pouvait infirmer/confirmer la démarche, celà ne pourrait qu'améliorer l'exactitude du topic.
 
Ce tuto décrit l'installation et la configuration sous Suse 10.
J'ai également fait de même sous Debian.
En effet, selon la distrib, les fichiers de configuration ne sont pas planqués au même endroit.
 
----------------------------
SUSE 10
 
Apache2 nécessite peu de configuration sous Suse10 car beaucoup de choses sont mâchées par l'assistant YAST. Cependant il faut être vigilant et rigoureux.
 
Lancez le centre de contrôle YAST et aller dans ajouter/supprimer des logiciels.
Installer les paquetages apache2 + doc + autres (genre PHP si nécessaire) à l'aide du DVD/CD.
Le paquetage d'apache2 contient déjà de quoi faire du SSL et du reverse proxy.
 
Toujours sous YAST, allez dans securité et utilisateurs puis firewall.
Ouvrir les port 80 et 443 sur le firewall pour autoriser l'arrivée du trafic HTTP et HTTPS/SSL..
 
Ouvrez votre navigateur et tapez http://localhost sur le serveur ou http://ip_serveur.
Si vous obtenez une page apache, vous avez réussi votre installation.
 
A ce stade, apache2 est présent à 3 endroits clés.
/etc/apache2 contient tous les fichiers de config qui nous intéressent
/var/log/apache2 contient tous les logs  
/srv/www est le répertoire de base pour héberger le site web
 
Créons un répertoire 'html' ( /srv/www/html ) dans lequel nous copions notre index.html.
Ce fichier va nous permettre de rediriger nos internautes qui se connectent en HTTP (non crypté) vers le formulaire d'identification OWA en HTTPS (crypté).
Voici le contenu de mon fichier index, adaptez le à votre nom de domaine bien sûr :

Code :
  1. <html>
  2.         <head>
  3.                 <title>Le Courrier</title>
  4.         </head>
  5.         <body>
  6.                 <div align="center">
  7.                          <br /><a href="https://www.domaine.com/exchange"><font size="+2">Acces au courrier</font></a>
  8.         </div>
  9.         </body>
  10. </html>


 
note pour la suite : AVANT D'OUVRIR UN FICHIER DE CONFIG, FAITES EN UNE COPIE !!!
Pour cela utilisez la commande suivante : cp nom_du_fichier.conf nom_du_fichier.old
 
Sous Suse, le fichier httpd.conf ne fait qu'appeler d'autres fichiers .conf
 
Voici le contenu du fichier httpd.conf :
 

Code :
  1. #
  2. # /etc/apache2/httpd.conf
  3. #
  4. Include /etc/apache2/uid.conf
  5. Include /etc/apache2/server-tuning.conf
  6. ErrorLog /var/log/apache2/error_log
  7. Include /etc/apache2/sysconfig.d/loadmodule.conf
  8. Include /etc/apache2/listen.conf
  9. Include /etc/apache2/mod_log_config.conf
  10. Include /etc/apache2/sysconfig.d/global.conf
  11. Include /etc/apache2/mod_status.conf
  12. Include /etc/apache2/mod_info.conf
  13. Include /etc/apache2/mod_usertrack.conf
  14. Include /etc/apache2/mod_autoindex-defaults.conf
  15. TypesConfig /etc/apache2/mime.types
  16. DefaultType text/plain
  17. Include /etc/apache2/mod_mime-defaults.conf
  18. Include /etc/apache2/errors.conf
  19. Include /etc/apache2/ssl-global.conf
  20. <Directory />
  21.     Options None
  22.     AllowOverride None
  23.     Order deny,allow
  24.     Deny from all
  25. </Directory>
  26. AccessFileName .htaccess
  27. <Files ~ "^\.ht">
  28.     Order allow,deny
  29.     Deny from all
  30. </Files>
  31. DirectoryIndex index.html index.html.var
  32. Include /etc/apache2/default-server.conf
  33. Include /etc/apache2/sysconfig.d/include.conf
  34. Include /etc/apache2/vhosts.d/*.conf


 
Nous allons faire le gros de la config avec l'assistant. Je détaillerais ce que l'assistant écrit dans nos fichiers de configuration par la suite.
Sous YAST, allez dans services réseau puis serveur HTTP.
Le service HTTP doit être activé, cochez ouvrir le parefeu sur les ports sélectionnés (normalement c'est inutile, nous l'avons fait au dessus à la main).
 
Cliquez sur 'listen activé' puis modifier, ajoutez le port 443 pour toutes les adresses réseau.
 
Modifiez ensuite la liste des modules.
Chez moi, voici ceux qui sont activés (en gras, ceux qui me semble indispensable, à vérifier):
access
action  
alias
auth
autoindex
cgi
dir
include
log_config
mime
negotiation
setenvif
status
userdir  
asis
headers
imap
proxy
proxy_connect
proxy_http

proxy_ftp
ssl
php4
 
Puis modifiez hôte par défaut.
Pour la racine du document, précisez : /srv/www/html
 
Modifiez hôtes.
Ajoutez un hote de type www.domaine.com
Les paramètres importants à renseigner :
Nom du serveur : www.domaine.com
Racine du document : /srv/www/html
Adresse IP : *:80
 
 
 
Cliquez sur terminer.
Le gros de la configuration vient d'être automatisé.
 
Ensuite nous allons jeter un oeil à listen.conf qui est le fichier de configuration des ports écoutés par apache2.
 

Code :
  1. #
  2. # /etc/apache2/listen.conf
  3. #
  4. Listen 80
  5. Listen 443


 
Voilà ce que vous devriez avoir suite à la configuration via YAST.
On peut pousser le vice et mettre à profit les balises IfDefine et IfModule pour écouter sur le port 443 uniquement si le module SSL est actif.
 

Code :
  1. #
  2. # /etc/apache2/listen.conf
  3. #
  4. <IfDefine SSL>
  5.     <IfDefine !NOSSL>
  6. <IfModule mod_ssl.c>
  7.     Listen 443
  8. </IfModule>
  9.     </IfDefine>
  10. </IfDefine>
  11. Listen 80


 
Il est temps de configurer le lancement du fameux module SSL.
 
 
 
Il faut éditer le fichier apache2 et vérifier que ssl soit dans la liste APACHE_MODULE. Puis APACHE_SERVER_FLAG doit être fixé à -D SSL pour activer le SSL.  
Fixez également APACHE_START_TIMEOUT à 5 (plus d'infos dans les liens à la fin)
Passez APACHE_LOGLEVEL à debug pour faciliter l'installation.
 

Code :
  1. #
  2. # /etc/sysconfig/apache2
  3. #
  4. DOC_SERVER="no"
  5. APACHE_CONF_INCLUDE_FILES=""
  6. APACHE_CONF_INCLUDE_DIRS=""
  7. APACHE_MODULES="access actions alias auth autoindex cgi dir include log_config mime negotiation setenvif status userdir asis imap proxy proxy_connect proxy_ftp proxy_http ssl php4 headers"
  8. APACHE_SERVER_FLAGS="-D SSL"
  9. APACHE_HTTPD_CONF=""
  10. APACHE_MPM=""
  11. APACHE_SERVERADMIN="root@linux"
  12. APACHE_SERVERNAME="linux"
  13. APACHE_START_TIMEOUT="5"
  14. APACHE_SERVERSIGNATURE="on"
  15. APACHE_LOGLEVEL="debug"
  16. APACHE_ACCESS_LOG="/var/log/apache2/access_log combined"
  17. APACHE_USE_CANONICAL_NAME="off"
  18. APACHE_SERVERTOKENS="OS"
  19. APACHE_EXTENDED_STATUS="off"
  20. APACHE_BUFFERED_LOGS="off"
  21. APACHE_TIMEOUT="300"


 
Nous allons ensuite vérifier default-server.conf
On fait pointer la racine de notre serveur web vers le dossier /srv/www/html. YAST a déjà dû compléter le nécessaire mais vérifiez.
 

Code :
  1. #
  2. # /etc/apache2/default-server.conf
  3. #
  4. DocumentRoot "/srv/www/html/"
  5. <Directory "/srv/www/html">
  6. Options None
  7.       AllowOverride None
  8.       Order allow,deny
  9. Allow from all
  10. </Directory>
  11. #
  12. Alias /icons/ "/usr/share/apache2/icons/"
  13. #
  14. <Directory "/usr/share/apache2/icons">
  15. Options Indexes MultiViews
  16. AllowOverride None
  17. Order allow,deny
  18. Allow from all
  19. </Directory>
  20. #
  21. ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
  22. #
  23. <Directory "/srv/www/cgi-bin">
  24. AllowOverride None
  25. Options +ExecCGI -Includes
  26. Order allow,deny
  27. Allow from all
  28. </Directory>
  29. #
  30. Include /etc/apache2/conf.d/*.conf
  31. #
  32. Include /etc/apache2/conf.d/apache2-manual?conf
  33. ServerName linux
  34. #
  35. ServerAdmin jeoff@hfr.com


 
Il est temps de configurer nos virtual hosts.
Il faut aller dans /etc/apache2/vhosts.d/
On copie vhost.template vers vhost.conf et vhost-ssl.template vers vhost-ssl.conf
 
Voilà la configuration des deux fichiers :
 
 

Code :
  1. #
  2. # /etc/apache2/vhosts.d/vhost.conf
  3. #
  4. <VirtualHost *:80>
  5.     ServerAdmin jeoff@hfr.com
  6.     ServerName www.domaine.com
  7.     DocumentRoot /srv/www/html
  8.     ErrorLog /var/log/apache2/error_log
  9.     CustomLog /var/log/apache2/access_log combined
  10.     HostnameLookups Off
  11.     UseCanonicalName Off
  12.     ServerSignature On
  13.     ScriptAlias /cgi-bin/ "/srv/www/vhosts/dummy-host.example.com/cgi-bin/"
  14.    <Directory "/srv/www/html/cgi-bin">
  15. AllowOverride None
  16. Options +ExecCGI -Includes
  17. Order allow,deny
  18. Allow from all
  19.     </Directory>
  20.     <IfModule mod_userdir.c>
  21. UserDir public_html
  22. Include /etc/apache2/mod_userdir.conf
  23.     </IfModule>
  24.     <Directory "/srv/www/html">
  25. Options Indexes FollowSymLinks
  26. AllowOverride None
  27. Order allow,deny
  28. Allow from all
  29.     </Directory>
  30. </VirtualHost>


 
Attention, remplacez srv1 par le nom de la machine qui héberge les pages OWA  
 

Code :
  1. #
  2. # /etc/apache2/vhosts.d/vhost-ssl.conf
  3. #
  4. <IfDefine SSL>
  5. <IfDefine !NOSSL>
  6. <VirtualHost _default_:443>
  7. ProxyRequests off
  8. ServerName srv1
  9. ErrorLog /var/log/apache2/error_log
  10. TransferLog /var/log/apache2/access_log
  11. SSLEngine on
  12. SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  13. SSLCertificateFile /etc/apache2/ssl.crt/server.crt
  14. SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
  15. <Files ~ "\.(cgi|shtml|phtml|php3?)$">
  16.     SSLOptions +StdEnvVars
  17. </Files>
  18. <Directory "/srv/www/cgi-bin">
  19.     SSLOptions +StdEnvVars
  20. </Directory>
  21. SetEnvIf User-Agent ".*MSIE.*" \
  22.   nokeepalive ssl-unclean-shutdown \
  23.   downgrade-1.0 force-response-1.0
  24. CustomLog /var/log/apache2/ssl_request_log   ssl_combined
  25. SSLProxyEngine on
  26. ProxyVia on
  27. RequestHeader set Front-End-Https "On"
  28. ProxyPass /exchange http://srv1/exchange/
  29. ProxyPassReverse /exchange http://srv1/exchange/
  30. ProxyPass /exchweb http://srv1/exchweb/
  31. ProxyPassReverse /exchweb http://srv1/exchweb/
  32. ProxyPass /public http://srv1/public/
  33. ProxyPassReverse /public http://srvmali1/public/
  34. ProxyPass /iisadmpwd http://srv1/iisadmpwd/
  35. ProxyPassReverse /iisadmpwd http://srv1/iisadmpwd/
  36. ProxyPreserveHost on
  37. </VirtualHost>                                 
  38. </IfDefine>
  39. </IfDefine>


 
 
Bien, la configuration d'apache est terminée, il faut désormais générer le certificat.
 
 /usr/bin/gensslcert -c FR -s VO -l "EPINAL" -o XTELECOM -e jeoff@hfr.com -d -n www.domaine.com
 
Liste des options (en anglais):
-C Common name "$name"
-N comment "$comment"
-c country (two letters, e.g. DE) $C
-s state $ST
-l city $L
-o organisation "$O"
-u organisational unit "$U"
-n fully qualified domain name $CN (\$FQHOSTNAME)
-e email address of webmaster webmaster@$CN
-y days server cert is valid for $srvdays
-Y days CA cert is valid for $CAdays
-d run in debug mode  
-h show usage  
 
Cela crée une série de fichier dans les dossiers de type /etc/apache2/ssl.*
Faites attentions à ce que le paramètre -n soit équivalent à ServerName des fichiers de configuration. Ici on a utilisé www.domaine.com.
 
Ajoutez une entrée au fichier /etc/hosts sur le serveur Apache
192.168.0.1 srv1
 
Vérifiez que votre fichier /etc/host.conf ressemble à ça :
order hosts, bind
multi on
 
Lancez apache : apache2 restart.
Si ca ne fonctionne pas, placez vous dans /etc/init.d ou ajoutez /etc/init.d au PATH pour pouvoir lancer apache2 depuis n'importe quel répertoire.
PATH=/etc/init.d:$PATH
export PATH
apache2 restart
 
Allez dans le rép /etc/apache2 puis lancez la commande
httpd2 -D SSL -S
Vous devriez voir quelque chose de ce style :
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   www.domaine.com (/etc/apache2/vhosts.d/vhost.conf:13)
_default_:443          www.domaine.com (/etc/apache2/vhosts.d/vhost-ssl.conf:35)
Syntax OK
 
Lancez votre navigateur local.  
http://localhost
et https://localhost doivent afficher la même page.
Pour le second cas, vous devrez accepter le certificat.
 
 
LIEN :  
http://www.ornl.gov/~jar/Apache/SSL_in_Apache_2.html
http://3cx.org/item/46
 
----------------------------
Debian
Sous debian.
 
Prérequis : debian installée,connexion internet active et les ports 80 et 443 ouverts.
Pour commencer, une mise à jour de la liste des paquetages est recommandée.
 
en root, lancez

Code :
  1. apt-get setup


pour ma part j'ai modifié le fichier /etc/apt/sources.list en choisissant l'option 'edit source list by hand' dont voici le détail mais vous pouvez très bien vous laisser guider par l'assistant en faisant un autre choix.
 

Code :
  1. deb http://security.debian.org/ stable/updates main
  2. deb ftp://ftp.fr.debian.org/debian/ stable main non-free
  3. deb-src ftp://ftp.fr.debian.org/debian/ stable main non-free
  4. deb http://non-us.debian.org/debian-non-US stable/non-US main non-free
  5. deb-src http://non-us.debian.org/debian-non-US stable/non-US main non-free


 
Notes :
- Ne mettez pas trop de sources car vous risquez d'avoir des erreurs de ce type par la suite : 'dynamic nmap ran out of room'.
- Si vous faites 'edit source list by hand', vous tombez sous l'éditeur nano.
La liste des raccourcis affichés correspond à une combinaison CTRL + lettre.
 
On installe aptitude pour faciliter l'installation d'apache2 et ses dépendances.

Code :
  1. apt-get install aptitude


 
Puis on fait

Code :
  1. aptitude update

suivi de

Code :
  1. aptitude upgrade

. Répondez aux questions posées.
Voilà on est désormais prêt à installer apache2.

Code :
  1. aptitude install apache2


 
A ce stade, http://localhost (en local) et http://ip_serveur (à distance) doivent afficher la page par défaut d'apache dans votre navigateur.
 
Les fichiers d'apache2 se situent à 3 endroits principaux :
/etc/apache2 qui contient tous les fichiers de configuration
/var/log/apache2 qui contient les logs
/var/www qui contient les pages web
 
On va substituer la page par défaut par une page de redirection vers la connexion securisée.
Créez le fichier index.html dans votre répertoire /var/www/
 
Voici un exemple de fichier index.html à customiser selon vos besoins.

Code :
  1. <html>
  2. <head>
  3.  <title>Le Courrier</title>
  4. </head>
  5. <body>
  6.  <div align="center">
  7.   <br /><a href="https://www.domaine.com/exchange"><font size="+2">Acces au courrier</font></a>
  8.  </div>
  9. </body>
  10. </html>


 
Jetons un oeil à notre fichier apache2.conf situé dans /etc/apache2
Préparez-vous mentalement, le ficher est assez gros :).
J'ai mis en gras les lignes que vous devrez modifier et/ou déplacer en début de section par rapport au fichier d'origine.
Ca représente peu de modifs au final (3).
 
--------------------------------
ServerName www.domaine.com
ServerRoot "/var/www"

LockFile /var/lock/apache2/accept.lock
PidFile /var/run/apache2.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
 
<IfModule prefork.c>
 StartServers         5
 MinSpareServers      5
 MaxSpareServers     10
 MaxClients          20
 MaxRequestsPerChild  0
</IfModule>
 
<IfModule worker.c>
 StartServers         2
 MaxClients         150
 MinSpareThreads     25
 MaxSpareThreads     75
 ThreadsPerChild     25
 MaxRequestsPerChild  0
</IfModule>
 
<IfModule perchild.c>
 NumServers           5
 StartThreads         5
 MinSpareThreads      5
 MaxSpareThreads     10
 MaxThreadsPerChild  20
 MaxRequestsPerChild  0
 AcceptMutex fcntl
</IfModule>
 
User www-data
Group www-data
 
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combine
d
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
ErrorLog /var/log/apache2/error.log
 
#
# Ce fichier appelle l'ensemble des autres fichiers de configuration  
#
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/conf.d/[^.#]*
 
 
Alias /icons/ "/usr/share/apache2/icons/"
<Directory "/usr/share/apache2/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
 
<IfModule mod_negotiation.c>
<IfModule mod_include.c>
    Alias /error/ "/usr/share/apache2/error/"
 
    <Directory "/usr/share/apache2/error">
        AllowOverride None
        Options IncludesNoExec
        AddOutputFilter Includes html
        AddHandler type-map var
        Order allow,deny
        Allow from all
        LanguagePriority en es de fr
        ForceLanguagePriority Prefer Fallback
    </Directory>
 
    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
    ErrorDocument 410 /error/HTTP_GONE.html.var
    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
    ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
 
</IfModule>
</IfModule>
 
AccessFileName .htaccess
 
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>
 
UseCanonicalName Off
 
TypesConfig /etc/mime.types
DefaultType text/plain
 
HostnameLookups Off
 
IndexOptions FancyIndexing VersionSort
 
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
 
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
 
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
 
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
 
DefaultIcon /icons/unknown.gif
 
ReadmeName README.html
HeaderName HEADER.html
 
IndexIgnore .??* *~ *# HEADER* RCS CVS *,t
 
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
 
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddLanguage pl .po
AddLanguage ko .ko
AddLanguage pt .pt
AddLanguage no .no
AddLanguage pt-br .pt-br
AddLanguage ltz .ltz
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage zh-tw .tw
 
LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw
 
#
#On donne la priorité au jeu d'encodage UTF8 (utilisé par OWA)
#
AddCharset UTF-8       .utf8
AddCharset ISO-8859-1  .iso8859-1  .latin1
AddCharset ISO-8859-2  .iso8859-2  .latin2 .cen
AddCharset ISO-8859-3  .iso8859-3  .latin3
AddCharset ISO-8859-4  .iso8859-4  .latin4
AddCharset ISO-8859-5  .iso8859-5  .latin5 .cyr .iso-ru
AddCharset ISO-8859-6  .iso8859-6  .latin6 .arb
AddCharset ISO-8859-7  .iso8859-7  .latin7 .grk
AddCharset ISO-8859-8  .iso8859-8  .latin8 .heb
AddCharset ISO-8859-9  .iso8859-9  .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5        .Big5       .big5
 
AddCharset WINDOWS-1251 .cp-1251   .win-1251
AddCharset CP866       .cp866
AddCharset KOI8-r      .koi8-r .koi8-ru
AddCharset KOI8-ru     .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
 
AddCharset GB2312      .gb2312 .gb
AddCharset utf-7       .utf7
AddCharset utf-8       .utf8
AddCharset big5        .big5 .b5
AddCharset EUC-TW      .euc-tw
AddCharset EUC-JP      .euc-jp
AddCharset EUC-KR      .euc-kr
AddCharset shift_jis   .sjis
 
AddType application/x-tar .tgz
 
<FilesMatch "\.shtml(\..+)?$">
    SetOutputFilter INCLUDES
</FilesMatch>
 
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-caref
ully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
 
Include /etc/apache2/sites-enabled/[^.#]*
----------------------
 
Si j'ai bien compris la structure des fichiers de config :
- les dossiers /etc/apache2/mods-available et /etc/apache2/sites-available contiennent des modèles (template) de config
- apache2 va charger tous les fichiers de configurations qu'il trouve dans /etc/apache2/mods-enabled et /etc/apache2/sites-enabled
 
On se sert du template pour configurer le virtualhost pour le port HTTP (80).

Code :
  1. cp /etc/apache2/sites-available/default /etc/apache2/sites-enabled/port80.conf


Afin de ne pas être redirigé sur la page de test il faut modifier le fichier port80.conf, en ajoutant entre autre # devant la ligne 17 (RedirectMatch ^/$ /apache2-default/).
Voici une copie de mon fichier, adaptez à votre cas.
 
 

Code :
  1. #NameVirtualHost *
  2. <VirtualHost *:80>
  3.         ServerAdmin jeoff@hfr.com
  4.         DocumentRoot /var/www/
  5.         <Directory />
  6.                 Options FollowSymLinks
  7.                 AllowOverride None
  8.         </Directory>
  9.         <Directory /var/www/>
  10.                 Options Indexes FollowSymLinks MultiViews
  11.                 AllowOverride None
  12.                 Order allow,deny
  13.                 allow from all
  14.                 # This directive allows us to have apache2's default start page
  15.                 # in /apache2-default/, but still have / go to the right place
  16.                 #RedirectMatch ^/$ /apache2-default/
  17.         </Directory>
  18.         ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  19.         <Directory "/usr/lib/cgi-bin">
  20.                 AllowOverride None
  21.                 Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
  22.                 Order allow,deny
  23.                 Allow from all
  24.         </Directory>
  25.         ErrorLog /var/log/apache2/error.log
  26.         # Possible values include: debug, info, notice, warn, error, crit,
  27.         # alert, emerg.
  28.         LogLevel warn
  29.         CustomLog /var/log/apache2/access.log combined
  30.         ServerSignature On
  31.     Alias /doc/ "/usr/share/doc/"
  32.     <Directory "/usr/share/doc/">
  33.         Options Indexes MultiViews FollowSymLinks
  34.         AllowOverride None
  35.         Order deny,allow
  36.         Deny from all
  37.         Allow from 127.0.0.0/255.0.0.0 ::1/128
  38.     </Directory>
  39. </VirtualHost>


 
Puis on se sert du template pour configurer le virtualhost pour le port HTTPS (443).

Code :
  1. cp /etc/apache2/sites-available/default /etc/apache2/sites-enabled/ssl.conf


 

Code :
  1. <IfDefine SSL>
  2. <IfDefine !NOSSL>
  3. NameVirtualHost *:443
  4. <VirtualHost *:443>
  5.         ProxyRequests off
  6.         ServerName srv1
  7.         ErrorLog /var/log/apache2/error_log
  8.         TransferLog /var/log/apache2/access_log
  9.         SSLEngine on
  10.         SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
  11. :+eNULL
  12.         <Files ~ "\.(cgi|shtml|phtml|php3?)$">
  13.             SSLOptions +StdEnvVars
  14.         </Files>
  15.         <Directory "/srv/www/cgi-bin">
  16.             SSLOptions +StdEnvVars
  17.         </Directory>
  18.   SetEnvIf User-Agent ".*MSIE.*" \
  19.                  nokeepalive ssl-unclean-shutdown \
  20.                  downgrade-1.0 force-response-1.0
  21.         CustomLog /var/log/apache2/ssl_request_log   ssl_combined
  22.         SSLProxyEngine on
  23.         ProxyVia on
  24.         RequestHeader set Front-End-Https "On"
  25.   ProxyPass /exchange http://srv1/exchange/
  26.         ProxyPassReverse /exchange http://srv1/exchange/
  27.         ProxyPass /exchweb http://srv1/exchweb/
  28.         ProxyPassReverse /exchweb http://srv1/exchweb/
  29.         ProxyPass /public http://srv1/public/
  30.         ProxyPassReverse /public http://srv1/public/
  31.         ProxyPass /iisadmpwd http://srv1/iisadmpwd/
  32.         ProxyPassReverse /iisadmpwd http://srv1/iisadmpwd/
  33.         ProxyPreserveHost on
  34. </VirtualHost>
  35. </IfDefine>
  36. </IfDefine>


 
Bien, maintenant ajoutons des modules à notre serveur apache2.
On se place dans /etc/apache2/mods-enabled.
On exécute les commandes suivantes.
 

Code :
  1. a2enmod proxy
  2. a2enmod proxy_connect
  3. a2enmod proxy_http
  4. a2enmod proxy_ftp (facultatif)
  5. a2enmod headers
  6. a2enmod ssl


 
A ce stade, si vous listez le rép avec ls, voici ce que vous devez voir au minimum :
proxy.conf        ssl.load
proxy.load        proxy_http.load  
headers.load   proxy_connect.load  ssl.conf
 
Editez proxy.conf pour changer 'Deny from all' en 'Allow from all'.
Sinon le reverse proxy va bloquer toutes vos requêtes sur HTTPS (443).
Si cela devait se produire, votre /var/log/apache2/error_log contiendrait des entrées de ce type :
[client 82.127.52.13] client denied by server configuration: proxy:http://machine_locale/exchange/, referer: http://www.domaine.com/
 

Code :
  1. <IfModule mod_proxy.c>
  2.         ProxyRequests Off
  3.         <Proxy *>
  4.                 Order deny,allow
  5.                 #Deny from all
  6.                 Allow from all
  7.         </Proxy>
  8.         ProxyVia On
  9.   CacheRoot "/var/cache/apache2/proxy"
  10.         CacheSize 5
  11.         CacheGcInterval 4
  12.         CacheMaxExpire 24
  13.         CacheLastModifiedFactor 0.1
  14.         CacheDefaultExpire 1
  15. </IfModule>


 
ssl.conf n'a pas besoin d'être retouché.
 
Revenons à /etc/apache2 et éditons httpd.conf afin d'activer le ssl.
 

Code :
  1. SSLProtocol -all +SSLv2
  2. SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP
  3. SSLCertificateFile /etc/apache2/ssl/apache.pem


Cela suppose que nous avons crée un certificat (apache.pem), pour se faire, on tappe la commande apache2-ssl-certificate et on réponds aux questions.
A noter que le certificat par défaut n'est pas prévu pour durer plus d'un mois.
Mais on doit pouvoir le générer à la mano, lisez le tuto suse 10 pour en savoir plus.
 
Editez le fichier ports.conf et vérifiez que les deux ports soient à l'écoute.

Code :
  1. Listen 443
  2. Listen 80


 
Ajoutez une entrée au fichier /etc/hosts sur le serveur Apache  

Code :
  1. 192.168.0.1 srv1


 
Vérifiez que votre fichier /etc/host.conf ressemble à ça :  

Code :
  1. order hosts, bind
  2. multi on


 
Lancez apache : apache2 restart.  
Si ca ne fonctionne pas, placez vous dans /etc/init.d ou ajoutez /etc/init.d au PATH pour pouvoir lancer apache2 depuis n'importe quel répertoire.  
PATH=/etc/init.d:$PATH  
export PATH  
apache2 restart  
 
Lancez votre navigateur local.  
http://localhost doit afficher notre page de redirection.  
Lorsque l'on clique sur le lien, il faut accepter le certificat puis nous accédons à la fenêtre de login OWA.
Une fois loggé, vous devez avoir accès à votre boîte.
                                                   
 
LIEN :
http://www.libordux.org/debian-doc [...] server.php
http://forum.hardware.fr/hardwaref [...] 5672-1.htm


Message édité par jeoff le 21-02-2006 à 16:44:08
Reply

Marsh Posté le 20-02-2006 à 18:47:03   

Reply

Marsh Posté le 20-02-2006 à 18:55:12    

Bien complet tout ça !
Merci :jap:

Reply

Marsh Posté le 21-02-2006 à 16:43:42    

Voilà j'ai edité le premier message : ajout de la démarche pour debian.
 
Merci sebou77, tu as déjà eu affaire à OWA ?

Reply

Marsh Posté le 21-02-2006 à 17:09:04    

très sympa ce tuto!
 
Je bookmarke, on doit upgrader notre exchange 2000 d'ici 2-3 mois, et comme le patron va peut-être vouloir un webmail, il se peut que je j'utilise ton post! :)

Reply

Marsh Posté le 21-02-2006 à 19:59:03    

J'attends avec impatience ton retour d'experience.
Ca me permettra certainement de corriger certaines choses.
J'ai essayé de prendre les notes en parallèle mais bon, dans le feu de l'action j'ai pu louper 2/3 explications.

Reply

Marsh Posté le 21-02-2006 à 20:42:45    

Pas de pb, si c'est mis en place je te tiendrai au courant :)

Reply

Marsh Posté le 07-06-2007 à 16:14:35    

Bonjour,
 
super ce tuto, sauf que pour mon cas il m'a fallu changer deux ou trois trucs dans l'hote virtuel pour que ça marche:
 
- enlever les <IfDefine> et </IfDefine> du début et de la fin
- ajouter le chemin vers la clé privée: SSLCertificateKeyFile /etc/apache2/ssl/privkey.pem
 
pour cela, j'ai généré une clé avec openssl
 
le reverse proxy marche nickel pour tous les sites de mon intranet .. sauf .. OWA !!! je pense qu'il faut specifier quelques paramètres, je suis en train de chercher
 
 

Reply

Marsh Posté le 07-06-2007 à 16:35:07    

Personnellement je trouve que la procédure sur Debian est trop compliquée
Chez moi il m'a suffit de faire des liens pour activer les modules (lier les fichiers proxy* de mods-available vers mods-enabled avec ln -s), puis simplement créer un fichier dans sites-enables contenant les lignes suivantes :

Code :
  1. ProxyRequests Off
  2. <Proxy *>
  3.         Order deny,allow
  4.         Allow from all
  5.         SetOutputFilter proxy-html
  6. </Proxy>
  7.          #site 1
  8.          ProxyPass /kro/ http://10.11.12.13/kronenbourg/
  9.          ProxyPassReverse /kro/ http://10.11.12.13/kronenbourg/
  10.        
  11.          #site 2
  12.          ProxyPass /leffe/ http://mon_serveur/
  13.          ProxyPassReverse /leffe/ http://mon_serveur/


Message édité par bichtoubard le 07-06-2007 à 16:35:32
Reply

Marsh Posté le 07-06-2007 à 17:32:03    

Déjà pour Debian on utilise a2enmod et a2dismod pour activer les modules.
 
Ensuite ton redirecte HTML, ça sux un peu non ?
 
cf:

Code :
  1. #### HTTP roundcubemail.le-vert.net vhost ####
  2. ##############################################
  3. <VirtualHost *:80>
  4.         ServerAdmin postmaster@le-vert.net
  5.         ServerName roundcubemail.le-vert.net
  6.         ServerAlias webmail.le-vert.net
  7.         RewriteEngine On
  8.         RewriteRule ^(.*) https://%{SERVER_NAME}$1
  9. </VirtualHost>
  10. ## End HTTP www.le-vert.net vhost ##
  11. ####################################
  12. ### HTTPS www.le-vert.net vhost ####
  13. ####################################
  14. <VirtualHost *:443>
  15.         ServerAdmin postmaster@le-vert.net
  16.         ServerName roundcubemail.le-vert.net
  17.         ServerAlias webmail.le-vert.net
  18.         DocumentRoot /data/www/vhosts/roundcubemail.le-vert.net/
  19.         DirectoryIndex index.php index.html index.htm
  20.         <Directory /data/www/vhosts/roundcubemail.le-vert.net/>
  21.                 Options -Indexes
  22.                 AllowOverride None
  23.                 Order deny,allow
  24.                 allow from all
  25.         </Directory>
  26.         ErrorLog /var/log/apache2/roundcubemail.le-vert.net-error.log
  27.         LogLevel warn
  28.         CustomLog /var/log/apache2/roundcubemail.le-vert.net.log combined
  29.         ServerSignature On
  30. </VirtualHost>
  31. # End HTTPS roundcubemail.le-vert.net vhost ##
  32. ##############################################


Reply

Marsh Posté le 07-06-2007 à 18:08:10    

M300A a écrit :

Déjà pour Debian on utilise a2enmod et a2dismod pour activer les modules.
 
Ensuite ton redirecte HTML, ça sux un peu non ?


 

Citation :

SYNOPSIS
       a2enmod [module]
 
DESCRIPTION
       This manual page documents briefly the a2enmod and a2dismod commands.
 
       a2enmod  is  a  script  that  enables  the  specified module within the
       apache2 configuration.   It  does  this  by  creating  symlinks  within
       /etc/apache2/mods-enabled.   Likewise,  a2dismod  disables  a module by
       removing those symlinks.  It is not an error to enable a  module  which
       is already enabled, or to disable one which is already disabled.


Je vois pas la différence entre faire le lien soit même ou utiliser le script qui fait le lien a l'exception que avec ma ligne je peux tous les activer d'un coup :o
 
C'est sur que c'est pas un proxy dans le sens où on l'entend habituellement mais on reste quand meme sur le serveur d'origine, on peut appliquer les règles du mod security et faire du caching
Bref c'est amplement suffisant la plupart du temps

Reply

Marsh Posté le 07-06-2007 à 18:08:10   

Reply

Marsh Posté le 07-06-2007 à 18:13:42    

bah la syntaxe est plus simple quand même, a2enmod module et c'est tout.
 
Pour le reverse proxy je n'ai rien dis, je trouve juste ça idiot de faire un redirect depuis une page html alors qu'on peut faire un url rewrite...

Reply

Marsh Posté le 08-06-2007 à 10:34:14    

M300A a écrit :

bah la syntaxe est plus simple quand même, a2enmod module et c'est tout.
 
Pour le reverse proxy je n'ai rien dis, je trouve juste ça idiot de faire un redirect depuis une page html alors qu'on peut faire un url rewrite...


 
Je fais pas un redirect depuis une page html  :??: Ce dont tu parles s'appelle un lien


Message édité par bichtoubard le 08-06-2007 à 10:34:32
Reply

Marsh Posté le 08-06-2007 à 11:39:51    

Oui c'est pareil :) Pourquoi ne pas utiliser url rewrite ?

Reply

Marsh Posté le 08-06-2007 à 11:53:46    

Parce que c'est plus simple à utiliser ProxyPass, et c'est fait pour ça.
mod_rewrite n'est pas prévu pour ça a l'origine, mais c'est une des utilisations que l'on fait
 

Code :
  1. A reverse proxy is activated using the ProxyPass directive or the [P] flag to the RewriteRule directive.


 
Je vois pas quel bénéfice est apporté par ton url rewrite ?

Reply

Marsh Posté le 08-06-2007 à 12:37:30    

j'ose même pas vous montrer ce que ça donne avec lighttpd

Reply

Marsh Posté le 08-06-2007 à 12:45:28    

bichtoubard a écrit :

Parce que c'est plus simple à utiliser ProxyPass, et c'est fait pour ça.
mod_rewrite n'est pas prévu pour ça a l'origine, mais c'est une des utilisations que l'on fait
 

Code :
  1. A reverse proxy is activated using the ProxyPass directive or the [P] flag to the RewriteRule directive.


 
Je vois pas quel bénéfice est apporté par ton url rewrite ?


 
 
Pfioo je te parle pas de ton proxypass mais de ton vhost http, alors que t'aurais pu faire un rewrite qui réécrit l'url en https.

Reply

Marsh Posté le 08-06-2007 à 15:03:00    

M300A a écrit :

Pfioo je te parle pas de ton proxypass mais de ton vhost http, alors que t'aurais pu faire un rewrite qui réécrit l'url en https.


Pour OWA oui c'est sûr mais pour "autre" il arrive qu'on s'en balance du https
 

Citation :

 j'ose même pas vous montrer ce que ça donne avec lighttpd


Il arrive que lighttpd ne soit pas utilisable dans certains cas. En tous cas chez moi il chie avec Ant.


Message édité par bichtoubard le 08-06-2007 à 15:03:50
Reply

Marsh Posté le 26-07-2007 à 15:56:55    

En passant par là au hasard de mes ballades et autres "googlades", j'en profite pour vous donner un lien sur un autre "howto" qui fonctionne très bien aussi :
http://www.om-conseil.com/sections [...] e&artid=58
 
Un peu plus "vieux" mais tout aussi efficace je pense.
 

Reply

Marsh Posté le 26-04-2011 à 12:19:37    

Bonjour,
Si c'est possible je veux un coup de main de votre par concernant mon sujet de PFE.
Voila mon architecture :
-J'ai installé un serveur mail Exchange dans mon LAN ,ainsi qu'une autorité de certification CA (avec IIS).
pour accéder via l'extérieur à mon serveur mail (OWA) j'ai pensé à faire un reverse proxy avec apache2 dans ma zone DMZ.
le problème c'est que quand je configure mon RP pour rediriger en HTTP ca marche ,mais pour HTTPS ca ne marche pas (ou franchement je ne sais pas comment exporter mon certificat qui est installé dans exchange à mon RP)
sachant que je fais juste l'authentification serveur.
Si vous pouvez m'aider sur ce point.


Message édité par yayabyby le 26-04-2011 à 13:14:05
Reply

Marsh Posté le 26-04-2011 à 18:15:23    

Lorsqu'on ferme un précédent sujet en t'indiquant où poster ce n'est pas pour rien.
Accessoirement copier/coller la même question dans plusieurs sujets datant de plus de 4 ans dans la même section est plus que lancinant...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed