Not logged in. · Lost password · Register
Forum: Non-English Discussion French discussion RSS
[SECURITE] [PLUG-IN LOGBADLOGIN] Journaliser les erreurs d'authentifications
Avatar
wild-dagger #1
Member since Feb 2014 · 33 posts · Location: France
Group memberships: Members
Show profile · Link to this post
Subject: [SECURITE] [PLUG-IN LOGBADLOGIN] Journaliser les erreurs d'authentifications
Bonsoir,

Je ne sais pas si celà existe mais je recherche une solution pour journaliser les erreurs d'authentifications de mon dokuwiki fermé dans le but de le faire surveiller par 'fail2ban'.

J'ai vu un très beau plugin : Login/Logoff Logging Plugin mais il n'affiche/journalise que les (dé)/connexions réussites.

L'inverse existe t-il ? (les connexions non réussites)
This post was edited on 2016-04-15, 02:19 by wild-dagger.
Avatar
schplurtz (Moderator) #2
Member since Nov 2009 · 187 posts · Location: France, Finistère
Group memberships: Global Moderators, Members
Show profile · Link to this post
Subject: une piste
Bonsoir,

Viens juste de voir ce message...

Il y a bien ce vieux fil, mais
il est vieux, justement, sans doute trop pour fonctionner sur un DokuWiki moderne.

Sinon, comme l'idée de fail2ban me plait pour DokuWiki.
En trois minutes j'ai fait une amorce de plugin qui logue les login infructueux.
C'est pas très beau, ça logue dans /tmp/pouet.log, mais le principe est là.

Si tu parles un peu PHP, tu pourras sans problème modifier ce machin...
Sinon, désolé, mais là j'ai pas le temps de faire plus.

à dézipper dans lib/plugins. À la fin, il doit y avoir un dossier lib/plugins/logbadlogin

Bonnes vacances à ceux qui en prennent.

/Schplurtz.
http://schplurtz.free.fr/wiki/
The author has attached one file to this post:
logbadlogin.zip 1.8 kBytes
You have no permission to open this file.
Avatar
wild-dagger #3
Member since Feb 2014 · 33 posts · Location: France
Group memberships: Members
Show profile · Link to this post
Salut schplurtz,

Qu'est-ce que ça doit être quand tu prends plus de 5 minutes ! (j'espère que tu vas bien au passage :) )

Je me suis permis de modifier la ligne 75 car mon httpd n'a aucun droit d'écriture dans l'OS.

  1. file_put_contents( 'data/cache/totoestenvacance.log', date('c') . " Bad login from {$_SERVER['REMOTE_ADDR']} 404 user '" . $INPUT->str('u') . "' Password '" . $INPUT->str('p') . "'\n", FILE_APPEND | LOCK_EX);

GROS MERCI Schplurtz ! C'est noël avant l'heure. :)

Petite question de débutant : est-il possible d'écrire un plugin de manière à inclure le journal dans un dokuwiki (pas en partie admin) ? ou bien faut il forcement activer le PHP dans le dokuwiki et dédier une page en écrivant le code dedant ? (je ne sais pas si j'ai été clair)
This post was edited 2 times, last on 2015-12-23, 14:20 by wild-dagger.
Avatar
schplurtz (Moderator) #4
Member since Nov 2009 · 187 posts · Location: France, Finistère
Group memberships: Global Moderators, Members
Show profile · Link to this post
Bonjour,

Quote by wild-dagger on 2015-12-22, 00:41:
Qu'est-ce que ça doit être quand tu prends plus de 5 minutes ! (j'espère que tu vas bien au passage :) )
Oui je vais bien, merci. Et toi ?. Le seul problème est que je suis visiblement reconnu
mais que je ne sais par qui. shame on me, mon cerveau défaillant et ma mémoire de poisson rouge ;-)

Quote by wild-dagger on 2015-12-22, 00:41:
Je me suis permis de modifier la ligne 75 car mon httpd n'a aucun droit d'écriture dans l'OS.
Oui, oui. C'était bien l'intention. Je retiens l'option LOCK_EX. Si j'ai le temps, et si j'ai bien utilisé la bonne méthode,
alors, je compléterai peut-être un jour ce greffon... ou pas.

Quote by wild-dagger on 2015-12-22, 00:41:
Petite question de débutant : est-il possible d'écrire un plugin de manière à inclure le journal dans un dokuwiki (pas en partie admin) ? ou bien faut il forcement activer le PHP dans le dokuwiki et dédier une page en écrivant le code dedant ? (je ne sais pas si j'ai été clair)
Heu ben... tu veux dire ajouter les informations du journal dans
une page du wiki au fur et  mesure... Hum je vois pas vraiment
comment on pourrait faire simplement. Par contre pourquoi ne
pas utiliser l'extension source qui permet d'afficher dans une page
un fichier texte quelconque;  aux restrictions imposées dans php.ini
par la directive open_basedir près. Mais dans ton cas précis, il est
clair que tu pourras relire un fichier que tu as écris.

