Vous êtes sur la page 1sur 53

INSTALLATION ET SECURISATION SERVEUR LAMP ET AGORA PROJECT SUR DEBIAN 5 LENNY

Partager facilement des fichiers, des photos, grer des agendas personnels et de ressources, grer des tches, partager des contacts, dialoguer sur un forum priv ou une messagerie instantane, etc
Sources : http://ptitnico.net/index.php/linux http://www.delafond.org/traducmanfr/man/man5/sshd_config.5.html http://doc.ubuntu-fr.org/lamp http://www.agora-project.net/ http://blog.cybermonde.org/post/2008/03/18/securiser-Apache2-avec-SSL http://www.coagul.org/article.php3?id_article=351 http://www.system-linux.eu/index.php?post/2008/12/22/Securiser-apache

1 Installation de Debian Lenny


Pour commencer dmarrer sur votre lecteur CD /DVD, vous obtiendrez lcran suivant :

Pour continuer linstallation veuillez slectionner Install et appuyer sur [ENTREE] Slectionner votre langue dans notre cas Franais

2 Configuration des dpts


$ nano /etc/apt/sources.list
Taper les informations suivantes :

$ deb http://security.debian.org/ lenny/updates main contrib non-free $ deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free $ deb http://ftp.fr.debian.org/debian /lenny main contrib non-free
Control + X pour quitter nano
Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

3 Mis Jour des dpts et mis jour de scurit


$ apt-get update

$ apt-get upgrade
La mise jour prend du temps, ne vous inquitez pas si a dure. vitez de mettre les mises jour automatique, prfrez les faire manuellement et rgulirement.

4 Installation & Configuration de Fail2Ban


Fail2Ban est un ingnieux programme qui va bannir (en utilisant le FireWall Iptables) les IP qui tentent de se loguer sur le port SSH au bout de multiples tentatives de connexions choues.

Installation Fail2Ban $ apt-get install fail2ban Configuration Fail2Ban $ nano /etc/fail2ban/jail.conf


Taper les informations suivantes. On dfinit le nombre de tentatives maximales avant de bannir, ici on bannit au bout de 4 tentatives et pendant 30 minutes. [ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 4 # dure du banissement bantime = 1800

On redmarre le dmon : $ /etc/init.d/fail2ban restart Affichage des IP bannis par Fail2Ban $ nano /var/log/fail2ban.log

5 Installation & Configuration SSH


Si vous ne souhaitez pas voir des milliers de tentatives dauthentification chaque jour, un moyen tout simple consiste changer le port dcoute de SSH. En effet, par dfaut le port SSH est le 22 et des bots (robots) tentent de multiples combinaisons pour se loguer sur votre machine. En le modifiant nous allons rduire voire supprimer ce nombre de tentatives !

$ apt-get install ssh


Configuration ssh

$ nano /etc/ssh/sshd_config
Taper ou Modifier les informations suivantes.

# Port SSH: Port [Port de votre choix] # Authentication: LoginGraceTime 120 PermitRootLogin no //Ne permet pas la connexion avec le root StrictModes yes AllowUsers [Utilisateur Autoriss]

6 Installation & Configuration Serveur LAMP


Lorsquil est question dun serveur LAMP , on dcrit un serveur web faisant fonctionner, dans un environnement GNU/Linux, les logiciels de serveur web Apache, MySQL et PHP.

$ apt-get install apache2 apache2-doc mysql-server php5 libapache2-mod-php5 php5mysql

7 Configuration de PHP 5
diter le fichier /etc/apache2/mods-enabled/php5.conf
$ nano /etc/apache2/mods-enabled/php5.conf Ajouter la ligne suivante : AddType application/x-httpd-php .php5

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

diter le fichier /etc/apache2/mods-enabled/dir.conf


$ nano /etc/apache2/mods-enabled/dir.conf

Ajouter la ligne suivante : DirectoryIndex index.php5 Pour prendre en compte les modifications un petit redmarrage du service Apache $ /etc/init.d/apache2 restart Pendant linstallation, le serveur Apache2 sera redmarr et vous allez srement rencontrer une erreur de ce genre : apache2: Could not reliably determine the servers fully qualified domain name, using 127.0.1.1 for ServerName Ceci nest absolument pas gnant et vous pouvez rgler le problme en ajoutant la directive ServerName dans le fichier de configuration principal : /etc/apache2/apache2.conf $ nano /etc/apache2/apache2.conf Ajouter la ligne suivante : $ ServerName ServeurFTP Vrification du bon fonctionnement de PHP 5 Cration dun fichier php dans /var/www/phpinfo.php $ nano /var/www/phpinfo.php Ajouter les lignes suivantes :

<?php phpinfo(); ?>


Control + X pour quitter nano
Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien. Une fois le fichier cr (et enregistr), il devrait apparaitre sur la page dindex de votre serveur (vu tout lheure). Cliquer alors dessus ou entrer directement lURL dans votre navigateur http://[votreserveur]/phpinfo.php, Si jamais le navigateur vous demande denregistrer le fichier php, cela vient peut tre dun problme de module mal initialis : $ a2enmod php5 $ /etc/init.d/apache2 restart

Si tout se passe correctement vous devriez voir apparatre une page avec toutes les infos concernant PHP

8 Installation et Configuration de PHPMyAdmin


PHPMyAdmin est un outil pour administrer mySQL via une interface web complte.

Installation de PHPMyAdmin
$ apt-get install phpmyadmin

Slectionner Apache2 et appuyer sur [ESPACE] Vous arriverez alors sur la page dauthentification de PhpMyAdmin. Entrez alors votre login ( root ) et le mot de passe choisi lors de la scurisation de MySQL. Si tout sest bien pass, vous devriez tre connect PhpMyAdmin et pouvoir crer et grer vos bases de donnes.

Configuration de PHPMyAdmin
Nous allons crer un utilisateur qui aura tous les droits, nous pourrons par la suite supprimer le compte root. Pour se faire cliquer sur privilges > Ajouter un Utilisateur Nom dUtilisateur : nom dutilisateur Serveur : localhost Mot de Passe : mot de passe Privilges Globaux : Tout cocher Aprs on supprime lutilisateur ROOT comme dcrit ci-dessous

Cocher les case devant ROOT puis supprimer les bases de donnes et cliquer sur Excuter Une fois lutilisateur ROOT supprim PHPMyAdmin vous demandera de vous identifier, utiliser maintenant le nouvel utilisateur.

Ajout de PHPMyAdmin dans Apache


$ nano /etc/apache2/sites-available/default

Ajouter les lignes suivante

Alias /phpmyadmin/ /usr/share/phpmyadmin/ <Directory /usr/share/phpmyadmin/ > Options None AllowOverride None Order allow,deny Allow from all </Directory>

9 Installation et Configuration dAgora-Project


Espace de travail collaboratif en PHP permettant la cration de groupes de travail et offrant des fonctionnalits de partages de fichiers

Tlchargement de la sources
$ wget http://www.agora-project.net/agora-project.zip Pour dcompresser la source installer le paquet unzip $ apt-get install unzip

Dcompression de larchive
$ unzip agora-project.zip

Installation dAgora Project


Dans un premier temps nous allons crer la base SQL. Dans un navigateur http://[VOTRESERVEUR]/phpmyadmin/

Mettre le nom de la base agora et cliquer sur CREER Votre base de donnes qui va contenir les infos dAgora est maintenant oprationnelle. Donner les droits au dossier /agora/
$ chmod -R 777 agora/

Dans votre navigateur saisisser ladresse suivante pour dbuter linstallation http://[VOTRESERVEUR]/agora/install/

Hostname : localhost Nom dutilisateur : Votre nom dutilisateur Mot de passe : Votre mot de passe Nom : Votre Nom Prnom : Administrateur Identifiant : Votre Identifiant Mot de Passe : Votre mot de passe
Linstallation dAgora est maintenant terminer. Nous allons remettre les droits sur les fichiers. $ chmod -R 755 agora/

10 Personnalisation dAgora
Suppression du messenger
Pour supprimer le messenger diter le fichier header_menu_inc.php $ nano /var/www/ftp/includes/header_menu.inc.php Supprimer les lignes suivantes : <script type= text/javascript > //// //// function maj_livecounters() { New_Http_Request( GET , <?php echo path_commun; ?>livecounter.php?type=principal ); element( livecounter_principal ).innerHTML = Http_Request_Result; AFFICHAGE DES LIVECOUNTERS

if(existe( livecounter_messenger )) { New_Http_Request( GET , <?php echo path_commun; ?>livecounter.php?type=messenger ); element( livecounter_messenger ).innerHTML = Http_Request_Result; } } //// //// function livecounter_messenger_verif() { New_Http_Request( GET , <?php echo path_commun; ?>livecounter_messenger_verif.php ); eval(Http_Request_Result); // execute les fonctions javascript window.setTimeout( livecounter_messenger_verif(); , <?php echo duree_livecounter_recharge*1000; ?>); } //// //// function start_livecounters_messenger() { if(existe( livecounter_principal )) } window.setTimeout( start_livecounters_messenger(); , 3000); //// //// function affichage_messenger() { element( icone_messenger ).src = <?php echo path_templates; ?>divers/messenger.png ; afficher( calque_messenger , bascule ); AFFICHAGE / MASQUAGE DU MESSENGER { maj_livecounters(); livecounter_messenger_verif(); } AFFICHAGE DES LIVECOUNTERS & DU MESSENGER EN FIN DE CHARGEMENT DE PAGE VERIFICATION REGULIERE DU LIVECOUNTER ET DU MESSENGER

