Plugin d'authentification RADIUS pour Claroline
Auteur : DJ ZiO
Ajouté : 2010-05-03 00:00:00

Salut à tous,

dans le cadre de mon stage j'ai été ammené à travailler avec la plateforme Claroline et l'authentification Radius.
Il se trouve qu'il existe pas mal de drivers pour authentifier Claroline mais aucun ne parle du radius...

Ces drivers étants basés sur l'extension pear pour php, j'ai décidé de m'y mettre et de coder mon propre driver.

Voici donc la marche à suivre et le code du driver commenté.

J'èspère que cela vous aidera.

Installer pear ci ce n'est déja fait et l'authentification radius pour php

aptitude install php5-dev php5-auth-pam php5-radius php-pear
pear install radius Auth_RADIUS

Redémarrer apache2

/etc/init.d/apache2 restart

Créer le fichier $CLAROLINE_PATH/platform/conf/extauth/radius.conf.php et y coller le code suivant :

<?php
/**
 * RADIUS authentication driver
 *
 * @version     1.0
 * @copyright   2009-2010 DJ ZiO
 * @author      Lorenzo Bernardi <zio@djzio.be>
 * @license     http://www.gnu.org/copyleft/gpl.html
 *              GNU GENERAL PUBLIC LICENSE version 2 or later
 * @package     CLAUTH
 *
 */

if(count(get_included_files())==1)
    {
    die('The file '.basename(__FILE__).' cannot be accessed directly, use include instead');
    }

$driverConfig['driver'] = array(
    'enabled' => true, // set to false to disable the driver
    // Ne pas modifier ce qui suit
    'class' => 'PearAuthDriver',
    'authSourceType' => 'RADIUS',
    'authSourceName' => 'radius',
    // Fin de l'interdiction
    // Autorise le driver à créer l'utilisateur dans claroline si il n'existe pas encore
    'userRegistrationAllowed' => true,
    // Autorise le driver à mettre à jour l'utilisateur dans claroline
    'userUpdateAllowed' => false
    );

/**
 * Configuration du driver
 * -----------------------
 * Il faut ajouter les serveurs dans un array.
 *
 * Exemple:
 *    'servers' => array(
 *         array($hostname_srv1,$port_srv1,$secret_srv1,$timeout_srv1,$maxretries_srv1),
 *         array($hostname_srv2,$port_srv2,$secret_srv2,$timeout_srv2,$maxretries_srv2)
 *        ),
 *    'authtype' => 'PAP'
 *
 * /!\\ Remarque /!\\
 * ----------------
 * Si on ne met qu'un serveur , il est quand même nécessaire de le mettre dans un array.
 *
 * Exemple:
 *    'servers' => array(
 *         array($hostname_srv1,$port_srv1,$secret_srv1,$timeout_srv1,$maxretries_srv1)
 *        ),
 *    'authtype' => 'PAP'
 *
 * Pour plus d'infos sur la configuration du driver :
 * http://pear.php.net/manual/en/package.authentication.auth.storage.radius.php
 *
 */

$driverConfig['extAuthOptionList'] = array(
    'servers' => array(array('192.168.80.58',1812,'testing123',3,3)),
    'authtype' => 'PAP'  
);

$driverConfig['extAuthAttribNameList'] = array();

$driverConfig['extAuthAttribTreatmentList'] = array ();

$driverConfig['extAuthAttribToIgnore'] = array();
?>

N'oubliez pas de modifier la configuration des serveurs pour votre environnement!

À bientôt!

ZiO

Se protéger des DDoS avec TARPIT
Auteur : DJ ZiO
Ajouté : 2010-03-06 21:48:05

Il n'y a pas longtemps, j'ai découvert une nouvelle règle pour iptables.

Son nom est TARPIT.
Cette règle envoi un signal au pc qui nous attaque afin de lui dire de mettre sa connexion en attente d'un paquet venant de nous avant d'en renvoyer un autre.
Dans le cas d'un DDoS, il nous suffirait d'utiliser cette règle suivie de la règle DROP afin de contrer efficacement ce genres d'attaques.
En effet, si nous ne renvoyons pas de paquet au client, il attendra indéfiniment.

Mais que se passerait-il si le client nous renvoi d'autres requêtes?

Et bien c'est simple, les nouvelles requêtes seront elles aussi en attente au niveau du client et c'est sa propre connexion qui s'en verrait ralentie!

Efficace non?

