script php securité

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : script php securité

Re: script php securité

par moogli » 21 déc. 2012, 15:41

je n'ai pas dit "fainéant ", simple d'utiliser une ressource faite pour.

Maintenant une expressionr égulière c'est un masque, il faut que tu sache comment trouver ce que tu souhaite "à la main" dans le fichier, ensuite tu fait l'expression régulière.

D'ailleurs ça ressemble à ta fonction BloquerSrcAttaque....

Re: script php securité

par Invité » 21 déc. 2012, 08:26

au cas où tu ne l'aurais pas remarqué c'est phpfrance pas pearlfrance ;)
je sais mais le perl reste tres proche du PHP

je suppose que tu souhaite, à l'aide d'expression régulière, pouvoir détecter un scan de port ?
oui :
- comment sais tu qu'il y a eu un scan de port (toi quand tu regarde les logs à la main ?)
il faut que je le détecte dans un fichier log avec le script

Tu semble en formation, c'est le moment ou jamais de DEMANDER à ton prof ce que tu ne sais pas faire il est la pour cela.

si je suis sur le forum, tu penses bien que l'on n'a pas assez d'heures de formations, il n'y a pas que des fainéant qui viennent sur les forum ! j'ai passé l'age.

Re: script php securité

par moogli » 19 déc. 2012, 17:48

salut,

au cas où tu ne l'aurais pas remarqué c'est phpfrance pas pearlfrance ;)
faille dans java...
tu ne parle de java nul part je vois pas ce que tu veux dire par la.


scripter la détection d'une expression régulière de scan de port ? O_o

c'est pas clair.
je suppose que tu souhaite, à l'aide d'expression régulière, pouvoir détecter un scan de port ?

si oui :
- comment sais tu qu'il y a eu un scan de port (toi quand tu regarde les logs à la main ?)
- quand tu sais tu peux le mettre par écrite et créer le masque de l'expression régulière.

dernière chose.
Tu semble en formation, c'est le moment ou jamais de DEMANDER à ton prof ce que tu ne sais pas faire il est la pour cela.

@+

Re: script php securité

par cruzy83 » 19 déc. 2012, 09:09

je reviens vers vous après avoir un peu galéré, on l'a fait a plusieurs mais le prof le veut sous perl de ce que je vois c'est très proche du php.

Nous avons mis en place des VM (Virtualbox) un client (sous Ubuntu) un WEB-server (Ubuntu) ou j'ai mis le script et parfeu (IPtable)

Enfin pour le dernier TP nous avons mis en place "metasploit" sur le client et nous avons fait un scan de port vers le serveur personne ne sais faire dans la classe.....

et je dois scripter la détection d'une expression régulière de scan de port et là je ne sais pas le faire
faille dans java...

je vous mets le script :

Code : Tout sélectionner

