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é