Assez parlé, rentrons dans le vif du sujet!

Pour mettre en place cette règle, nous avons besoin de recompiler iptables dans notre kernel.

Pour Debian Lenny

On va donc commencer par récupérer les paquets xtables-addons-* qui contiennent toutes des règles en plus des règles de base d'iptables

aptitude install iptables-dev pkg-config debhelper module-assistant
wget http://ftp.de.debian.org/debian/pool/main/x/xtables-addons/xtables-addons-source_1.22-1_all.deb
wget http://ftp.de.debian.org/debian/pool/main/x/xtables-addons/xtables-addons-common_1.22-1_i386.deb
wget http://ftp.de.debian.org/debian/pool/main/i/iptables/iptables-dev_1.4.6-2_i386.deb
wget http://ftp.de.debian.org/debian/pool/main/i/iptables/iptables_1.4.6-2_i386.deb

On les installe

dpkg -i iptables_1.4.6-2_i386.deb
dpkg -i iptables-dev_1.4.6-2_i386.deb
dpkg -i xtables-addons-source_1.22-1_all.deb
dpkg -i xtables-addons-common_1.22-1_i386.deb

Pour Debian Squeeze

On installe les paquets suivants

 aptitude install xtables-addons-common xtables-addons-source

Pour les 2

Et on installe le module dans le kernel

module-assistant auto-install xtables-addons-source

Et voilà!

On a normalement maintenant la possibilité d'utiliser la règle "TARPIT" tout comme les autres règles utilisées par habituellement dans iptables.
Exemple: 

iptables -A INPUT -p tcp --dport 25 -j TARPIT

Il y a plein d'autres règles, utiles ou pas, installées en même temps que TARPIT, je vous conseille d'aller faire un tour dans la man de xtables-addons:

man xtables-addons

ZiO

PS: Pour Ubuntu Karmic, la méthode à utiliser est la même que pour Debian Lenny

Sources

http://www.wikigento.com/securite/tarpit-iptables-les-armes-fatales-anti-ddos/

http://packages.debian.org/squeeze/i386/xtables-addons-common/download

Passage du blog en version beta
Auteur : DJ ZiO
Ajouté : 2010-03-06 14:52:25

Comme vous pouvez le constater, mon blog commence enfin à ressembler à quelque chose de correct.

J'ai donc décidé de le mettre en ligne et le passer en version de test.

Vous pouvez m'envoyer un mail pour me donner votre avis ou si vous avez des idées afin de l'améliorer...

A bientôt!

ZiO

Installation de Xen sur un dom0 et un domU Debian Lenny (amd64)
Auteur : DJ ZiO
Ajouté : 2010-03-06 14:35:32

Pré-requis : Avoir installé une Debian de base (aucune option cochée à l’installation)

Domaine : djzio.be
Nom d’hote : xen

Configuration des partitions

/dev/sda1   /boot       100MB
/dev/sda2   /           4GB
/dev/sda3   /vm         13.1GB

/etc/network/interfaces :

# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
broadcast 192.168.0.255

Booter sur la debian.

Toutes les opérations suivantes sont à effectuer en tant que root, sauf mention contraire.

Installer les parquets suivants :

aptitude install ssh vim xen-linux-system-2.6.26-2-xen-amd64 libc6-dev bridge-utils xen-tools

Redémarrer ensuite la machine sur le kernel Xen fraichement installé

reboot

Editer ensuite /etc/xen/xend-config.sxp

vi /etc/xen/xend-config.sxp

Commenter

# (network-script network-dummy)

Décommenter

(network-script network-bridge)

Et ensuite redémarrer le daemon Xen :

/etc/init.d/xend restart

Modifier le fichier /etc/xen-tools/xen-tools.conf pour utiliser le kernel xen dans les domU

#
# Default kernel and ramdisk to use for the virtual servers
#
kernel = /boot/vmlinuz-2.6.26-2-xen-amd64
initrd = /boot/initrd.img-2.6.26-2-xen-amd64

Lister les kernel disponibles (j’utiliserai ici ceux en rouge):

xen:~# ls -l /boot/vmlinuz*
-rw-r–r– 1 root root 1755664 oct 19 06:44 /boot/vmlinuz-2.6.26-2-amd64
-rw-r–r– 1 root root 1705291 oct 19 06:50 /boot/vmlinuz-2.6.26-2-xen-amd64
xen:~# ls -l /boot/initrd*
-rw-r–r– 1 root root 6659969 oct 25 12:11 /boot/initrd.img-2.6.26-2-amd64
-rw-r–r– 1 root root 6678334 oct 25 12:27 /boot/initrd.img-2.6.26-2-xen-amd64

