Articles Taggés ‘certificat’

Push Ip(hone|od) en PHP en envoi « batch »

20 avril 2010

Plop à tous …

Un article en intraveineuse pour tenter de réanimer mon blog … Alors oui l’Iphone ça pue, c’est propriétaire, c’est moche et tout et tout, mais bon ça se répand comme la peste alors on fait avec :s.
» En lire plus:Push Ip(hone|od) en PHP en envoi « batch »

Open-Source : Réseau d’entreprise sécurisé … ou pas

27 juin 2009

Bijour …

Alors voilà, maintenant que la présentation de notre projet pour ma licence pro CDED est terminée, je peux montrer l’architecture de notre réseau sans avoir peur d’être plagié par des concurrents ^^.

Donc le but de notre réseau est d’avoir :

  • Une sécurité assez élevée sans pour autant compromettre l’utilisation du réseau par les utilisateurs (le problème de tout admin …).
  • Un coût très faible autant niveau architecture logicielle que matérielle
  • Une maintenance aisée du réseau (ajout/suppression de postes/utilisateurs)

Le contexte de notre projet :

Une petite entreprise veut revoir son réseau et ses logiciels/sites web pour plus de productivité, avec pas mal d’intéractions avec l’extérieur (Obligation d’utiliser une base de données extérieur au réseau, plusieurs site web publié avec utilisation de certificats pour le chiffrement (pour l’authentification ça aurait été un peu trop :p), …).

Ce qui a donné le réseau suivant pour notre groupe :

Network-Skipify-final-cipher

L’architecture est plus ou moins classique, on sépare les serveurs des utilisateurs, côté chiffrement :

  • Toute communication est chiffrée entre les serveurs (3DES en phase 1 et AES en phase 2) on a poussé le vice jusqu’à chiffrer les communication avec les clients Linux du réseau (bien sûr toute communication non chiffrée sur le réseau des serveurs est automatiquement rejetée).
  • Les communications vers la base de données sont chiffrés par un tunnel (ssh avec une simple redirection de ports).
  • Les communications depuis les internautes sont chiffrés par un certificat valide en AES

Coté architecture matérielle :

  • 4 serveurs sous debian 5.0 patché avec GrSecurity pour les ACL et le W^X (ma licence étant spé développement, on a pas pu pousser la chose très loin … dommage, ce patch me semble très prometteur, et devrait devenir une norme dans le domaine de l’hébergement).
  • 1 client XP ajouté au domaine NT (utilisation du remote announce de samba pour l’utilisation du PDC hors du réseau sécurisé des serveurs), ainsi qu’un client linux avec authentification direct à l’annuaire LDAP

Coté architecture logicielle :

  • Sur le reverse proxy / Firewall :
    • Apache2 avec modsecurity couplé avec l’IDS, modevasive (pour les bruteforces et DoS de faible ampleur), mod proxy pour la mise en place d’un reverse proxy pour protéger le serveur web
    • IDS Prelude couplé avec Snort
    • Utilisation d’arpwatch pour les attaques en interne (un script kidy qui réussit à pirater le wifi, la connexion d’un employé au réseau local via son IPhone ;) , ….)
    • Fail2Ban pour les bruteforces sur le service SSH
    • IPTable comme firewall
  • Sur le serveur WWW et d’appli : apache2 avec le mod rails pour les applis web en ruby (déploiement et màj des applis simplifié par capistrano …)
  • sur le PDC un serveur Samba avec OpenLDAP

Et hop … on obtient un réseau pas mal sécurisé et gratuit (faut juste payer l’informaticien ;) ).

