Ajout fonctionalité de sécurité

Bonjour,

serait-il possible d’ajouter iptables dans le dockerfile de l’image officielle de kresus ?

cordialement,

Olivier

Bonjour,

si tu n’as pas assez confiance dans le code de kresus/weboob, pourquoi aurais-tu + confiance dans l’image docker officielle ? Ne serait-il pas + indiqué de mettre le iptables en dehors du docker justement ?

Bonjour,

je n’ai pas dit que je n’avais pas plus confiance à l’un ou en l’autre car c’est la même chose, l’un va tirer le code de l’autre :slight_smile:
C’est parce que je l’utilise avec l’image docker et si je veux implémenter un module permettant du filtrage c’est juste plus simple d’avoir quelque chose intégré à un container que l’on peut gérer avec des variables d’ENV par exemple ou autre… et s’abstraire de la configuration iptables, c’est tout le but de docker

Oui mais si on ne fait pas confiance au code suffisamment question sécurité, pourquoi on aurait confiance dans celui de l’image docker ? La configuration passée à iptables pourrait être modifiée à la volée, ou le module iptables être un programme custom frauduleux non ?

oui j’y avais pensé et dans le principe tu as tout à fait raison, mais ce n’est pas à la portée de tous de faire ça :wink: , contrairement à un POST sur une url distante qui est beaucoup plus simple et rapide à faire…
Après si l’implémentation de iptables est faite c’est très simple de savoir s’il est frauduleux ou pas.

Je voulais juste implémenter un truc tout simple (et pourquoi pas le proposer par la suite) afin que les gens qui se posent les mêmes questions que moi sur la confidentialité des données soient rassurés et utilisent le logiciel en toute tranquilité (car on parle quand même de login/password d’accès banquaires)
Après si c’est pas possible pas grave je le ferai pour moi c’est pas un souci :slight_smile:

Olivier

C’était vraiment pour ma culture/curiosité personnelle, merci !

Pour la décision d’ajouter iptables ou non je pense que je laisserai la main à plus compétent :).
Tes questions sont tout à fait légitimes en effet.

Salut @olivier1 !

Super cool que tu travailles sur cette fonctionnalité, merci beaucoup !

A priori, tu devrais pouvoir traficoter l’image Docker de Kresus depuis ta machine, à partir du moment où tu as le code source de Kresus et Docker d’installé. Donc n’hésite pas à modifier les Dockerfile et scripts d’installation.

Je préfèrerai que l’on mette iptables dans les images Docker au moment où on s’en sert, une fois la phase de développement et test initiale passée.

Par curiosité, comment envisages-tu la chose en général ? Il faudrait avoir un dictionnaire des points d’accès (URL) pour chacune des banques, régulièrement mis à jour pour être valide (au cas où les banques changent leurs URLs internes etc). Cela me semble compliqué à mettre en place, mais il y a peut-être d’autres manières de le faire auxquelles je n’ai pas pensé. Quelle idée avais-tu en tête ?

Bonne journée,
Benjamin

Salut @bnjbvr,

oui j’ai déja implémenté la fonctionalité de mon coté et ca fonctionne bien. Je l’ai fait vite fait, en gros:
j’ai modifié le dockerfile pour rajouter iptables.
j’ai fait un grep des urls LCL dans weboob,ensuite un « host url » sur chacunes des urls pour récupérer toutes les ips associées que j’ai mise dans un fichier texte en dur sur la machine hôte.
J’ai ensuite fait un script bash (qui utilise iptables) qui parse ce fichier texte et qui whitelist les ips trouvées et bloque tout le reste.
J’ai modifié le entrypoint.sh pour que ce script soit joué au démarrage du container.
C’est ma version rapide pour pouvoir utiliser kresus rapidement.

Maintenant pour pouvoir rajouter ca en production il faudrait que le fichier texte contenant les ip et le script bash soient hébergés dans le container.
J’imaginais que lorsque l’utilisateur enregistre une banque un script tourne et récupère les ips nécessaires (mon fameux grep et « host url ») et ensuite déclenche le script bash qui modifie iptables. Il faudrait que ce système tourne aussi dans une cron (toutes les heures par exemple) car souvent les ip derrière les load balancer peuvent changer, donc il faut que ca se mette le plus rapidement à jour.
Voilà en gros ma vision, dites moi ce que vous en pensez, toute idée est bonne à prendre et je n’ai surement pas pensé à tout.
D’ailleurs n’y a t-il pas un fichier qui rescense toutes les url utilisées dans weboob ? car les urls ont l’air d’être éparpillées un peu partout dans le code, ca faciliterait grandement les choses.

Merci

Olivier

Mais dans ce cas-là si le module weboob rajoute une URL non voulue qui ne correspond pas à une banque mais à un serveur qui vole les données, l’automatisme fait que le pare-feu devient inutile non ?

Les URLs changent à chaque changement de banque donc non. Et c’est forcément aux modules de les définir.

Salut,

On peut mettre en évidence les url auprès de l’utilisateur comme quoi on va autoriser les transferts vers ces urls là, si c’est un utilisateur aguerri il pourra se mefier d’une url en particulier et refuser, dans le cas contraire il validera.
Mais au final tu as raison ca ne sert à rien, je ne vais pas le faire, car si l’utilisateur n’est pas un minimum attentif il va valider sans rien lire. Le principal c’est que ca fonctionne pour moi ( j’ai whitelisté uniquement les urls qui m’interessaient) et que mes login/password soient protégés.

Par contre un conseil, essayez de communiquer un minimum sur la protection des données car si vous voulez que les gens utilisent kresus, il faut les rassurer, car on parle de mettre des login/password banquaires qui sont envoyés sur le web on ne sait pas où!

Olivier

C’est le cas : FAQ.
Le site kresus.org est également ouvert et toute contribution est la bienvenue : kresusapp / kresus.org · GitLab.

Oui je l’avais vu un peu léger

@olivier1 N’hésite pas à contribuer à l’amélioration de la doc, si tu as des idées ! Et si tu veux faire un tutoriel pour expliquer ta mise en place du firewall, je pense qu’on sera tous d’accords pour dire que tu pourras le publier sur le blog officiel, ou le reblogger depuis notre blog, et/ou ajouter des liens depuis notre documentation. Ça intéressera sûrement plein de gens !

Benjamin