331 lines
16 KiB
TeX
331 lines
16 KiB
TeX
|
%---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------------------------------------------------------------
|