#!/usr/bin/perl -w use Time::Local; #Tableau de date my %Tdate=("Jan"=>0,"Feb"=>1,"Mar"=>2,"Apr"=>3,"May"=>4,"Jun"=>5, "Jul"=>6,"Aug"=>7,"Sep"=>8,"Oct"=>9,"Nov"=>10,"Dec"=>11); ############################ DECLARATION DES VARIABLES ########################### $compt_ligne_second=0; #déclaration variable Cmpt ligne second $num_ligne=0;#déclaration variable num_ligne @liste_ip_bloquee=(); #déclaration tableau vide (@) $date_new=0; ##déclaration date new $date_old=0; #déclaration date old $seuil_log_alert=200; #déclaration d'un Seuil d'alerte du log à partir de 200 lignes $seuil_log_defense=200; #déclaration d'une reaction du log à partir de 200 lignes $resultat=""; #déclaration variable scalaire et affectation à vide @interdit_jours=(0,6); #jours où il ne doit pas y avoir de l'activité @interdit_heures=(21,22,23,0,1,2,3,4,5,6); # heures où il ne doit pas y avoir de l'activité ############################ DECLARATION DES FONCTIONS ############################ sub DateLogToTimestamp{ #FONCTION qui recupere la date et l'affiche my ($Sdate)=@_; # crée une variable de type tableau my $M=substr($Sdate,0,3); my $D=substr($Sdate,4,2); my $h=substr($Sdate,7,2); my $m=substr($Sdate,10,2); my $s=substr($Sdate,13,2); $date_new=timelocal($s,$m,$h,$D,$Tdate{$M},2012); #formate la date sous la forme seconde/minutes/Heures/... } sub VerifOrderDate{ #verifie que la date new est plus recente que la date old if($date_new<$date_old){# si date_new inférieur à date_old, on affiche : erreur $resultat.="\n!!erreur chronologie date ligne ".$num_ligne; } } sub BloquerSrcAttaque{ #Blocage d'une attaque if($ligne=~ /SRC=(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/){ #Recherche de l'adresse IP SRC my $ip=$1.".".$2.".".$3.".".$4; #Recuperer les blocs de adresse if(!grep {$ip} @liste_ip_bloquee)#Verifie si l'IP a deja ete bloque { unshift(@liste_ip_bloquee,$ip); $resultat.= "\nIP DROPEE:".$ip; system "iptables -A INPUT -s ".$ip." -j DROP"; #Ajout d'une ligne au parefeu } } } #compte le nombre log par second et suivant 1 seuil, alerte d'un problème et d'un autre, bloque l'adresse IP SRC sub VerifierMoyenneLog{ if($date_new==$date_old){ $compt_ligne_second++;#on incrémente le compteur de lignes }else{ $compt_ligne_second=0; } if($compt_ligne_second>$seuil_log_alert){ $resultat.="!!genration de log important ".$compt_ligne_second." la second a: ".$num_ligne."\n"; if($compt_ligne_second>$seuil_log_defense){ BloquerSrcAttaque(); #on appelle la fonction de blocage d'attaque. } } } #alerte en cas de connexion à des heures interdites sub VerifierPlageConnexion{ my ($s,$m,$h,$j,$M,$A,$j_se,$j_an,$h_hiver)=localtime($date_new); #Verification des jours de connexion if(grep {$j_se} @interdit_jours){ $resultat.="\nconnexion jour interdit ligne: ".$num_ligne; } if(grep {$h} @interdit_heures){#Verification des heures de connexion $resultat.="\nconnexion heure ligne: ".$num_ligne; } } #########################################- Début du script principal -######################################## #ouverture du fichier de log open(file_log,"/var/log/syslog") or die ("impossible d'ouvrir le fichier"); #parcour du fichier while(defined($ligne=<file_log>)){ $num_ligne++; #supprimer le retour à la ligne en fin de ligne chomp $ligne; DateLogToTimestamp($ligne);#recuperation de la date en timestamp my @mots=split(/ /,$ligne);#decoupage de ligne VerifOrderDate($ligne);#Verifie que le evenement sont bien dans l'ordre chonologique VerifierMoyenneLog();#alerte si le nombre de log genere ne depasse pas une limite VerifierPlageConnexion();#repère les connexion hors plage horaire/journalière $date_old=$date_new;#à la fin de la ligne, affecte à $date_old la valeur de $date_new } #########################################- Affichage du résultat -######################################### print $resultat;
merci d'avance

Re: script php securité

par DocType » 04 déc. 2012, 02:43