if(element( calque_messenger ).style.display!= none ) } //// //// function maj_messenger_messages() { AFFICHAGE DES MESSAGES DU MESSENGER

maj_messenger_messages();

New_Http_Request( GET , <?php echo path_commun; ?>messenger_messages.php ); element( messenger_liste_messages ).innerHTML = Http_Request_Result; element( messenger_liste_messages ).scrollTop = element( messenger_liste_messages ).scrollHeight; } //// NOUVEAU MESSAGE SUR LE MESSENGER : MAJ des messages / Clignotement de licone / Son dalerte //// function messenger_nouveau_message() { if(element( calque_messenger ).style.display!= none ) else { element( icone_messenger ).style.visibility = visible ; element( icone_messenger ).src = <?php echo path_templates; ?>divers/messenger.gif ; //Sound.play( <?php echo path_commun; ?>messenger_alerte.mp3); } } //// COULEUR DU MESSAGE DU MESSENGER : AFFICHAGE / MASQUAGE DU MENU ET CHANGEMENT DE LA COULEUR //// function couleur_messenger(couleur) { set_couleur( texte_messenger ,couleur); { maj_messenger_messages(); }

// Les derniers messages sont en bas de div

set_value( couleur_messenger ,couleur); } //// //// function post_message_messenger() { // Vrif du message if(get_value( texte_messenger )== " || get_value( texte_messenger )== <?php echo $trad["header"]["ajouter_message"]; ?> ) { alert( <?php echo $trad["header"]["specifier_message"]; ?> ); return false; } // Vrif des utilisateurs cochs var nb_utils_messenger = 0; var url_utils_messenger = ; tab_utils_messenger = document.getElementsByName( tab_utils_messenger[] ); for(i=0; i<tab_utils_messenger.length; i++) { if(tab_utils_messenger[i].checked==true) { nb_utils_messenger++; url_utils_messenger += id +tab_utils_messenger[i].value+ id ; } } if(nb_utils_messenger==0) return false; } { alert( <?php echo $trad["header"]["selectionner_utilisateur"]; ?> ); CONTROLE & POST DU MESSAGE DU MESSENGER

// On poste le message, relance laffichage des messages, on rinitialise le champs message New_Http_Request( POST , <?php echo path_commun; ?>messenger_post.php , texte_messenger= +get_value( texte_messenger )+ &couleur_messenger= +get_value( co uleur_messenger )+ &tab_utils_messenger= +url_utils_messenger); maj_messenger_messages(); set_value( texte_messenger , ); element(texte_messenger).focus(); } </script>

