Linux - Filtrage d'accès via htpasswd en fonction de la source
Alasta 14 Juillet 2015 apache apache linux security
Description : Nous allons voir comment filtrer l'accès à une ressource hébergée par Apache en fonction de la source IP.
Contexte :
Nous partirons d’un système de base sous CentOS 6 installé.
Nous ferons une installation d’Apache et la configuration necessaire à la démo.
Installation d’Apache :
sudo yum install httpd
Configuration :
Arborescence du VirtualHost sur le système
sudo cd /var/www/html
sudo mkdir test
echo '<html>
<head>
<title>First Page</title>
</head>
<body>
Welcome to my Lab !
</body>
</html>' > test/index.html
sudo chown -R apache:apache test/
VirtualHost Apache
Edition du fichier /etc/httpd/conf.d/test.conf
<VirtualHost test.alasta.lab:80>
ServerAdmin admin@alasta.lab
ServerName test.alasta.lab
ServerAlias toto.alasta.lab
DocumentRoot "/var/www/html/test"
DirectoryIndex index.php index.html
<Directory "/var/www/html/test">
Options -Indexes FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
AuthType Basic
AuthName "Restricted Space to my Lab"
AuthUserFile /etc/httpd/htpasswd/test.alasta.lab.htpasswd
## Autorisation d'un utilisateur spécifique du htpasswd
#Require user alasta
## Autorisation de tous les utiisateurs valident du htpasswd
Require valid-user
Allow from 192.168.5.22/255.255.255.255
#Autre poste autorise
Allow from 192.168.5.33/255.255.255.255
#Net amis
Allow from 192.168.6.0/255.255.255.0
Satisfy Any
</Directory>
</VirtualHost>
Fichier de login/password htpasswd
sudo mkdir /etc/httpd/htpasswd/
#Creation du premier utilisateur alasta
sudo htpasswd -c /etc/httpd/htpasswd/test.alasta.lab.htpasswd alasta
#Ajout d'autre utilisateur toto
sudo htpasswd /etc/httpd/htpasswd/test.alasta.lab.htpasswd toto
Démarrage du service Apache
sudo service httpd start
Tests de bon fonctionnement :
Il est à noter que la résolution du FQDN est nécessaire soit via DNS ou fichier hosts !
Depuis un poste filtrer (pas présent dans la configuration)
curl http://test.alasta.lab
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at test.alasta.lab Port 80</address>
</body></html>
On se prend bien un 401 qui est une demande d’authentification d’un site web.
Depuis une IP autorisée dans la configuration
curl http://test.alasta.lab
<html>
<head>
<title>First Page</title>
</head>
<body>
Welcome to my Lab !
</body>
</html>
On passe bien !