Loading ...
[Plus récent] [Plus ancien] [Meilleur rang] [Mauvais rang]

PCR Postit

Linux

::

fail2ban et pure-ftpd

[Trackback]
Date : 2008-10-02@20:04:07
Rang : 0

Pour ajouter pure-ftpd à la liste des filtres de fail2ban il faut ajouter le contenu suivant au fichier /etc/fail2ban/jail.conf en utilsant votre éditeur de texte préféré.

[pure-ftpd]

enabled = true

port = ftp,ftp-data,ftps,ftps-data

filter = pure-ftpd

logpath = /var/log/messages

maxretry = 3

Traduction : On active le filtre pure-ftpd qui va bannir sur les ports ftp,ftp-data,ftps,ftps-data les IP ayant éffectuer plus de trois tentatives infructueuses de login grace au log /var/log/messages.

On vérifie que le ficher /etc/fail2ban/filter.d/pure-ftpd.conf existe, si ce n'est pas le cas le crée et ajouter le contenu suivant (un grand merci à Cyril Jaquier et Yaroslav Halchenko pour leurs contributions).

# Fail2Ban configuration file

#

# Author: Cyril Jaquier

# Modified: Yaroslav Halchenko for pure-ftpd

#

# $Revision: 3$

#

[Definition]

# Error message specified in multiple languages

__errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur)

#

# Option: failregex

# Notes.: regex to match the password failures messages in the logfile. The

# host must be matched by a group named "host". The tag "<HOST>" can

# be used for standard IP/hostname matching and is only an alias for

# (?:::f{4,6}:)?(?P<host>\\\\\\\\S+)

# Values: TEXT

#

failregex = pure-ftpd(?:\\\\\\\\[\\\\\\\\d+\\\\\\\\])?: (.+?@<HOST>) \\\\\\\\[WARNING\\\\\\\\] %(__errmsg)s \\\\\\\\[.+\\\\\\\\]$

# Option: ignoreregex

# Notes.: regex to ignore. If this regex matches, the line is ignored.

# Values: TEXT

#

ignoreregex =

Et enfin on redemarre fail2ban

/etc/init.d/fail2ban restart

Il ne reste plus qu'à tester que cela fonctionne bien depuis une autre machine avec un login inéxistant.

petitchevalroux@home:~# tail -f /var/log/fail2ban.log

2008-10-02 19:45:59,816 fail2ban.jail : INFO Jail 'pure-ftpd' started

2008-10-02 19:46:00,836 fail2ban.actions: WARNING [pure-ftpd] Ban 192.168.X.Y

2008-10-02 19:56:00,852 fail2ban.actions: WARNING [pure-ftpd] Unban 192.168.X.Y

On voit bien dans ce log que la machine 192.168.X.Y est bannie puis libérée.

Linux

::

Modifier l'UID d'un utilisateur

[Trackback]
Date : 2008-10-01@19:43:36
Rang : 0

La commande :

usermod -u NEWUID username

permet de modifier l'identifiant utilisateur du user "username" comme le montre la suite de commandes suivante :

home:~#id petitchevalroux

uid=1001(petitchevalroux) (...)

home:~#usermod -u 1001 petitchevalroux

home:~#id petitchevalroux

uid=1001(petitchevalroux) (...)

PHP

::

Inverser les éléments d'un tableau avec ses clés

[Trackback]
Date : 2008-09-30@13:52:51
Rang : 0

La fonction PHP array_flip permet d'inverser les valeurs d'un tableau avec ses clés.

Par exemple un tableau

[0]=>"toto"

[1]=>"tata"

[2]=>"tila"

[3]=>"tequila"

sera transformer en :

["toto"]=>0

["tata"]=>1

["tila"]=>2

["tequila"]=>3

PHP

::

Benchmark lecture et ecriture dans un fichier

[Trackback]
Date : 2008-09-18@17:42:57
Rang : 0

$time = time() + microtime();
for ($i = 0; $i < 100000; $i ++)
{
        $handle = fopen($filename, 'r+');
        $str = fread($handle, filesize($filename));
        rewind($handle);
        ftruncate($handle,0);
        fwrite($handle, $string);
        fclose($handle);
}
var_dump(time() + microtime() - $time);
$time = time() + microtime();
for ($i = 0; $i < 100000; $i ++)
{
        $content = file_get_contents($filename);
        file_put_contents($filename,$content);
}
var_dump(time() + microtime() - $time);

Résultats :

float 10.173743963242
float 10.913619995117

Conclusion :

