% Copyright (c)  2008 Rémi Laurent <remi.laurent@fsugar.be>.
% Permission is granted to copy, distribute and/or modify this document
% under the terms of the GNU Free Documentation License, Version 1.2
% or any later version published by the Free Software Foundation.

\documentclass{beamer}
\usetheme{PaloAlto}
\setbeamercovered{transparent}

\usepackage[french]{babel}
\usepackage{hyperref}

\usepackage[utf8]{inputenc}


\title{Logiciel Libre et entreprise: un vaste catalogue de services}
\date{\today}
\author{Rémi Laurent}
\institute{HERS Libramont - Semaine Entreprise}

\begin{document}
\frame{\titlepage}

\begin{frame}
\frametitle{Présentation}
\begin{center}
Contact: remi.laurent@fsugar.be\\
Présentation (PDF\&sources): http://vrac.fifi.be/
\begin{tabular}{l|r}
\hline \\
\includegraphics[height=1cm]{img/fsugar.png} & \includegraphics[height=1cm]{img/conostix.png}\\
ASBL Free Softwares & Conostix S.A.\\
Users Group Arlon & \\
\\
http://www.fsugar.be/ & http://www.conostix.com/ \\
info@fsugar.be & info@conostix.com
\end{tabular}
\end{center}
\end{frame}

\part{Le catalogue}
\frame{\partpage}

\begin{frame}
\frametitle{Les services proposés}
Comme tout le monde...
\begin{description}
\item [WWW] HTTP,HTTPS
\item [Mail] SMTP,POP(s),IMAP(s)
\item [Firewall] Linux--netfilter, OpenBSD--packet filter
\item [Sysadmin] Administration système du tout
\end{description}
\end{frame}

\section{WWW}
\begin{frame}
\frametitle{WWW}
\begin{itemize}
\item Apache + mod\_ssl
\item Mysql ou PostgreSQL
\item PHP, Python, Ruby, Perl
\item ...
\pause
\item reverse proxy
	\begin{itemize}
	\item load-balancing
	\item failover
	\item mod\_security
	\end{itemize}
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Load-balancing, failover, ?!?}
\begin{center}
\includegraphics[width=7cm]{img/lb-1.png}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Load-balancing, failover, ?!?}
\begin{center}
\includegraphics[width=7cm]{img/lb-2.png}
\end{center}
\end{frame}

\begin{frame}
\frametitle{mod\_security ?!?}
\begin{description}
\item [OK] {\tt http://www.foo.com/bar.php?id=42}
\item [NOK] {\tt http://www.foo.com/bar.php?id=42 OR 1}
\end{description}
mod\_security pour Apache permet la définition de règles:
\begin{itemize}
\item vérification de format d'URL
\item vérification de format des paramètres GET ou POST
\item vérification de format des Cookies
\item réécritures complexes
\item auditing, reporting
\end{itemize}
\end{frame}

\section{Mail}
\begin{frame}
\frametitle{Mail}
\begin{description}
\item [SMTP] Postfix, Sendmail
\item [POP/IMAP] Courrier, Dovecot
\item [SSL-TLS/SASL] Authentification, chiffrement
\item ...
\pause
\item [Antispam] spamassassin
\item [Antivirus] amavisd/clamav
\item [Greylisting] gld/postgrey 
\end{description}
\end{frame}

\begin{frame}
\frametitle{Greylisting, Spamassassin, ?!?}
\begin{itemize}
\item Greylisting\\
	«veuillez repasser plus tard»\\
	décrit dans la RFC de SMTP
\item Spamassassin\\
	analyse des entêtes du mail\\
	passage au travers de filtres\\
	analyse statistique de mots clés
\end{itemize}
\end{frame}

\section{Firewall}
\begin{frame}
\frametitle{Firewall}
\begin{itemize}
\item Linux - netfilter via iptables (NF)
\item OpenBSD - packet filter (PF)
\end{itemize}
Filtrage et tracking des connexions réseaux\\
gestion de limitation / priorité de trafic\\
redirection de connexions / réécriture de paquets
\end{frame}

\begin{frame}
\frametitle{Exemple - OpenBSD et redondance - 1}
\begin{center}
\includegraphics[width=8cm]{img/obsd-1.png}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Exemple - OpenBSD et redondance - 2}
\begin{center}
\includegraphics[width=8cm]{img/obsd-2.png}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Exemple - OpenBSD et redondance - 3}
\begin{center}
\includegraphics[width=8cm]{img/obsd-3.png}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Exemple - OpenBSD et redondance - 4}
\begin{center}
\includegraphics[width=8cm]{img/obsd-4.png}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Exemple - OpenBSD et redondance - 5}
\begin{center}
\includegraphics[width=8cm]{img/obsd-5.png}
\end{center}
\end{frame}

