Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/02/2008, à 23:58

Jokester

[Résolu] Restreindre accès Apache

Salutations,
je viens d'effectuer une petite manip dans ma conf d'apache vierge : j'ai mis deux AllowOverride All
dans le fichier /etc/apache2/sites-available/default
Je met un .htaccess dans /var/www :

AuthUserFile /var/www/.htpasswd
AuthName "Ces informations sont protegees"
AuthType Basic
<LIMIT GET POST>
Require valid-user
</LIMIT>

Et un fichier .htpasswd également situé dans /var/www/

jokester:mdp

Mais l'identification échoue constamment, apache me redemande sans cesse le mot de passe, qu'il soit bon ou non. Même chose quand je crypte le mot de passe.
Avez vous des idées ? Un lien vers une doc complète ?

Merci beaucoup,
Jk

Dernière modification par Jokester (Le 09/02/2008, à 14:27)


http://www.votrelecture.info

Hors ligne

#2 Le 04/02/2008, à 01:16

ReWinD

Re : [Résolu] Restreindre accès Apache

Salut,
est-ce que tu as bien généré ton fichier htpasswd avec la commande suivante ?

htpasswd -c /var/www/.htpasswd username ?

Personnellement, je te déconseille vivement de le laisser dans /var/www ton fichier .htpasswd avec les mot de passe dedans, je ferais plutà´t la chose comme ça

<Directory /var/www/RepProtege>
                Options -Indexes
                AllowOverride AuthConfig
                AuthName "Ces informations sont protegees"
                AuthType Basic
                AuthUserFile /etc/apache2/users
                <LIMIT GET POST>
                Require valid-user
                </LIMIT>
                Allow from all
</Directory>

Ensuite tu place un fichier .htpasswd vide dans /var/www/RepProtege
généré comme cité plus haut, sans le "-c" si ton fichier existe déjà  et
que tu ne veux que rajouter un username et password.

Dernière modification par ReWinD (Le 04/02/2008, à 01:16)

Hors ligne

#3 Le 04/02/2008, à 16:22

Jokester

Re : [Résolu] Restreindre accès Apache

Chose assez curieuse, quand je crée un utilisateur "jokester" cela ne fonctionne pas. En revanche, "test" fonctionne très bien. La commande htpasswd -c fonctionne au poil, merci de l'indication.
Du coup je vais mettre admin à la place du nom de mon compte user...

Ce que tu m'as dit à propos de <Directory /var/www/RepProtege>... C'est à mettre dans quel fichier ? Le conf d'apache2 ?
J'ai déplacé mon htpasswd, qui ne doit pas être dans le répertoire racine pour des raisons de sécurité c'est bien cela ? Et les htaccess, tu me déconseilles également de les mettre dans les répertoires, et de modifier le fichier de conf ?

Merci pour ton aide précieuse,

Jk.

Dernière modification par Jokester (Le 04/02/2008, à 16:23)


http://www.votrelecture.info

Hors ligne

#4 Le 05/02/2008, à 12:57

ReWinD

Re : [Résolu] Restreindre accès Apache

Salut,

Petite correction qui m'avait échappé, le fichier .htpasswd comme tu dis, s'appelle .htaccess plutà´t. C'est le nom par défaut pour qu'il soit interprêté comme il se doit.

Il y a moyen de bypasser ce mot avec la directive AccessFileName, de la sorte par ex. :

AccessFileName .httpOverride

ce qui rajoute une légère sécurité vu qu'un éventuel pirate chercherait plutà´t le fichier .htaccess.
Il y a également une chose à  faire pour consolider la sécurité...
Cette directive dans apache couplée avec le changement de nom du fichier .htaccess, peuvent faire l'affaire, ex:

AccessFileName .httpOverride

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>
Jokester a écrit :

J'ai déplacé mon htpasswd, qui ne doit pas être dans le répertoire racine pour des raisons de sécurité c'est bien cela ?

Non, en fait, c'est surtout parce qu'en admettant que tu veuilles mettre plusieurs sites sur ton serveur, et que tu mets ton .htaccess à  la racine de /var/www, tu devras toujours entrer tes identifiants à  chaque fois que tu veux consulter un de tes sites. A moins que ce ne soit le but.

Le seul truc que je te déconseille au niveau du .htaccess, c 'est d'y stocker le username et mdp à  l'intérieur de ce dernier, o๠alors tu dois jouer avec les permissions ainsi que rajouter les directives ci-dessus dans apache pour être sûr que quelqu'un de mal intentionné ne parvienne à  télécharger ce fichier. Dis toi que tout ce qui est contenu dans /var/www est normalement accédé par le user www-data, donc potentiellement visible par les visiteurs.


