PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Fitzdsl Blog : Testez la logique de cache de votre Varnish avec varnishtest

mercredi 16 janvier 2013 à 10:30

J’ai récemment eu à tester de manière exhaustive une toute nouvelle configuration de varnish. Le but étant de faire une infrastructure de cache complètement pilotable via des Headers HTTP en reprennant le principe de ce que Yakaz avait présenté au Varnish User Group.

Varnishtest : qu’est-ce que c’est ?

Varnishtest est un (outils / framework de test) utilisé notamment par les dévelopeurs de varnish pour tester la non régression de leur reverse-proxy cache. Cet outils est vraiment puissant et permet de créer pleins de scénarios pour tester  le comportement de varnish en fonction d’un code VCL. Vous pouvez trouver l’ensemble des tests de varnish dans leur repo git:

$ git clone https://github.com/varnish/Varnish-Cache.git
$ cd Varnish-Cache/bin/varnishtest/tests/

Tous ces exemples vont vous permettre de comprendre le fonctionnement de varnishtest car malheureusement la documentation est très limitée pour le moment. Vous pouvez aussi vous reporter à cet article de blog qui est une bonne introduction.

 Que peut-on faire avec varnishtest

Avec varnishtest on peut (sans être exhaustif) :

Comment fait-on tout ça ?

Déclaration d’un backend :
server s1 {
        rxreq
        txresp -body "réponse 1"

        rxreq
        txresp -body "réponse 2"

        rxreq
        txresp -body "réponse 3"
} -start

Voila, c’est tout, vous avez mocké un backend qui peut répondre à 3 requêtes et pas une de plus. La configuration de ces servers peut être plus complète avec la directive expect. Voici un exemple contenu dans les test « a00001.vtc » de Varnish-Cache:

server s1 {
        rxreq
        expect req.method == GET
        expect req.proto == HTTP/1.1
        expect req.url == "/"
        txresp 
}

La définition de ce serveur va donner l’accès à des variables telles-que ${s1_addr} et ${s1_addr} que l’on pourra utiliser par la suite.
Il est évidemment possible de mocker plusieurs serveurs.

Déclaration d’un serveur varnish :

De la même manière, il est possible de déclarer des serveurs varnish :

varnish v1 -vcl {

       backend b1 {
               .host = "${s1_addr}";
               .port = = "${s1_port}";
      }

      sub vcl_fetch {
            ....
      }
}

Cet exemple permet donc d’instancier un objet v1 qui sera un varnish et de lui spécifier un comportement en lui donnant directement un morceau de VCL.
Il est possible de forcer Varnish à se binder sur un port spécifique en le déclarant comme ca :

varnish v1 -arg "-a 127.0.0.1:8080" -vcl {
    ....       
}

Etrangement Varnish n’a pas l’air de vérifier l’état de santé des backends déclarés. Si vous avez besoin de tester la mort d’une backend vous pouvez le faire comme cela :

varnish v1 -cliok "backend.set_health b1 sick"
Utilisations des clients et des assertions:

La syntaxe pour déclarer un client est relativement proche :

client c1 {
        txreq -url "/object"  -hdr "X-TTL:1s"
        rxresp
        expect resp.status == 200
        expect resp.body == "réponse 1"
} -run

Donc ce client va faire un GET sur le serveur Varnish v1. Il s’attend à recevoir un 200 et que le body de la réponse soit « réponse 1″.
On peut aussi faire des tests sur les statistiques internes de varnish :

varnish v1 -expect n_object == 1
varnish v1 -expect cache_hit == 0
varnish v1 -expect cache_miss == 1
Executer votre test varnish:

Pour lancer le test, rien de plus simple :

$ varnishtest affinity.vtc
    top  TEST affinity.vtc passed (0.978)

En cas d’erreur vous aurrez un message tel que :

c1    0.9 EXPECT resp.body (server 1) == server 2 (server 2) failed

Industrialisation des tests

Le but n’étant pas de tester varnish en lui même mais le VCL déployé en production nous avons tout simplement utilisé la directive include dans la définition des varnish pour inclure le VCL de production.
Il existe plusieurs limitations à cette méthode :

Vous pouvez retrouver un exemple de test et mon script d’industrialisation des tests sur mon repo github.

Gravatar de Fitzdsl Blog
Original post of Fitzdsl Blog.Votez pour ce billet sur Planet Libre.

Nicolargo : Installation et prise en main d’OpenVAS, le fork de Nessus

mercredi 16 janvier 2013 à 08:50

Depuis sa version 3, Nessus, le logiciel phare dans le petit monde des scanners de vulnérabilités des systèmes d'information est passé sous licence propriétaire. Comme c'est souvent ce genre de cas un fork de sa version 2 (qui était sous licence GPL) a rapidement vu le jour: OpenVAS. Nous allons dans ce billet en détailler l'installation et la première utilisation.

