Simulation d`un réseau d`entreprise
Transcription
Simulation d`un réseau d`entreprise
Olivier Raulin CSII3 Epsi Nantes Projet Système & Réseau Mise en place d’une infrastructure systèmes et réseaux Ce document a pour but d’expliquer la démarche de recherche, et d’expliquer les choix techniques qui auront été faits afin de mettre en place l’architecture décrite dans le sujet. L’accent sera mis, dans la mesure du possible, sur l’utilisation de solutions libres, permettant, dans certains cas, un challenge technique, tout en conservant un maximum de souplesse, en limitant l’impact financier lié aux licences logicielles. Au vu de la complexité du projet, de la répétitivité de certaines tâches, du temps accordé, et du nombre de cours qui n’ont pas pu être suivis, tous les sujets ne seront pas forcément complètement fonctionnels, et/ou des manques dans la configuration pourront se sentir. Globalement, j’ai essayé de rendre l’infrastructure la plus fonctionnelle possible, comme vous pourrez, je l’espère de la meilleure manière possible, le voir sur les différentes vidéos, uploadées sur la plateforme DailyMotion, dans l’ordre : http://www.dailymotion.com/video/k6jZHE5iO9UDrP3MjuX http://www.dailymotion.com/video/k3ipU6qCRvM8VP3Mjvn http://www.dailymotion.com/video/k3b7OYw30PF9Mp3MjHO http://www.dailymotion.com/video/k7i8CptfR6JIss3Mknr http://www.dailymotion.com/video/k5CDPMMg1Vsv6i3MkAR I Interconnexion des sites Afin de simuler une bande passante symétrique de 2mbps, l’utilisation de la QoS présente dans le noyau Linux sera utilisée. Afin de simplifier l’installation, cette machine fera office de routeur et de solution de VPN via IPSec. OpenSwan sera mis en œuvre à cet effet (note : absent lors de la visio, je n’ai pas pu la rattraper) /etc/ipsec.conf : # /etc/ipsec.conf - Openswan IPsec configuration file # This file: /usr/share/doc/openswan/ipsec.conf-sample # # Manual: ipsec.conf.5 version 2.0 # conforms to second version of ipsec.conf specification # basic configuration config setup nat_traversal=yes # exclude networks used on server side by adding %v4:!a.b.c.0/24 virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!192.168.0.0/24 ,%v6:fc00::/7 # OE is now off by default. Uncomment and change to on, to enable. oe=off # which IPsec stack to use. auto will try netkey, then klips then mast protostack=netkey interfaces=%"defaultroute" # Add connections here conn projetreseau type=tunnel authby=secret left=192.168.3.1 right=192.168.3.2 leftsubnets={192.168.0.0/24 192.168.1.0/24} rightsubnet=192.168.2.0/24 auto=start conn projetreseauv6 connaddrfamily=ipv6 tu a yt ph eb =y t= us ne nc er let left=fd00:dead:beef:3::1 right=fd00:dead:beef:3::2 leftsubnets={fd00:dead:beef:1::/64 fd00:dead:beef::/64} rightsubnet=fd00:dead:beef:2::/64 auto=start /etc/ipsec.secrets include /var/lib/openswan/ipsec.secrets.inc 192.168.3.1 192.168.3.2 : PSK "0xe6cf42f0_84f90d68_587a782f_913306f8_43b2b779_6201fe50_107621a5_2d9024f8" fd00:dead:beef:3::1 fd00:dead:beef:3::2 : PSK "SECRET" Pour la QoS, la commande Linux tc sera utilisée tc qdisc add dev eth1 root handle 1: htb default 1 r2q 160 tc class add dev eth1 parent 1: classid 1:1 htb rate 2048kbit iptables -t mangle -A POSTROUTING -o eth1 -m mark -j CLASSIFY --set-class 1:1 --mark 0x12 II Infrastructure serveur Les fonctionnalités attendues dans ce projet sont : Un contrôleur de domaine Afin de rendre ce service, il est possible d’utiliser, au choix, un serveur de type Windows Server, ou un serveur Linux avec le service Samba configuré correctement (utilisant Kerberos, LDAP, etc.) Mon choix se portera pour la version 4 de samba, très récente, pour son support de la fonctionnalité de stratégies de groupe, et pour le défi technique qu’impose une version fraîchement sortie (compilation des sources, etc) Nous considérerons qu’il existe 3 types de matériels utilisés par les employés au sein de l’entreprise : des ordinateurs de bureau ; des ordinateurs portables ; des tablettes / smartphones (qu’il ne sera cependant pas possible de simuler). On imaginera que ces différents matériels utilisent des systèmes différents, comme par exemple des machines Windows, Linux, et MacOS, ainsi que des appareils Apple, Android ou BlackBerry. Nous testerons uniquement des clients Windows PC, dans sa version XP, pour des raisons de consommation mémoire (machine physique assez limitée) et de charge de travail nécessaire à des tests plus poussés Les choix techniques prennent en compte ces différents matériels, et font en sorte que ceuxci puissent fonctionner dans des conditions optimales. smb.conf # Global parameters [global] workgroup = PROJETRESEAU realm = PROJETRESEAU.LOCAL netbios name = SAMBA server role = active directory domain controller [netlogon] path = /usr/local/samba/var/locks/sysvol/projetreseau.local/scripts read only = No [sysvol] path = /usr/local/samba/var/locks/sysvol read only = No [test] path=/share/test read only = No public = yes krb5.conf [libdefaults] default_realm = PROJETRESEAU.LOCAL dns_lookup_realm = false dns_lookup_kdc = true projetreseau.local.zone $ORIGIN projetreseau.local. $TTL 1W @ IN SOA samba hostmaster ( 2013010317 ; serial 2D ; refresh 4H ; retry 6W 1W ) IN NS samba IN AAAA fd00:dead:beef::1 IN A 192.168.0.1 ; @ mail IN IN MX MX 10 10 ; expiry ; minimum mail mail samba IN AAAA fd00:dead:beef::1 samba IN A 192.168.0.1 gc._msdcs IN A 192.168.0.1 gc._msdcs IN AAAA fd00:dead:beef::1 06a7f8ee-59c4-4445-b075-10a818fc2ccc._msdcs IN CNAME samba ; ; global catalog servers _gc._tcp IN SRV 0 100 3268 samba _gc._tcp.Default-First-Site-Name._sites IN SRV 0 100 3268 samba _ldap._tcp.gc._msdcsIN SRV 0 100 3268 samba _ldap._tcp.Default-First-Site-Name._sites.gc._msdcs IN SRV 0 100 3268 samba ; ; ldap servers _ldap._tcp IN SRV 0 100 389 samba _ldap._tcp.dc._msdcsIN SRV 0 100 389 samba _ldap._tcp.pdc._msdcs IN SRV 0 100 389 samba _ldap._tcp.45f4bae5-0589-441d-9406-725577719f8e.domains._msdcs IN SRV 100 389 samba _ldap._tcp.Default-First-Site-Name._sites IN SRV 0 100 389 samba _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs IN SRV 0 100 389 samba ; ; krb5 servers _kerberos._tcp IN SRV 0 100 88 samba _kerberos._tcp.dc._msdcs IN SRV 0 100 88 samba _kerberos._tcp.Default-First-Site-Name._sites IN SRV 0 100 88 samba _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs IN SRV 0 100 88 samba _kerberos._udp IN SRV 0 100 88 samba ; MIT kpasswd likes to lookup this name on password change _kerberos-master._tcp IN SRV 0 100 88 samba _kerberos-master._udp IN SRV 0 100 88 samba ; ; kpasswd _kpasswd._tcp IN SRV 0 100 464 samba _kpasswd._udp IN SRV 0 100 464 samba ; ; heimdal 'find realm for host' hack _kerberos IN TXTPROJETRESEAU.LOCAL 0 proxy IN proxy IN A AAAA 192.168.1.10 fd00:dead:beef:1::10 mail mail IN IN A AAAA 192.168.1.11 fd00:dead:beef:1::11 voip voip IN IN A AAAA 192.168.1.12 fd00:dead:beef:1::12 web web IN IN A AAAA 192.168.1.13 fd00:dead:beef:1::13 samba IN samba IN A AAAA 192.168.0.1 fd00:dead:beef:0::1 samba-pri IN A samba-pri IN AAAA 192.168.2.2 fd00:dead:beef:2::2 gw-bdx gw-bdx IN IN A AAAA 192.168.1.254 fd00:dead:beef:1::ffff samba-pri samba-pri IN IN A AAAA 102.168.2.1 fd00:dead:beef:2::1 sugar IN CNAME web Un serveur de fichiers Ici, nous avons deux solutions qui se profilent, notamment entre un système Windows et un système Linux. Le système Windows a l’avantage de la simplicité de configuration, puisqu’un rôle de serveur de fichiers peut se mettre en place très simplement. Cependant, le coût de la licence, non nécessairement justifié pour ce type d’usage est un frein à son utilisation, et la stabilité du système reste contestée dans le monde de l’informatique. Un système Linux aura l’avantage de pouvoir fonctionner sur une machine plus modeste, ne nécessitera pas l’achat d’une licence, et sera pleinement compatible avec les machines Windows Linux et MacOS présentes dans l’entreprise, via la configuration de Samba et de NFS Samba (partage CIFS) Samba sera utilisé afin d’assurer la compatibilité avec les systèmes Microsoft. Les machines Linux et MacOS sont capables demonter des systèmes de fichiers SAMBA. (Voir smb.conf en partie précédente) Un accès à Internet limité à quelques protocoles L’accès Internet doit se limiter à l’accès HTTP, HTTPS et FTP. Plusieurs solutions se profilent ici, avec notamment : Le filtrage via Netfilter Il est effectivement possible de filtrer, via Netfilter, les protocoles autorisés à sortir de l’entreprise. Cependant, la maintenance deviendrait très rapidement complexe, et nécessitera une étude potentiellement assez poussée afin de pouvoir se voir apporter des modifications. De plus, il faut penser aux obligations légales de l’entreprise, qui font que tout accès à un site Internet puisse être identifié, avec l’identité de la personne, la date et l’heure de connexion, et le site visité. Cela n’est pas directement possible via Netfilter. L’utilisation d’un proxy L’utilisation d’un proxy apporte plusieurs avantages : plus de sécurité ; une configuration plus aisée à réaliser et à maintenir ; la possibilité de restreindre plus finement les protocoles (par exemple, allouer un débit maximal à un site web gourmand, par exemple) et les usages (limitation du débit pour un utilisateur très consommateur, etc.) ; l’identification éventuelle de qui a visité quel site (ou du poste qui a servi à consulter le site web), dans un but légal de conservation des logs ; de cache pour le web, permettant une accélération du chargement des pages et une diminution de l’utilisation de la bande passante. Cette solution sera retenue, et c’est le projet libre Squid qui sera retenu, pour sa robustesse et sa réputation. Il aurait été possible de lui rajouter squidGuard, qui permet de gérer plus finement quels sites sont autorisés et/ou bloqués, mais faute de temps, celuici ne sera pas implémenté. squid.conf acl Safe_Ports port 80 acl Safe_Ports port 443 acl Safe_Ports port 21 #HTTP #HTTPS #FTP acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 acl bdx src 192.168.0.0/24 fd00:dead:beef::/64 acl pri src 192.168.2.0/24 fd00:dead:beef:2::/64 acl serveurs src 192.168.1.0/24 fd00:dead:beef:1::/64 acl SSL_ports port 443 acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access allow bdx http_access allow pri http_access allow serveurs http_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 refresh_pattern ^gopher: 1440 0% refresh_pattern -i (/cgi-bin/|\?) 0 refresh_pattern . 0 20% 20% 1440 0% 4320 10080 0 netfilter sera utilisé sur les routeurs afin d’autoriser le trafic vers le port 3128 à destination du proxy, mais pas le trafic du port 80, 21 ou 443 (exemple de configuration) iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p tcp --dport 3128 -d 192.168.1.10 -j ACCEPT iptables -A FORWARD -p tcp --dport 80 -s 192.168.1.10 -j ACCEPT iptables -A FORWARD -p tcp --dport 443 -s 192.168.1.10 -j ACCEPT iptables -A FORWARD -p tcp --dport 20 -s 192.168.1.10 -j ACCEPT iptables -A FORWARD -p tcp --dport 21 -s 192.168.1.10 -j ACCEPT iptables -A FORWARD -j DROP Un accès Intranet et Internet à une solution de messagerie et à un CRM Dans ce pointci, plusieurs notions nouvelles entrent en jeu : en effet, l’entreprise doit être accessible de l’extérieur. Bien évidemment, cela amène des questions relatives à la sécurité. A cet effet, sera mise en place une zone démilitarisée (DMZ) au sein du Système d’Information, ce afin de garantir au mieux la sécurité de ce Système d’Information. Cette DMZ sera située sur le site de Bordeaux, étant donné le rapport d’employés présents directement sur le site. Les employés de Paris y accéderont via le VPN mis en place. Cette zone démilitarisée comprendra donc : un serveur WEB un serveur de mail le serveur de VoIP Elle sera protégée par un parefeu. Ceuxci seront de simples machines Linux, et le parefeu sera Netfilter. Le serveur DNS Celuici répondra sur le port 53, uniquement à des requêtes DNS. Cette machine sera de type Linux, avec bind9 en tant que serveur DNS. Il sera intégré au serveur samba pour la simplicité de la configuration. Celuici gèrera aussi bien les résolutions locales (projetreseau.local) que les résolutions depuis Internet (projetreseau.com) : cependant, cette fonctionnalité ne pourra pas être testée, étant donné la “variabilité” de l’adresse IP publique utilisé par la machine de virtualisation, la nonpossibilité de configurer le NAT de VMWare, ainsi que la non mise à disposition d’un nom de domaine le permettant. Sa mise en place ne sera pas réalisée. Elle sera cependant simple. Il faudra configurer le NAT entrant pour autoriser les requêtes DNS et les rediriger vers le serveur DNS interne (table mangle d’iptables) Le serveur web Le serveur web, quant à lui, ne répondra que sur le port 80, à la fois aux clients internes à l’entreprise qu’aux clients externes. Il accueillera le CRM de l’entreprise, qui disposera lui d’une authentification via l’Active Directory de l’entreprise. Il devra donc pouvoir interroger l’annuaire de l’entreprise. Le fichier de configuration d’Apache n’a pas été modifié par rapport à la version par défaut Fichier de configuration de l’hôte virtuel sugar.projetreseau.local : 001-sugar <VirtualHost *:80> ServerName sugar.projetreseau.local DocumentRoot /var/www/sugar ErrorLog /var/log/apache2/sugar-error.log </VirtualHost> Le serveur mail Les collaborateurs doivent pouvoir envoyer et recevoir des mails, au sein de l’entreprise mais également vers l’extérieur. Celuici accueillera donc les connexions sur le port 25 (SMTP) depuis le réseau local et l’extérieur, et écoutera pour la récupération des messages sur le ports 993 (IMAPS) Il accueille une interface de type “webmail”, intégrée à la solution choisie, Zimbra. Le serveur de VoIP Le serveur de VoIP doit permettre autant des appels internes que des appels externes. A cet effet, il sera joignable depuis l’intérieur et l’extérieur de l’entreprise Accessibilité de l’extérieur Afin de rendre accessible ces services de l’extérieur, il aurait fallu créer des règles de NAT/PAT sur les différents parefeux, afin de rediriger correctement ces flux vers les bons serveurs internes. Malheureusement, du fait du manque de temps cela n’a pas pu être effectué. Les règles de NAT utiliseraient la table mangle afin de modifier les paquets et les diriger vers la bonne destination. Une connectivité IPv6 L’autoconfiguration du protocole IPv6 sera utilisée, via le démon radvd qui sera installé sur les interfaces internes des routeurs/parefeux. Celuici diffusera son préfixe, et les clients génèreront euxmêmes une adresse IPv6. L’IPv6 ayant précédance lorsqu’elle cohabite avec la version 4 sur un réseau, celleci sera naturellement utilisée lorsque disponible. Par simplicité, une connectivité IPv4 sera tout de même assurée afin d’éviter la mise en place d’une passerelle 6to4 en sortie. La configuration DNS spécifiera les champs AAAA aux côtés des champs A classiques. De la VoIP avec un standard Une politique de QoS aurait dû être appliquée afin de permettre au minimum 10 communications simultanées d’avoir lieu dans de bonnes conditions. L’exemple de mise en place de QoS afin de limiter le lien à 2mbps devrait être répliqué, en marquant les paquets des ports utilisés par la VoIP, et en les priorisant face au “reste” du trafic. Un IPBX sera configuré afin de faire office de standard. Un appel est possible entre Paris et Bordeaux, au travers du tunnel IPSec. L’appel vers et depuis l’extérieur n’a pas été géré. De la supervision Afin de pouvoir détecter une panne sur le réseau, une solution de type Nagios sera mise en place, car sa réputation n’est plus à faire dans ce domaine, et qu’il est opensource. Un serveur de type FAN (Fully Automated Nagios) a été installé, mais je n’ai pas eu le temps de le configurer. Il ne monitore donc aucun service. Schéma de fonctionnement de l’architecture III Plan d’adressage 1) 3 sousréseaux A) Sousréseau Paris 192.168.2.0/24 fd00:dead:beef:2::/64 B) Sousréseau DMZ Bordeaux 192.168.1.0/24 fd00:dead:beef:1::/64 C) Sousréseau Bordeaux 192.168.0.0/24 fd00:dead:beef::/64 Je reste bien évidemment à votre disposition pour toute information complémentaire par mail à l’adresse [email protected]