Par contre, en discutant avec les profs après déploiement de l’architecture sur 8 machines virtuelles (vmware … le proprio saymal mais bon), on s’est rendu compte de quelques problèmes (et ouai … je suis encore un élève ;) ) :

  • Comme un noob j’avais laissé la configuration IPv6, toute la partie IPsec que j’avais déployée etait alors totalement inutile puisque centré sur l’IPv4 seulement, heureusement, j’avais fait des bind explicite sur les adresses IPv4, seul les serveurs http et dns était accessible en IPv6.
  • Sinon, le problème propre au déploiement sur machines virtuelles (comme un noob encore une fois), déploiement de toutes les machines en bridge sur le réseau de l’IUT (l’admin réseau ne m’a pas vu … mais un autre groupe s’est fait gaulé ^^). N’importe qui aurait pu se connecter sur notre réseau en connaissant nos ip. A ma décharge je dirais deux choses : je savais pas qu’en host-only c’est pas seulement l’hote et la mv, mais l’hote et toutes les mv qui peuvent discuter ensemble, ce qui ne corrige en rien le problème des connexions direct sur notre réseau depuis d’autre machines virtuelles, puisque tout les groupes ont montés leurs réseau sur la même machine

Donc voilà … un petit retour sur l’utilisation de l’open-source pour la sécurité et le déploiement d’un réseau entièrement gratuit, qui se rapproche plus d’une multi-national (bien qu’encore très très très loin) que du réseau familial … qui malheureusement est encore présent dans beaucoups d’entreprises en france (et même des grosses boites … pour qui la sécurité consiste à placer des filtres extrèmement lourd sur leurs proxy et mettre à jour des AV …).

Certificats auto-signés et ettercap … du ssl en clair.

10 janvier 2009

Bijour à tous …

Bé voilà, actuellement en licence Pro CDED, nous sommes en train de voir les certificats auto-signés via openssl …(ça fait un bail que l’on sait que l’auto-signé c’est le mal mais bon … c’est gratuit, instantanée et ça permet d’avoir un niveau de chiffrement assez sympa qui permet de se protéger des petits rigolos qui ne savent pas utiliser ettercap … ça existe encore ???).

Dans cet article je montrerais la simplicité de la mise en place d’un tel certificat sur … ubuntu (quoique la doc d’ubuntu est plutôt bien fournit sur ce plan là), ainsi qu’une possibilité pour « déchiffrer le traffic ssl » via ettercap (qui n’est pas vraiment du déchiffrement, plutôt une attaque de type MITM automatisée).

Donc on monte notre « environnement sécurisé » :

  1. sudo apt-get install apache2 && sudo a2enmode ssl && cd /etc/apache2/sites-available

On génère notre superbe certificat : (Vous pouvez mettre tout et n’importe quoi à tous les champs SAUF au champ « Common Name », où il faudra mettre votre nom de domaine, dans mon cas www.portable.lan)

  1. sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/apache2/server.crt -keyout /etc/apache2/server.key

On modifie le fichier default-ssl (nettoyage puis ajout des bonnes options de configuration pour utiliser le certificat et révision de sed ;-) )

  1. sudo cat default-ssl | sed '5,168 d' | sed "3a\\\tSSLEngine On\n\tSSLCertificateFile /etc/apache2/server.crt\n\tSSLCertificateKeyFile /etc/apache2/server.key" > ssl-conf && sudo a2ensite ssl-conf

Le sed ’5,168 …’ risque de ne pas marcher si vous le faites sur une distrib différentes d’ubuntu 8.10, car il supprime les lignes 5 à 168 de la config fournit par défaut par le paquet apache2 (contenant pas mal de truc assez moche, à supprimer quoi ;) )

Un zoli sudo /etc/init.d/apache2 restart permettra de prendre en compte tous ça, il suffit ensuite d’ouvrir le navigateur sur l’url https de votre serveur et l’on tombe sur cette superbe page :

cap1

Et ouai … comme je l’ai dit les certificats auto-signés c’est le mal, si l’on veut visiter ce superbe site il va falloir « confirmer une exception de sécurité » sur le site, ce qui n’est pas très sécurisant en sommes :s. Mais bon passons  … ce qui nous donne ceci :