Il y a aussi l'extension phpwikify. Elle est très vieille, mais il me semble
qu'elle fonctionne toujours. Dans ce cas tu pourrais écrire dans une page
un truc de ce genre:
  1. ~~NOCACHE~~
  2. <phpwikify>
  3. if( '' != $_SERVER['REMOTE_USER'] ) {
  4.  echo "<code txt journal.txt>\n";
  5.  echo file_get_contents( 'data/cache/totoestenvacance.log' );
  6.  echo "</code>\n";
  7. }
  8. </phpwikify>

Bon, avec tout ça, je virerais tout de même les username et passwords du
journal (d'ailleurs c'était peut-être pas une bonne idée à la base)
même si les ACL de la page en question seront ajustées.

/Schplurtz
en vacances dans une heure.
http://schplurtz.free.fr/wiki/
Avatar
wild-dagger #5
Member since Feb 2014 · 33 posts · Location: France
Group memberships: Members
Show profile · Link to this post
Quote by schplurtz on 2015-12-23, 09:35:
Hum je vois pas vraiment comment on pourrait faire simplement.

Bonjour schplurtz,

Effectivement faire simplement n'est pas possible . La solution d'utiliser des plugins pour inclure du PHP  est "intéressante" mais pour ma part je ne suis pas près d'autoriser le php au sein des pages de mon Dokuwiki (tout comme le HTML).

J'ai vu que Dokuwiki possédait ses propres variables d'environnement.

Une qui m’intéresse énormément est :

<code php>
DOKU_BASE
</code>

Très pratique, saurais tu comment connaître de manière formelle le chemin (path) du dossier initial ''/data/'' (nom qui peut être changé si j'ai bien compris). Existe t-il une variable interne ou bien faut-il lire impérativement le fichier de configuration ? Cela permettrait d’enregistrer coté 'client' le fichier en utilisant la syntaxe interne dokuwiki, et il ne resterait plus qu'à jouer avec les ACL pour autoriser ou non sa lecture sans passer par le coté 'admin'.

Autre option, enregistrer le fichier au sein du dossier du plug-in (en toute simplicité ^_^) mais il faudra sans doute s'assurer :
- que le dossier n'est pas accessible directement depuis le web (cf. protection dokuwiki)
- des droits d'écritures du serveur de pages web dans le dossier plug-in


En ce qui concerne d'enregistrer le nom d'utilisateur et le mauvais mot de passe dans ton plug-in ca laisse des possibilités comme :

- avertir (ou pas) l'utilisateur de changer son mot de passe dans les meilleurs délais suite à de nombreuses tentatives de connexions infructueuses.
- déclasser le compte utilisateur au niveau des ACL
- analyser les mauvais mots de passe
- etc ...

Ça laisse rêveur :D


Wild
Avatar
wild-dagger #6
Member since Feb 2014 · 33 posts · Location: France
Group memberships: Members
Show profile · Link to this post
In reply to post #4
Quote by schplurtz on 2015-12-23, 09:35:
...
Si j'ai le temps, et si j'ai bien utilisé la bonne méthode,
alors, je compléterai peut-être un jour ce greffon... ou pas.
...

2017-04-14 23:32:28: * : PHP message: PHP Warning:  Declaration of action_plugin_logbadlogin::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in http/lib/plugins/logbadlogin/action.php on line 78

Bonjour schplurtz,

Je ne sais pas si tu repasseras par là mais mais mes journaux débordent de ce genre de message.

Une idée ?

Cordialement

Wild
Avatar
wild-dagger #7
Member since Feb 2014 · 33 posts · Location: France
Group memberships: Members
Show profile · Link to this post
Inspiré du correctif du plugin-tag (https://github.com/dokufreaks/plugin-tag/commit/f6f51477b8…)


Fichier action.php

Ligne 52 :
Remplacement de :
function register(&$controller)
par
function register(Doku_Event_Handler $controller)

Ligne 64 :
Remplacement de :
function handle_act_preprocess($event, $param)
par
function handle_act_preprocess(Doku_Event $event, $param)


Normalement tout redevient dans l'ordre avec ce fameux "Doku_Event_Handler" et "Doku_Event", et finalement lire les messages d'erreur ca aide  :-D

Je n'ai plus de messages d'erreurs dans mes journaux.
Avatar
schplurtz (Moderator) #8
Member since Nov 2009 · 187 posts · Location: France, Finistère
Group memberships: Global Moderators, Members
Show profile · Link to this post
Subject: il est passé par ici, il repassera par là...
Bonjour bonjour.

Apparement, je suis passé trop tard. Enfin tu as réussi à t'en sortir et c'est là l'essentiel. Merci d'avoir posté la solution et au passage confirmé que ce bout de code fonctionne toujours.

/Schplurtz
http://schplurtz.free.fr/wiki/
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Imprint
This board is powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2015 by Yves Goergen
Current time: 2017-09-20, 11:31:01 (UTC +02:00)