# Apache/Sécurité

* Installation d'Apache
* Plusieurs sites par machine
* Serveurs virtuels (vhost)
* Répertoires utilisateurs
* Ré-écriture d'URL
* .htaccess
* Sécurité
* Connexion sécurisée (HTTPS)
* Common Gateway Interface (CGI)
* Cache web
* Problèmes connus
* Installation d'Apache
* Plusieurs sites par machine
* Serveurs virtuels (vhost)
* Répertoires utilisateurs
* Ré-écriture d'URL
* .htaccess
* Sécurité
* Connexion sécurisée (HTTPS)
* Common Gateway Interface (CGI)
* Cache web
* Problèmes connus
[ Modifier le sommaire ]
De nombreux robots tentent quotidiennement de pirater des bases de données (par exemple via PhpMyAdmin ou WordPress). Pour s'en prémunir on peut jouer sur plusieurs critères.
Par exemple, pour interdire de visualiser les fichiers d'un répertoire qui n'a pas d'index (ex : .html, .php), ajouter le code : Options -Indexes.

## Protection par provenance

N'autoriser que deux IP à lire ces répertoires :

### whitelist avec allow (obsolète en Apache 2.4)

Si les plages d'autorisation chevauchent celles d'interdiction, il est possible de préciser leur précédence (l'ordre des lignes dans le fichier ne change rien) :

#### order allow, deny

    commence par les autorisation puis démarre les interdictions au risque d'interdire ce qui était autorisé.

#### order deny, allow

    le contraire est moins restrictif.

### blacklist avec deny (obsolète en Apache 2.4)
## Protection par mot de passe
### Configuration de l'authentification

Il est impératif que la modification des paramètres d'authentification soit autorisée dans la configuration d'Apache.
Il faut que la directive AllowOverride d'un répertoire parent contienne l'option AuthConfig.
Les directives à placer dans le .htaccess sont les suivantes :

#### AuthType basic

    type d'authentification communément adopté mais peu sécurisé

#### AuthName "Mon message"

    affichera le texte comme invite dans la boîte de dialogue

#### AuthUserFile /etc/apache2/my_passwd

    indique où vont se trouver les mots de passe

#### Require valid-user

    précise qu'il faut un compte dans le fichier de mots de passe pour accéder au répertoire
On peut aussi utiliser Require user toto sasa pour n'autoriser que les comptes toto et sasa.
Le type d'authentification basic fait circuler les mots de passe en clair. Il existe d'autres types plus sécurisés comme digest, qu'il est recommandé de combiner à HTTPS. Voir l'article sur wikipédia pour plus de détails sur le fonctionnement.
La première requête adressée à ce répertoire protégé provoquera l'affichage d'une boîte de dialogue par laquelle l'utilisateur devra s'identifier (nom et mot de passe) :
* Si le mot de passe saisi est invalide, la boite de dialogue s'affichera de nouveau.
* S'il est valide, le navigateur l'enregistre et ne le demandera plus.
Il faudra relancer le navigateur pour qu'il le demande de nouveau.

### Fichier de mots de passe

Pour créer un fichier stockant les mots de passe permettant de lire un site, nommé /etc/apache2/default-passwd avec comme 1er utilisateur toto, on utilisera la commande
Pour ajouter ou modifier un utilisateur à un fichier de mots de passe existant :
Pour que le .htaccess active le .htpasswd, y ajouter les directives :
Cette protection ne tient pas compte des robots qui essaient tous les mots de passe un par un. Il convient donc de l'utiliser en complément d'un bon pare-feu (ex : iptables).

## Références

* ↑ https://httpd.apache.org/docs/2.4/fr/howto/access.html
* ↑ https://httpd.apache.org/docs/2.4/fr/upgrading.html