En revanche pour ce qui est de la directive <Directory ...> c'est à  mettre dans le fichier qui concerne ton site, c'est à  dire le virtual host qui va bien, ou tout simplement dans le fichier /etc/apache2/site-enabled/default.

Ou alors c'est également possible de placer le contenu de la directive dans ton fichier .htpasswd  sans mettre les balises <Directory></Directory>.

En d'autre termes, ton fichier .htaccess peut ressembler à  ça

                Options -Indexes
                AllowOverride AuthConfig
                AuthName "Ces informations sont protegees"
                AuthType Basic
                AuthUserFile /etc/apache2/users
                <LIMIT GET POST>
                Require valid-user
                </LIMIT>
                Allow from all

Dans l'exemple ci dessus, on voit que tes username et passwords sont stockés dans /etc/apache2/user, et ce répertoire n'est pas accessible par www-data si tu n'as pas modifié les permissions.

Hors ligne

#5 Le 05/02/2008, à 23:26

Jokester

Re : [Résolu] Restreindre accès Apache

Bonsoir,

Merci tout d'abord pour ces explications claires, j'ai viré les fichiers .htaccess et .htpasswd (ça existe, mais c'est un nom qui n'est pas générique, ce fichier ne contient que des mots de passe...)

Voici un extrait de mon /etc/apache2/sites-available/default, que je me suis fait un plaisir de modifier ^^
(j'ai remplacé par "dir" le nom des répertoires réels, par mesure de sécurité)

NameVirtualHost *
<VirtualHost *>
	ServerAdmin webmaster@localhost
	
	DocumentRoot /var/www/

	<Directory />
		Order deny,allow
		Deny from all
	</Directory>

	#exceptions repertoires autorises
	<Directory /var/www/dir/dir/>
     		Order deny,allow
    		Allow from all
	</Directory>

	#repertoires sous protection admin
	<Directory /var/www/dir/dir>
                Options -Indexes
                AllowOverride AuthConfig
                AuthName "Ces informations sont protegees"
                AuthType Basic
                AuthUserFile /etc/apache2/admin
                <LIMIT GET POST>
                Require valid-user
                </LIMIT>
		Order deny,allow
                Allow from all
	</Directory>

	#repertoires sous protection user
	<Directory /var/www/dir/dir>
                Options -Indexes
                AllowOverride AuthConfig
                AuthName "Ces informations sont protegees"
                AuthType Basic
                AuthUserFile /etc/apache2/users
                <LIMIT GET POST>
                Require valid-user
                </LIMIT>
                Allow from all
	</Directory>

Ce qui bloque par défaut l'accès à  toute l'arborescence du serveur. Ensuite j'applique des droits différents aux répertoires particuliers que je veux rendre accessibles, protection par mot de passe ou non...
Jusqu'ici tout semble fonctionner, mais je bloque pour deux nouvelles choses :
- rediriger l'utilisateur qui va à  la racine vers un répertoire "ouvert".
(RedirectPermanent /var/www/ http://monsite/dir/dir/)
- faire des redirections pour les erreurs 401, 403, 404... vers des pages personnalisées également "ouvertes".
(ErrorDocument 401 /var/www/dir/erreurs/401.html)

J'ai essayé de les inclure entre les balises <Directory /> sans succès, puis j'ai tenté de mettre un .htaccess à  la racine, ce qui fait planter le serveur. Aurais tu une idée sur la question ?

Merci beaucoup,
Jk.

Dernière modification par Jokester (Le 05/02/2008, à 23:30)


http://www.votrelecture.info

Hors ligne

#6 Le 06/02/2008, à 12:20

ReWinD

Re : [Résolu] Restreindre accès Apache

Ok

Pour la redirection, tu peux y aller simplement avec un la directive RedirectMatch, ex :

<Directory /var/www>
             RedirectMatch ^/$ /dir/
</Directory>

Dans cet exemple, tout ce qui pointe sur la racine de ton /var/www va être redirigé automatiquement sur /dir

Pour ton .htaccess, je vois pas vraiment. Est-ce que le fichier contient quelque chose ?

Hors ligne

#7 Le 09/02/2008, à 14:26

Jokester

Re : [Résolu] Restreindre accès Apache

J'ai enlevé les fichiers .htaccess, effectivement ils ne servent plus à  grand chose !
Merci pour ce redirectmatch, ça marche impeccable.
Dans un premier temps je ne vais pas m'embêter à  personnaliser les messages d'erreur d'apache, tout est bon.

Je met à  jour le sujet comme résolu, un grand merci pour ton aide !
Jk.


http://www.votrelecture.info

Hors ligne

#8 Le 11/02/2008, à 11:02

ReWinD

Re : [Résolu] Restreindre accès Apache

Pas de quoi !     

ça fait toujours plaisir de pouvoir partager ses maigres compétences !
(Quand ça marche) wink

Hors ligne