Vous pouvez également modifier les options de création automatique dans ce fichier :

#
##
#  Disk and Sizing options.
##
#
size   = 4Gb      # Disk image size.
memory = 128Mb    # Memory size
swap   = 128Mb    # Swap size
# noswap = 1      # Don’t use swap at all for the new system.
fs     = ext3     # use the EXT3 filesystem for the disk image.
dist   = lenny    # Default distribution to install.
image  = sparse   # Specify sparse vs. full disk images.

Mes domU seront stockés dans la partition /vm ; Je modifie donc cette option dans le fichier :

dir = /vm

Je crée ensuite le dossier où Xen va stocker les images :

mkdir /vm/domains

Je peux maintenant créer ma 1ère machine virtuelle :

xen-create-image -hostname=www -ip=192.168.0.101 -netmask=255.255.255.0 -gateway=192.168.0.1 -passwd –arch amd64


(Ca peut prendre du temps vu que l’installation se fait via « debootstrap » (internet) donc pas de panique)

Il faut ensuite ajouter manuellement au fichier /etc/xen/www.cfg :

extra = "xencons=tty”

Vous pouvez maintenant lancer votre domU :

xm create www.cfg

Avec la commande xentop vous pouvez voir en temps réel le statut de vos VM ; vous pouvez aussi lister simplement vos VM avec xm list :

Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   864     2     r—–     33.7
www                                          1   128     1     -b—-      4.4

Pour accéder en console à votre domU tapez xm  console www ; vous avez maintenant l’écran de login devant vous :

Debian GNU/Linux 5.0 www tty1
www login:

Dans Putty Ctrl + 5 pour quitter le shell domU.

Vous pouvez dès à présent utiliser votre domU comme bon vous semble !

Je vous conseille d’installer SSH en premier lieu et d’administrer votre machine via un client SSH.

Pour pouvoir se connecter correctement au SSH, vous devez créer le dossier /dev/pts et ajouter une ligne dans /etc/fstab:

mkdir /dev/pts
vi /etc/fstab

Ligne à ajouter à la fin :

none /dev/pts devpts gid=5,mode=620 0 0

Pour finir :

mount -a

Vous devriez maintenant avoir accès en SSH à votre serveur domU

J’espère que ce tuto vous aura servi…

A+

ZiO

Utiliser les ipv6 OVH via VPN
Auteur : DJ ZiO
Ajouté : 2010-03-05 14:30:00

Nous alons aujourd’hui voir comment utiliser les 264 ipv6 disponibles sur un serveur ovh :-)

Pré-requis

Avoir installé et configuré un server openvpn en utilisant le TAP en non pas le TUN.

Une fois cela fait, il vous faut créer le script suivant :

#!/bin/sh
ifconfig eth0 inet6 add 2001:41d0:xxxx:yyyy::1/56
route -6 add default gw 2001:41d0:xxxx:yyff:ff:ff:ff:ff eth0
ifconfig tap1 inet6 add 2001:41d0:xxxx:yyyy:1::1/80
ifconfig eth0 promisc
ifconfig tap1 promisc
echo 1 >> /proc/sys/net/ipv6/conf/all/proxy_ndp
echo 1 >> /proc/sys/net/ipv6/conf/all/forwarding
ip -6 ro add 2001:41d0:xxxx:yyyy:1::1/80 dev tap1
# From VPN to World
ip -6 neigh add proxy 2001:41d0:xxxx:yyyy::1 dev tap1
# From World to VPN
ip -6 neigh add proxy 2001:41d0:xxxx:yyyy:1::1 dev eth0
ip -6 neigh add proxy 2001:41d0:xxxx:yyyy:1::2 dev eth0

Ce script est à lancer sur le serveur une fois le vpn connecté.

Le script suivant fonctionne uniquement pour un client linux et est également à lancer une fois le client connecté:

ifconfig tap0 inet6 add 2001:41d0:xxxx:yyyy:1::2/80 route -6 add default gw 2001:41d0:xxxx:yyyy:1::1

Voila, maintenant vous devez pouvoir pinguer ipv6.google.com

ZiO

PS: Attention car vous êtes aussi directement connecté à internet => utilisez “ip6tables” pour vous protéger