Discussion:
Blocage des visiteurs non autoriser par IP/HOSTNAME
(trop ancien pour répondre)
DEFFiCE
2007-08-20 07:31:14 UTC
Permalink
Bonjour à tous !
Je suis à la recherche d'un script si il existe déjà ou de la manière
à m'y prendre si il n'existe pas.
Je vous explique j'aimerais réaliser où avoir un script qui permet de
protéger mon site internet de mon entreprise.
Et pour ne pas laisser la sécurité à la légère, on n'est jamais assez
protéger des attaques internet j'aimerais que cette restriction ce
face sur base de l'ip/hostname des visiteurs.
C'est-à-dire que j'aimerais stocker dans ma base de donner des
hostnames et ip des personnes autoriser d'accès.
Par exemple avoir dans ma table pour
amarseille-251-1-13-243.w83-113.abo.wanadoo.fr (83.13.1.251) la valeur
en table amarseille-%.w83-113.abo.wanadoo.fr ou 83.13.%.% etc. afin de
géré les IP dynamique.
Et à partir de sa si le visiteur qui ce présente à une ip ou un host
qui correspond a aucune entrer en base lui afficher une erreur 404. Et
tout sa en prenant en compte que les IPs et hosts mise en base sont
avec un caractère joker ( % ).

Partant de cette idéologie, je pense que la procédure a faire est de
prendre IP et HOST du visiteur avec :
$ip = $_SERVER["REMOTE_ADDR"];
$hostname = gethostbyaddr($ip);
Ensuite, comparé avec ma table de host/ip avec une boucle.
Mais seulement la surviens mon problème ... comme les IP/HOST on des
caractères joker % comment procédé a un LIKE SQL à sens inverse ? Est-
il possible de faire sa ? Je ne pense pas... et vous ?

Alors si je réfléchis un peut plus je me demande si avec des
expressions régulier il n'aurait pas moyen ?

Sinon, insérer peut-être l'IP et hostname du visiteur temporairement
en base, faire une boucle avec la table host, et faire un like sur la
colonne temporaire ip/host du visiteurs.. et si une retourne une
valeur autoriser l'accès, et au bout de la boucle si aucune valeur a
été retourné faire une erreur 404
Sa me semble compliquer et très farfelue ... donnez moi votre avis,
votre aide, votre expérience...
Merci, je m'excuse pour l'orthographe, j'espère avoir été clair et
d'arrivr à mes fins très vite grâce à vous.
Jean-Francois Ortolo
2007-08-20 14:25:41 UTC
Permalink
Bonjour Monsieur

Votre serveur web est probablement un serveur Apache.

Donc, voir le fichier .htaccess qui va bien.

Très simple, pas de programmation mais édition à faire du fichier
.htaccess dans le répertoire racine et les sous-répertoires ( dites-moi
si je me trompe ) de votre site.

