« Apache » : différence entre les versions

De knowledge
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 4 : Ligne 4 :
Lors d'une requete apache le comportement par défaut est de donner toutes les infos au client:
Lors d'une requete apache le comportement par défaut est de donner toutes les infos au client:


  $ telnet localhost 80
  $ curl -I <nowiki>http://127.0.0.1</nowiki>
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.0
 
  HTTP/1.1 200 OK
  HTTP/1.1 200 OK
  Date: Sat, 02 Jun 2001 13:11:40 GMT
  Date: Sat, 02 Jun 2001 13:11:40 GMT
Ligne 16 : Ligne 11 :
  Content-Type: text/html
  Content-Type: text/html


Connection closed by foreign host.
Ceci est un grand risque car le hacker potentiel connait déjà le type et la version du serveur. Il n'a plus a essayer les vulnérabilités connues de cette version.
 
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 ==
== Sécurisation ==
Ligne 65 : Ligne 58 :


  ProxyRequests Off
  ProxyRequests Off
 
  <Proxy *>
  <Proxy *>
  Order deny,allow
  Order deny,allow
  Allow from all
  Allow from all
  </Proxy>
  </Proxy>
 
  ProxyPass /rrr http://test.com
  ProxyPass /rrr http://test.com
  ProxyPassReverse /rrr http://test.com
  ProxyPassReverse /rrr http://test.com
 
'''ATTENTION''': Ne pas oublier le : ProxyRequests Off sinon le serveur deviens proxy public !
'''ATTENTION''': Ne pas oublier le : ProxyRequests Off sinon le serveur deviens proxy public !



Version actuelle datée du 28 février 2025 à 19:32

Sécuriser

Supprimer les "banner" Apache

Lors d'une requete apache le comportement par défaut est de donner toutes les infos au client:

$ curl -I http://127.0.0.1
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

Ceci est un grand risque car le hacker potentiel connait déjà 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)