LE pare-feu OpenOffice
Par pollux |
Wednesday 16 June 2010 à 21:31 | Security
| #46
| rss
Internet ça a du bon. Enfin, pas toujours .. Et en combinant une jolie boulette avec quelques outils, on peut réaliser des choses dont personne n'aurait pensé au début ..
En bref, et notamment pour faire suite au challenge que certaines personnes m'ont lancé au SSTIC 2010 (très bonne année d'ailleurs), le voila: LE pare-feu OpenOffice ! Mais attention: pas un truc codé à l'arrache, nan, un vrai pare-feu avec un design toussa
Donc, comment ça marche:
- on veut filtrer des paquets avec OpenOffice, donc on a besoin d'OpenOffice
- n'ayant pas eu le temps de planifier le portage d'OpenOffice en mode noyau, j'ai donc fait l'inverse: amener les paquets en espace utilisateur avec nfqueue + python
- on manipule OO avec python-uno
Donc, je commence à coder: on crée une feuille calc avec les numéros de ports à filtrer, je récupère la valeur des cellules (et là je peux vous le dire: quand on a l'habitude de LaTeX, OO c'est pas la joie), et on s'en sert pour filtrer les paquets récupérés par nfqueue.
Premier problème: pour utiliser nfqueue, il faut être root. Et faire tourner OpenOffice en root (donc avec une interface graphique) sur le firewall, c'est pas top. Pas de problème ! On va donc séparer les idées, pour pouvoir:
- installer la couche de filtrage (en root) sur le pare-feu
- installer OpenOffice sur le poste de l'administrateur, avec une couche de communication entre les deux.
Donc, le design de la solution (schéma faire avec OO - et surtout du mal - pour pas multiplier les technos):

Pour le serveur XML-RPC, j'ai pris pyUNOserver
Après, il reste à définir le format de la feuille calc. Au départ, je comptais juste utiliser une colonne pour avoir les numéros de port à autoriser, mais quand même on fait un pare-feu qui s'adresse à des décideurs, donc va falloir faire mieux. Donc, idée: on va ajouter des colonnes pour avoir des compteurs de paquets droppés ou acceptés, et on va les mettre à jour en temps réel. Et c'est là qu'on commence à comprendre la vraie puissance du truc (ou pas): on va pouvoir faire des graphes ! Et, bonus point, ils seront remis à jour en temps réel !
Après le bla-blah, les screenshots:
Le prototype original

La version améliorée:

Et donc, le code dans tout ça ?
D'abord, on envoie tout le trafic TCP sortant vers NFQUEUE:
# iptables -A OUTPUT -o eth0 -p tcp -j NFQUEUE
On lance le serveur XML-RPC avec OpenOffice sur le poste de l'admin:
$ ./startPyUnoServer.sh &
Et, sur le pare-feu, on lance le script:
$ sudo python2.6 oowall.py localhost - - [16/Jun/2010 22:00:37] "POST /RPC2 HTTP/1.0" 200 - /home/pollux/oowall.ods ...
Et ça marche !
Le code est dispo (j'ai juste copié les fichiers ...) sur: http://www.wzdftpd.net/downloads/oowall/
J'ai fait une video, dispo ici: http://www.wzdftpd.net/downloads/oowall/video_oowall.avi ou sur youtube: http://www.youtube.com/watch?v=pftjkGAORkA
Conclusion
Il fallait faire mieux que le pare-feu météo, là je pense que l'objectif a été atteint. Seule déception: pas avoir pu le faire à temps pour les rumps du SSTIC :/ Maintenant, vous pourrez générer en live des statistiques, des rapports PDF, des présentations, donc la sécurité rejoint enfin le côté user-friendly.
Il y a pas mal d'évolutions possibles, notamment le fait d'utiliser des macros, pouvoir sécuriser la connexion XML-RPC etc.
Pour les performances, c'est tout simplement assez lamentable (ici j'ai ~10 paquets par seconde), mais finalement c'est mieux parce que ça empêchera surtout le peer to peer :)
update: apparemment, j'ai été un peu pessimiste, j'ai réussi à atteindre presque 200 paquets / seconde :)






Comments
1. Le Wednesday 16 June 2010 à 23:17, par Zeck
2. Le Thursday 17 June 2010 à 00:00, par xeno
3. Le Thursday 17 June 2010 à 00:04, par MatToufoutu
4. Le Thursday 17 June 2010 à 00:08, par styx
5. Le Thursday 17 June 2010 à 00:08, par OlivierG
6. Le Thursday 17 June 2010 à 00:17, par jz - LQDN
7. Le Thursday 17 June 2010 à 01:01, par Tenshy
8. Le Thursday 17 June 2010 à 05:06, par Martin
9. Le Thursday 17 June 2010 à 06:42, par Tengu
10. Le Thursday 17 June 2010 à 07:21, par Guirec
11. Le Thursday 17 June 2010 à 08:30, par Cyprien
12. Le Thursday 17 June 2010 à 08:57, par YvesTan
13. Le Thursday 17 June 2010 à 09:43, par Rem
14. Le Thursday 17 June 2010 à 10:04, par Rodolphe
15. Le Thursday 17 June 2010 à 10:50, par Erwan
16. Le Thursday 17 June 2010 à 11:48, par Hobeur
17. Le Thursday 17 June 2010 à 12:01, par miib
18. Le Thursday 17 June 2010 à 12:05, par jop
19. Le Thursday 17 June 2010 à 16:31, par Fajr Breeze - Yuxx
20. Le Thursday 17 June 2010 à 17:06, par pollux
21. Le Thursday 17 June 2010 à 23:52, par Christine A.
22. Le Friday 18 June 2010 à 14:10, par pollux
23. Le Saturday 19 June 2010 à 00:06, par fanch
24. Le Monday 21 June 2010 à 11:02, par Gedeon
25. Le Wednesday 23 June 2010 à 19:35, par Palu
26. Le Monday 28 June 2010 à 23:38, par bugs
27. Le Monday 28 June 2010 à 23:47, par bugs
28. Le Thursday 29 July 2010 à 20:25, par Debianaddicted
29. Le Wednesday 1 September 2010 à 14:22, par Adam
30. Le Wednesday 1 September 2010 à 14:29, par Adam
Add a comment