Vers une infrastructure orientée services

Après des années d’évolution de la puissance des serveurs, mais aussi de la complexité des architecture déployées, la réponse des architectures réseau aux besoins de sécurité et d’interconnexion n’a pas énormément évolué. Sagesse ou manque de communication entre discipline?

Essayons de voyager d’une architecture réseau à une infrastructure orientée services.

Nombre d’entreprises (et quelques particuliers) sécurisent leurs serveurs par une architecture différenciant fortement « l’intérieur » de « l’extérieur ».
Classiquement, cela abouti à un modèle

Internet < -> DMZ < -> LAN

Où l’on va positionner un firewall entre chaque couche (on peut aller un peu plus loin en séparant encore le LAN en zones plus ou moins « intérieures » comme par exemple une zone LAN production et une zone LAN entreprise séparées par un firewall.

Ce modèle part d’une hypothèse communément admise: l’extérieur est dangereux et l’intérieur est une zone de confiance (Microsoft avec Internet Explorer a même étendu cette notion au niveau applicatif avec des zones de plus ou moins de confiance, et l’a d’ailleurs payé assez cher par plusieurs failles de sécurité liées à des attaques semblant venir de ce qu’IE pensait être une zone de confiance).

Pourquoi changer?

Cette hypothèse, assez ancienne, repose sur l’idée que l’attaque est organisée, voire manuelle. Avec la prolifération des virus et des bot-nets associés, cela tend à être plus discutable maintenant.
De plus, cette hypothèse est simplificatrice, elle ne répond que par réduction, voire effet de bord, à l’exigence de base de la sécurité : Ce qui n’est pas autorisé est interdit.

D’autre part, il est actuellement possible de déployer un firewall de base sur un serveur sans prendre un risque de charge déraisonnable, et même de crypter les communications (à la SSL).

Ainsi, chaque serveur se protège des accès non autorisés, le filtrage pouvant être bien plus fin qu’avec un firewall qui raisonne généralement par zones. Rien n’empêche d’ailleurs d’ajouter un firewall, par exemple simplement en entrée de réseau, pour assurer un premier tri, une réduction de trafic et un protection contre des erreurs de configuration (2 précautions valant mieux qu’une).

Par exemple, un serveur de base de données fermera tout sauf

soit 2 ports TCP entrants et filtrés, et au plus un port TCP et un port UDP sortants filtrés.

Vers une architecture orientée service

Prenons cette exigence au pied de la lettre, est voyons si l’on peut la ré-exprimer en termes adaptables à une architecture réseau/système orientée services, avec

(un service pouvant être les deux).

Je sépare la notion de client et de service consommateur par le fait qu’un client n’est pas pré-identifié.
Cela différencie donc deux types de services fournisseurs

Concentrons-nous sur la relation entre nos deux types de services. On admet communément que les communications entre les serveurs hébergeant ces services sont autorisées, c’est cette simplification que nous essayons ici d’éviter.

Appliquons pour résoudre ce dilemme une déclinaison du pattern d’inversion de contrôle (IoC) en affirmant que c’est le service consommé que l’on va « brancher » sur le service consommateur, notre container étant le réseau, notre branchement sera (par exemple) un tunnel ssh.

On pourra selon l’environnement ajouter un système automatique de reprise en cas de coupure des liens entre serveurs.

par exemple un serveur de base de données fermera tout sauf

mais il établira

soit 1 port TCP entrant et filtré et au plus un port TCP et un port UDP sortants filtrés.

Quels avantages par rapport à la solution précédente ?

Pour les fournisseurs de services à des clients, on pourra conserver le modèle précédent, en particulier dans le cas de clients « externes ».

Perspectives

Mettre en place ce type d’architecture depuis des clients.

Evoluer vers une infrastructure multi-sites car on peut maintenant s’affranchir de la continuité de réseau

Comments

Les commentaires sont désactivés sur ce billet.