NuFW : Introduction au User Filtering

Les Systèmes d'Information sont une bataille en perpétuelle évolution. Front contre l'Exterieur, guérillas internes, et, en dernière ligne de défense, l'ASR et son firewall. Pour information, le firewall est typiquement un élément d'interconnexion, situé entre ce qui doit être protégé et ce qui ne fait pas partie des amis, et qui, pour bien faire son job, a besoin de règles établies qui permettent de qualifier le trafic, et, en fonction, d'appliquer des décisions sur les flux. Si l'on a encore, meurtries dans la peau, les fameuses règles iptables, on peut vite se rendre compte qu'à l'heure du multi-utilisateur, de la centralisation des systèmes d'authentification et de données, il devient rapidement difficile de ne pas faire un tout avec les utilisateurs à protéger. Eh oui, parce que si la menace extérieure est bien présente et se fait entendre quotidiennement, on a un peu trop souvent tendance à oublier que nos petits protégés ne sont pas tous aussi bienveillants qu'on pourrait le croire. Alors, bien sûr, il y a bienveillance, petites bidouilles et malveillance caractérisée. Il n'empêche. Parce qu'au final, s'il y a le moindre pépin, c'est vous que l'on viendra voir. Alors oui, on peut figer des règles pour telle ou telle IP, selon que nos soupçons soient portés sur tel ou tel utilisateur. Mais d'une part, cela implique un monitoring et des analyses quotidiennes et poussées pour pouvoir justement appuyer ces soupçons et d'autre part, pour peu que vos utilisateurs veulent vraiment quelque chose, cette mesure comptera comme un coup dans l'eau. Oui, souvenez-vous. Vous avez mis en place un serveur centralisant toutes les authentifications, et vos systèmes de fichiers sont mis à disposition pour tout votre parc. Rien n'empêche l'utilisateur de jouer avec une autre machine. Ne pensez plus à customiser encore plus la configuration de vos postes de travail, le véritable nerf de la guerre, c'est le firewall. D'ailleurs, l'idéal serait de pouvoir authentifier à qui appartient tel flux, pas en terme d'IP, puisque le rapprochement IP-utilisateur est caduque, mais en terme justement d'utilisateur. Question. Comment coupler authentification et 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 ?

Conclusion

Quoi dire de plus si ce n'est que NuFW est une solution majeure, mature, OpenSource, et qui apporte de nouvelles fonctionnalités jusque-là inexplorées. Facilement scalable, peu gourmande en ressource, elle s'appuie sur un standard de fait, NetFilter et ne néglige aucun des aspects opérationnels -et encore moins le plus important, le monitoring ! Mais puisqu'après tout, tout ceci n'est qu'un amuse-gueule, je vous laisse de quoi la tester, la customiser, la torturer,... Et me dire ce que vous en pensez !
Vus : 614
Publié par K-Tux : 59