NuFW : Introduction au User Filtering
Now User Filtering Works
NuFW est un outil de filtrage réseau avancé, qui, tout en s'appuyant sur NetFilter, permet d'associer un utilisateur, des ACL (Access Control List), et des flux de données. La dernière version en date à l'heure où j'écris ces lignes est la 2.4.0, mais revenons à nos moutons. Pour faire correctement son boulot, il a besoin de NetFilter et implémente 3 instances, 2 pour la partie serveur, et un agent pour le client. Ces composants vont chacun effectuer une part de la vérification de l'identité, de l'évaluation des droits d'accès liés à cette identité et de consigner le tout. Voici de quoi vous familiariser :- NuAgent
NuAgent représente le composant lié au client, chargé d'initier la requête de connexion (au sens Conntrack, c'est-à-dire protocoles non connectés compris) et de fournir les différentes informations relatives à l'utilisateur. Cette instance constitue l'autorité de confiance à installer sur la machine cliente et est implémentée pour les Linuxiens comme les Windowsiens. Il est possible de s'en passer, auquel cas, la responsabilité incomberait directement client, ainsi que la partie "de confiance". Il s'agirait donc d'un mode dégradé.
- NuFw
Il s'agit du daemon côté serveur. Il reçoit la requête de connexion, émet une demande d'authentification à l'attention de nuAgent et fournit les données rendues par nuAgent au daemon nuAuth. Il transmettra également le verdict rendu par nuAuth au nuAgent.
- NuAuth
NuAuth est daemon chargé de gérer la partie authentification : il vérifie les informations d'authentification, puis les ACLs liés au compte, et renvoie la réponse à nuFW. Le reste est confié à NetFilter.
Requirements
Les requirements sont explicitement mentionnés dans la documentation officielle et vous seront réclamés lors de l'exécution du configure. En plus des requirements officiels, l'équipe émet plusieurs avis concernant les différentes solutions à interfacer avec NuFW. Par exemple, il est conseillé de s'assister des outils spécialement développés pour la cause, par exemple NuLog, qui permet d'exploiter les logs de NuFW, mais également NuFace, un outil qui permet d'implémenter rapidement et de manière cohérente des règles destinées à NetFilter et à NuAuth. Pour ce qui est du stockage des logs, le support mySQL est fortement conseillé, car le support d'autres bases de données sont encore à des stades expérimentaux. Il est également souhaitable d'utiliser ulogd afin de pouvoir stocker sous un format commun des logs exploitables dans la même base de données. Enfin, la mise en place d'un système d'authentification type annuaire permet de pouvoir travailler sur une base centralisée, complète, et simple à exploiter. Donc, préférence à OpenLDAP.Scénario
- Au démarrage de la session, l'utilisateur lance le client NuAgent et initie une demande de connexion à une ressource.
- Le client se charge d'ouvrir un tunnel TLS entre le poste utilisateur et le serveur NuFW.
- Le daemon NuFW enqueue le packet et envoie une requête d'authentification au service NuAuth.
- Le daemon NuAuth interroge alors tous les NuAgents connectés afin d'avoir des informations sur celui qui a initié la demande de connexion. Il peut y avoir notamment plusieurs NuAgents pour une machine donnée.
- Le client NuAgent ciblé renvoie alors ces informations via le tunnel crypté.
- Le daemon NuAuth compare les informations renvoyées par le NuAgent et celles envoyées depuis le NuFW et, si conformes, interroge une base d'authentification (LDAP, edir,...) afin d'authentifier l'utilisateur et de déterminer la réponse en fonction d'ACL (qui sont soit stockées au sein même du LDAP, dans un schéma bien particulier, soit en plaintext).
- Le retour est fait au NuFW, qui donne par la suite la main à NetFilter via la cible QUEUE.
- Le reste du flux est pris en charge par NetFilter et les règles qui l'implémentent (conntrack) grâce au suivi d'état.
Observations
On peut facilement s'apercevoir que les traitements effectués par NuFW semblent conséquents. En effet, NuAuth broadcast à tous les NuAgents connectés pour savoir qui est à l'origine de la demande, ce à quoi le NuAgent concerné réplique en renvoyant toutes les informations nécessaires dans le tunnel TLS. C'est vrai, cela peut paraître disproportionné, mais cet échange n'est fait qu'au moment de l'initialisation de la connexion, et des analyses ont montré que l'impact n'est pas perceptible par l'utilisateur. Un autre point concerne la question des accès distants depuis l'extérieur. En effet, les postes devant passer par NuFW ne doivent pas se trouver derrière un dispositif de NAT, auquel cas, les informations ne pourront pas être valides, notamment en ce qui concerne l'IP. Si vous êtes dans ce cas-là, la solution pour pouvoir authentifier les utilisateurs sans vous découvrir consiste à monter un bon vieux VPN. Enfin, mais plus technique, de base, NuFW ne se charge que de l'initialisation du flux, ce qui revient à dire que seule l'initialisation sera journalisée, on ne disposera pas des logs sur l'établissement et la fermeture du flux. Par contre, comme NuFW travaille de concert avec NetFilter, il suffira de rediriger les SYN/ACK et les RST et FIN dans la table QUEUE qui est utilisée pour le dialogue NuFW - NetFilter. La décision ayant déjà été finalisée, celle-ci sera donc appliquée à la suite du flux. Je ne vous cite pas les points forts, je pense qu'ils sont évidents, mais pour faire court...Authentification et gestion des ACL utilisateurs.
L'existence même de NuFW est de pouvoir rattacher de façon certaine les flux aux utilisateurs. Cela implique de pouvoir contrôler, décider ou non de bloquer les flux et avertir les administrateurs selon le type d'utilisateur -par exemple, un service tournant sous un utilisateur dédié cherchant à établir une connexion non légitime. Les fameuses ACL qui régissent les décisions sont en fait de simples règles, qui ont comme clé unique le couple (sujet,objet) auquel est associé une décision. Elles peuvent être stockées soit dans l'annuaire, elles disposeront d'un schéma bien particulier, soit en plaintext.Ceinturer les applications sur les postes de travail
Grâce à NuAgent, il est possible également de n'autoriser que certaines applications à ouvrir des connexions, c'est ce qu'on appelle du filtrage en amont. Cela peut être très utile au sein d'un parc composé de postes dont les utilisateurs auraient les droits d'installation et ça éviterait quelques joutes au sujet notamment de la PSSI. Par contre, il est à souligner que cette fonctionnalité exploite le potentiel de confiance de l'agent, si celui-ci est corrompu, ou si un tier envoie des informations en lieu et place de l'agent, les décisions relatives au filtrage en amont pourrait être compromises.Prioriser et suivre
Etant donné la possibilité d'attribuer un flux à un utilisateur, il est donc possible de moduler, pour chaque utilisateur, la quantité de bande passante et la priorité du trafic. Par la force des choses, le suivi d'activité est également propre à l'utilisateur, puisque non seulement, et comme toute solution qui se respecte, NuFW journalise l'ensemble des évènements, mais met à disposition une panoplie d'outils permettant de les exploiter plus finement, afin de pouvoir retracer toute l'activité d'un utilisateur, quelque soit le poste d'où il s'est connecté, et ceux, même s'il y a eu partage des moyens informatiques.SSO
C'est acquis, NuFW identifie de manière stricte un trafic et le rapproche à un utilisateur. Si l'on suppose que les stockage des logs est fait dans une base mySQL, on peut très bien partir du principe que cette information peut être utilisée par tout élément capable de requêter la base de donnée et d'obtenir l'information. C'est ce que permet Apache, qui, grâce à son module Single-Sign-On mis à disposition sous un nom se rapprochant de apache-mod_authn_nufw, permet d'exploiter le filon. Idem pour Squid et son squid-nufw-helper.Le package
OK, cette solution a attirée votre attention, mais ça ne fait pas tout. Qui va se palucher les règles à la main ? La conf ? Qui va devoir exploiter les logs ? Rassurez-vous, NuFW ne vient pas tout seul, il est accompagné par une parpadelle d'outils bien pratiques -parfois nécessaires, comme je vous en ai parlé plus haut- qui se plieront à vos exigences tout en assurant la cohérence du tout.- NuConf
NuConf est un dispositif qui permet de facilement paramétrer le système en terme de configuration réseau, de DNS, d'authentification utilisateur, NTP, services à lancer... C'est un composant closed-Source, c'est-à-dire qu'il est le seul à n'être disponible que dans la distribution spécialisée NuFirewall. Quoiqu'un peu dommage, il n'en reste pas moins que cet utilitaire a plus à voir avec la configuration de poste qu'avec le paufinage du firewall. Ca peut très bien être fait comme d'habitude, avec les moyens du bord, vi, emacs, ou autre.
- NuFace
NuFace est une interface graphique permettant de configurer facilement les règles NetFilter ainsi que tout ce qui touche aux ACL, notamment les ACL LDAP qu'utilise NuFW pour prendre une décision. Il est possible, via cette interface, d'utiliser des objets de haut niveau et de les agglomérer au sein d'ACL. Quand elle n'est pas intégrée par NuFirewall, elle passe par un navigateur web sur l'adresse du serveur NuFW (https://localhost/nuface).
- NuLog
NuLog est une interface écrite en php permettant d'analyser les logs collectés par NuFW et NetFilter. Elle permet d'afficher en temps réel tous les évènements, d'avoir de jolis graphes, les statistiques,... Ce n'est pas vraiment un outil qui vous permettra de mettre en corrélation plusieurs évènements louches d'un seul coup d'oeil, mais il représente l'état à un temps t du firewall et apporte à l'administrateur avisé et déjà au fait d'un comportement suspect toutes les données qui lui sont relatives.
- nf3d
Nf3d, quant à lui, permet une vision beaucoup plus générale des différents flux, sur un fond 3D rappelant le manche d'une guitare, et qui offre également des possibilités de tri sur plusieurs jeux de critère. Nf3d se base plus sur les flux loggués par NetFilter, et, à mon sens, trouve tout son intérêt dans le cadre de l'observation d'un comportement anormal, afin de cibler les machines touchées et d'aller fouiller plus amplement avec NuLog.
- NuFirewall
Et enfin, pour finir, le must du must, NuFirewall, une distribution Linux toute faite prête à l'emploi, intégrant NuFW, NetFilter, et la totalité des outils en mode Qt, à savoir NuConf, NuFace, NuPki et NuLog. Elle est pas belle, la vie ?