1- analyse du fichier log (sans réanalyser ce qui a déjà été scanné)
Lors de la lecture d'un fichier via php, tu peux par exemple trouver une fonction pour retourner la position actuelle dans le fichier. Ça existe en natif, je te laisse trouver ces fonctions ;)
2- détecter un scan de port (là je vois pas du tout...)
De mon côté, je m'en fiche de savoir comment détecter un scan de port. Je sais qu'avant tout je vais devoir traiter les données de ce fichier et les rendre lisibles en php (parser le fichier). Une fois ceci fait, il me restera à trouver une solution pour sélectionner les données utiles, via un patron de recherche par exemple. Comme ça, si un jour on veut compter le nombre de 0 présents dans l'adresse ip de chaque entrée, ou seulement où il y a un "z" sur la ligne, le traitement du fichier ne change pas, seul le(s) filtre(s) changent.
3- mise a jour de iptable (Blacklist) faut il mette a jour iptable avec le script ou est ce que la blacklist est elle indépendante ?
C'est à toi de le définir. Je t'ai apporté un nom dans mon précédent message. Si tu le tapes dans Google, tu trouveras facilement a solution à cette problématique.
4- re-scanner le fichier log de temps en temps (régulièrement) et vérifier qu'il a été modifié
C'est le plus gros du travail, le reste c'est très léger. Comment il faut fonctionner ? Toutes les minutes on lance le script ? On lance seulement le traitement si le fichier a été modifié ? Y a t'il des solutions pour cela ? Et s'il n'y en a pas, et que mon log fait 600Mo, je dois à chaque fois tout relire ?

Re: script php securité

par moogli » 03 déc. 2012, 22:48

salut,


a première vue je te dirais simplement que php ne semble pas être le langage le plus adapté a ce que tu souhaite faire, même si des taches système sont réalisable.

la première chose à faire est de voir comment ton script va fonctionner
- crontab : le script est exécuté en fonction de l'entrée de la crontab
- Un démon, au quel cas il te voir en quoi cela consiste est comment le faire.

Pour le dernier accès au fichier fileatime

Pour la lecture de la partie non traitée tu peux imaginer un système a partir de la taille du fichier par exemple (en stockant la taille de la dernière lecture etc etc).

pour ce qui est d'iptable, je pense que tu es le plus à même de l'utiliser ;)


@+

Re: script php securité

par cruzy83 » 03 déc. 2012, 16:32

déjà merci de ton aide ça me permet de mieux cerner le problème.

1- analyse du fichier log (sans réanalyser ce qui a déjà été scanné)
2- détecter un scan de port (là je vois pas du tout...)
3- mise a jour de iptable (Blacklist) faut il mette a jour iptable avec le script ou est ce que la blacklist est elle indépendante ?
4- re-scanner le fichier log de temps en temps (régulièrement) et vérifier qu'il a été modifié

Re: script php securité

par DocType » 03 déc. 2012, 15:41

Décompose ta problématique ;)

Ton fichier de log, il faut trouver le moyen de le lire, et de ne pas revenir sur ce qui a déjà été vérifié. Ça, c'est déjà un premier point assez important.
Ensuite, il te faut trouver la solution pour mettre à jour iptable. Pour cela, il faut regarder du côté des BLOCK LIST.
Enfin, il faut scanner de temps à autre le fichier de log. Mais comment vérifier qu'il a été modifié depuis sa dernière lecture ? Ça ne sert à rien de le re-scanner si ça a déjà été le cas ;)

script php securité

par cruzy83 » 03 déc. 2012, 15:18

bonjour

besoin d'aide débutant
je suis actuellement en licence réseau et télécommunication et je n'ai jamais fait de PHP et j'ai un sujet a traiter:

"réaliser un script en PHP permettant de parcourir régulièrement un fichier de log au format syslog et de détecter un scan de port, ainsi que des requêtes qui seront écrite dans un fichier de configuration et basé sur les expressions régulières.
En fonction de l'attaque, le script devra être en mesure de bloquer l'attaque au niveau du pare-feu"

en cours nous avons mis en place des VM (Virtualbox) un client (sous Ubuntu) un WEB-server (Ubuntu) et un fichier de Log (Ubuntu) et un parfeu (IPtable)

j'aimerais que quelqu'un qui s'y connais me guide, parce que là je suis perdu.

de ce que je comprends le script doit être mis sur le par-feu (iptable), il faut le rendre exécutable et qu'il se lance au démarrage.
il doit analyser les fichiers logs. mais où ca se complique c'est qu'il doit reagir en fonction

au secours....