\section{Administration}
\begin{frame}
\frametitle{Holy Grail}
OpenSSH - Secure SHell
\begin{itemize}
\item authentification / chiffrement
\item parallélisation
\item port forwarding - VPN
\end{itemize}
\pause
OpenVPN - Virtual Private Network
\begin{itemize}
\item authentification / chiffrement
\item réseau dans le réseau 
\item transport TCP ou UDP
\end{itemize}
\end{frame}

\begin{frame}
\begin{center}
\frametitle{Virtual Private Network - Client-to-Site}
\includegraphics[width=8cm]{img/vpn-1.png}
\end{center}
\end{frame}

\begin{frame}
\begin{center}
\frametitle{Virtual Private Network - Site-to-Site}
\includegraphics[width=8cm]{img/vpn-2.png}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Monitoring - Reporting}
\begin{description}
\item [Virtuoso -- IPFC] :\\
	normalisation de logs\\
	agrégation\\
	corrélation\\
	statistiques / rapports
\item [Nagios] :\\
	alertes (Mail, SMS, SNMP, ...)\\
	"réactions" automatiques\\
	statistiques / rapports
\end{description}
\end{frame}

\begin{frame}
\frametitle{Nagios - Screenshot 1}
\begin{center}
\includegraphics[width=8cm]{img/nagios-1.png}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Nagios - Screenshot 2}
\begin{center}
\includegraphics[width=8cm]{img/nagios-2.png}
\end{center}
\end{frame}

\section{Various}
\begin{frame}
\frametitle{Mais aussi...}
Quelques exemples:
\begin{description}
\item [Développement] GnuPG -- OpenSSL -- Perl
\item [Hébergement] GNU/Linux («dans» Xen)
\item [Audits] pentest, analyses de systèmes et bonnes pratiques
\item [Support] \pause en collant bleu et jusqu'au bout de la nuit
\end{description}
\end{frame}

\part{Logiciel Libre ?}
\frame{\partpage}

\section{Licence de logiciel}
\begin{frame}
	\frametitle{Licence de logiciel}
	Ensemble de conditions auxquelles un utilisateur doit adhérer pour utiliser un logiciel.
	\newline

	C'est un contrat liant un utilisateur et l'éditeur d'un logiciel.
	\newline
	
	Un exemple bien connu :
	\begin{description}
		\item [CLUF] Contrat de Licence d'Utilisateur Final
		\item [] ou, en anglais
		\item [EULA] End User License Agreement
	\end{description}
\end{frame}

\begin{frame}
	\frametitle{Exemple de clauses}
	Parmi les termes constituants un CLUF de logiciel on peut retrouver :
	\begin{itemize}
		\item nombre de machines sur lesquels il peut être installé
		\item nombre d'utilisateurs qui peuvent l'utiliser
		\item nombre de processeurs que peut compter la machine
		\item nombre de connexions réseaux ouvertes simultanément
		\item limitations sur les droits à la revente et à la redistribution
		\item la période pendant laquelle le logiciel peut être utilisé
		\item interdiction d'usage si vous pesez entre 75 et 78 kg, que vous êtes blond et écoutez du Francis Lalanne
	\end{itemize}
	\pause
	ou pas
\end{frame}

\section{GNU}
%\frame<beamer>{\tableofcontents[current]}
\subsection{Définition}
\begin{frame}
	\frametitle{Unix}
	UNIX, un système d'exploitation apparu dans les années 70.
	\newline

	Robuste, performant, multitâches - multiutilisateur, connecté en réseau, \textbf{ouvert}\ldots il a tout pour plaire.
	\newline
	\pause

	Malheureusement,
	\begin{itemize}
		\item petit à petit UNIX est devenu de plus en plus propriétaire
		\item il n'était plus possible de l'étudier ou le modifier à sa guise
		\item le prix des licences devint prohibitif\ldots
	\end{itemize}
	\begin{center}\Large{Arrive alors \ldots
	\pause
	GNU}\end{center}
\end{frame}

\begin{frame}
	\frametitle{GNU Not Unix}
	1984, un chercheur en informatique, Richard M. Stallman, se lance dans l'écriture d'un OS Unix-like, ouvert, à nouveau\ldots
	\newline
	\pause

	\begin{center}\Large{GNU Not Unix - le pied de nez à Unix}\end{center}
\end{frame}

\subsection{RMS}
\begin{frame}
	\frametitle{Richard Matthew Stallman}
	\begin{center}
	\includegraphics[scale=0.3]{img/rms-ok.png}
	\end{center}
	\small{Richard Matthew Stallman (né à Manhattan, le 16 mars 1953), connu aussi sous les initiales RMS, est le fondateur du mouvement pour le logiciel libre. Il est à l'origine du projet GNU et de la licence publique générale GNU connue aussi sous l'acronyme GPL, qu'il a rédigée avec l'avocat Eben Moglen. L'invention du terme anglais copyleft (« copie laissée », opposé à copyright, « droit de copie » en français) lui est attribuée. Programmeur renommé de la communauté informatique américaine et internationale, il a développé l'éditeur de texte GNU Emacs, le compilateur C de GNU et le débogueur GNU.}
	
	\scriptsize{source : Wikipedia - texte sous GFDL}
\end{frame}

\subsection{Licence GNU}
\begin{frame}
	\frametitle{Licence des logiciels du projet GNU}
	À ses débuts le projet GNU n'était guère constitué que de trois logiciels d'importance :
	\begin{itemize}
		\item GNU Emacs : un puissant éditeur de texte
		\item gcc : un compilateur C uniquement, à ses débuts
		\item gdb : un débogueur
	\end{itemize}
	Les licences de ces trois logiciels étaient différentes mais toutes visaient le même objectif.
	\newline
	\pause

	\large{Naissance de la GNU GPL - General Public License}\\
	Cette même licence sera utilisée, plus tard, pour le noyau Linux, formant ainsi le couple GNU/Linux
\end{frame}

\section{Définitions}

\subsection{GPL ?}
\begin{frame}
	\frametitle{Les 4 libertés garanties par la GPL}
	La GNU General Public License garantit 4 libertés fondamentales : 
	\begin{itemize}
		\item Liberté d'exécution
		\item Liberté d'étude
		\item Liberté de modification
		\item Liberté de redistribution
	\end{itemize}
\end{frame}

\subsection{Code source - recette}
\begin{frame}
	\frametitle{Le gâteau aux fraises}
	Permettons nous une petite analogie :
	\begin{itemize}
		\item Un gâteau aux fraises a une recette.
		\item Un logiciel a un code source.
	\end{itemize}
	\begin{itemize}
		\item Un gâteau aux faises une fois préparé peut être mangé
		\item Un logiciel une fois compilé peut être exécuté
	\end{itemize}
	\pause

	Nous devrons faire l'hypothèse que les ingrédients sont disponibles en abondance et gratuitement et que la préparation du gâteau a un coût nul.
\end{frame}

