{"id":95,"date":"2006-04-28T21:30:06","date_gmt":"2006-04-28T20:30:06","guid":{"rendered":"http:\/\/claudebbg.com\/blog\/2006\/04\/10\/dmz-ou-pas-dmz\/"},"modified":"2020-07-14T21:54:44","modified_gmt":"2020-07-14T20:54:44","slug":"infrastructure-orientee-service","status":"publish","type":"post","link":"https:\/\/www.claudebbg.com\/blog2\/2006\/04\/28\/infrastructure-orientee-service\/","title":{"rendered":"Vers une infrastructure orient\u00e9e services"},"content":{"rendered":"<p>Apr\u00e8s des ann\u00e9es d&rsquo;\u00e9volution de la puissance des serveurs, mais aussi de la complexit\u00e9 des architecture d\u00e9ploy\u00e9es, la r\u00e9ponse des architectures r\u00e9seau aux besoins de s\u00e9curit\u00e9 et d&rsquo;interconnexion n&rsquo;a pas \u00e9norm\u00e9ment \u00e9volu\u00e9. Sagesse ou manque de communication entre discipline?<\/p>\n<p>Essayons de voyager d&rsquo;une architecture r\u00e9seau \u00e0 une infrastructure orient\u00e9e services.<br \/>\n<!--more--><\/p>\n<p>Nombre d&rsquo;entreprises (et quelques particuliers) s\u00e9curisent leurs serveurs par une architecture diff\u00e9renciant fortement \u00ab\u00a0l&rsquo;int\u00e9rieur\u00a0\u00bb de \u00ab\u00a0l&rsquo;ext\u00e9rieur\u00a0\u00bb.<br \/>\nClassiquement, cela abouti \u00e0 un mod\u00e8le<\/p>\n<pre>Internet &lt; -&gt; DMZ &lt; -&gt; LAN<\/pre>\n<p>O\u00f9 l&rsquo;on va positionner un firewall entre chaque couche (on peut aller un peu plus loin en s\u00e9parant encore le LAN en zones plus ou moins \u00ab\u00a0int\u00e9rieures\u00a0\u00bb comme par exemple une zone LAN production et une zone LAN entreprise s\u00e9par\u00e9es par un firewall.<\/p>\n<p>Ce mod\u00e8le part d&rsquo;une hypoth\u00e8se commun\u00e9ment admise: l&rsquo;ext\u00e9rieur est dangereux et l&rsquo;int\u00e9rieur est une zone de confiance (Microsoft avec Internet Explorer a m\u00eame \u00e9tendu cette notion au niveau applicatif avec des zones de plus ou moins de confiance, et l&rsquo;a d&rsquo;ailleurs pay\u00e9 assez cher par plusieurs failles de s\u00e9curit\u00e9 li\u00e9es \u00e0 des attaques semblant venir de ce qu&rsquo;IE pensait \u00eatre une zone de confiance).<\/p>\n<h3>Pourquoi changer?<\/h3>\n<p>Cette hypoth\u00e8se, assez ancienne, repose sur l&rsquo;id\u00e9e que l&rsquo;attaque est organis\u00e9e, voire manuelle. Avec la prolif\u00e9ration des virus et des bot-nets associ\u00e9s, cela tend \u00e0 \u00eatre plus discutable maintenant.<br \/>\nDe plus, cette hypoth\u00e8se est simplificatrice, elle ne r\u00e9pond que par r\u00e9duction, voire effet de bord, \u00e0 l&rsquo;exigence de base de la s\u00e9curit\u00e9 : <em>Ce qui n&rsquo;est pas autoris\u00e9 est interdit<\/em>.<\/p>\n<p>D&rsquo;autre part, il est actuellement possible de d\u00e9ployer un firewall de base sur un serveur sans prendre un risque de charge d\u00e9raisonnable, et m\u00eame de crypter les communications (\u00e0 la SSL).<\/p>\n<p>Ainsi, chaque serveur se prot\u00e8ge des acc\u00e8s non autoris\u00e9s, le filtrage pouvant \u00eatre bien plus fin qu&rsquo;avec un firewall qui raisonne g\u00e9n\u00e9ralement par zones. Rien n&#8217;emp\u00eache d&rsquo;ailleurs d&rsquo;ajouter un firewall, par exemple simplement en entr\u00e9e de r\u00e9seau, pour assurer un premier tri, une r\u00e9duction de trafic et un protection contre des erreurs de configuration (2 pr\u00e9cautions valant mieux qu&rsquo;une).<\/p>\n<p>Par exemple, un serveur de base de donn\u00e9es fermera tout sauf<\/p>\n<ul>\n<li>ssh pour l&rsquo;administration, et uniquement les flux entrants provenant des consoles d&rsquo;administration.<\/li>\n<li>sql (un port pour mysql, un peu plus pour Oracle), et uniquement les flux entrants provenant des serveurs applicatifs dont on h\u00e9berge une base de donn\u00e9es.<\/li>\n<li>les flux sortants sont g\u00e9r\u00e9s et s\u00e9curis\u00e9s par le firewall, uniquement en r\u00e9ponse aux flux autoris\u00e9s ci-dessus.<\/li>\n<li>on pourra \u00e9ventuellement ajouter un flux sortant d&rsquo;authentification si elle est centralis\u00e9e, uniquement vers l&rsquo;annuaire.<\/li>\n<li>les communications DNS pourront \u00eatre autoris\u00e9es en entr\u00e9e\/sortie, mais uniquement avec les serveurs DNS.<\/li>\n<\/ul>\n<p>soit 2 ports TCP entrants et filtr\u00e9s, et au plus un port TCP et un port UDP sortants filtr\u00e9s.<\/p>\n<h3>Vers une architecture orient\u00e9e service<\/h3>\n<p>Prenons cette exigence au pied de la lettre, est voyons si l&rsquo;on peut la r\u00e9-exprimer en termes adaptables \u00e0 une <strong>architecture r\u00e9seau\/syst\u00e8me orient\u00e9e services<\/strong>, avec<\/p>\n<ul>\n<li>des clients,<\/li>\n<li>des services consommateurs<\/li>\n<li>et des services fournisseurs<\/li>\n<\/ul>\n<p>(un service pouvant \u00eatre les deux).<\/p>\n<p>Je s\u00e9pare la notion de client et de service consommateur par le fait qu&rsquo;un client n&rsquo;est pas pr\u00e9-identifi\u00e9.<br \/>\nCela diff\u00e9rencie donc deux types de services fournisseurs<\/p>\n<ul>\n<li>les services fournisseurs \u00e0 des clients<\/li>\n<li>les services fournisseurs \u00e0 des services<\/li>\n<\/ul>\n<p>Concentrons-nous sur la relation entre nos deux types de services. On admet commun\u00e9ment que les communications entre les serveurs h\u00e9bergeant ces services sont autoris\u00e9es, c&rsquo;est cette simplification que nous essayons ici d&rsquo;\u00e9viter.<\/p>\n<p>Appliquons pour r\u00e9soudre ce dilemme une d\u00e9clinaison du <a href=\"http:\/\/www.martinfowler.com\/articles\/injection.html\">pattern d&rsquo;inversion de contr\u00f4le (IoC)<\/a> en affirmant que c&rsquo;est le service consomm\u00e9 que l&rsquo;on va \u00ab\u00a0brancher\u00a0\u00bb sur le service consommateur, notre container \u00e9tant le r\u00e9seau, notre branchement sera (par exemple) un tunnel ssh.<\/p>\n<p>On pourra selon l&rsquo;environnement ajouter un syst\u00e8me automatique de reprise en cas de coupure des liens entre serveurs.<\/p>\n<p>par exemple un serveur de base de donn\u00e9es fermera tout sauf<\/p>\n<ul>\n<li>ssh pour l&rsquo;administration, et uniquement les flux entrants provenant des consoles d&rsquo;administration et du serveur d&rsquo;annuaire.<\/li>\n<\/ul>\n<p>mais il \u00e9tablira<\/p>\n<ul>\n<li>un tunnel ssh vers chaque serveur applicatif dont on h\u00e9berge une base de donn\u00e9es.<\/li>\n<li>les communications DNS pourront \u00eatre autoris\u00e9es en entr\u00e9e\/sortie, mais uniquement avec les serveurs DNS.<\/li>\n<\/ul>\n<p>soit 1 port TCP entrant et filtr\u00e9 et au plus un port TCP et un port UDP sortants filtr\u00e9s.<\/p>\n<p>Quels avantages par rapport \u00e0 la solution pr\u00e9c\u00e9dente ?<\/p>\n<ul>\n<li>les communications sont crypt\u00e9es et ouvrent donc notre infrastructure \u00e0 un d\u00e9ploiement multi-site.<\/li>\n<li>les serveurs, au-del\u00e0 de la v\u00e9rification des IPs, sont authentifi\u00e9s r\u00e9ciproquement de fa\u00e7on forte. Le spoofing, m\u00eame interne, est rendu quasiment impossible.<\/li>\n<li>chaque service a un contrat \u00e0 remplir vis-\u00e0-vis de ses clients, en cas de migration\/consolidation par exemple, on peut \u00ab\u00a0basculer\u00a0\u00bb d&rsquo;un ancien \u00e0 un nouveau serveur par une simple micro-coupure.<\/li>\n<\/ul>\n<p>Pour les fournisseurs de services \u00e0 des clients, on pourra conserver le mod\u00e8le pr\u00e9c\u00e9dent, en particulier dans le cas de clients \u00ab\u00a0externes\u00a0\u00bb.<\/p>\n<h3>Perspectives<\/h3>\n<p>Mettre en place ce type d&rsquo;architecture depuis des clients.<\/p>\n<ul>\n<li>Elle n\u00e9cessitera cependant une extension du syst\u00e8me de provisionning pour d\u00e9clarer\/r\u00e9pudier les clients aupr\u00e8s des services fournisseurs (les serveurs frontaux par exemple). Mais ce sera pour un autre article&#8230;<\/li>\n<\/ul>\n<p>Evoluer vers une infrastructure multi-sites car on peut maintenant s&rsquo;affranchir de la continuit\u00e9 de r\u00e9seau<\/p>\n<ul>\n<li>Tirant partie des interconnexions op\u00e9rateurs, bien plus <strong>performantes et r\u00e9siliantes<\/strong> que la plupart de celles rencontr\u00e9es en entreprise ou dans les DRP\/PCA\/PRA (reprise-continuit\u00e9 d&rsquo;activit\u00e9s).<\/li>\n<li>Mettant en <strong>concurrence op\u00e9rationnelle<\/strong> les fournisseurs et r\u00e9pondant en partie au paradoxe centralisation ou r\u00e9duction des co\u00fbts par proximit\u00e9.<\/li>\n<li>R\u00e9duisant les <strong>risques court terme<\/strong> li\u00e9s aux revirements d&rsquo;alliances et de tarifs.<\/li>\n<li>Initiant les \u00e9quipes infrastructures \u00e0 de <strong>nouveaux mod\u00e8les de scalabilit\u00e9<\/strong>, \u00e9conomiques et en phase avec la r\u00e9activit\u00e9 et la proximit\u00e9 des services r\u00e9cents.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s des ann\u00e9es d&rsquo;\u00e9volution de la puissance des serveurs, mais aussi de la complexit\u00e9 des architecture d\u00e9ploy\u00e9es, la r\u00e9ponse des architectures r\u00e9seau aux besoins de s\u00e9curit\u00e9 et d&rsquo;interconnexion n&rsquo;a pas \u00e9norm\u00e9ment \u00e9volu\u00e9. Sagesse ou manque de communication entre discipline? Essayons de voyager d&rsquo;une architecture r\u00e9seau \u00e0 une infrastructure orient\u00e9e services.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-95","post","type-post","status-publish","format-standard","hentry","category-localnet"],"_links":{"self":[{"href":"https:\/\/www.claudebbg.com\/blog2\/wp-json\/wp\/v2\/posts\/95","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.claudebbg.com\/blog2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.claudebbg.com\/blog2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.claudebbg.com\/blog2\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.claudebbg.com\/blog2\/wp-json\/wp\/v2\/comments?post=95"}],"version-history":[{"count":1,"href":"https:\/\/www.claudebbg.com\/blog2\/wp-json\/wp\/v2\/posts\/95\/revisions"}],"predecessor-version":[{"id":3071,"href":"https:\/\/www.claudebbg.com\/blog2\/wp-json\/wp\/v2\/posts\/95\/revisions\/3071"}],"wp:attachment":[{"href":"https:\/\/www.claudebbg.com\/blog2\/wp-json\/wp\/v2\/media?parent=95"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.claudebbg.com\/blog2\/wp-json\/wp\/v2\/categories?post=95"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.claudebbg.com\/blog2\/wp-json\/wp\/v2\/tags?post=95"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}