PoluxDé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 / 55Plan
Première partie I
Aspects fonctionnels
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
3 / 55Plan
1 Présentation des aspects fonctionnels
2 Les serveurs
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
4 / 55Plan
1 Présentation des aspects fonctionnelsRépartition des servicesMachines virtuelles
2 Les serveurs
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
5 / 55Répartition des services
Administration des servicesSur plusieurs serveursQuatre serveurs (machines)Suivant les fonctionnalité
WebmailIMAPPOP3 - SMTPAdministration
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
6 / 55Répartition des services
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
7 / 55Machines virtuelles
Machines virtuellesModélisent les di�érents serveursLogiciel utilisé : Vmware
Simple d'utilisationTrès utiliséDisponible sur de nombreux environnementsVersion serveur : gratuite
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
8 / 55Machines virtuelles
EnvironnementGentoo
distribution LINUXBien connue de l'un des étudiantsSupport de SELinux
Module (LKM/LSM) SELinuxRenforcement de la sécurité
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
9 / 55Machines virtuelles
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
10 / 55Plan
1 Présentation des aspects fonctionnels
2 Les serveursMachine virtuelle 4Machine virtuelle 3Machine virtuelle 2Machine virtuelle 1
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
11 / 55Machine virtuelle 4
Centralise les services de collaborationAnnuaire LDAP
Centralise les données et les structures utilisées par les servicesGère les comptes des utilisateurs mailsGère les comptes des serveursLogiciel utilisé : OpenLDAP
Très utiliséGratuitPlateforme : performances, pas un critère clé
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
12 / 55Machine virtuelle 4
Serveur NFSRegroupe les données des utilisateurs
mails, répertoires personnelles des comptes serveurs
Accessible par tous les autres serveursMontage NFS
Les données sont partagées par tous
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
13 / 55Machine virtuelle 4
Serveur DHCPCon�guration automatique des serveurslogiciel : dhcpd (ISC)
Serveur DNSCollaboration entre les serveursAccès au web pour les serveursAccès aux serveurs (webmail, pop et imap) pour les utilisateurslogiciel : BIND
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
14 / 55Machine virtuelle 4
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
15 / 55Machine virtuelle 3
Serveurs POP et SMTPPOP3
secours en cas de problème d'IMAPAutre méthode d'accès aux mails
Logiciel utiliséCourrier-imapRaisons : voir le serveur IMAP
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
16 / 55Machine virtuelle 3
Serveurs POP et SMTPSMTP (Simple Mail Transfert Protocol)
Envoi de mails (ex : webmail)Réception et stockage des mails des utilisateurs
Logiciel utilisé : Post�xSimple à con�gurerCon�gurable avec LDAP
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
17 / 55Machine virtuelle 3
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
18 / 55Machine virtuelle 2
Serveur IMAPAccès au mail classiqueUtilisation par le webmailLogiciel utilisé : Courrier-imap
Simple à con�gurerFichiers de con�guration standards, contrairement à CyrusAccès rapide via webmailpas de problème de certi�cats TLS
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
19 / 55Machine virtuelle 2
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
20 / 55Machine virtuelle 1
WebmailAccès aux mails via une interface webEnvoi de mails
Logiciel utilisé : HordeCouramment utiliséCon�guration simple (nouvelles versions)Interfaçage avec IMAPInterfaçage avec LDAP
Même si fonctionnement partiel
Nombreux modules possiblesPlus de failles possibles
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
21 / 55Machine virtuelle 1
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
22 / 55Plan
Deuxième partie II
Aspects sécurité
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
23 / 55Plan
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 / 55Plan
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é
25 / 55Analyse des besoins en terme de sécurité
ButsAnalyser les besoinsJusti�er les techniques mises en place (extension S)
Approche : SDC Microsoft - (analyse par points �xes)Identi�cation des points d'entrées
con�ance dans les données en entréescon�ance dans les points d'entréesauthenti�cation des entrées
Identi�cation des points de sortiesidenti�cation des accès autorisésexistence entrées -> sorties ? => contrôleauthenti�cation des sorties
Fuite d'informationsstockage, con�dentialité du transfert
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
26 / 55Plan
3 Analyse de la sécurité des services
4 Sécurisation �logicielle�Sécurisation : chi�rementSécurisation : séparation des pouvoirsSé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 / 55Sécurisation : chi�rement
Certi�cats SSLOpenSSLCerti�catRoot : polux.orgNon reconnu : à ajouter sur les serveurs et les clients
Schéma de certi�cation :
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
28 / 55Sécurisation : chi�rement
LDAP : TLS, SSLAuthenti�cation et surtout con�dentialité
webmail (apache) : HTTPSSSLAuthenti�cation du serveur pour les utilisateurs
IMAP/POP : SSL, TLSAuthenti�cation et surtout con�dentialitéAuthenti�cation du serveur pour les utilisateurs
SMTP : SSL, TLS, SASLAuthenti�cation et surtout con�dentialitéAuthenti�cation du serveur pour les utilisateurs
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
29 / 55Sécurisation : chi�rement
Certi�cats SSL : nouveaux points d'entrées
Pas d'accès en écritureAccès en lecture ?
Dépend de la générationcerti�cats protégés (apache) : 444certi�cats non protégés : 4{4|0}0
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
30 / 55Sécurisation : séparation des pouvoirs
LDAP : accès restreints pour chaque serviceAccès à des branches distinctes de l'annuaireEn 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 / 55Sé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 con�guration : chmod 640horde/con�gs/*/etc/ldap.conf
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
32 / 55Plan
3 Analyse de la sécurité des services
4 Sécurisation �logicielle�
5 Sécurisation �formelle� : SELinuxProblèmes initiauxInformations GénéralesModule SASLModule (Open)ldapModule manquant : pam_ldap
6 Sécurisation �externe� (DMZ) : routeur
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
33 / 55Problè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éci�quesUdev : montage dynamiqueMysql : accès au �chier urandom, bug #26776
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
34 / 55Informations Générales
Attention particulière apportée à l'étudeDes accès aux objets externes par le moduleDes accès aux �chiers du module par le monde extérieur
AnalyseSécurité et con�nement du projetPar réduction des privilèges
en fonction des spéci�cités d'implémentation de la maquetteen se basant sur l'étude des besoins e�ectuée précédemment
Analyse de module de base : con�nement déjà bien dé�nieQuelques modi�cations : améliorer le con�nement
Plugin PAM, couplé avec LDAP : pas de politique de sécuritéPeu de documentation disponible au niveau de la spéci�cation
Récupération manuelle (notamment la description des macros)
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
35 / 55Module SASL
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
36 / 55Module SASL
AnalysesEnvironnement du projet SASL
variables utilisées et signi�cationsVariables personnalisables
Actions internes autoriséesAccès aux �chiers du projet SASLAccès aux �chiers du systèmeFichiers de con�guration externesAccès au réseau
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
37 / 55Module SASL
AjoutsRenforcement 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 con�guration externesitem /etc/conf.d/saslauthd et /etc/sasl2/*renforcement : type saslauthd_con�g_t
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
38 / 55Module (Open)ldap
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
39 / 55Module (Open)ldap
AnalysesCertains types ne sont pas utilisés
slapd_lock_t, slapd_replog_t et slapd_tmp_t
Mais règles associées sont logiques
AjoutsRelations certi�cats ↔ slapd_cert_t
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
40 / 55Module manquant : pam_ldap
Processus utilisant pam_ldapConnexion en local sur le serveur : loginConnexion distante : sshRôles SELinux : newrole
Types SELinuxlocal_login_tremote_login_tsshd_tnewrole_t
Fichiers associés à pam_ldap : /etc/ldap.confContient password de connexion au serveur !Droits : root.root, chmod 640Mais autre processus root y ont accès (label etc_t)
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
41 / 55Module manquant : pam_ldap
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
42 / 55Module manquant : pam_ldap
Fichier pam_ldap.temodule 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 };
...
Testsruncon -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 / 55Plan
3 Analyse de la sécurité des services
4 Sécurisation �logicielle�
5 Sécurisation �formelle� : SELinux
6 Sécurisation �externe� (DMZ) : routeurSNORTFirewall
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
44 / 55Di�érentes utilisations
Di�érentes utilisationsSni�erEnregistreur de paquets CIDSIPS
Solution Mise en place : IPSPlusieurs possiblités
scripts perl (NetSQUID, Guardian), plugin SNORT(SnortSAM), SNORT-inline
SNORT-inline : SNORT + iptablesDéveloppements supporté par l'équipe de SNORTTrois nouveaux types de règles SNORT : drop, reject et sdropPaquets de la table QUEUE d'iptables (plus libpcap)
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
45 / 55Implémentation dans la maquette
Communications SSLDonner la capacité à SNORT de déchi�rer les �ux SSL
logiciel tiers (plugin) déchi�rant SSL
Fournir les clés privés à un logicieldonnées critiquesSSLdump : gratuit, problèmes de stabilité, failles de sécurité,communication en clair entre SSLdump et SNORTPlugin SNORT (par Breach) : payantPlugin 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 / 55Implémentation dans la maquette
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
47 / 55Routage : accès aux et pour les machines
virtuelles
Réseau local :Translation d'adresses nécessaireTranslation de ports, éventuellement
Table de iptables : NAT.Seul le premier paquet de chaque connexion passe à traverscette 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 routageiptables -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 / 55Contrôle des accès
Table de iptables : �lterConnexion 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 apacheiptables -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 / 55Contrôle des accès
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
50 / 55Plan
Troisième partie III
Bilan
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
51 / 55Plan
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
52 / 55Partie fonctionnelle
Développement des di�érentes servicesQuatres machines virtuellesNeuf serveurs logiciels, pour chaque serviceSELinux over Gentoo
Émulation : vmwareDocumentation complète
Tests lors du redéploiement (�n juillet) à l'ENST BretagneTests ensuite lors du redéploiement (début septembre) àSupelec
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
53 / 55Partie sécurité
Analyse des besoinsApproche point d'entrées / de sorties, �ux d'informations
Sécurisation �logicielle�Chi�rement, 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 �rewallpas d'analyse des communications SSL
Firewallpolitique fermée, translation d'adresses
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité
54 / 55Rapports
Quatre rapports completsRapport fonctionnel (∼ 70 pages)Rapport sécurité (∼ 120 pages)Rapport sur les modules SELinux étudiés (informationsannexes, 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 logicielleDNSSEC : limites de BIND + LDAPDHCP : Support SSL seulement en RFCNFS : sécurité : NFS over SSH
mais impose contrôle SSH
Problèmes sur sdb-ldap : connexion ssl
Modules SELinuxAnalyse des autres modules
Julien Thomas, Pierre Martin Polux, maquette pour des tests de sécurité