Polux Développement d`une maquette pour implémenter des tests
Transcription
Polux Développement d`une maquette pour implémenter des tests
Polux Développement d'une maquette pour implémenter des tests de sécurité équipes SERES et SSIR 28 septembre 2007 Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 2 / 55 Plan Première partie I Aspects fonctionnels Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 3 / 55 Plan 1 Présentation des aspects fonctionnels 2 Les serveurs Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 4 / 55 1 2 Plan Présentation des aspects fonctionnels Répartition des services Machines virtuelles Les serveurs Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 5 / 55 Répartition des services Administration des services Sur plusieurs serveurs Quatre serveurs (machines) Suivant les fonctionnalité Webmail IMAP POP3 - SMTP Administration Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 6 / 55 Répartition des services Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 7 / 55 Machines virtuelles Machines virtuelles Modélisent les diérents serveurs Logiciel utilisé : Vmware Simple d'utilisation Très utilisé Disponible sur de nombreux environnements Version serveur : gratuite Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 8 / 55 Machines virtuelles Environnement Gentoo distribution LINUX Bien connue de l'un des étudiants Support de SELinux Module (LKM/LSM) SELinux Renforcement de la sécurité Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 9 / 55 Machines virtuelles Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 10 / 55 1 2 Plan Présentation des aspects fonctionnels Les serveurs Machine virtuelle 4 Machine virtuelle 3 Machine virtuelle 2 Machine virtuelle 1 Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 11 / 55 Machine virtuelle 4 Centralise les services de collaboration Annuaire LDAP Centralise les données et les structures utilisées par les services Gère les comptes des utilisateurs mails Gère les comptes des serveurs Logiciel utilisé : OpenLDAP Très utilisé Gratuit Plateforme : performances, pas un critère clé Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 12 / 55 Machine virtuelle 4 Serveur NFS Regroupe les données des utilisateurs mails, répertoires personnelles des comptes serveurs Accessible par tous les autres serveurs Montage NFS Les données sont partagées par tous Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 13 / 55 Machine virtuelle 4 Serveur DHCP Conguration automatique des serveurs logiciel : dhcpd (ISC) Serveur DNS Collaboration entre les serveurs Accès au web pour les serveurs Accès aux serveurs (webmail, pop et imap) pour les utilisateurs logiciel : BIND Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 14 / 55 Machine virtuelle 4 Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 15 / 55 Machine virtuelle 3 Serveurs POP et SMTP POP3 secours en cas de problème d'IMAP Autre méthode d'accès aux mails Logiciel utilisé Courrier-imap Raisons : voir le serveur IMAP Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 16 / 55 Machine virtuelle 3 Serveurs POP et SMTP SMTP (Simple Mail Transfert Protocol) Envoi de mails (ex : webmail) Réception et stockage des mails des utilisateurs Logiciel utilisé : Postx Simple à congurer Congurable avec LDAP Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 17 / 55 Machine virtuelle 3 Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 18 / 55 Machine virtuelle 2 Serveur IMAP Accès au mail classique Utilisation par le webmail Logiciel utilisé : Courrier-imap Simple à congurer Fichiers de conguration standards, contrairement à Cyrus Accès rapide via webmail pas de problème de certicats TLS Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 19 / 55 Machine virtuelle 2 Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité Machine virtuelle 1 20 / 55 Webmail Accès aux mails via une interface web Envoi de mails Logiciel utilisé : Horde Couramment utilisé Conguration simple (nouvelles versions) Interfaçage avec IMAP Interfaçage avec LDAP Même si fonctionnement partiel Nombreux modules possibles Plus de failles possibles Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 21 / 55 Machine virtuelle 1 Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 22 / 55 Plan Deuxième partie II Aspects sécurité Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 23 / 55 Plan 3 Analyse de la sécurité des services 4 Sécurisation logicielle 5 Sécurisation formelle : SELinux 6 Sécurisation externe (DMZ) : routeur Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 24 / 55 Plan 3 Analyse de la sécurité des services 4 Sécurisation logicielle 5 Sécurisation formelle : SELinux 6 Sécurisation externe (DMZ) : routeur Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité Analyse des besoins en terme de sécurité 25 / 55 Buts Analyser les besoins Justier les techniques mises en place (extension S) Approche : SDC Microsoft - (analyse par points xes) Identication des points d'entrées conance dans les données en entrées conance dans les points d'entrées authentication des entrées Identication des points de sorties identication des accès autorisés existence entrées -> sorties ? => contrôle authentication des sorties Fuite d'informations stockage, condentialité du transfert Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 26 / 55 3 4 Plan Analyse de la sécurité des services Sécurisation logicielle Sécurisation : chirement Sécurisation : séparation des pouvoirs Sécurisation : restriction des accès 5 Sécurisation formelle : SELinux 6 Sécurisation externe (DMZ) : routeur Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 27 / 55 Sécurisation : chirement Certicats SSL OpenSSL CerticatRoot : polux.org Non reconnu : à ajouter sur les serveurs et les clients Schéma de certication : Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 28 / 55 Sécurisation : chirement LDAP : TLS, SSL Authentication et surtout condentialité webmail (apache) : HTTPS SSL Authentication du serveur pour les utilisateurs IMAP/POP : SSL, TLS Authentication et surtout condentialité Authentication du serveur pour les utilisateurs SMTP : SSL, TLS, SASL Authentication et surtout condentialité Authentication du serveur pour les utilisateurs Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 29 / 55 Sécurisation : chirement Certicats SSL : nouveaux points d'entrées Pas d'accès en écriture Accès en lecture ? Dépend de la génération certicats protégés (apache) : 444 certicats non protégés : 4{4|0}0 Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 30 / 55 Sécurisation : séparation des pouvoirs LDAP : accès restreints pour chaque service Accès à des branches distinctes de l'annuaire En lecture et/ou écriture dn:cn=smtp,ou=ldap,ou=accounts,dc=polux,dc=org dn:cn=sasl,ou=ldap,ou=accounts,dc=polux,dc=org dn:cn=dhcp,ou=ldap,ou=accounts,dc=polux,dc=org dn:cn=pam,ou=ldap,ou=accounts,dc=polux,dc=org dn:cn=mail,ou=ldap,ou=accounts,dc=polux,dc=org dn:cn=dns,ou=ldap,ou=accounts,dc=polux,dc=org Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 31 / 55 Sécurisation : restriction des accès NFS : restrictions supplémentaires sur les exports /etc/exports # HOME directories /home-nfs/accounts 10.133.14.11(rw,subtree_check,sync) /home-nfs/accounts 10.133.14.12(rw,subtree_check,sync) /home-nfs/accounts 10.133.14.13(rw,subtree_check,sync) # # mails /home-nfs/mailbox 10.133.14.12(rw,subtree_check,sync) /home-nfs/mailbox 10.133.14.13(rw,subtree_check,sync) Fichiers de conguration : chmod 640 horde/congs/* /etc/ldap.conf Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 32 / 55 Plan 3 Analyse de la sécurité des services 4 Sécurisation logicielle 5 6 Sécurisation formelle : SELinux Problèmes initiaux Informations Générales Module SASL Module (Open)ldap Module manquant : pam_ldap Sécurisation externe (DMZ) : routeur Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 33 / 55 Problèmes initiaux Correction des erreurs génériques cd /lib/modules/2.6.20-hardened-r5 chcon -u system_u * chcon -t modules_dep_t modules.* chcon -u system_u /etc/ld.so.cache chcon -t ld_so_cache_t /etc/ld.so.cache semanage fcontext -a -t ld_so_cache_t /etc/ld.so.cache Correction d'erreurs spéciques Udev : montage dynamique Mysql : accès au chier urandom, bug #26776 Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité Informations Générales 34 / 55 Attention particulière apportée à l'étude Des accès aux objets externes par le module Des accès aux chiers du module par le monde extérieur Analyse Sécurité et connement du projet Par réduction des privilèges en fonction des spécicités d'implémentation de la maquette en se basant sur l'étude des besoins eectuée précédemment Analyse de module de base : connement déjà bien dénie Quelques modications : améliorer le connement Plugin PAM, couplé avec LDAP : pas de politique de sécurité Peu de documentation disponible au niveau de la spécication Récupération manuelle (notamment la description des macros) Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 35 / 55 Module SASL Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité Module SASL 36 / 55 Analyses Environnement du projet SASL variables utilisées et signications Variables personnalisables Actions internes autorisées Accès aux chiers du projet SASL Accès aux chiers du système Fichiers de conguration externes Accès au réseau Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité Module SASL 37 / 55 Ajouts Renforcement règles résaux possible Dans notre cas, seules les connexions locales sont nécessaires. gen_tunable(allow_saslauthd_network_auth,true) corenet_tcp_sendrecv_lo_if(saslauthd_t) Fichiers de conguration externes item /etc/conf.d/saslauthd et /etc/sasl2/* renforcement : type saslauthd_cong_t Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 38 / 55 Module (Open)ldap Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité Module (Open)ldap 39 / 55 Analyses Certains types ne sont pas utilisés slapd_lock_t, slapd_replog_t et slapd_tmp_t Mais règles associées sont logiques Ajouts Relations certicats ↔ slapd_cert_t Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 40 / 55 Module manquant : pam_ldap Processus utilisant pam_ldap Connexion en local sur le serveur : login Connexion distante : ssh Rôles SELinux : newrole Types SELinux local_login_t remote_login_t sshd_t newrole_t Fichiers associés à pam_ldap : /etc/ldap.conf Contient password de connexion au serveur ! Droits : root.root, chmod 640 Mais autre processus root y ont accès (label etc_t ) Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 41 / 55 Module manquant : pam_ldap Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité Module manquant : pam_ldap 42 / 55 Fichier pam_ldap.te module pam_ldap 1.0; require { ... } attribute pam_ldap_t; type pam_ldap_etc_t; typeattribute local_login_t pam_ldap_t; typeattribute sshd_t pam_ldap_t; typeattribute newrole_t pam_ldap_t; allow pam_ldap_t pam_ldap_etc_t:file {read getattr}; allow pam_ldap_t etc_t:dir { getattr search read lock ioctl }; ... Tests runcon -u system_u -r system_r -t slapd_t less /etc/ldap.conf Aug 28 16:13:27 mv4 audit(1188310407.406:244): avc: denied { getattr } for pid=10153 comm="lesspipe.sh" name="ldap.conf" ... Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 43 / 55 Plan 3 Analyse de la sécurité des services 4 Sécurisation logicielle 5 Sécurisation formelle : SELinux 6 Sécurisation externe (DMZ) : routeur SNORT Firewall Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 44 / 55 Diérentes utilisations Diérentes utilisations Snier Enregistreur de paquets C IDS IPS Solution Mise en place : IPS Plusieurs possiblités scripts perl (NetSQUID, Guardian), plugin SNORT (SnortSAM), SNORT-inline SNORT-inline : SNORT + iptables Développements supporté par l'équipe de SNORT Trois nouveaux types de règles SNORT : drop, reject et sdrop Paquets de la table QUEUE d'iptables (plus libpcap) Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 45 / 55 Implémentation dans la maquette Communications SSL Donner la capacité à SNORT de déchirer les ux SSL logiciel tiers (plugin) déchirant SSL Fournir les clés privés à un logiciel données critiques SSLdump : gratuit, problèmes de stabilité, failles de sécurité, communication en clair entre SSLdump et SNORT Plugin SNORT (par Breach) : payant Plugin SNORT SnortSSL : opensource, mais pour windows (pour le moment) Protection du rewall Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 46 / 55 Implémentation dans la maquette Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 47 / 55 Routage : accès aux et pour les machines virtuelles Réseau local : Translation d'adresses nécessaire Translation de ports, éventuellement Table de iptables : NAT. Seul le premier paquet de chaque connexion passe à travers cette table PREROUTING : paquets arrivant de l'extérieur iptables -t nat -A PREROUTING -d 192.168.57.150 -p tcp --destination-port 9854 -j DNAT --to-destination 10.133.14.1:22 POSTROUTING : paquets après décision de routage iptables -t nat -A POSTROUTING --destination ! 192.168.57.153 1 -s 10.133.14.0/24 -j SNAT --to-source 192.168.57.150 Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 48 / 55 Contrôle des accès Table de iptables : lter Connexion real-virtual : rejetée par défaut (politique fermée) iptables -A selectRule -i $PUBLIC -o $PRIVATE -j real-virtual PRIVATE="vmnet1" PUBLIC="eth0" iptables -A real-virtual -j DROP Exemple : connexion au réseau local, serveur apache iptables -A real-virtual -d 10.133.14.11 -p tcp --destination-port http -j ACCEPT iptables -A real-virtual -d 10.133.14.11 -p tcp --destination-port 443 -j ACCEPT Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 49 / 55 Contrôle des accès Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 50 / 55 Plan Troisième partie III Bilan Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 51 / 55 Plan Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 52 / 55 Partie fonctionnelle Développement des diérentes services Quatres machines virtuelles Neuf serveurs logiciels, pour chaque service SELinux over Gentoo Émulation : vmware Documentation complète Tests lors du redéploiement (n juillet) à l'ENST Bretagne Tests ensuite lors du redéploiement (début septembre) à Supelec Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 53 / 55 Partie sécurité Analyse des besoins Approche point d'entrées / de sorties, ux d'informations Sécurisation logicielle Chirement, séparation des pouvoirs Sécurisation formelle Étude des modules SELinux existants SASL et OpenLDAP Développement d'un module pour pam ldap Sécurisation externe SNORT IPS sur le rewall pas d'analyse des communications SSL Firewall politique fermée, translation d'adresses Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 54 / 55 Rapports Quatre rapports complets Rapport fonctionnel (∼ 70 pages) Rapport sécurité (∼ 120 pages) Rapport sur les modules SELinux étudiés (informations annexes, description des macros) Rapport sur la migration entre Gentoo (SSIR) et Ubuntu (SERES) Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité 55 / 55 Éléments restants Sécurisation logicielle DNSSEC : limites de BIND + LDAP DHCP : Support SSL seulement en RFC NFS : sécurité : NFS over SSH mais impose contrôle SSH Problèmes sur sdb-ldap : connexion ssl Modules SELinux Analyse des autres modules Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité