Logiciels
Yvan VANHULLEBUS
vanhu@[Link]
Libres en
vanhu@[Link]
vanhu@[Link] entreprise
Sommaire
vanhu@darkstar ~$ finger vanhu
Un peu d'histoire...
UNIX
Logiciels Libres
LLs en entreprise
Open Speech
vanhu@darkstar ~$ finger vanhu
Login: vanhu Name: VANHULLEBUS Yvan
Directory: /home/vanhu Shell: /bin/bash
Ingénieur R&D en sécurité Informatique
● NETASQ: Firewalls IPS UTM appliances
● Développements FreeBSD (IPSec, etc...)
Développeur du projet Ipsec-tools
● Développeur NetBSD puis FreeBSD
Membre de l'association Clx
Google: Vanhu+CV+Feeling lucky....
Histoire d'UNIX
Préhistoire de l'informatique
3000 av JC: représentation des nombres
sous forme binaire (octogone Fou-hi).
300 av JC: Aristote définit la logique.
1679: Arithmétique binaire de Leibnitz.
1833: Machine de Babbage.
1840: Ada Lovelace définit le principe
d'algorithme.
1854: Algèbre de Boole.
Avant UNIX
1959: ATLAS I (mémoire virtuelle et multi-
taches).
1961: démonstration de « Compatible Time
Sharing System ».
1964: Alliance MIT, Bell Labs et General
Electic dans le projet MULTICS.
1968: Bell LABS se retire de MULTICS.
Evenements majeurs d'UNIX
1969: UNIX Time Sharing System V1
(Ken Thompson et Dennis Ritchie)
1973: UNIX Time Sharing System V4,
entièrement réécrit en C.
1976: UNIX Time Sharing System V6 diffusé
presque gratuitement et avec ses sources.
1978: Apparition de 1BSD (basé sur UTSS v6)
1984: Le MIT commence à travailler sur X
Window System.
Qu'est-ce qu'un OS ?
En théorie
Une couche d'abstraction
● Matériel
● Logiciels
Un gestionnaire
● Mémoire
● CPU
● Périphériques
En pratique...
Le premier programme qui démarre
Ce qui gère le matériel
Quelques définitions...
Multi-processus (multi-taches coopératif)
● Windows 3.1
Multi-taches (multi-taches préemptif)
● Windows 9x ?
Multi-utilisateurs
● Windows 2K / XP / etc... (versions « pro »...)
● UNIX
● .......
Les "standards"
Standard "de facto"
● .doc ? .docx ?
"Standard"
● JPEG
Normalisé: POSIX, ANSI, IETF (RFCs), etc..
Quelques systèmes d'exploitation...
MS-DOS
Windows 9x / ME
Windows NT / 2K / XP
GNU / Linux, Free / Net / OpenBSD
AIX, Solaris, HP-UX, etc...
Mac OS X, GNU / HURD
BeOS, MacOS, AmigaOS, TOS, RiscOS, CP|M,
etc....
UNIX
Plusieurs UNICES...
SysV
BSDi, *BSD
De nombreux dérivés....
Linux (clone)
Caractéristiques d'un UNIX
Structure en couches
● Noyau
● Librairies système
● Applications
Fonctionnement en réseau
Arborescence de fichiers uniforme
Applications simples et dédiées
Tout est un fichier
Administration
Fichiers de configuration au format texte
● Editables facilement
● Automatisation possible
● Indépendance vis à vis d'une interface
● Administration avancée
Administration à distance
Documentation souvent nécessaire
Interfaces d'utilisation
Mode "shell"
● Puissant (outils spécialisés à assembler)
● Nécessite une certaine habitude
● Léger, utilisable en réseau
Interfaces graphiques
● Plus faciles à utiliser
● Proposent généralement moins de possibilités
● Consomment plus de ressources
Différentes façons de travailler
Fichier source et "compilateur"
● Programmation (C, ADA, Pascal, etc....)
● Documents (LaTeX, Docbook, etc...)
What You See Is (or should be) What You
Get
● Programmation (RAD)
● Documents (Suites bureautiques)
Hybrides
Conclusion (1)
« Généalogie » UNIX
● « Forks »
● Clones (GNU / Linux)
Philosophie UNIX
Les Logiciels Libres
Définition
Open Source Initiative
● [Link]
● Redistribution libre
● Accès au code source
● Travaux dérivés possibles (au moins sous la
même licence)
● Pas de discrimination
● Pas de restrictions sur d'autres programmes
Les licences courantes
GNU General Public Licence
● Travaux dérivés sous GPL
● Séparation du code original
Lesser GPL
● Possibilité de lier un programme non GPL avec
une librairie LGPL
BSD
● Distribution libre, y compris sous une licence non
OpenSource
Origines
Premieres version d'UNIX "ouvertes"
Université de Berkeley (BSD)
Free Software Fundation (GPL)
Avantages pour l'utilisateur
Pas de coûts de licences ou de mise à jour
Accès aux sources
● Audit
● Ajouter des fonctionnalités
● Corriger des bugs
● Optimiser le code
● Possibilités de portage
Fiabilité ?
Inconvénients pour l'utilisateur
Manque d'homogénéité
Manque de crédibilité ?
Pas toujours adaptés aux besoins ?
Pas de garantie d'un éditeur ?
Publier ses sources ?
Avantages
● "Main d'oeuvre" potentielle
● Pérennité du code
● Notoriété
Inconvénients
● Difficile de gagner sa vie ?
● Programmer proprement, algorithmes "fiables"
● Risques de mauvaise notoriété !
Opensource et sécurité ???
Evaluation « comptable »
Evaluations externes
Evaluation théorique
Evaluation scientifique
Evaluation expérimentale
Failles / an ?
Firefox Vs IE ?
● Très variable d'une année sur l'autre
● Très variable d'une version sur l'autre
● Paramètres complexes à prendre en compte
● Nombre de failles ?
● Criticité des failles ?
● Délai de réaction ?
Linux Vs Windows ?
● Impossible de déterminer un périmètre commun
Etudes sérieuses.......
Plusieurs études en faveur de l'Opensource
● Gartner
● Forrester
Quelques études en faveur du propriétaire
● Souvent commandées par de gros éditeurs
Etudes parfois contradictoires
Souvent basées sur failles/an......
En théorie
Pour l'Opensource
● Style de programmation propre
● Audit public
Contre l'Opensource
● « passe temps pour jeunes geeks »
● Code source disponible pour les attaquants
????????????????????
Evaluation scientifique
Google fight !
● « opensource more secure » : 11 500 000
● « closed source more secure » : 1 960 000
● « open source more secure » : 83 300 000
Conclusion sans appel... ou pas ?
8ball : « is opensource more secure ? »
● « Concentrate and ask again »
Un code Opensource
/* This program is licensed under
* any random OSI approved license...
*/
#include <string.h>
int main(int argc, char **argv){
char buffer[256];
strcpy(buffer, argv[1]);
return 0;
}
Un code non Opensource
/* Hey ! The EULA of this program does
* NOT allows you to read this source !!!
*/
#include <string.h>
int main(int argc, char **argv){
char buffer[256];
strcpy(buffer, argv[1]);
return 0;
}
Et donc ?
Cacher ses sources pour plus de sécurité
● Plus rapide
● Plus facile
● Plus séduisant
● Mais PAS plus puissant sécurisé !
La sécurité dépend du code, pas de la
licence
● Motivations et compétences des dévelopeurs
● Priorités
Les principales
« distributions »
« Distribution » ?
Ensemble permettant un usage fonctionnel
● Noyau
● Outils Système
● Outils utiles à la distribution
● Eventuellement, outils « superflus » en option
Politique de distribution
Système de gestion de mises à jour
Distributions « commerciales »
Red Hat, SuSE, etc....
Plutot orientées "Grand public" (interfaces
simplifiées, etc...)
Fournissent une version "GPL" de leur distribution
● Eventuellement en sources seulement
Proposent souvent une version "packagée"
Peuvent proposer des services (hotline, etc...)
Distributions « puristes »
Administration "directe"
● Edition des fichiers
● Outils "en ligne de commande"
Debian
● Format de paquets ".deb" évolué
Slackware, Arch, ...
Linux From Scratch
*BSD
Distributions spécifiques
Distributions "Live"
● Disquette, CD, Cle USB, etc...
Distributions Routeur/Firewall
Distributions "multimédia"
Distributions « embarquées »
● Smartphones, PDAs, etc...
● Android ?
Distributions « modernes »
*Ubuntu
Imposent certains choix
● Desktop Manager
● Outils de bureau
Version « Live »
Administration plus homogène
Quelques Logiciels Libres
célèbres...
Serveurs
Apache
● Environ 60% des serveurs Web
Sendmail / Postfix / Exim / Qmail
● La majorité des FAIs
Bind
Routed
Logiciels clients
Editeurs: emacs, vi
Traitement d'images: Gimp
Navigateur: firefox
MUA: thunderbird
Programmation: Gcc, Perl, PhP, Python
Documents: [Libre|Open]Office, DocBook,
LaTeX
Formats libres
Images: PNG, JPG
Sons: Ogg Vorbis
Vidéo: XVid
Documents:
● "Xml", XHTML/CSS
● LaTeX
● ODT: format ISO
Programmation: C, Perl, PhP, ...
Conclusion (2)
Indispensables à « Internet »
Des LLs pour presque tous les domaines
Peu de contraintes pour l'utilisateur
Peu chers, mais aussi performants
Logiciels Libres en
production
Les impératifs de la production
Disponibilité (Uptime)
Productivité
Total Cost of Ownership (TCO)
Serveurs chez les FAI
HTTP: Apache (Wanadoo, Free, Club
Internet, Nerim, etc..)
● ~ 60% des serveurs Web
SMTP: Postfix, Sendmail, Exim, Qmail
Ftp
Serveurs publics d'entreprise
Serveurs Web (Php/Mysql, Webmail, ...), Ftp, mail
Pas de surcout de licence
Recyclage fréquent de vieilles machines
Systèmes moins sensibles aux failles de
sécurité ?
➔ Mise en place à peu de frais de fonctionnalités
pratiques
➔Parfois en marge du plan informatique
Serveurs de jeux
Système d'exploitation stable et gratuit
Possibilité de chrooter les serveurs
● Une faille du serveur de jeu ne donne pas accès
à l'environnement
Plusieurs serveurs sur la même machine
● 1U en salle machine pour de nombreux serveurs
Versions Linux des serveurs parfois plus
stables
Serveurs internes d'entreprises
Apache (Webmail, Groupware, Calendar, Intranet, ...)
Relais de messagerie interne (Postfix / Courier)
Serveur commun pour parc hétérogène (Samba,
AppleTalk)
Serveur d'authentification (clients Unix, Windows, etc...)
Serveur LDAP (OpenLDAP): gestion centralisée du
réseau
Poste de travail
Bureautique
● OpenOffice, Koffice, AbiWord
● LaTeX, DocBook, etc...
Client Internet (Web, mail, news, etc...)
● « Clients web légers »
"Multimédia" (Gimp, gravure, etc...)
Développement
Poste d'administration
Administration des serveurs
● Outils « graphiques »
● Remote shells (SSH)
● Outils de scripting, de développement, etc...
Outils d'audit réseau
● Sniffers (tcpdump, etherealwireshark, etc...)
● Scanners (nmap, nessus)
● Supervision (Nagios, MRTG, SNMP)
● Tests d'intrusions (dsniff, etc...) / Exploits
Machine de jeux
Jeux commerciaux sous Linux
● Quakes, UT, SoF, ....
● Civilization, Alpha Centauri, Sim City, ....
Des jeux OpenSource
● TuxRacer
● FreeCiv, FreeCraft
● TuxPuck, Bomberman
● UFOAI
● ...............
SteamOS
Base de noyau Linux
Conséquences déjà visibles ?
● Visibilité dans le monde « gamers »
● Fin de l'hégémonie Microsoft pour les jeux ?
● Publication d'informations sur les pilotes NVidia
Logiciels Libres et NETASQ
Annuaire d'utilisateurs: LDAP
Identité des utilisateurs
Authentification
● Mot de passe
● Certificat X509
Informations administratives
● Poste
● Numéro de téléphone
● etc...
Serveur de mail
1er serveur: relai mail (sendmail)
Serveur actuel: MX primaire (postfix)
● Serveur public
● MX réel en interne
● Synchronisé avec la base LDAP
Partage SMB
Serveur principal de fichiers
● Partage de données
● Sauvegarde centralisée
Serveurs de relais
● Economie de bande passante
Serveur web interne
« Intranet »
● Documents administratifs
● Documentations techniques
● Vie de l'entreprise
Calendrier
Suivi de bugs
Logiciels clients
Mail: Thunderbird
● Support S/MIME, SSL, etc...
Web: Firefox
● Problématiques de sécurité
Bureautique: OpenOffice
● Problèmes de couts de MS Office
● Fonctionne aussi sous FreeBSD !
● Certains utilisateurs sont restés sous MS Office
Logiciels Libres et firewalls
NETASQ
Pourquoi FreeBSD ?
1998: IPFilter est le seul firewall Opensource
performant
Fiabilité de la pile IP
Code source sous licence BSD
Filtrage
Au début: IPFilter
Version 3
● IPFilter: règles de filtrage / NAT
● ASQ: « IPS »
Depuis la Version 5
● IPFilter pour le NAT
● ASQ pour tout le filtrage / IPS
Version 7: 100% ASQ
VPN IPSec
Pile IPSec du projet KAME
Modifications reportées
● NAT-T
● Correctifs
● Optimisations
Modifications non reportées
● Jusque V6: Support des tunnels anonymes
● Intégration à l'ASQ
VPN IPSec: Isakmp
Jusqu'en V6: racoon
Depuis 6.1: IPSec-tools
● Développements spécifiques
➔
Logs NETASQ
➔
Interaction ASQ
● Développements reportés
➔
Fonctionnalités: NAT-T, DPD, rechargement de conf,
etc...
➔
Correctifs, Optimisations, etc...
Support LDAP
Librairie cliente OpenLDAP
● Sous couche pour librairie « NETASQ »
Serveur interne OpenLDAP
● Configuration simplifiée et dédiée
Antivirus
Clamav pour la version « standard »
● Pas de licence
● Facilement intégrable
Karspersky pour la version « advanced »
● Garanties sur la mise à jour de la base de virus
● Licence à payer
Outils de qualification
Tests de non régression
● tcpdump / tcpreplay
Génération de configurations
● Perl
● Déploiement SSH
Pourquoi reporter du code ?
Moins de patches à gérer
● Mises à jour plus faciles
● Modifications maintenues sur les futures
versions
Audit / retours sur les patches
Relations privilégiées avec les développeurs
Image de marque
Pourquoi ne PAS reporter du
code ?
Modifications spécifiques
● Interactions avec d'autres modules du firewall
● Utilisation de librairies NETASQ
Modifications « pas propres »
● Modifications en urgence
➔
Version ultérieure plus propres ?
● Gestion de certains cas uniquement