Apache et HtAccess

Transcription

Apache et HtAccess
Mettre en place une sécurité htaccess
I.
Le serveur FTP
Le FTP permettra de déposer les fichiers .htaccess et .htpasswd directement
dans les dossiers que l’on veut protéger et offre aussi une plus grande
flexibilité sur le serveur apache
On utilisera Very Secure FTPd (vsftpd), pour l’installer: apt-get install vsftpd
Une fois vsftpd installé, il faudra remplacer le fichier de configuration
/etc/vsftpd.conf par le suivant :
listen=YES
#
# On ne veut surtout pas de connexions en mode anonymous
anonymous_enable=NO
#
# On veut que les utilisateurs locaux puissent se connecter
local_enable=YES
#
# On veut que les utilisateurs puissent remonter des fichiers sur le
serveur
write_enable=YES
#
# On fixe le masque local a 022 (les fichiers remontés auront des droits
en 755)
local_umask=022
#
# On interdit l’upload anonyme
anon_upload_enable=NO
#
# Idem pour la création de répertoires
anon_mkdir_write_enable=NO
#
# On demande a ce que les actions des utilisateurs soient loggées
xferlog_enable=YES
#
# On vérifie que la commande PORT provienne bien du port 20 de la
machine cliente
connect_from_port_20=YES
#
# Les logs seront enregistrés dans le fichier /var/log/vsftpd.log
xferlog_file=/var/log/vsftpd.log
#
# On declare les valeurs de timeout. Celles fournies par defaut sont ok
pour notre utilisation
idle_session_timeout=300
data_connection_timeout=120
connect_timeout=60
accept_timeout=60
#
# Par securite, on interdit la commande ABOR
async_abor_enable=NO
#
# Les transferts en ASCII sont souvent source de confusions
ascii_upload_enable=NO
ascii_download_enable=NO
#
# Par securite, on change la bannière
ftpd_banner=Bienvenue sur le serveur Debian Addict
#
# On veut limiter les utilisateurs à leur répertoire
chroot_local_user=YES
chroot_list_enable=NO
#
# Les heures d’enregistrement des fichiers seront affichées a l’heure
locale
use_localtime=YES
Une fois le fichier de configuration remplacé, on relance le serveur FTP en tapant en root :
/etc/init.d/vsftpd restart
Il nous reste donc à créer un répertoire commun auquel chacun aura accès. Pour cela, on crée
un utilisateur lambda que l’on appellera « commun ». En root, tapez : adduser
identifiantutilisateur
Définition des droits sur les dossiers :
chmod -R 755 /home/identifiantutilisateur
chown identifiantutilisateur:identifiantutilisateur –R
/home/identifiantutilisateur
A ce stade, si on essaie de s’identifier avec un utilitaire FTP, le client arrivera à se connecter
au serveur mais il proposera une belle erreur 530 vsftpd FAIL LOGIN: Client
Il faut donc continuer et préciser les utilisateurs/mots de passe que l’on veut pour le FTP
Nous allons utiliser une base de données pour les noms et mots de passe des utilisateurs
virtuels.
On a besoin d’un utilitaire de base de données qui nous servira à hasher les couples
identifiant/mot de passe.
Il faut créer un répertoire :
Mkdir /etc/vsftpd
Dans le répertoire /etc/vsftpd/ nous allons créer un fichier login.txt contenant les infos de login, il
est formé tel que :
User1
Pass1
User2
Pass2
User3
Pass3
On crée le fichier login.txt où les infos de connexion seront stockées : nano /etc/vsftpd /login.txt
Et on l’édite avec des couples login/mot de passe :
On installe db4.6 afin de hasher ces logins : apt-get install db4.6-util
Et on hashe les données de login.txt :
db4.6_load -T hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
Puis on sécurise les fichiers : chmod 600 /Etc/vsftpd/login.db
Chmod 600 /etc/vsftpd/login.txt
On met ensuite à jour le PAM (Pluggable Authentication Modules) :
Auth required /lib/security/pam_userdb.so db=/etc/vsftpd.login
Account required /lib/security/pam_userdb.so db=/etc/vsftpd.login
On ajoute ensuite au fichier /etc/vsftpd.conf on ajoute ces lignes pour spécifier dans quel dossier le
client FTP va se connecter
Notre serveur FTP est enfin près à l’emploi, il ne reste plus qu’à créer les fichiers .htaccess
II.
L’accès htaccess
Ces fichiers permettent de bloquer l’accès à un dossier précis sur un serveur Apache.
Il va falloir créer deux fichiers :


.htaccess
.htpasswd
: ce fichier contiendra l'adresse du .htpasswd
: ce fichier contiendra une liste de logins/mots de passe, pour chaque
personne autorisée à accéder aux pages
1. Le fichier .htaccess
Sur la machine qui servira de client FTP, on créera un fichier texte que l’on remplira
avec :
La fin de la ligne AuthUserFile « … » étant à remplacer avec le chemin du .htpasswd
correspondant.
Et que l’on sauvegardera en .htaccess
2. Le fichier .htpasswd
Le .htpasswd va contenir la liste des personnes autorisées à accéder aux pages du
dossier. On y inscrit une personne par ligne, sous cette forme :
Login :mot_de_passe(crypté de préférence)
Au final, le fichier .htpasswd devrait ressembler à :
Pour le fichier admin
Pour le fichier user
Pour crypter les mots de passes, on utilisera la fonction php « crypt » en créant une page
temporaire sur le serveur « crypt.php ». Cette page contient : <?php echo
crypt('mot_de_passe'); ?>
On va y accéder via un un navigateur, et elle va nous afficher le mot de passe crypté, que l’on
copiera dans notre fichier texte, en face du login correspondant. Une fois finis, on sauvegarde
notre fichier en .htpasswd
Les fichiers .htaccess et .htpasswd se trouve donc sur notre machine cliente, nous allons les
envoyer sur le serveur Apache, via un client FTP, tel que Mozilla. Il suffit de les uploader
directement dans le dossier que l’on souhaite protéger. (ATTENTION : les fichiers
commençant par un point, ils seront invisibles, mais bien présents !)
La page protégée affiche maintenant cette fenêtre, il faut rentrer un bon login afin de pouvoir
la voir.
Si on entre un mauvais mot de passe, la fenêtre se réaffiche, si l’on clique sur annuler, cela affiche