C'est bien plus rapide d'ouvrir un fichier en lecture écriture et que de faire une lecture puis une ecriture

Application directe :

Dans le cache de nos objets, nous projetons de sauvegarder nos disques en evitant de mettre en cache disque les objets n'ayant pas changer. Pour cela il faut bien comparer l'objet frai et l'objet caché et donc lire puis écrire le cache si celui ci a effectivement changer.

Javascript

::

charger dynamiquement un javascript

[Trackback]
Date : 2008-08-29@11:59:27
Rang : 0

Ce code permet de charger un javascript en javascript de manière dynamique dans la page.

var script = document.createElement('script');

script.type = 'text/javascript';

script.src = 'votre javascript à charger';

document.getElementsByTagName('head')[0].appendChild(script);

Cela permet par exemple de charger un javascript que lorsque vous en avez besoin.

Javascript

::

Recharger proprement une page

[Trackback]
Date : 2008-08-29@11:54:37
Rang : 0

Ce code javascript permet de recharger proprement une page une fois que celle ci est chargée.

window.onload = function(){window.location.reload();};

Cela évite de faire planter le navigateur lorsqu'un window.location.reload() est fait sur une page contenant un document.write().

Je n'ai pas réussi à isoler ce bug mais dans certains cas Firefox afficher tout simplement une page blanche en chargement lorsque j'utilise le window.location.reload() dans une page en cours de chargement (dans le head pour être plus précis).

Javascript

::

Rédiriger un navigateur depuis une iframe

[Trackback]
Date : 2008-08-29@11:46:40
Rang : 0

Ce code javascript permet de rediriger en pleine page un navigateur depuis une iframe.

Tester sous IE6,IE7 et Firefox 3

top.location.href = url;

Réseau

::

Vider le cache DNS sous Windows

[Trackback]
Date : 2008-08-27@12:13:53
Rang : 0

Pour vider le cache DNS de windows XP il faut faire :

Démarrer > Executer puis tapper cmd pour lancer la ligne de commande.

Ensuite il faut lancer la commande

ipconfig /flushdns

Linux

::

Recharger Alsa

[Trackback]
Date : 2008-08-20@10:45:37
Rang : 0

Pour recharger alsa de manière brutale quand vous n'avez plus de son il faut lancer la commande :

sudo alsa force-reload

Pour moi la commande :

sudo /etc/init.d/alsa-utils

Ne m'a jamais sortie du pétrin donc je content d'avoir trouver l'autre

PHP

::

Benchmark touch vs file_put_contents

[Trackback]
Date : 2008-05-28@14:54:59
Rang : 0

Dans la série question existentielle :

touch vs file_put_contents

le code de test :

<?php

$time = time() + microtime();

for ($i = 0 ; $i < 10000; $i++)

{

        file_put_contents('test.txt','www.deezer.com Tu peux te

        créer ta propre

        playlist en tinscrivant. Tu ne veux pas tinscrire? Pas gra

        ve, tu peux quand meme écouter de la musique.

        Simple dutilisation,

        lit toutes les musiques de

        la dernière recherche

        les unes après les autres.');

}

var_dump(time() + microtime() - $time);

$time = time() + microtime();

for ($i = 0 ; $i < 10000; $i++)

{

        touch('test.txt');

}

var_dump(time() + microtime() - $time);

?>

Les résultats :

file_put_contents 0.41347002983093

touch 0.071331977844238

Soit 6 fois plus rapide, l'application directe de ce test est que l'on évite l'écriture en cache d'un objet si celui ci n'a pas changer et on le revalide par un touch.

Pour vérifier que le cache n'a pas changer il faut bien sur lire le cache même quand il n'est plus valide.

Ce qui donne le code de bench suivant :

<?php

$time = time() + microtime();

for ($i = 0 ; $i < 10000; $i++)

{

        file_put_contents('test.txt','www.deezer.com Tu peux te

        créer ta propre

        playlist en tinscrivant. Tu ne veux pas tinscrire? Pas gra

        ve, tu peux quand meme écouter de la musique.

        Simple dutilisation,

        lit toutes les musiques de

        la dernière recherche

        les unes après les autres.');

}

var_dump(time() + microtime() - $time);

$time = time() + microtime();

for ($i = 0 ; $i < 10000; $i++)

{

        file_get_contents('test.txt');

        touch('test.txt');

}

var_dump(time() + microtime() - $time);

?>

Les résultats :

file_put_contents 0.51197385787964

touch + file_get_contents 0.3950469493866

Le gain est minime cette fois mais c'est toujours ça de pris :D