\section{4 libertés}
%\frame<beamer>{\tableofcontents[current]}
\subsection{Liberté 0}
\begin{frame}
	\frametitle{GPL[0] : Liberté d'exécution}
	On peut manger son gâteau\\
	qu'il pleuve, qu'il neige;\\
	avec des amis ou tout seul;\\
	avec ou sans sucre, avec ou sans fraises;\\
	en parts, ou entier (bonne chance)
	\newline

	On peut utiliser son logiciel sous GPL\\
	sur n'importe quel ordinateur;\\
	à plusieurs dans la famille ou l'entreprise;\\
	dans n'importe quel pays;\\
	aussi souvent et longtemps qu'on le veut 
\end{frame}


\subsection{Liberté 1}
\begin{frame}
	\frametitle{GPL[1] : Liberté d'étude}
	On peut étudier la recette d'un gâteau\\
	pour apprendre à faire des gâteaux;\\
	pour vérifier qu'il est sain (colorants);\\
	pour comprendre pourquoi il est si bon;\\
	pour trouver des moyens de l'améliorer
	\newline

	On peut étudier le code source d'un logiciel sous GPL\\
	pour apprendre à programmer, s'inspirer;\\
	pour vérifier qu'il ne contient pas de bug ou failles;\\
	pour comprendre comment il fonctionne;\\
	pour trouver des moyens de l'améliorer;\\
	pour détecter qu'il ne réalise pas des opérations cachées (spyware, vie privée, ...)
\end{frame}


\subsection{Liberté 2}
\begin{frame}
	\frametitle{GPL[2] : Liberté de modification}
	On peut modifier la recette d'un gâteau\\
	pour faire un gâteau aux fraises et au chocolat;\\
	pour améliorer la méthode de préparation ou les ingrédients;\\
	pour se faire la main en pâtisserie, apprendre
	\newline

	On peut modifier le code source d'un logiciel sous GPL\\
	pour l'améliorer, ajouter des fonctionnalités;\\
	pour corriger des bugs, des failles de sécurité;\\
	pour s'essayer sur des programmes déjà existants
	\newline

	PS : Une modification privée peut rester privée
\end{frame}


\subsection{Liberté 3}
\begin{frame}
	\frametitle{GPL[3] : Liberté de redistribution}
	On peut redistribuer la recette d'un gâteau;\\
	à ses amis, ses parents;\\
	sur Internet;\\
	et ce, que la recette soit modifiée ou non
	\newline

	On peut redistribuer un logiciel sous GPL\\
	à ses amis, ses parents, sur Internet;\\
	on peut même le revendre;\\
	et ce, que le code source du logiciel soit modifié ou non
	\newline

	$/!\backslash$ copyleft $/!\backslash$
\end{frame}

\section{Copyleft}
%\frame<beamer>{\tableofcontents[current]}
\begin{frame}
	\frametitle{Copyleft + Copyright != Copyright}
	La GPL ne permet pas de changer le nom de l'auteur du logiciel et son code source, on garde donc bien le copyright. Oui mais ! le copyright interdit la redistribution.
	\newline

	Le Copyleft ou Gauche d'auteur permet la redistribution tout en gardant la paternité de l'oeuvre,\\
	en acceptant la GPL on accepte également d'accompagner le logiciel de ses sources, et ce, qu'il soit modifié ou non.\\
	Les ajouts ou modifications sont au nom de celui qui les a effectuées, mais les parties originales restent au nom de leurs propriétaires.
\end{frame}

\begin{frame}
	\frametitle{Exemple pratique}
	Vous êtes indépendant et on vous demande de modifier un logiciel de comptabilité pour l'adapter au droit belge.
	\begin{enumerate}
		\pause
		\item vous modifiez un logiciel de comptabilité, mais qui, pour l'exemple, ne s'exécute que sous Linux
		\pause
		\item vous vendez le logiciel modifié, \textbf{avec} le code source de la modification
		\pause
		\item vous pouvez également faire payer l'installation de Linux sur l'ordinateur du client, et même le CD sur lequel vous l'avez gravé (malgré que le système Linux que vous installez n'ait pas été modifié)
		\pause
		\item le client peut garder son logiciel modifié 'secret' sans le rendre public et accessible à la concurrence
		\pause
		\item le client peut, s'il en a les compétences ou l'envie, proposer des copies de son logiciel modifié ou non, contre rémunération ou non
	\end{enumerate}
\end{frame}

\section{Des noms}
\begin{frame}
	\frametitle{Quelques noms}
	Une distribution GNU/Linux constituée de Logiciels Libres contient au minimum 70\% de logiciels sous GPL.
	\newline

	Le noyau Linux, les outils de base GNU, la suite de compilateurs (C, C++, Pascal, Lisp, Fortran, ...) gcc ainsi que les bibliothèques associées, les projets de bureau graphique GNOME, Kde, la suite OpenOffice, Gimp, Pidgin, ...
	\newline

	Le navigateur Mozilla Firefox est sous MPL (Mozilla Public License) qui s'apparente à la GPL.
	\newline 

	D'autres licenses existent, BSD pour des projets comme OpenSSH ou X11/MIT pour le serveur graphique X.
\end{frame}

\section{GFDL}
\begin{frame}
	\frametitle{GNU Free Documentation License}
	\begin{center}\LARGE{Utilisateurs de la GFDL, levez la main !}\end{center}
\end{frame}

\begin{frame}
	\frametitle{Wikipedia}
	\begin{center}\LARGE{Wikipedia !}\end{center}
	\pause

	Tous les documents textes disponibles sur Wikipedia sont sous GFDL, une 'transposition' de la GPL aux documents écrits.
	\newline

	Les images quand à elles sont bien souvent sous Creative Commons.
\end{frame}

\part{Du concret}
\frame{\partpage}

\section{Probe Nagios}
\begin{frame}
\frametitle{Nagios}
Vérification de services à l'aide de sondes (probes):
\begin{itemize}
\item ICMP (ping)
\item HTTP (code d'erreurs et contenu)
\item SMTP (bannière SMTP)
\item ... et des dizaines d'autres
\pause
\item torrent
\end{itemize}
\end{frame}

\section{auth\_radius}
\begin{frame}
\frametitle{Apache et auth\_radius}
Authentification avec serveur Radius\\
Utilisation de token OTP (One Time Password)\\
Un login, mot de passe \textbf{et} un OTP
\includegraphics[width=6cm]{img/rsa-token.jpg}

Expiration prématurée des sessions\\
Pas de problème, modification de auth\_radius
\end{frame}

\section{Soekris}
\begin{frame}
\frametitle{Soekris Net4801}
\begin{center}
\includegraphics[width=8cm]{img/soekris.jpg}

- AMD Geode 266Mhz - 256RAM\\
- 3 x Ethernet 10/100\\
- Compact Flash - IDE\\
- Mini-PCI - PCI - Serial - USB
\end{center}
\end{frame}

\begin{frame}
\frametitle{Soekris}
\begin{itemize}
\item firewalling et logging
\item filtrage et caching Web (Squid,Squidguard)
\item mail relay
\item VPN et monitoring
\item reverse proxy authentifiant
\item hotspot avec chillispot
\end{itemize}
\end{frame}

\section{OpenWRT}
\begin{frame}
\frametitle{Wifi - WRT54GL}
\begin{center}
\includegraphics[width=7cm]{img/wrt54g.jpg}

Linux de A à Z\\
Firmware personnalisé et personnalisable
\end{center}
\pause
Démo
\end{frame}

\begin{frame}
\frametitle{OpenWRT \& co.}
\begin{itemize}
\item WRT54GL
\item Fonera
\item OpenMesh
\item WL-100g
\item NSLU2
\item ... et leur mods
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Enfin fini}
\begin{center}
\Large{Des questions ?}
\end{center}
\end{frame}

\begin{frame}
\frametitle{anyremote}
anyremote, télécommande par:
\begin{itemize}
\item Bluetooth
\item TCP/IP
\item Infrarouge
\item AT (modem)
\end{itemize}

Un client en Java (J2ME) pour téléphone\\
Un serveur pour définir la configuration des touches
\end{frame}

\begin{frame}
\frametitle{Enfin fini}
\begin{center}
\Large{Des questions ?

\pause
Non ? \pause un film donc}
\end{center}
\end{frame}

\end{document}