Scanner de vulnérabilités ? Kezako ?

Tout comme Nessus, OpenVAS est donc un scanner de vulnérabilités. On pourrait aussi l'appeler un logiciel d'aide aux audits de sécurités. Il se présente sous la forme d'un client / serveur.

OpenVAS4-Software

Le client permettant de définir le périmètre (plage d'adresse, type de machine) et les paramètres de l'audit (audit externe ou interne). Il se décline en CLI (ligne de commande), GUI (interface graphique) et API (Python notamment). Il est disponible sous GNU/Linux et Windows.

Le serveur effectuant le scan des différentes vulnérabilités (appelés NVT pour "Network Vulnerability Test") disponibles dans sa base (plus de 25.000 NVTs à l'heure de rédaction de ce billet). Le serveur existe uniquement sous GNU/Linux.

Installation du serveur OpenVAS

Pour mes tests, je dispose d'une machine sous Ubuntu 12.04 LTS. La procédure suivante est donc donnée à titre indicatif pour ce système d'exploitation.

On commence par installer le package OpenVAS Serveur disponible dans les dépôts d'Ubuntu:

sudo apt-get install openvas-server

On doit ensuite créer un couple login/password pour limiter l'accès au serveur:

sudo openvas-adduser
sudo service openvas-server restart

Il est possible que le premier lancement du serveur prenne un peu de temps car il charge l'ensemble des NVTs.

Installation du client OpenVAS

Il est possible d'installer le client sur n'importe quelle machine du réseau ou bien directement sur le serveur (c'est ce que j'ai fait pour mes tests).

On installe les packages:

sudo apt-get install openvas-client htmldoc

Note: le module htmldoc sert uniquement pour l'export au format HTML des rapports.

Première utilisation d'OpenVAS

Le client graphique OpenVAS se nomme openvas-client, il faut donc le lancer via un terminal ou votre launcher Unity/Gnome. Au premier lancement, il faut commencer par se connecter au serveur via le menu Fichier > Connecter. On doit saisir le login/password.

Pour créer son premier audit de sécurité, le plus simple est de passer par le wizard disponible via le menu Fichier > Scan assistant.

Il est alors possible de choisir le contexte de l'audit (description) et la cible (une machine, un réseau...).

Le lancement de l'audit se fera automatiquement. Le temps d’exécution dépend du nombre de machines, de la rapidité de votre réseau et du nombre de services à tester sur vos cibles.

capture_085

 

A la fin, un rapport est généré et accessible en archive:

capture_086
Il est bien sur possible d'exporter le rapport (format XML, HTML, PDF...) via le menu Rapport > Exporter.

Si l'interface de GUI est pratique pour des audits "one shot", il peut être également utile de regarder du cité de l'API Python qui permet une utilisatino avancé du serveur OpenVas et pourquoi pas une automatisation des lancements.

Configuration avancée d'OpenVAS

C'est dans le fichier de configuration /etc/openvas/openvasd.conf que l'on trouve la définition du chemin vers les NVT (sortes de plugins pour OpenVAS):

# Directory where plug-ins are to be found
plugins_folder = /var/lib/openvas/plugins

Ce répertoire contient des fichiers au format .nasl avec:

Si vous souhaitez développer vos propres scripts, il va falloir se plonger dans la documentation officielle. Le plus simple est de partir du template.nasl de référence et de tester pas à pas mais avant cela, je vous conseille de regarder la base des 25.000 NVT disponibles, régulièrement mise à jour, vous trouverez sûrement votre bonheur.

Cet article Installation et prise en main d’OpenVAS, le fork de Nessus est apparu en premier sur Le blog de NicoLargo.

Gravatar de Nicolargo
Original post of Nicolargo.Votez pour ce billet sur Planet Libre.

Articles similaires

Yannic Arnoux : Mise à jour de Fedora 17 vers Fedora 18

mercredi 16 janvier 2013 à 08:03

15 Janvier 2013 : c'est la sortie officielle de la Fedora 18, très attendue car sa sortie fût décalée plusieurs fois, ce qui est à l'honneur des développeurs : sortir quand le niveau de qualité est atteint malgré le fait qu'on soit une distribution mainstream très attendue. Je vous renvoie à l'article très complet posté par Renault sur LinuxFR pour la liste des nouveautés.. Moi je faire un retour d'expérience rapide sur une mise à jour réussie depuis le Spin XFCE de Fedora 17.

FedUp est le nouvel outil pour gérer les mises à jour de Fedora 17 et ultérieur. Voici les étapes que j'ai suivi pour mettre à jour ma distribution :

Si tout se passe bien, on se retrouve avec une Fedora 18 opérationnelle. La commande uname -r indique qu'on est passé en kernel 3.7.2-201.fc18.x86_64.4 Pour être complet, on peut aussi mettre à jour Grub 2 manuellement comme indiqué sur la page Wiki de FedUp.

Gravatar de Yannic Arnoux
Original post of Yannic Arnoux.Votez pour ce billet sur Planet Libre.

Manu Absolacom : Nautilus: ouvrir avec le bon logiciel les extensions des programmes

mardi 15 janvier 2013 à 18:51

Je sais, le titre n’est pas très clair, mais ça facilitera le travail aux moteurs de recherche…the-nautilus-ii-table-by-marc-fish-05

Il arrive que l’on ait installé des programmes générant des fichiers avec une extension propre à ces programmes, mais que l’accès direct (par double clic par exemple) ouvre le fichier avec un autre logiciel qui n’est pas celui escompté. Pourtant, le programme est bien installé et fonctionnel, mais l’association n’est pas effectuée correctement, et il n’est pas possible de la faire graphiquement.

Dans mon cas, j’ai installé sous Unity Qt4-designer qui fabrique des fichiers avec l’extension .ui mais qui est un programme prévu pour KDE. Or, quand je double clique sur le fichier .ui généré par le programme, c’est firefox qui s’ouvre pour me proposer de télécharger le fichier. Pourtant, dans le menu contextuel, ouvrir avec me propose bien Qt4-designer.

Qu’importe, me dis-je, il suffit d’aller dans les propriétés du fichier, onglet ouvrir avec, et de lui associer le bon logiciel. Sauf que le programme voulu (Qt4-designer) n’apparaît pas dans la liste!

Diable! Pourquoi?

Après quelques (heures de) recherches, c’est simple, encore faut-il le savoir. Le lanceur n’intègre pas la fonction d’ouverture de fichier, et par conséquent Nautilus ne l’affiche pas dans la liste des programmes disponibles.

Corrigeons cette erreur monumentale immédiatement.

Pour tous les utilisateurs du système

Éditez par le moyen de votre choix (avec sudo) le fichier /usr/share/applications/designer-qt4.desktop et modifiez la ligne indiquée ci dessous de

Exec=/usr/bin/designer-qt4

à

Exec=/usr/bin/designer-qt4 %f

Notez le « %f » qui indique que c’est le fichier transmis (celui sélectionné) qu’il faudra ouvrir. Il faudra peut être vous déloguer/reloguer pour que cela soit pris en compte, mais je ne suis même pas sûr que ce soit nécessaire. Retournez dans les propriétés du fichier .ui et vous devriez avoir le programme voulu dans la liste des choix disponibles.

Pour un utilisateur particulier

Admettons que je veuille que cette association ne soit valable que pour l’utilisateur manu. Il me suffit de copier le lanceur de qt4-designer dans le dossier ~/.local/share/applications et d’effectuer la modification indiquée ci dessus dans le fichier que je viens de copier.

cp /usr/share/applications/designer-qt4.desktop /home/manu/.local/share/applications/
gedit /home/manu/.local/share/applications/designer-qt4.desktop

Plus besoin du sudo dans le cas précis, puisque le fichier est dans mon dossier personnel. Ça fonctionne pour tous les logiciels et toutes les extensions, à condition qu’il existe un fichier .desktop dans le dossier des applications.

C’est une bricole, mais ça empoisonne la vie quand le comportement n’est pas celui attendu. En espérant que ça puisse vous servir.

Gravatar de Manu Absolacom
Original post of Manu Absolacom.Votez pour ce billet sur Planet Libre.

Articles similaires

Francois Aichelbaum : Intégration d’un parc de machines Linux à un domaine Active Directory

mardi 15 janvier 2013 à 18:21

Linux sur WindowsDans un monde professionnel où les environnements informatiques sont de plus en plus hétérogènes, il est nécessaire de pouvoir centraliser les informations la gestion des comptes ainsi que les droits associés. Alors que la documentation d’intégration des Linux (ou Mac) à un annuaire LDAP est très documentée sur internet, les guides pour l’intégration à un Active Directory est quasi absente. Elle est pourtant de plus en plus requise … et facile ! Des comptes unifiés pour tous les OS. Une gestion des comptes fines et centralisés est alors en place. Un sudo centralisé sur l’Active Directory implique un fichier /etc/sudoers obsolète.

Avant propos

Pour la suite différents points sont supposés acquis ou en place. Vous disposez d’un domaine Active Directory Windows 2008 R2 en place. Ici, nous l’appellerons integration.infra. Notez que les manipulations peuvent se faire à partir des versions Windows 2003 sans problème.

Les Linux sont des debian. Encore une fois, les packages sont disponibles pour toutes les grosses distributions, donc je vous laisse adapter.

Côté résolution DNS, les machines Linux doivent pouvoir déjà résoudre le domaine integration.infra :

dig +short integration.infra
192.168.101.1

Si ce n’est pas le cas, une petite modification du /etc/resolv.conf est à faire en rajoutant l’Active Directory :

echo nameserver 192.168.101.1 >> /etc/resolv.conf

L’intégration à l’Active Directory est simplfiée depuis l’arrivée de Likewise Open (maintenant appelé PowerBroker Identity Services). On supposera nos Linux comme étant en 64 bits.

Dernier point, on suppose avoir un compte ADMIN côté Windows avec les droits de rajout de machines.

Côté Active Directory

Pré-requis

Avant Windows 2008, il est nécessaire de rajouter les attributs Unix à l’Active Directory. Pour cela, il suffit d’installer le package Identity Management for UNIX.

Ensuite, nous devons rajouter un compte ldapquery : en effet, nous voulons centralisé la gestion des droits sudo et ceci ne peut se fait que via le protocole LDAP nativement embarqué dans l’AD. Pour cela, on ouvre Active Directory Users and Computers puis on clique droit sur Users puis New et User. On note le mot de passe.

NB : Il peut être intéressant de travailler en LDAPS plutôt qu’en LDAP. Je vous renvoie aux nombreuses documentations disponibles sur internet (ou à votre administrateur Windows) pour son activation.

Modification de l’Active Directory

Arrive alors la partie tricky : étendre le schéma Active Directory pour y intégrer le sudo. Le fichier de schéma est disponible sur vos Linux dans /usr/share/doc/sudo-ldap/schema.ActiveDirectory.gz mais également ici.

Pensez à l’éditer pour remplacer le dc=X par votre domaine (ici, dc=integration,dc.infra).

En ligne de commande, il ne reste alors qu’à taper :

ldifde -i -e schema.ActiveDirectory.txt -c "CN=Schema,CN=Configuration,DC=integration,DC=infra" #schemaNamingContext

Ceci va vous rajouter tous les attributs sudo (sudoHost, sudoUser, …) ainsi que la classe sudoRole.

Création des groupes

Concernant sudo, une dernière manipulation est à faire : créer une OU sudoers“(via l’ADSI) puis la “peupler” avec des sudoRole comme vous le feriez avec le fichiers /etc/sudoers :

On peut alors créer les utilisateurs et groupes dont on aura besoin pour l’usage normal.

Côté Linux

L’ensemble des commandes s’enchaîne rapidement :

wget http://download.beyondtrust.com/PBISO/7.0.4/918/pbis-open-7.0.4.918.linux.x86_64.deb.sh
chmod +x pbis-open-7.0.4.918.linux.x86_64.deb.sh
./pbis-open-7.0.4.918.linux.x86_64.deb.sh
cd /opt/pbis/bin
./domainjoin-cli join integration.infra ADMIN
./domainjoin-cli configure --enable nsswitch
./domainjoin-cli configure --enable pam
./domainjoin-cli configure --enable ssh
./config HomeDirTemplate %H/%D/%U
./config AssumeDefaultDomain true
./config LoginShellTemplate /bin/bash
aptitude install nslcd sudo-ldap
grep bind /etc/nslcd.conf >> /etc/ldap/ldap.conf
echo "sudoers_base ou=sudoers,dc=integration,dc=infra" >> /etc/ldap/ldap.conf
ln -s /etc/ldap/ldap.conf /etc/sudo-ldap.conf

Pour l’installation de nslcd, préciser la bonne URI mais surtout le compte ldapquery.

Pour ceux qui voudrait automatiser l’installation (via Fabric par exemple), le déroulement du script de PBIS requiert l’utilisation d’expect :

aptitude install expect tcl8.5
echo < EOF > /opt/install_pbis.sh
#!/bin/bash
VAR=$(expect -c "
spawn sh pbis-open-7.0.4.918.linux.x86_64.deb.sh --confirm
expect {
Y/n { send \\"y\\r\\"; exp_continue }
Y/n { send \\"y\\r\\"; exp_continue }
yes/no { send \\"yes\\r\\"; exp_continue }
yes/no { send \\"yes\\r\\"; exp_continue }
}
exit
")
EOF
chmod +x /opt/install_pbis.sh

L’installation et le déploiement s’en trouvera grandement faciliter. Petite subtilité à prévoir : l’obligation de reboot les Linux pour une intégration propre de l’authentification Active Directory en local à la machine.

The post Intégration d’un parc de machines Linux à un domaine Active Directory appeared first on D'ici et d'ailleurs.

Gravatar de Francois Aichelbaum
Original post of Francois Aichelbaum.Votez pour ce billet sur Planet Libre.