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