Apache
Sécuriser
Supprimer les "banner" Apache
Lors d'une requete apache le comportement par défaut est de donner toutes les infos au client:
$ telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. HEAD / HTTP/1.0
HTTP/1.1 200 OK Date: Sat, 02 Jun 2001 13:11:40 GMT Server: Apache/1.3.14 (Unix) (Red-Hat/Linux) PHP/4.0.3pl1 mod_perl/1.24 Connection: close Content-Type: text/html
Connection closed by foreign host.
Ceci est un grand risque car le hacker potentiel connait déja le type et la version du serveur. Il n'a plus a essayer les vulnérabilités connues de cette version.
Sécurisation
Retirer ces infos aussi bien lors de requetes HEAD que des GET ou POST en erreur 404 est facile grâce qux directives:
ServerSignature Off ServerTokens Prod
La première évite l'affichage de la version dans les pages d'erreurs alors que la seconde retire ces valeurs du 'header".
Attention dans les installations d'Apache bien fichues (debian, ubuntu...) il y a un fichier de conf spécifique pour la sécu :
/etc/apache2/conf-available/security.conf
Sur mon Raspberry PI par exemple.
Reverse-Proxy
Introduction
Le but de cette manip est de créer sur le serveur "pserver" un reverse proxy sers une URL donnée.
En résumé en entrant l'URL
http://pserver/rrr
On est redirigé vers un autre serveur (http://test.com)
Le serveur se charge de la traduction en ligne des URL. Ce mécanisme est principalement utilisé pour "isoler" un serveur web du reste d'internet.
Le client se connecte a un serveur (dans la DMZ) qui lui est visible du reste du réseau. Ce serveur "forwarde" les requêtes a un serveur (dans le LAN).
Cela isole l'ordinateur du reste de l'Internet.
Installation & Configuration
Installation
Le module proxy_http doit être installé. (il l'est par défaut avec apache 2 sur ma distrib ubuntu 9).
Pour l'activer il faut créer un lien dans le repêrtoire /etc/apache2/mods-enabled vers le fichier :
/etc/apache2/mods-available/proxy_http.load
En ensuite redémarrer apache
sudo /etc/init.d/apache2 restart
Configuration
I faut éditer le fichier httpd.com ou, si l'installation de apache est propre, comme dans le cas de ubuntu, il faut jouer avec les répertoires /etc/apache/sites-available et /etc/apache/sites-enabled
le contenu à ajouter est
ProxyRequests Off
<Proxy *> Order deny,allow Allow from all </Proxy>
ProxyPass /rrr http://test.com ProxyPassReverse /rrr http://test.com
ATTENTION: Ne pas oublier le : ProxyRequests Off sinon le serveur deviens proxy public !
Ajoutez le dans httpd.conf ou :
- Créer un fichier ppp-proxy dans /etc/apache/sites-available contenant le texte ci-dessus.
- Créer un lien dans /etc/apache/sites-enabled vers ../sites-available/ppp-proxy appele 001-ppp
En ensuite redémarrer apache
sudo /etc/init.d/apache2 restart
Test
Ouvrir un navigateur et tester l'URL http://pserver/rrr qui doit afficher le contenu de http://test.com (sans changer l'URL dans la barre d'adresse)