cap2

A partir de maintenant, on peut commencer par analyser le traffic lors de la connexion à notre site ultra-pas-du-tout-protégé-par-du-ssl-qui-rox-pas-sa-race, et comme on peut l’imaginer … le traffic est chiffré (ce qui signifie que le couple login/mot-de-passe qui a été rentré par le visiteur et ben on pourra pas le choper) :

capture

Ce qui aurait été le cas si l’on c’était loggué à partir du site non-sécurisé, qui donne la capture suivante :

capture2

Dans cette capture l’on arrive à récupérer le mot de passe en clair …donc on se dit que c’est quand même classe avec le certificat on a évité une catastrophe nationale … mon super login/password ne s’est pas fait prendre … et là on se rappel le titre de mon article « du ssl en clair » … pour le moment ce n’est pas le cas.

C’est donc là qu’intervient ettercap … que j’ai déjà présenté ici et .

Pour l’installer :

  1. sudo apt-get install ettercap

Puis il faut modifier le fichier /etc/etter.conf (façon l33t h4x0r encore une fois … histoire de faire kikoo)

  1. sudo cat /etc/etter.conf | sed '/^.*redir_command_on = \ »ipt/ s/#//'|sed '/^.*redir_command_off = \ »ipt/ s/#//' > /etc/etter.conf

La ligne précédente dé-commente les deux lignes qui permettent de rediriger les flux  … il aurait peut-être été possible de mettre les deux sed en un … mais sudo cat /etc/etter.conf | sed ‘/^.*redir_command_o(n|ff) = \ »ipt/ s/#//’ > /etc/etter.conf ne semble pas fonctionner … dommage … j’aurais pu passer pour un boss de la ldc :s une autre fois peut-être ^^.

Ensuite, il faut permettre le forwarding : (quoique ça marche aussi sans)

  1. sudo sysctl net.ipv4.ip_forward=1

et lancer ettercap :

  1. ettercap -Tqi ath0 -M arp:remote /192.168.0.101/ /192.168.0.10/

qui aura pour effet de faire de l’arp poisonning pour les communications entre 192.168.0.101 (le client) et 192.168.0.10 (le serveur HTTPS) et le pirate en 192.168.0.100 (oui les ips ont changés depuis le début de l’article … ^^).

capture4

Le « -M:arp-remote » quand à lui permet l’attaque MITM qui va « renvoyer » un faux certificat (avec les mêmes informations que le certificats d’origine):

capture5

Et comme le pirate (192.168.0.100 qui est invisible dans cette trame) a généré le certificat, et que le traffic transite par son ordinateur, il peut ainsi récupérer le login et mot de passe chiffré :

capture3

Bien entendu … comme ce n’est pas le même certificat, il faut de nouveau « confirmer une exception de sécurité » (ce qui n’a pas été le cas pour moi … mais normalement ^^) et là avec son pauvre certif’ auto-signé ont se sent un peu nue, car le certificat générer est aussi auto-signé et contient toutes les caractéristiques fournient lors de la génération du premier certificat … donc le client ne peut pas savoir si c’est le bon certificat qu’il est en train d’autoriser (en vrai, il faudrait qu’il retienne la signature du certificat … mais IRL c’est assez rare de voir des parannos qui retiennent les signatures de leurs certificats).

Donc voilà … en espérant avoir découragé l’utilisation de certificat auto-signés (je viens de plomber le TP de mon prof :p).

A noter qu’avec ettercap, il est aussi possible de déchiffrer des certificats émis par Verisign et …, mais dans ce cas ettercap génère aussi un certificat auto-signé … révélant l’utilisation d’un MITM.

Mais pas mal de gens sont encore prêts à cliquer ok lors d’une « confirmations d’exception de sécurité » pour google, facebook ou … donc en sécurité, le problème restera toujours l’utilisateur :s