cours0708/S51/TP2.0/cptrendu/cptrendu.tex

331 lines
16 KiB
TeX
Raw Normal View History

2008-11-25 21:11:16 +00:00
%---DOCUMENT-------------------------------------------------------------------
\documentclass[a4paper,10pt]{article}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
%---PACKAGES-------------------------------------------------------------------
\usepackage{makeidx} \makeindex
\usepackage[Lenny]{fncychap} % Lenny, Conny ,Bjarne, Rejne, Glenn, Sonny
\usepackage{fancyhdr}
\usepackage{eurosym}
\usepackage{lastpage}
\usepackage{a4wide}
\usepackage[french]{minitoc}
\usepackage[hmargin=1cm,vmargin=2cm]{geometry}
\usepackage{listings} % a inclure pour la fonction listing
%---SORTIES--------------------------------------------------------------------
\newif\ifpdf
\ifx\pdfoutput\undefined
\pdffalse
\else
\ifnum\pdfoutput=0
\pdffalse
\else
\pdfoutput=1 \pdftrue
\fi
\fi
%---PDF------------------------------------------------------------------------
\ifpdf
\usepackage[pdftex]{graphicx, color}
\usepackage{color} % on en a besoin pour utiliser les couleurs
\definecolor{grey}{rgb}{0.95,0.95,0.95} % on d<>finit la couleur grise pour les listing (c'est un gris tr<74>s clair)
\graphicspath{{images/}}
\DeclareGraphicsExtensions{.jpg,.png}
\pdfcompresslevel=9
\usepackage{pslatex}
\usepackage[pdftex, % Param<61>trage de la navigation
bookmarks = true, % Signets
bookmarksnumbered = true, % Signets num<75>rot<6F>s
pdfpagemode = None, % None, UseThumbs, UseOutlines, Fullscreen
pdfstartview = FitH, % FitH, FitV, FitR, FitB, FitBH, FitBV, Fit
pdfpagelayout = OneColumn, % SinglePage, OneColumn, TwoColumnLeft, TwoColumnRight
colorlinks = false, % Liens en couleur
urlcolor = black, % Couleur des liens externes
pdfborder = {0 0 0} % Style de bordure : ici, rien
]{hyperref}
\hypersetup{
pdfauthor = {Olivier DOSSMANN}, % Auteurs
pdftitle = {TP2 : SSL, la couche transport s<>curis<69>e}, % Titre du document
pdfsubject = {Mettre en place un service web s<>curis<69>}, % Sujet
pdfkeywords = {latex,pdf,ssl,certificat,apache,bsd,free,unix,iut,illkirch,s51}, % Mots-clefs
pdfcreator = {vim, pdflatex}, % Logiciel qui a cr<63>e le document
pdfproducer = {*} % Soci<63>t<EFBFBD> ayant produit le logiciel
plainpages = false}
\usepackage{pdfpages}
%---DVI------------------------------------------------------------------------
\else
\usepackage{graphicx}
\graphicspath{{eps/}}
\newcommand{\url}[1]{\emph{#1}}
\newcommand{\href}[2]{\emph{#2}[1]}
\fi
%---EN-TETE-ET-PIED-DE-PAGE----------------------------------------------------
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
\pagestyle{fancy}
%\lhead{}
%\chead{}
%\rhead{}
\lfoot{Cr<EFBFBD>e avec \LaTeX}
%\cfoot{}
\rfoot{TP2}
%---PAGE-DE-GARDE--------------------------------------------------------------
\title{TP2 : SSL, la couche transport s<>curis<69>e}
\author{Olivier DOSSMANN}
\date{2008-01-13}
%---COLOR---------------------------------------------------------------------
%\pagecolor{}
%\color{}
%---DEBUT-DU-DOCUMENT----------------------------------------------------------
\begin{document}
\maketitle
\thispagestyle{fancy}
%Pour les codes de d<>veloppement
\lstset{numbers=left, tabsize=2, frame=single, breaklines=true, basicstyle=\ttfamily,numberstyle=\tiny\ttfamily, framexleftmargin=13mm, backgroundcolor=\color{grey}, xleftmargin=12mm}
%Table des mati<74>res
\tableofcontents
%---EXEMPLE-DE-SECTION/SOUS-SECTION--------------------------------------------
%\section{Introduction}
%\section{Titre 1}
%\subsection{Sous-section 1}
%---EXEMPLE-DE-LISTE-NUMEROTEE-------------------------------------------------
%\begin{enumerate}
%\item Choix 1
%\item Choix 2
%\end{enumerate}
%---EXEMPLE-DE-LISTE-NON-NUMEROTEE---------------------------------------------
%\begin{itemize}
%\item Objet 1
%\item Objet 2
%\end{itemize}
%---IMAGE----------------------------------------------------------------------
%\begin{figure}[!htbp] %h = here, t = top, b = bottom et p = page (special)
% \centering
% \includegraphics[width=8cm]{gconfs.jpg}
% \caption{Logo de l'Association GCONFS}
%\end{figure}
Dans un monde actuellement pieds et poings li<6C>s aux technologies Web, il est monnaire courante de rencontrer de plus en plus d'entreprises mettant en place des serveurs Web.\par
Pour cela ils utilisent toutes sortes de syst<73>mes d'exploitations et de serveurs Web. Nous nous occuperons, dans ce TP2, de l'utilisation d'un syst<73>me BSD, muni d'un serveur Apache, mais <20>galement d'un syst<73>me de contr<74>le <20> distance : SSH. Par suite nous nous attacherons <20> l'utilisation de modssl, permettant d'affubler d'un certificat SSL en surcouche <20> notre serveur Apache.
\section {Configuration de SSH sur la machine FreeBSD}
Nous travaillons avec un syst<73>me FreeBSD 6.2. Il est utile de pouvoir le contr<74>ler <20> distance, ainsi il faut mettre en place un d<>mon SSH, puis se connecter au travers un tunnel SSH pour v<>rifier le bon fonctionnement du service. Mais avant tout, pensons <20> configurer le r<>seau.
\subsection{Configuration du r<>seau}
La commande \textit{ifconfig} renseigne les caract<63>ristiques des cartes r<>seaux. Nous v<>rifions ainsi le nom de la carte r<>seau principale : \textbf{lnc0}.\\
\begin{lstlisting}
localhost# ifconfig
lnc0: flags=108843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
inet 192.168.113.170 netmask 0xffffff00 broadcast 192.168.113.255
ether 00:0c:29:5e:49:94
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
localhost#
\end{lstlisting}
Pour tester, nous utilisons \textit{dhclient lnc0}. Il faut alors rev<65>rifier avec la commande \textit{ifconfig} pour nous apercevoir de la r<>elle efficacit<69> de l'attribution par DHCP.\par
Maintenant le r<>seau fonctionnel, il ne reste plus qu'<27> automatiser l'attribution d'une IP par DHCP. Allons dans le fichier \textbf{rc.conf} : \textit{vi /etc/rc.conf} et ajoutons y la ligne \textit{ifconfig\_lnc0="DHCP"}. Nous avons <20>galement besoin d'avoir un nom d'h<>te pour la suite du TP, ajoutons donc \textit{hostname="localhost"}.\par
A partir de l<> nous avons d<>j<EFBFBD> un bon d<>but. Nous ne nous occupons pas de renseigner le fichier \textit{/etc/resolv.conf} pour les DNS, <20>tant donn<6E> qu'<27> l'IUT nous passons par un proxy pour atteindre l'internet. Cependant il est judicieux d'ajouter la variable locale \textbf{HTTP\_PROXY}. Pour cela nous <20>ditons le fichier \textit{/root/.bashrc}, auquel nous ajoutons la ligne suivante : \textit{setenv HTTP\_PROXY http://130.79.80.33:8080}. De la sorte nous aurons toujours le proxy pour l'utilisateur root. Nous pourrions aussi ajouter cette ligne dans le fichier \textit{/etc/profile} pour que chacun des utilisateurs ait cette variable initialis<69>e. Mais nous n'en ferons rien, puisque cela ne nous sert pas actuellement.\par
Tentons d<>sormais d'utiliser le serveur SSH, d<>j<EFBFBD> install<6C> sur FreeBSD 6.2 (dans mes souvenirs en tout cas).
\subsection{Configuration, lancement et utilisation de SSH}
Comme SSH semble avoir <20>t<EFBFBD> d<>j<EFBFBD> install<6C>, il suffit de configurer, de lancer, puis d'utiliser le d<>mon.\par
Tout d'abord nous <20>ditons <20> l'aide de VIM (pr<70>c<EFBFBD>demment compil<69> par nos soins) le fichier de configuration de SSHD, <20> savoir \textit{/etc/ssh/sshd\_config}. Afin d'accepter les connexions ROOT, nous ajoutons / d<>commentons : \textit{PermitRootLogin yes}. SSH est configur<75> pour ce que nous en faisons du moins.\par
Pour mettre en service le d<>mon SSH, c'est <20> dire SSHD, il suffit de lancer la commmande : \textit{/etc/rc.d/sshd start}. Pour v<>rifier nous tapons \textit{netstat -a}, ce qui renvoie une liste bien fournie.\\
\begin{lstlisting}
localhost# netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.113.170.ssh 192.168.113.1.2943 ESTABLISHED
tcp4 0 0 *.ssh *.* LISTEN
tcp6 0 0 *.ssh *.* LISTEN
tcp4 0 0 *.* *.* CLOSED
tcp46 0 0 *.8080 *.* LISTEN
udp4 0 0 *.syslog *.*
udp6 0 0 *.syslog *.*
Active UNIX domain sockets
Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr
c1ae771c stream 0 0 c1b38440 0 0 0 /var/run/devd.pipe
c1ae7348 dgram 0 0 0 c1ae74ec 0 0
c1ae74ec dgram 0 0 c1b3e220 0 c1ae7348 0 /var/run/logpriv
c1ae7578 dgram 0 0 c1b3e330 0 0 0 /var/run/log
localhost#
\end{lstlisting}
Testons la connexion <20> l'aide de Putty, sachant que \textit{ifconfig} retourne l'adresse IP \textbf{192.168.113.170}.\\
\begin{center}
\includegraphics[width=10cm]{00.jpg}
\end{center}
D'abord la connexion\ldots
\begin{center}
\includegraphics[width=15cm]{01.jpg}
\end{center}
\ldots puis l'accueil de la console FreeBSD sous SSH.\par
Bien, maintenant automatisons le tout pour qu'au prochain lancement de la distribution nous n'ayons pas <20> recommencer toute la manipulation.\\
Pour cela il suffit, comme toujours, d'<27>diter le fichier de configuration \textit{/etc/rc.conf} et d'ajouter la ligne \textit{sshd\_enable="YES"}, ceci peut <20>tre fait par la commande suivante : \textit{echo 'sshd\_enable="YES"' >> /etc/rc.conf}.\par
SSHD est configur<75>, pr<70>t <20> l'emploi, maintenant et pour les prochaines fois. Il est temps de s'attacher <20> l'installation d'un serveur Apache.
\newpage
\section{Installation, configuration et utilisation de Apache}
Apache permet de mettre <20> disposition, soit de la machine, soit du r<>seau local, ou encore <20> l'ensemble du monde, un service de pagination avec des interconnexions, c'est <20> dire un site internet. Il est de fait que ce service fourni par Apache est tr<74>s usit<69>, et tr<74>s appr<70>ci<63> de la communaut<75>. Nous expliquerons comment installer Apache, comment le configurer, mais <20>galement trouver le dossier o<> se situent les fichiers et dossiers mis <20> disposition des personnes visitant le site.
\subsection{Installation dans FreeBSD, avec exemple de Apache13}
FreeBSD propose un syst<73>me de menu semi - graphique pour l'installation de programmes tierces. Cependant ce syst<73>me utilisable avec la commande \textit{sysinstall} ne fonctionnait pas lors de nos TP. Il a donc fallu utiliser une autre m<>thode, celle de la compilation par la distribution, apr<70>s t<>l<EFBFBD>chargement des bons paquets via FTP.\par
La premi<6D>re chose <20> faire est de se rendre dans le dossier contenant la liste des paquets susceptibles d'<27>tre install<6C>s dans la machine, <20> savoir le dossier \textit{/usr/ports/}.\par
Dans ce dossier figure une branche \textbf{www}, dans laquelle nous nous rendons. La commande \textit{ls | less} permet d'obtenir rapidement une liste de l'ensemble des programmes contenus dans cette branche. Nous en r<>p<EFBFBD>rons deux :
\begin{enumerate}
\item apache13-modssl
\item links
\end{enumerate}
Le premier nous permet, gr<67>ce aux d<>pendances, d'installer Apache13 affubl<62> d'une verrue SSL. Le second est un navigateur internet en mode texte, largement suffisant pour ce que nous aurons <20> faire.\par
Installons le paquet Apache13, en proc<6F>dant ainsi :
\begin{enumerate}
\item \textit{cd apache13-modssl}
\item \textit{make install}
\end{enumerate}
Etant donn<6E> que nous avons configur<75> le proxy pr<70>c<EFBFBD>demment, et que les param<61>tres r<>seaux sont automatiques, le t<>l<EFBFBD>chargement et la compilation se d<>roulent sans accrocs. A la fin de l'installation, nous obtenons un message tel que celui ci :
\begin{lstlisting}
===> Compressing manual pages for apache+mod_ssl-1.3.39+2.8.30
===> Registering installation for apache+mod_ssl-1.3.39+2.8.30
===> SECURITY REPORT:
This port has installed the following files which may act as network
servers and may therefore pose a remote security risk to the system.
/usr/local/libexec/apache/libproxy.so (USES POSSIBLY INSECURE FUNCTIONS: mktemp)
/usr/local/sbin/httpd
This port has installed the following startup scripts which may cause
these network services to be started at boot time.
/usr/local/etc/rc.d/apache.sh
If there are vulnerabilities in these programs there may be a security
risk to the system. FreeBSD makes no guarantee about the security of
ports included in the Ports Collection. Please type 'make deinstall'
to deinstall the port if this is a concern.
For more information, and contact details about the security
status of this software, see the following webpage:
http://www.apache.org/
\end{lstlisting}
Passons <20> la configuration d'apache.
\subsection{Configuration d'Apache}
Apache poss<73>de une configuration de base, ce qui permet de le faire fonctionner en local (au moins pour v<>rifier que tout fonctionne).
Cependant nous allons proc<6F>der <20> quelques modifications dans le fichier de configuration. Mais avant tout, o<> se trouve le fichier de configuration ?\par
D'habitude nous trouvons les fichiers de configuration dans le dossier \textbf{/etc/}. Si nous configurons Apache, c'est alors dans le dossier \textbf{/etc/apache} qu'il faut se rendre. Cependant, et de mani<6E>re m<>connue de ma part, l'installation des programmes par \textbf{/usr/ports} implique la mise en place des binaires, et de tout ce qui concerne ledit programme install<6C>, dans le r<>pertoire \textbf{/usr/local/}. C'est encore pourpre, mais ce qui est s<>r, c'est que sachant cela, nous retrouvons toute l'architecture de dossiers et de fichiers habituels :
\begin{enumerate}
\item \textit{/usr/local/etc/apache22} : contenant les fichiers de configuration d'Apache
\item \textit{/usr/local/etc/rc.d/} : contient le script permettant le lancement du d<>mon \textit{apache22}
\item \textit{/usr/local/etc/www/apache22} : contient les fichiers pour les diff<66>rentes fonctions d'Apache, comme les ic<69>nes, les scripts cgi-bin, etc ...
\end{enumerate}
Commen<EFBFBD>ons par <20>diter le fichier \textbf{/usr/local/etc/apache22/httpd.conf}.\\
Il renseigne le port utilis<69> pour acc<63>der au serveur Web, l'adresse absolue de nos fichiers et dossiers sur le serveur, les modules suppl<70>mentaires ou fichiers de configurations <20> charger, etc ...\\
\begin{lstlisting}
ServerRoot "/usr/local"
Listen 8080
<IfModule !mpm_netware_module>
User www
Group www
</IfModule>
DocumentRoot "/usr/local/www/apache22/data"
#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "/usr/local/www/apache22/data">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
\end{lstlisting}
Nous comprenons rapidement que le port utilis<69> est \textbf{8080}, que les fichiers html sont dans le dossier \textbf{/usr/local/www/data/}.\par
Editons le fichier \textit{index.html} et mettons quelques lignes de code pour tester :
\begin{lstlisting}
<html>
<head>
<title>Blankoworld</title>
</head>
<body>
<h1>Es funktionnert!</h1>
<p>Blanko</p>
</body>
</html>
\end{lstlisting}
Il nous reste <20> v<>rifier la fonctionnalit<69> de notre serveur.
\subsection{V<EFBFBD>rification de la fonctionnalit<69> du serveur Apache}
En local, la meilleure mani<6E>re de tester son serveur Apache, c'est d'une part de v<>rifier que le service soit lanc<6E>, et d'autre part que le navigateur affiche bien la page que nous avons modifi<66>e pr<70>c<EFBFBD>demment.\\
La commande, sous FreeBSD, pour v<>rifier, entre autre, que les services soient bien lanc<6E>s, nous tapons \textit{netstat -at}. Pour installer \textbf{links}, voire \textbf{lynx}, nous proc<6F>dons comme auparavant : \textit{cd /usr/ports/www/links}, puis \textit{make install}. Comme pr<70>c<EFBFBD>demment, la patiente est la chose la plus importante.\par
Par la suite, et une fois \textit{links} install<6C>, il suffit de lancer l'application sur la page suivante : \textit{http://localhost:8080/}.
Installation LINKS
Lancement HTTPD start
\end{document}
%---FIN-DE-DOCUMENT------------------------------------------------------------