Bien à vous.

Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com
DEFFiCE
2007-08-20 17:46:37 UTC
Permalink
On 20 août, 16:25, Jean-Francois Ortolo
Post by Jean-Francois Ortolo
Bonjour Monsieur
Votre serveur web est probablement un serveur Apache.
=> En effet mon serveur est bien apache.
Post by Jean-Francois Ortolo
Donc, voir le fichier .htaccess qui va bien.
=> Le HT accès pourrait effectivement une solution que je n'avais pas
songé.
Post by Jean-Francois Ortolo
Très simple, pas de programmation mais édition à faire du fichier
.htaccess dans le répertoire racine et les sous-répertoires ( dites-moi
si je me trompe ) de votre site.
=>Le problème que je vois avec cette méthode c'est que je doit faire
en PHP un système qui édite tout les ht accès et reload apache à
chaque nouvelle entre ou suppression d'entrer. Une question me reste,
est-il possible d'utiliser des moitiés d'IP ou de hostname avec des
jokers dans les ht accès ? Parce je veux accepter par exemple toute
une partie d'une ranger d'IP X.X.X.* par exemple ou HOST*NAME. Étant
donner que l'IP de mes visiteurs « accepté » peut ne pas avoir une IP
fixe. Et la listes des hosts/ips accepter peuvent changer a tout
moment.
Post by Jean-Francois Ortolo
Bien à vous.
=>Je vous remercie de votre aide. Et espère plus ample informations
sur ce sujet. Bien à vous.
Post by Jean-Francois Ortolo
Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques
http://www.ortolojf-courses.com
John GALLET
2007-08-20 19:13:30 UTC
Permalink
Bonjour,
Post by DEFFiCE
Je suis à la recherche d'un script si il existe déjà ou de la manière
à m'y prendre si il n'existe pas.
Pas comme ça en tous cas.
Post by DEFFiCE
Je vous explique j'aimerais réaliser où avoir un script qui permet de
protéger mon site internet de mon entreprise.
Soit. intraet dirons nous plutôt.
Post by DEFFiCE
Et pour ne pas laisser la sécurité à la légère, on n'est jamais assez
protéger des attaques internet j'aimerais que cette restriction ce
face sur base de l'ip/hostname des visiteurs.
Ca commence mal pour trois raisons:
1) spoofer une IP c'est pas si dur que ça si on s'en donne un peu la peine
et selon le type d'attaque qu'on veut faire
2) comment aller vous garder vos listes à jour ?
3) personne dont le FAI utilise un proxy ne pourra se connecter. En
particulier le FAI AOL.
Post by DEFFiCE
C'est-à-dire que j'aimerais stocker dans ma base de donner des
hostnames et ip des personnes autoriser d'accès.
Admettons pour les IP statiques. Par définition en revanche, une IP
dynamique changera à chaque fois.
Post by DEFFiCE
Par exemple avoir dans ma table pour
amarseille-251-1-13-243.w83-113.abo.wanadoo.fr (83.13.1.251) la valeur
en table amarseille-%.w83-113.abo.wanadoo.fr ou 83.13.%.% etc. afin de
géré les IP dynamique.
Et donc ce n'est plus un filtre, c'est une passoire. Une fois que vous
aurez stocké les 200 ou 300 points d'accès des abonnés wanamou, ce sera
exactement comme %.%.%.%
Post by DEFFiCE
Partant de cette idéologie, je pense que la procédure a faire est de
$ip = $_SERVER["REMOTE_ADDR"];
Oui mais non. C'est fou ce qu'il y a d'ordinateurs qui ont 192.168.1.1
comme adresse IP vous savez.
Post by DEFFiCE
Sa me semble compliquer et très farfelue ... donnez moi votre avis,
votre aide, votre expérience...
On le répète depuis des années, toute tentative d'authentification par
adresse IP est vouée à l'échec. Personnellement j'adore une phrase de
Werber : "personne ne l'ayant prévenu que c'était impossible, il finit par
réussir". Mais comme maintenant je vous ai prévenu, c'est foutu :-)

Orientez vous carrément vers un vrai VPN chiffré ou éventuellement vers
des certificats clients, mais là je ne sais pas exactement jusqu'où c'est
fiable et utilisable. Voir plutôt du côté de fr.comp.securite pour avoir
les principes à appliquer.

HTH
JG
Denis Beauregard
2007-08-22 09:09:10 UTC
Permalink
Post by DEFFiCE
Bonjour à tous !
Je suis à la recherche d'un script si il existe déjà ou de la manière
à m'y prendre si il n'existe pas.
Je vous explique j'aimerais réaliser où avoir un script qui permet de
protéger mon site internet de mon entreprise.
Pourquoi pas un simple mot de passe et le fichier .htaccess qui
est fait dans ce but ? Techniquement, on pourrait placer ce
fichier dans les dossiers dont l'accès est limité et tous
pointeraient vers un fichier unique avec les mots de passe des
usagers autorisés.

En PHP, j'ai adopté une solution similaire. Le visiteur démarre une
session lors qu'il arrive au site, saisit son code d'usager et son mot
de passe. Ceci a pour effet à la fois de noter dans la session qu'il
a droit de visiter les pages privées et de remettre à zéro les
compteurs si on limite le nombre de pages vues par jour. De plus,
l'entrée est impossible sans mot de passe.

Ensuite, chaque page dont l'accès est restreint débute avec un même
include qui vérifie que la session est déjà lancée et que le visiteur
a le droit de voir la page.

Dans mon code, il y a un exit() si l'accès est refusé et la page est
d'une couleur différente, donc l'usager habitué voit rapidement qu'il
s'est déconnecté.

Pour des raisons de sécurité, il est préférable de faire soi-même le
code.

Pour les raisons expliquées par les autres, à moins d'utiliser un
intranet ou un extranet avec des adresses permises, il est impossible
d'avoir une sécurité acceptable avec l'IP et un FAI public.

Si vous avez un extranet (l'accès vient toujours d'un poste de la
même entreprise) et en se rappelant que le spoofing est possible,
le code serait en gros le suivant:

function testip () {
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip>='64.65.66.0' && $ip<='64.65.66.999') { return true; };
//accepter 64.65.66.0 à 64.65.66.255
//tenir compte des cas comme: 64.3 est plus grand que 64.21
return false;
}



Denis

Continuer la lecture sur narkive:
Loading...