tv21 02-07 linuxembedded
DESCRIPTION
TRANSCRIPT
Frédéric [email protected] 950 260 370
Construction et sécurisation d'un Construction et sécurisation d'un système Linux embarquésystème Linux embarqué
Différentes approches
● Création d'une distribution “From Scratch”– Nécessite un investissement intellectuel
– Forte granularité
– Parfaite maîtrise du projet
– Conseillé si LINUX est stratégique
● Choix d'un produit commercial – Outils graphiques
– Cross compilation
– Support technique
● Mais
– Granularité moindre
– Coût de support parfois élevé
Phases de construction d'un système
● Optimisation de la procédure de démarrage du système
● Réduction drastique de l'utilisation mémoire (utilisation de ucLibc et Busybox)
● Optimisation du noyau en fonction des fonctionnalités nécessaires (pilotes de périphériques, réseau ou non, etc...).
● Réduction et simplification du nombre de fichiers et répertoires de configuration comme /etc contenant la majorité des fichiers de config.
● Suppression du système de swap: un système embarqué est destiné à un usage bien défini et sera donc suffisamment dimensionné en mémoire vive pour éviter l'utilisation d'une partition de swap.
Optimisation du démarrage
• boot du système par LILO (LInux LOader) ou un programme équivalent
• chargement du noyau
• lancement par le noyau du processus init (/sbin/init)
• lecture du fichier /etc/inittab par le processus init. Ce fichier contient en général le nom du script de démarrage:
# System initialization (runs when system boots).si:S:sysinit:/etc/rc.d/rc.S
• le script en question poursuit l'initialisation du système
Construction d'un environnement “Lightweight”
• Utilisation de uclibc• Nécessite:
• binutils• gcc
• Remplacement des commandes systèmes par busybox• Prend en charge la majorité des commandes usuelles
Linux
Optimisation du noyau
• Sélection de l'architecture cible• Inventaire des drivers utiles
• Supprimer tous les autres
• Optimisation en espace (option -Os de gcc)• Suppression des fonctionnalités inutiles
Interfaces graphiques
• De plus en plus fréquent
• X Window System: parfois peu adapté car coûteux en ressources
• Reste cependant la référence dans le monde UNIX (plugins, etc...)
• XFree86 peut être optimisé en taille et ressources (Xkdrive, mode VESA...)
• Frame-buffer LINUX: accès aux modes graphiques sans X11 (en général mode VESA + quelques supports spécifiques)
• QTopia (ex Qt/Embedded )
• Compatible source avec Qt: à la base de KDE et du navigateur OPERA
• Utilise le frame-buffer LINUX
• Déja éprouvé dans des solutions industrielles avec OPERA (Motorola, Sony mylo, sharp, volvo,...)
• Existe en version GPL ==> applications DOIVENT être GPL
• GTK+
Exemple d'environnement de développement pour l'embarqué
Station de développement
Cross GCCBinutils architecture cibleucLibc architecture cible
Filesystem cible:Base-layoutucLibcBusybox
ou
*
* en utilisant un sous-système permettant de faire fonctionner gcc, ex: cygwin
Sécurisation du système● Principes de sécurisation identiques à
l'informatique traditionnelle– La sécurité parfaite N'EXISTE PAS
– Objectif : Rendre le plus complexe possible les « turnaround »
– Contraintes particulières● D'espace de stockage● D'espace mémoire
Sécurisation du système● Isoler applicatif du système
– Environnement « chrooté »● Un environnement « virtuel » et disjoint du système
principal● Exemple : serveur FTP, serveur WEB, ...● Cantonner l'impact d'une brèche de sécurité à cet
environnement● Difficile à mettre en place dans certains cas
– Front-end web de configuration du système
– Utilisateurs applicatifs non privilégiés (non root)
Sécurisation du système● Noyau compilé dans l'esprit « SELinux »
– SELinux : un ensemble de règles de configuration
– Mais reste un noyau standard avec éventuellement quelque patches
● Un module est capable de tout faire– Modules de noyau figés
● Phase de boot– Chargement des modules connus– echo off > /proc/modules en fin de phase de boot (<= linux-2.4.x)
Sécurisation du système● Définir les éléments qui peuvent être mis à jour
– Noyau
– Modules « trustés »
– Applicatifs
● S'assurer que l'on parle au bon serveur de mise à jour– Utilisation de certificats « clients » pour valider le
serveur
– Utilisation de signature numérique des paquets à mettre à jour
Sécurisation du système● Ce que fait Netfilter
– Effectuer des filtrages de paquets, principalement pour assurer des fonctions de Firewall (Filter)
– Effectuer des opérations de NAT (Network Address Translation)
– Effectuer des opérations de marquage des paquets (Mangle)