tv21 02-07 linuxembedded

13
Frédéric AIME [email protected] 0 950 260 370 Construction et sécurisation d'un Construction et sécurisation d'un système Linux embarqué système Linux embarqué

Upload: pascal-flamand

Post on 28-Nov-2014

153 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Tv21 02-07 linuxembedded

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é

Page 2: Tv21 02-07 linuxembedded

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é

Page 3: Tv21 02-07 linuxembedded

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.

Page 4: Tv21 02-07 linuxembedded

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

Page 5: Tv21 02-07 linuxembedded

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

Page 6: Tv21 02-07 linuxembedded

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

Page 7: Tv21 02-07 linuxembedded

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+

Page 8: Tv21 02-07 linuxembedded

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

Page 9: Tv21 02-07 linuxembedded

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

Page 10: Tv21 02-07 linuxembedded

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)

Page 11: Tv21 02-07 linuxembedded

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)

Page 12: Tv21 02-07 linuxembedded

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

Page 13: Tv21 02-07 linuxembedded

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)