Supprimer aussi cette ligne : echo <div class=\ menu_ligne\ onClick=\ popup( .root_path. module_utilisateurs/utilisateur_messenger.php?id_ut$

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Modification de la favicon
Mettre la nouvelle icne dans le dossier /template/divers Modifier le fichier /var/www/ftp/includes/header.inc.php
$ nano /var/www/ftp/includes/header.inc.php Modifier la ligne suivante <link rel= icon type= image/gif href= <?php echo path_templates; ?>divers/[NOM DE L'ICONE] />

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Modification de la page Modification du profil


Editer le fichier utilisateur_edit.php
$ nano /var/www/ftp/module_utilisateurs/utilisateurs_edit.php / !\ NE PAS SUPPRIMER LES LIGNES CONCERNANT LE MAIL / !\

Supprimer les lignes suivantes :


<tr> <td class= form_libelle ><?php echo $trad["divers"]["adresse"]; ?></td> <td><input type= text name= adresse value= <?php echo $user_tmp["adresse"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["codepostal"]; ?></td>

<td><input type= text name= codepostal value= <?php echo $user_tmp["codepostal"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["ville"]; ?></td> <td><input type= text name= ville value= <?php echo $user_tmp["ville"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["pays"]; ?></td> <td><input type= text name= pays value= <?php echo $user_tmp["pays"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["telephone"]; ?></td> <td><input type= text name= telephone value= <?php echo $user_tmp["telephone"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["telmobile"]; ?></td> <td><input type= text name= telmobile value= <?php echo $user_tmp["telmobile"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["fax"]; ?></td> <td><input type= text name= fax value= <?php echo $user_tmp["fax"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["adresse"]; ?></td> <td><input type= text name= adresse value= <?php echo $user_tmp["adresse"]; ?> /></td>

</tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["codepostal"]; ?></td> <td><input type= text name= codepostal value= <?php echo $user_tmp["codepostal"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["ville"]; ?></td> <td><input type= text name= ville value= <?php echo $user_tmp["ville"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["pays"]; ?></td> <td><input type= text name= pays value= <?php echo $user_tmp["pays"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["telephone"]; ?></td> <td><input type= text name= telephone value= <?php echo $user_tmp["telephone"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["telmobile"]; ?></td> <td><input type= text name= telmobile value= <?php echo $user_tmp["telmobile"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["fax"]; ?></td> <td><input type= text name= fax value= <?php echo $user_tmp["fax"]; ?> /></td> </tr> <! PHOTO >

<tr> <td style= text-align:center;width:150px; ><img src= <?php echo ($user_tmp["photo"]== ") ? path_templates. divers/inconnu.png : path_photo_user.$user_tmp["photo"]; ?> style= maxwidth:130px;max-height:130px; /></td> <td> <span class= form_libelle ><?php echo $trad["divers"]["photo"]; ?> :</span> <select name= image OnChange= if(this.value==changer) {afficher(div_fichier,true);} else {afficher(div_fichier,false);} > <option><?php echo $trad["divers"]["garder"]; ?></option> <option value= defaut ><?php echo $trad["divers"]["par_defaut"]; ?></option> <option value= changer ><?php echo $trad["divers"]["image_changer"]; ?></option> </select> <div id= div_fichier class= cacher ><br /><br /><input type= file name= fichier /></div> </td> </tr> <td class= form_libelle ><img src= <?php echo path_templates; ?>module_utilisateurs/user_agenda.png /> &nbsp; <?php echo $trad["utilisateurs"]["agenda_desactive"]; ?></td> <td class= form_libelle > <?php echo $trad["divers"]["non"]; ?> <input type= radio name= agenda_desactive value= 0 <?php if($user_tmp["agenda_desactive"]!= 1) echo checked ; ?> /> <?php echo $trad["divers"]["oui"]; ?> <input type= radio name= agenda_desactive value= 1 <?php if($user_tmp["agenda_desactive"]== 1) echo checked ; ?> /> &nbsp; </td> <! PAGE HORAIRE AGENDA > <tr> <td class= form_libelle style= padding-left:30px; ><?php echo $trad["utilisateurs"]["agenda_plage_horaire"]; ?></td> <td> <?php //// PLAGES HORAIRES DE LAGENDA

if(@$user_tmp["agenda_plage_horaire"]!= ") ,$user_tmp["agenda_plage_horaire"]); } else //// DEBUT

{ $plage_horaire = explode( -

{ $plage_horaire = array(0=> 8, 1=> 18); }

echo <select name=\ agenda_heure_debut\ > ; for($h=1; $h<24; $h++) { ($plage_horaire[0]==$h)?$check= selected :$check= "; echo <option value=\ ".$h. \ .$check. > .$h. :00</option> ; } echo </select> ; echo $trad["divers"]["a"]; //// FIN

echo <select name=\ agenda_heure_fin\ > ; for($h=1; $h<24; $h++) { ($plage_horaire[1]==$h)?$check= selected :$check= "; echo <option value=\ ".$h. \ .$check. > .$h. :00</option> ; } echo </select> ; ?> </td> </tr>

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Supprimer Identifiant / Mot de passe oubli ? Mmoriser


Modifier le fichier index.php
$ nano /var/www/ftp/index.php

Supprimer les lignes suivantes :


<span onClick= popup(<?php echo path_divers; ?>password_oublie.php); class= lien <?php echo infobulle( <div style=text-align:center;width:30$ <?php echo $trad["divers"]["password_oublie"]; ?> <img src= <?php echo path_templates; ?>divers/password_oublie.png /> </span>

<tr> <td style= text-align:right;font-size:11px;padding:2px; > <span <?php echo infobulle( <div style=textalign:center;width:250px;> .$trad["divers"]["connexion_auto_info"]. </div> ); ?> > <span class= lien id= txt_connexion onClick= check_txt_box(this.id,connexion); ><?php echo $trad["divers"]["connexion_auto"]; ?></span> <input type= checkbox name= connexion_auto value= 1 id= box_connexion onClick= check_txt_box(this.id,connexion); /> </span> &nbsp; &nbsp;

</td>

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Rajout des icnes Rechercher, Dconnexion, Guide dUtilisation Modification de la feuille de style
Editer le fichier style.css $ nano /var/www/ftp/templates/style.css.php Ajouter les lignes suivantes : /* GUIDE UTILISATION*/ .guide { vertical-align:middle; font-weight:bold; }

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Modification des fichiers de traduction pour licne Guide dUtilisation Traduction Franais
Editer le fichier divers.php

$ nano /var/www/ftp/traduction/francais/divers.php

Ajouter les lignes suivantes :


$trad["divers"]["guide"] = Guide dUtilisation ;

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Traduction Anglais
Editer le fichier divers.php
$ nano /var/www/ftp/traduction/english/divers.php Ajouter la ligne suivante : $trad["divers"]["guide"] = User Guide ;

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Ajout des liens


Editer le fichier header.inc.php
$ nano /var/www/ftp/includes/header.inc.php Supprimer les lignes suivantes //// ESPACES AFFICHE + MENU //// echo <span class=\ lien\ onMouseOver=\ afficher(liste_espaces,true);\ onMouseOut=\ afficher(liste_espaces,false);\ > ; echo <div class=\ menu_flottant\ id=\ liste_espaces\ ><div style=\ overflow-y:auto;maxheight:600px;\ > ; echo <div class=\ menu_ligne\ style=\ marginbottom:3px\ > .$trad["header"]["espaces_dispo"]. :</div> ; foreach(espaces_affectes_user($_SESSION["user"]) as $espace_tmp) { $style_text = lien ; $txt_acces_espace = ;

if($espace_tmp["id_espace"]==$_SESSION["espace"]["id_espace"]) { $style_text = lien_select ; $ echo &nbsp; <span onClick=\ redir( .$_SERVER["PHP_SELF"]. ?id_espace_acces= .$espace_tmp["id_espace"].$ } echo </div></div> ; echo $_SESSION["espace"]["nom"]. <img src=\ ".path_templates. divers/derouler.png\ /> ; echo </span> ; Inscrire les lignes suivantes la place des lignes supprimes ci-dessus //// //// echo <span class=\ lien\ onMouseOver=\ afficher(liste_espaces,true);\ onMouseOut=\ afficher(liste_espaces,false);\ > ; echo <div class=\ menu_flottant\ id=\ liste_espaces\ ><div style=\ overflow-y:auto;maxheight:600px;\ > ; echo <div class=\ menu_ligne\ style=\ marginbottom:3px\ > .$trad["header"]["espaces_dispo"]. :</div> ; ESPACES AFFICHE + MENU

echo </span> ;

foreach(espaces_affectes_user($_SESSION["user"]) as $espace_tmp) { $style_text = lien ; $txt_acces_espace = ; if($espace_tmp["id_espace"]==$_SESSION["espace"]["id_espace"]) { $style_text = lien_select ; if(droit_acces_espace($espace_tmp["id_espace"],$_SESSION["user"])==2) $txt_acces_espace = $trad["header"]["espace_acces_administration"]; } echo &nbsp; <span onClick=\ redir( .$_SERVER["PHP_SELF"]. ?id_espace_acces= .$espace_tmp["id_espace"]. );\ class= .$style_text. style=margin-left:5px title=\ ".$espace_tmp["description"]. \ > .$espace_tmp["nom"]. .$txt_acces_espace. </span><br /> ; } echo </div></div> ; echo <img src=\ ".path_templates. divers/separateur.gif\ /> ; echo $_SESSION["espace"]["nom"]. <td><img src=\ ".path_templates. divers/derouler.png\ /></td> ; echo <td class=\ guide\ ><img src=\ ".path_templates. divers/separateur.gif\ /></td> ;

echo <td class=\ guide\ ><b><a href= .root_path. index.php?deconnexion=oui><img src=\ ".path_templates. divers/sortir.png\ />&nbsp; .$trad["header"]["sortie_agora"]. </a></td> ; echo <td class=\ guide\ ><img src=\ ".path_templates. divers/separateur.gif\ /></td> ; echo <td class=\ guide\ onClick=\ popup( .path_commun. rechercher.php);\ ><img src=\ ".path_templates. divers/recherche.png\ /> &nbsp; .$trad["header"]["recherche"]. </td> ; echo <td class=\ guide\ ><img src=\ ".path_templates. divers/separateur.gif\ /></td> ; if ( $trad["divers"]["guide"] == User Guide ) echo <td class=\ guide\ > <a href=../DOCUMENTATION/Guide_Utilisation_EN.pdf><img src=\ ".path_templates. divers/info.png\ /> .$trad["divers"]["guide"]. </td> ; else if ( $trad["divers"]["guide"] == Guide dUtilisation ) echo <td class=\ guide\ > <a href=../DOCUMENTATION/Guide_Utilisation_FR.pdf><img src=\ ".path_templates. divers/info.png\ /> .$trad["divers"]["guide"]. </td> ;

Modification des fichiers de traduction


$ nano /var/www/ftp/traduction/english/divers.php

Modifier les lignes suivantes :


$trad["divers"]["bienvenue_agora"] = Welcome ! ; $trad["header"]["sortie_agora"] = Log out ; $trad["header"]["recherche"] = Search on the space ;

Suppression dEnvoi Multiple


Editer le fichier ajouter_fichiers.php $ nano /var/www/ftp/module_fichier/ajouter_fichiers.php Supprimer la ligne suivante : &nbsp; / &nbsp; <span onClick= form_upload(flash); id= txt_upload_flash ><?php echo $trad["fichier"]["ajout_multiple"]; ?></span>

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Suppression de la notification par email


Editer le fichier menu_edit.inc.php $ nano /var/www/ftp/includes/menu_edit.inc.php Supprimer la ligne suivante : echo <span .infobulle( <div align=center> .$trad["edit_objet"]["notif_mail_info"]. </div> ). ><img src=\ ".path_templates. divers/envoi_notification.png\ /><span id=\ txt_notif\ onClick=\ check_txt_box(this.id,notif);\ class=\ lien\ > .$trad["edit_objet"]["notif_mail"]. </span><input type=\ checkbox\ name=\ notification\ value=\ oui\ id=\ box_notif\ onClick=\ check_txt_box(this.id,notif);\ /></span> <img src=\ ".path_templates. divers/plus.png\ onclick=\ afficher(notif_destinataires);redir(#bottom_dest);\ class=\ lien\ .infobulle($trad["edit_objet"]["notif_mail_selection"]). /> &nbsp; &nbsp; &nbsp; ;

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Modification de la taille maximale dupload des fichiers


Par dfaut la taille maximale dupload dun fichier est de 2 Mo, nous allons laugmenter 60 Mo.
Editer le fichier php.ini $ nano /etc/php5/apache2/php.ini Modifier les lignes suivantes file_uploads = On upload_max_filesize = 60M post_max_size = 60M

11 Scuriser Apache avec SSL


Installation du paquet ssl-cert
$ apt-get install ssl-cert

Activation du module SSL

$ sudo a2enmod ssl

Rdmarrer le service apache


$ /etc/init.d/apache2 force-reload

Modification du fichier HOSTS


Pour linstallation nous avons utilis une IP en 192.168.0.X, donc il faut le modifier dans le fichier HOSTS, pour viter des erreurs (Invalid method in request \x16\x03\x01) la modification se fait comme ceci : $ nano /etc/hosts Ajouter les lignes suivantes : 127.0.0.1 localhost 192.168.XXX.XXX ServeurFTP

Cration du Certificat SSL


$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/apache2/server.crt keyout /etc/apache2/server.key Explications : -x509 -nodes donne le type de certificat voulu -days 365 indique la dure de validit (en jours) de votre certificat -newkey rsa:1024 demande une cl RSA de 1024 bits daprs la doc apache, il est dconseill de crer une cl plus grosse pour des histoires de compatibilit -out /etc/apache2/server.crt est le chemin de votre certificat -keyout /etc/apache2/server.key est le chemin de la cl prive

Rpondre aux questions suivantes : Country Name (2 letter code) [GB]: FR


Entrer FR si vous tes situ en France et valider par la touche Entre State or Province Name (full name) [Some-State]: Entrer FRANCE et valider par la touche Entre Locality Name (eg, city) []: Indiquer ici le nom de votre ville. (exemple : CAEN) et validez par la touche Entre Organization Name (eg, company; recommended) []: Indiquer le nom de votre organisation, de votre socit

Organizational Unit Name (eg, section) []: Indiquer ici le nom de la section de votre organisation, de votre socit Common Name (eg, YOUR name) []: Ici, il convient de faire particulirement attention ce que vous allez entrer. Vous devez indiquer le nom de domaine que vous dsirez scuriser. Email Address []: Ici, il sagit dindiquer ladresse E-mail de ladministrateur.

Country Name (2 letter code) [AU]: FR State or Province Name (full name) [Some-State]: FRANCE Locality Name (eg, city) []: [Voter Ville] Organization Name (eg, company) [Internet Widgits Pty Ltd]: [Votre Socit] Organizational Unit Name (eg, section) []: NA Common Name (eg, YOUR name) []: [Nom] Email Address []: [Votre Adresse Mail]

Empecher la lecture de votre certificat


$ chmod 440 /etc/apache2/server.key

Ajouter le port 443 la configuration dApache


$ nano /etc/apache2/ports.conf Ajouter la ligne suivante : Listen 443 Commenter la ligne suivante : <IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here # Listen 443 </IfModule>

Control + X pour quitter nano

Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien. Rdmarrage du service Apache $ /etc/init.d/apache2 restart

Redirection http vers https


Enfin, afin que les clients puissent continuer daccder au site Web en tapant une url de type http et non https, nous allons modifier lhte virtuel accessible sur le port 80 en remplaant la directive DocumentRoot par une directive de redirection. Cration dun fichier de configuration : $ nano /etc/apache2/sites-available/vhost.conf Ajouter les lignes suivantes : NameVirtualHost 192.168.0.250:443 <VirtualHost 192.168.0.250:443> ServerName ServeurFTP DocumentRoot /var/www/agora/ Alias /secret /var/www/agora/ <Directory /var/www/agora/ > AllowOverride None Order deny,allow Allow from all </Directory> SSLEngine on SSLCertificateFile /etc/apache2/server.crt SSLCertificateKeyFile /etc/apache2/server.key </VirtualHost>

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Modification du fichier /etc/apache2/sites-available/default $ nano /etc/apache2/sites-available/default <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/agora Redirect / https://192.168.0.250/

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien. Rdmarrage du service Apache $ /etc/init.d/apache2 restart

Rajout de rgles de scurit dans le fichiers Apache.conf


$ nano /etc/apache2/apache2.conf Pour un serveur moins bavard lors derreur ou autre telnet ip 80 : ServerTokens Prod ServerSignature Off Contre le DOS (deny of service) : MaxClients 150 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 Pour rsoudre les adresses ip en nom dans les logs : HostnameLookups On

Scuriser PHP
Modification du fichier PHP.ini
$ nano /etc/php5/apache2/php.ini Modification du fichier :

safe_mode expose_php

= On = Off

max_execution_time = 30 memory_limit = 8M magic_quotes_gpc display_errors = On

= Off

sql.safe_mode = ON

INSTALLATION ET SECURISATION SERVEUR LAMP ET AGORA PROJECT SUR DEBIAN 5 LENNY


Guillaume POMENTE | 9 janvier 2010

Partager facilement des fichiers, des photos, grer des agendas personnels et de ressources, grer des tches, partager des contacts, dialoguer sur un forum priv ou une messagerie instantane, etc
Sources : http://ptitnico.net/index.php/linux http://www.delafond.org/traducmanfr/man/man5/sshd_config.5.html http://doc.ubuntu-fr.org/lamp http://www.agora-project.net/ http://blog.cybermonde.org/post/2008/03/18/securiser-Apache2-avec-SSL http://www.coagul.org/article.php3?id_article=351 http://www.system-linux.eu/index.php?post/2008/12/22/Securiser-apache

1 Installation de Debian Lenny


Pour commencer dmarrer sur votre lecteur CD /DVD, vous obtiendrez lcran suivant :

Pour continuer linstallation veuillez slectionner Install et appuyer sur [ENTREE] Slectionner votre langue dans notre cas Franais

2 Configuration des dpts


$ nano /etc/apt/sources.list
Taper les informations suivantes :

$ deb http://security.debian.org/ lenny/updates main contrib non-free $ deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free $ deb http://ftp.fr.debian.org/debian /lenny main contrib non-free
Control + X pour quitter nano
Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

3 Mis Jour des dpts et mis jour de scurit


$ apt-get update $ apt-get upgrade
La mise jour prend du temps, ne vous inquitez pas si a dure. vitez de mettre les mises jour automatique, prfrez les faire manuellement et rgulirement.

4 Installation & Configuration de Fail2Ban


Fail2Ban est un ingnieux programme qui va bannir (en utilisant le FireWall Iptables) les IP qui tentent de se loguer sur le port SSH au bout de multiples tentatives de connexions choues.

Installation Fail2Ban $ apt-get install fail2ban Configuration Fail2Ban $ nano /etc/fail2ban/jail.conf


Taper les informations suivantes. On dfinit le nombre de tentatives maximales avant de bannir, ici on bannit au bout de 4 tentatives et pendant 30 minutes. [ssh] enabled = true port = ssh filter = sshd

logpath = /var/log/auth.log maxretry = 4 # dure du banissement bantime = 1800

On redmarre le dmon : $ /etc/init.d/fail2ban restart Affichage des IP bannis par Fail2Ban $ nano /var/log/fail2ban.log

5 Installation & Configuration SSH


Si vous ne souhaitez pas voir des milliers de tentatives dauthentification chaque jour, un moyen tout simple consiste changer le port dcoute de SSH. En effet, par dfaut le port SSH est le 22 et des bots (robots) tentent de multiples combinaisons pour se loguer sur votre machine. En le modifiant nous allons rduire voire supprimer ce nombre de tentatives !

$ apt-get install ssh


Configuration ssh

$ nano /etc/ssh/sshd_config
Taper ou Modifier les informations suivantes.

# Port SSH: Port [Port de votre choix] # Authentication: LoginGraceTime 120 PermitRootLogin no //Ne permet pas la connexion avec le root StrictModes yes AllowUsers [Utilisateur Autoriss]

6 Installation & Configuration Serveur LAMP


Lorsquil est question dun serveur LAMP , on dcrit un serveur web faisant fonctionner, dans un environnement GNU/Linux, les logiciels de serveur web Apache, MySQL et PHP.

$ apt-get install apache2 apache2-doc mysql-server php5 libapache2-mod-php5 php5mysql

7 Configuration de PHP 5
diter le fichier /etc/apache2/mods-enabled/php5.conf
$ nano /etc/apache2/mods-enabled/php5.conf Ajouter la ligne suivante : AddType application/x-httpd-php .php5

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

diter le fichier /etc/apache2/mods-enabled/dir.conf


$ nano /etc/apache2/mods-enabled/dir.conf Ajouter la ligne suivante : DirectoryIndex index.php5 Pour prendre en compte les modifications un petit redmarrage du service Apache $ /etc/init.d/apache2 restart Pendant linstallation, le serveur Apache2 sera redmarr et vous allez srement rencontrer une erreur de ce genre : apache2: Could not reliably determine the servers fully qualified domain name, using 127.0.1.1 for ServerName Ceci nest absolument pas gnant et vous pouvez rgler le problme en ajoutant la directive ServerName dans le fichier de configuration principal : /etc/apache2/apache2.conf $ nano /etc/apache2/apache2.conf Ajouter la ligne suivante : $ ServerName ServeurFTP Vrification du bon fonctionnement de PHP 5 Cration dun fichier php dans /var/www/phpinfo.php $ nano /var/www/phpinfo.php

Ajouter les lignes suivantes :

<?php phpinfo(); ?>


Control + X pour quitter nano
Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien. Une fois le fichier cr (et enregistr), il devrait apparaitre sur la page dindex de votre serveur (vu tout lheure). Cliquer alors dessus ou entrer directement lURL dans votre navigateur http://[votreserveur]/phpinfo.php, Si jamais le navigateur vous demande denregistrer le fichier php, cela vient peut tre dun problme de module mal initialis : $ a2enmod php5 $ /etc/init.d/apache2 restart Si tout se passe correctement vous devriez voir apparatre une page avec toutes les infos concernant PHP

8 Installation et Configuration de PHPMyAdmin


PHPMyAdmin est un outil pour administrer mySQL via une interface web complte.

Installation de PHPMyAdmin
$ apt-get install phpmyadmin

Slectionner Apache2 et appuyer sur [ESPACE] Vous arriverez alors sur la page dauthentification de PhpMyAdmin. Entrez alors votre login ( root ) et le mot de passe choisi lors de la scurisation de MySQL. Si tout sest bien pass, vous devriez tre connect PhpMyAdmin et pouvoir crer et grer vos bases de donnes.

Configuration de PHPMyAdmin
Nous allons crer un utilisateur qui aura tous les droits, nous pourrons par la suite supprimer le compte root.

Pour se faire cliquer sur privilges > Ajouter un Utilisateur Nom dUtilisateur : nom dutilisateur Serveur : localhost Mot de Passe : mot de passe Privilges Globaux : Tout cocher Aprs on supprime lutilisateur ROOT comme dcrit ci-dessous

Cocher les case devant ROOT puis supprimer les bases de donnes et cliquer sur Excuter Une fois lutilisateur ROOT supprim PHPMyAdmin vous demandera de vous identifier, utiliser maintenant le nouvel utilisateur.

Ajout de PHPMyAdmin dans Apache


$ nano /etc/apache2/sites-available/default Ajouter les lignes suivante

Alias /phpmyadmin/ /usr/share/phpmyadmin/ <Directory /usr/share/phpmyadmin/ > Options None AllowOverride None Order allow,deny Allow from all </Directory>

9 Installation et Configuration dAgora-Project


Espace de travail collaboratif en PHP permettant la cration de groupes de travail et offrant des fonctionnalits de partages de fichiers

Tlchargement de la sources
$ wget http://www.agora-project.net/agora-project.zip Pour dcompresser la source installer le paquet unzip

$ apt-get install unzip

Dcompression de larchive
$ unzip agora-project.zip

Installation dAgora Project


Dans un premier temps nous allons crer la base SQL. Dans un navigateur http://[VOTRESERVEUR]/phpmyadmin/

Mettre le nom de la base agora et cliquer sur CREER Votre base de donnes qui va contenir les infos dAgora est maintenant oprationnelle. Donner les droits au dossier /agora/
$ chmod -R 777 agora/ Dans votre navigateur saisisser ladresse suivante pour dbuter linstallation http://[VOTRESERVEUR]/agora/install/

Hostname : localhost Nom dutilisateur : Votre nom dutilisateur Mot de passe : Votre mot de passe Nom : Votre Nom Prnom : Administrateur Identifiant : Votre Identifiant Mot de Passe : Votre mot de passe
Linstallation dAgora est maintenant terminer. Nous allons remettre les droits sur les fichiers. $ chmod -R 755 agora/

10 Personnalisation dAgora
Suppression du messenger
Pour supprimer le messenger diter le fichier header_menu_inc.php $ nano /var/www/ftp/includes/header_menu.inc.php Supprimer les lignes suivantes : <script type= text/javascript > //// //// function maj_livecounters() { New_Http_Request( GET , <?php echo path_commun; ?>livecounter.php?type=principal ); element( livecounter_principal ).innerHTML = Http_Request_Result; if(existe( livecounter_messenger )) { New_Http_Request( GET , <?php echo path_commun; ?>livecounter.php?type=messenger ); element( livecounter_messenger ).innerHTML = Http_Request_Result; } } //// //// function livecounter_messenger_verif() { New_Http_Request( GET , <?php echo path_commun; ?>livecounter_messenger_verif.php ); eval(Http_Request_Result); // execute les fonctions javascript window.setTimeout( livecounter_messenger_verif(); , <?php echo duree_livecounter_recharge*1000; ?>); } //// AFFICHAGE DES LIVECOUNTERS & DU MESSENGER EN FIN DE CHARGEMENT DE PAGE VERIFICATION REGULIERE DU LIVECOUNTER ET DU MESSENGER AFFICHAGE DES LIVECOUNTERS

//// function start_livecounters_messenger() { if(existe( livecounter_principal )) } window.setTimeout( start_livecounters_messenger(); , 3000); //// //// function affichage_messenger() { element( icone_messenger ).src = <?php echo path_templates; ?>divers/messenger.png ; afficher( calque_messenger , bascule ); if(element( calque_messenger ).style.display!= none ) } //// //// function maj_messenger_messages() { New_Http_Request( GET , <?php echo path_commun; ?>messenger_messages.php ); element( messenger_liste_messages ).innerHTML = Http_Request_Result; element( messenger_liste_messages ).scrollTop = element( messenger_liste_messages ).scrollHeight; } //// NOUVEAU MESSAGE SUR LE MESSENGER : MAJ des messages / Clignotement de licone / Son dalerte //// function messenger_nouveau_message() { AFFICHAGE DES MESSAGES DU MESSENGER maj_messenger_messages(); AFFICHAGE / MASQUAGE DU MESSENGER { maj_livecounters(); livecounter_messenger_verif(); }

// Les derniers messages sont en bas de div

if(element( calque_messenger ).style.display!= none ) else { element( icone_messenger ).style.visibility = visible ;

{ maj_messenger_messages(); }

element( icone_messenger ).src = <?php echo path_templates; ?>divers/messenger.gif ; //Sound.play( <?php echo path_commun; ?>messenger_alerte.mp3); } } //// COULEUR DU MESSAGE DU MESSENGER : AFFICHAGE / MASQUAGE DU MENU ET CHANGEMENT DE LA COULEUR //// function couleur_messenger(couleur) { set_couleur( texte_messenger ,couleur); set_value( couleur_messenger ,couleur); } //// //// function post_message_messenger() { // Vrif du message if(get_value( texte_messenger )== " || get_value( texte_messenger )== <?php echo $trad["header"]["ajouter_message"]; ?> ) { alert( <?php echo $trad["header"]["specifier_message"]; ?> ); return false; } // Vrif des utilisateurs cochs var nb_utils_messenger = 0; var url_utils_messenger = ; tab_utils_messenger = document.getElementsByName( tab_utils_messenger[] ); for(i=0; i<tab_utils_messenger.length; i++) { CONTROLE & POST DU MESSAGE DU MESSENGER

if(tab_utils_messenger[i].checked==true) { nb_utils_messenger++; url_utils_messenger += id +tab_utils_messenger[i].value+ id ; } } if(nb_utils_messenger==0) return false; } { alert( <?php echo $trad["header"]["selectionner_utilisateur"]; ?> );

// On poste le message, relance laffichage des messages, on rinitialise le champs message New_Http_Request( POST , <?php echo path_commun; ?>messenger_post.php , texte_messenger= +get_value( texte_messenger )+ &couleur_messenger= +get_value( co uleur_messenger )+ &tab_utils_messenger= +url_utils_messenger); maj_messenger_messages(); set_value( texte_messenger , ); element(texte_messenger).focus(); } </script> Supprimer aussi cette ligne : echo <div class=\ menu_ligne\ onClick=\ popup( .root_path. module_utilisateurs/utilisateur_messenger.php?id_ut$

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Modification de la favicon
Mettre la nouvelle icne dans le dossier /template/divers Modifier le fichier /var/www/ftp/includes/header.inc.php
$ nano /var/www/ftp/includes/header.inc.php Modifier la ligne suivante <link rel= icon type= image/gif href= <?php echo path_templates; ?>divers/[NOM DE L'ICONE] />

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Modification de la page Modification du profil


Editer le fichier utilisateur_edit.php
$ nano /var/www/ftp/module_utilisateurs/utilisateurs_edit.php / !\ NE PAS SUPPRIMER LES LIGNES CONCERNANT LE MAIL / !\

Supprimer les lignes suivantes :


<tr> <td class= form_libelle ><?php echo $trad["divers"]["adresse"]; ?></td> <td><input type= text name= adresse value= <?php echo $user_tmp["adresse"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["codepostal"]; ?></td> <td><input type= text name= codepostal value= <?php echo $user_tmp["codepostal"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["ville"]; ?></td> <td><input type= text name= ville value= <?php echo $user_tmp["ville"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["pays"]; ?></td> <td><input type= text name= pays value= <?php echo $user_tmp["pays"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["telephone"]; ?></td> <td><input type= text name= telephone value= <?php echo $user_tmp["telephone"]; ?> /></td> </tr>

<tr> <td class= form_libelle ><?php echo $trad["divers"]["telmobile"]; ?></td> <td><input type= text name= telmobile value= <?php echo $user_tmp["telmobile"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["fax"]; ?></td> <td><input type= text name= fax value= <?php echo $user_tmp["fax"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["adresse"]; ?></td> <td><input type= text name= adresse value= <?php echo $user_tmp["adresse"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["codepostal"]; ?></td> <td><input type= text name= codepostal value= <?php echo $user_tmp["codepostal"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["ville"]; ?></td> <td><input type= text name= ville value= <?php echo $user_tmp["ville"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["pays"]; ?></td> <td><input type= text name= pays value= <?php echo $user_tmp["pays"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["telephone"]; ?></td>

<td><input type= text name= telephone value= <?php echo $user_tmp["telephone"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["telmobile"]; ?></td> <td><input type= text name= telmobile value= <?php echo $user_tmp["telmobile"]; ?> /></td> </tr> <tr> <td class= form_libelle ><?php echo $trad["divers"]["fax"]; ?></td> <td><input type= text name= fax value= <?php echo $user_tmp["fax"]; ?> /></td> </tr> <! PHOTO > <tr> <td style= text-align:center;width:150px; ><img src= <?php echo ($user_tmp["photo"]== ") ? path_templates. divers/inconnu.png : path_photo_user.$user_tmp["photo"]; ?> style= maxwidth:130px;max-height:130px; /></td> <td> <span class= form_libelle ><?php echo $trad["divers"]["photo"]; ?> :</span> <select name= image OnChange= if(this.value==changer) {afficher(div_fichier,true);} else {afficher(div_fichier,false);} > <option><?php echo $trad["divers"]["garder"]; ?></option> <option value= defaut ><?php echo $trad["divers"]["par_defaut"]; ?></option> <option value= changer ><?php echo $trad["divers"]["image_changer"]; ?></option> </select> <div id= div_fichier class= cacher ><br /><br /><input type= file name= fichier /></div> </td> </tr>

<td class= form_libelle ><img src= <?php echo path_templates; ?>module_utilisateurs/user_agenda.png /> &nbsp; <?php echo $trad["utilisateurs"]["agenda_desactive"]; ?></td> <td class= form_libelle > <?php echo $trad["divers"]["non"]; ?> <input type= radio name= agenda_desactive value= 0 <?php if($user_tmp["agenda_desactive"]!= 1) echo checked ; ?> /> <?php echo $trad["divers"]["oui"]; ?> <input type= radio name= agenda_desactive value= 1 <?php if($user_tmp["agenda_desactive"]== 1) echo checked ; ?> /> &nbsp; </td> <! PAGE HORAIRE AGENDA > <tr> <td class= form_libelle style= padding-left:30px; ><?php echo $trad["utilisateurs"]["agenda_plage_horaire"]; ?></td> <td> <?php //// PLAGES HORAIRES DE LAGENDA { $plage_horaire = explode( -

if(@$user_tmp["agenda_plage_horaire"]!= ") ,$user_tmp["agenda_plage_horaire"]); } else //// DEBUT

{ $plage_horaire = array(0=> 8, 1=> 18); }

echo <select name=\ agenda_heure_debut\ > ; for($h=1; $h<24; $h++) { ($plage_horaire[0]==$h)?$check= selected :$check= "; echo <option value=\ ".$h. \ .$check. > .$h. :00</option> ; } echo </select> ; echo $trad["divers"]["a"]; //// FIN

echo <select name=\ agenda_heure_fin\ > ; for($h=1; $h<24; $h++) { ($plage_horaire[1]==$h)?$check= selected :$check= "; echo <option value=\ ".$h. \ .$check. > .$h. :00</option> ; } echo </select> ; ?>

</td> </tr>

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Supprimer Identifiant / Mot de passe oubli ? Mmoriser


Modifier le fichier index.php
$ nano /var/www/ftp/index.php

Supprimer les lignes suivantes :


<span onClick= popup(<?php echo path_divers; ?>password_oublie.php); class= lien <?php echo infobulle( <div style=text-align:center;width:30$ <?php echo $trad["divers"]["password_oublie"]; ?> <img src= <?php echo path_templates; ?>divers/password_oublie.png /> </span> <tr> <td style= text-align:right;font-size:11px;padding:2px; > <span <?php echo infobulle( <div style=textalign:center;width:250px;> .$trad["divers"]["connexion_auto_info"]. </div> ); ?> > <span class= lien id= txt_connexion onClick= check_txt_box(this.id,connexion); ><?php echo $trad["divers"]["connexion_auto"]; ?></span> <input type= checkbox name= connexion_auto value= 1 id= box_connexion onClick= check_txt_box(this.id,connexion); /> </span> &nbsp; &nbsp;

</td>

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Rajout des icnes Rechercher, Dconnexion, Guide dUtilisation Modification de la feuille de style
Editer le fichier style.css $ nano /var/www/ftp/templates/style.css.php Ajouter les lignes suivantes : /* GUIDE UTILISATION*/ .guide { vertical-align:middle; font-weight:bold; }

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Modification des fichiers de traduction pour licne Guide dUtilisation Traduction Franais
Editer le fichier divers.php
$ nano /var/www/ftp/traduction/francais/divers.php

Ajouter les lignes suivantes :


$trad["divers"]["guide"] = Guide dUtilisation ;

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Traduction Anglais
Editer le fichier divers.php
$ nano /var/www/ftp/traduction/english/divers.php Ajouter la ligne suivante : $trad["divers"]["guide"] = User Guide ;

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Ajout des liens


Editer le fichier header.inc.php
$ nano /var/www/ftp/includes/header.inc.php Supprimer les lignes suivantes //// ESPACES AFFICHE + MENU //// echo <span class=\ lien\ onMouseOver=\ afficher(liste_espaces,true);\ onMouseOut=\ afficher(liste_espaces,false);\ > ; echo <div class=\ menu_flottant\ id=\ liste_espaces\ ><div style=\ overflow-y:auto;maxheight:600px;\ > ; echo <div class=\ menu_ligne\ style=\ marginbottom:3px\ > .$trad["header"]["espaces_dispo"]. :</div> ; foreach(espaces_affectes_user($_SESSION["user"]) as $espace_tmp) { $style_text = lien ; $txt_acces_espace = ; if($espace_tmp["id_espace"]==$_SESSION["espace"]["id_espace"]) { $style_text = lien_select ; $ echo &nbsp; <span onClick=\ redir( .$_SERVER["PHP_SELF"]. ?id_espace_acces= .$espace_tmp["id_espace"].$ } echo </div></div> ; echo $_SESSION["espace"]["nom"]. <img src=\ ".path_templates. divers/derouler.png\ /> ; echo </span> ; Inscrire les lignes suivantes la place des lignes supprimes ci-dessus //// //// echo <span class=\ lien\ onMouseOver=\ afficher(liste_espaces,true);\ onMouseOut=\ afficher(liste_espaces,false);\ > ; echo <div class=\ menu_flottant\ id=\ liste_espaces\ ><div style=\ overflow-y:auto;maxheight:600px;\ > ; ESPACES AFFICHE + MENU

echo <div class=\ menu_ligne\ style=\ marginbottom:3px\ > .$trad["header"]["espaces_dispo"]. :</div> ;

echo </span> ;

foreach(espaces_affectes_user($_SESSION["user"]) as $espace_tmp) { $style_text = lien ; $txt_acces_espace = ; if($espace_tmp["id_espace"]==$_SESSION["espace"]["id_espace"]) { $style_text = lien_select ; if(droit_acces_espace($espace_tmp["id_espace"],$_SESSION["user"])==2) $txt_acces_espace = $trad["header"]["espace_acces_administration"]; } echo &nbsp; <span onClick=\ redir( .$_SERVER["PHP_SELF"]. ?id_espace_acces= .$espace_tmp["id_espace"]. );\ class= .$style_text. style=margin-left:5px title=\ ".$espace_tmp["description"]. \ > .$espace_tmp["nom"]. .$txt_acces_espace. </span><br /> ; } echo </div></div> ; echo <img src=\ ".path_templates. divers/separateur.gif\ /> ; echo $_SESSION["espace"]["nom"]. <td><img src=\ ".path_templates. divers/derouler.png\ /></td> ; echo <td class=\ guide\ ><img src=\ ".path_templates. divers/separateur.gif\ /></td> ;

echo <td class=\ guide\ ><b><a href= .root_path. index.php?deconnexion=oui><img src=\ ".path_templates. divers/sortir.png\ />&nbsp; .$trad["header"]["sortie_agora"]. </a></td> ; echo <td class=\ guide\ ><img src=\ ".path_templates. divers/separateur.gif\ /></td> ; echo <td class=\ guide\ onClick=\ popup( .path_commun. rechercher.php);\ ><img src=\ ".path_templates. divers/recherche.png\ /> &nbsp; .$trad["header"]["recherche"]. </td> ; echo <td class=\ guide\ ><img src=\ ".path_templates. divers/separateur.gif\ /></td> ; if ( $trad["divers"]["guide"] == User Guide ) echo <td class=\ guide\ > <a href=../DOCUMENTATION/Guide_Utilisation_EN.pdf><img src=\ ".path_templates. divers/info.png\ /> .$trad["divers"]["guide"]. </td> ; else if ( $trad["divers"]["guide"] == Guide dUtilisation )

echo <td class=\ guide\ > <a href=../DOCUMENTATION/Guide_Utilisation_FR.pdf><img src=\ ".path_templates. divers/info.png\ /> .$trad["divers"]["guide"]. </td> ;

Modification des fichiers de traduction


$ nano /var/www/ftp/traduction/english/divers.php

Modifier les lignes suivantes :


$trad["divers"]["bienvenue_agora"] = Welcome ! ; $trad["header"]["sortie_agora"] = Log out ; $trad["header"]["recherche"] = Search on the space ;

Suppression dEnvoi Multiple


Editer le fichier ajouter_fichiers.php $ nano /var/www/ftp/module_fichier/ajouter_fichiers.php Supprimer la ligne suivante : &nbsp; / &nbsp; <span onClick= form_upload(flash); id= txt_upload_flash ><?php echo $trad["fichier"]["ajout_multiple"]; ?></span>

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Suppression de la notification par email


Editer le fichier menu_edit.inc.php $ nano /var/www/ftp/includes/menu_edit.inc.php Supprimer la ligne suivante : echo <span .infobulle( <div align=center> .$trad["edit_objet"]["notif_mail_info"]. </div> ). ><img src=\ ".path_templates. divers/envoi_notification.png\ /><span id=\ txt_notif\ onClick=\ check_txt_box(this.id,notif);\ class=\ lien\ > .$trad["edit_objet"]["notif_mail"]. </span><input type=\ checkbox\ name=\ notification\ value=\ oui\ id=\ box_notif\ onClick=\ check_txt_box(this.id,notif);\ /></span> <img src=\ ".path_templates. divers/plus.png\ onclick=\ afficher(notif_destinataires);redir(#bottom_dest);\ class=\ lien\ .infobulle($trad["edit_objet"]["notif_mail_selection"]). /> &nbsp; &nbsp; &nbsp; ;

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien.

Modification de la taille maximale dupload des fichiers


Par dfaut la taille maximale dupload dun fichier est de 2 Mo, nous allons laugmenter 60 Mo.
Editer le fichier php.ini $ nano /etc/php5/apache2/php.ini Modifier les lignes suivantes file_uploads = On upload_max_filesize = 60M post_max_size = 60M

11 Scuriser Apache avec SSL


Installation du paquet ssl-cert
$ apt-get install ssl-cert

Activation du module SSL


$ sudo a2enmod ssl

Rdmarrer le service apache


$ /etc/init.d/apache2 force-reload

Modification du fichier HOSTS


Pour linstallation nous avons utilis une IP en 192.168.0.X, donc il faut le modifier dans le fichier HOSTS, pour viter des erreurs (Invalid method in request \x16\x03\x01) la modification se fait comme ceci : $ nano /etc/hosts Ajouter les lignes suivantes : 127.0.0.1 localhost 192.168.XXX.XXX ServeurFTP

Cration du Certificat SSL

$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/apache2/server.crt keyout /etc/apache2/server.key Explications : -x509 -nodes donne le type de certificat voulu -days 365 indique la dure de validit (en jours) de votre certificat -newkey rsa:1024 demande une cl RSA de 1024 bits daprs la doc apache, il est dconseill de crer une cl plus grosse pour des histoires de compatibilit -out /etc/apache2/server.crt est le chemin de votre certificat -keyout /etc/apache2/server.key est le chemin de la cl prive

Rpondre aux questions suivantes : Country Name (2 letter code) [GB]: FR


Entrer FR si vous tes situ en France et valider par la touche Entre State or Province Name (full name) [Some-State]: Entrer FRANCE et valider par la touche Entre Locality Name (eg, city) []: Indiquer ici le nom de votre ville. (exemple : CAEN) et validez par la touche Entre Organization Name (eg, company; recommended) []: Indiquer le nom de votre organisation, de votre socit Organizational Unit Name (eg, section) []: Indiquer ici le nom de la section de votre organisation, de votre socit Common Name (eg, YOUR name) []: Ici, il convient de faire particulirement attention ce que vous allez entrer. Vous devez indiquer le nom de domaine que vous dsirez scuriser. Email Address []: Ici, il sagit dindiquer ladresse E-mail de ladministrateur.

Country Name (2 letter code) [AU]: FR State or Province Name (full name) [Some-State]: FRANCE Locality Name (eg, city) []: [Voter Ville] Organization Name (eg, company) [Internet Widgits Pty Ltd]: [Votre Socit] Organizational Unit Name (eg, section) []: NA

Common Name (eg, YOUR name) []: [Nom] Email Address []: [Votre Adresse Mail]

Empecher la lecture de votre certificat


$ chmod 440 /etc/apache2/server.key

Ajouter le port 443 la configuration dApache


$ nano /etc/apache2/ports.conf Ajouter la ligne suivante : Listen 443 Commenter la ligne suivante : <IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here # Listen 443 </IfModule>

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien. Rdmarrage du service Apache $ /etc/init.d/apache2 restart

Redirection http vers https


Enfin, afin que les clients puissent continuer daccder au site Web en tapant une url de type http et non https, nous allons modifier lhte virtuel accessible sur le port 80 en remplaant la directive DocumentRoot par une directive de redirection. Cration dun fichier de configuration : $ nano /etc/apache2/sites-available/vhost.conf Ajouter les lignes suivantes : NameVirtualHost 192.168.0.250:443

<VirtualHost 192.168.0.250:443> ServerName ServeurFTP DocumentRoot /var/www/agora/ Alias /secret /var/www/agora/ <Directory /var/www/agora/ > AllowOverride None Order deny,allow Allow from all </Directory> SSLEngine on SSLCertificateFile /etc/apache2/server.crt SSLCertificateKeyFile /etc/apache2/server.key </VirtualHost>

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien. Modification du fichier /etc/apache2/sites-available/default $ nano /etc/apache2/sites-available/default <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/agora Redirect / https://192.168.0.250/

Control + X pour quitter nano


Il demande si lon sauve, dire Oui en pressant la touche O Il demande comment le fichier doit sappeler, faire Entre pour ne toucher rien. Rdmarrage du service Apache $ /etc/init.d/apache2 restart

Rajout de rgles de scurit dans le fichiers Apache.conf


$ nano /etc/apache2/apache2.conf Pour un serveur moins bavard lors derreur ou autre telnet ip 80 : ServerTokens Prod ServerSignature Off Contre le DOS (deny of service) : MaxClients 150 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 Pour rsoudre les adresses ip en nom dans les logs : HostnameLookups On

Scuriser PHP
Modification du fichier PHP.ini
$ nano /etc/php5/apache2/php.ini Modification du fichier : safe_mode expose_php = On = Off

max_execution_time = 30 memory_limit = 8M magic_quotes_gpc display_errors = On

= Off

sql.safe_mode = ON

Vous aimerez peut-être aussi