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

Partager facilement des fichiers, des photos, gérer des agendas personnels et de ressources,
gérer des tâches, partager des contacts, dialoguer sur un forum privé ou une messagerie instantanée, etc

Sources :

1 – Installation de Debian « Lenny »

Pour commencer démarrer sur votre lecteur CD /DVD, vous obtiendrez l’écran suivant :


Pour continuer l’installation veuillez sélectionner Install et appuyer sur [ENTREE]

Sélectionner votre langue dans notre cas Français














2 – Configuration des dépôts

$ 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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

3 – Mis à Jour des dépôts et mis à jour de sécurité

$ apt-get update

$ apt-get upgrade

La mise à jour prend du temps, ne vous inquiétez pas si ça dure. Évitez de mettre les mises à jour automatique, préférez les faire manuellement et régulièrement.

4 – Installation & Configuration de Fail2Ban

Fail2Ban est un ingénieux 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 échouées.

Installation Fail2Ban

$ apt-get install fail2ban

Configuration Fail2Ban

$ nano /etc/fail2ban/jail.conf

Taper les informations suivantes. On définit 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

# durée du banissement

bantime = 1800

On redémarre le démon :

$ /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 d’authentification chaque jour, un moyen tout simple consiste à changer le port d’écoute de SSH. En effet, par défaut 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 réduire 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 Autorisés]

6 – Installation & Configuration Serveur LAMP

Lorsqu’il est question d’un serveur « LAMP », on décrit 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 php5-mysql

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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée 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 redémarrage du service Apache

$ /etc/init.d/apache2 restart

Pendant l’installation, le serveur Apache2 sera redémarré et vous allez sûrement rencontrer une erreur de ce genre :

apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName

Ceci n’est absolument pas gênant et vous pouvez régler le problème 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

Vérification du bon fonctionnement de PHP 5

Création d’un 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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

Une fois le fichier créé (et enregistré), il devrait apparaitre sur la page d’index de votre serveur (vu tout à l’heure). Cliquer alors dessus ou entrer directement l’URL dans votre navigateur http://[votreserveur]/phpinfo.php,

Si jamais le navigateur vous demande d’enregistrer le fichier php, cela vient peut être d’un problème de module mal initialisé :

$ a2enmod php5

$ /etc/init.d/apache2 restart

Si tout se passe correctement vous devriez voir apparaître 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 complète.

Installation de PHPMyAdmin

$ apt-get install phpmyadmin


Sélectionner Apache2 et appuyer sur [ESPACE]

Vous arriverez alors sur la page d’authentification de PhpMyAdmin. Entrez alors votre login (« root ») et le mot de passe choisi lors de la sécurisation de MySQL.

Si tout s’est bien passé, vous devriez être connecté à PhpMyAdmin et pouvoir créer et gérer vos bases de données.

Configuration de PHPMyAdmin

Nous allons créer un utilisateur qui aura tous les droits, nous pourrons par la suite supprimer le compte root.

Pour se faire cliquer sur priviléges > Ajouter un Utilisateur

Nom d’Utilisateur : nom d’utilisateur

Serveur : localhost

Mot de Passe : mot de passe

Priviléges Globaux : Tout cocher

Après on supprime l’utilisateur ROOT comme décrit ci-dessous


Cocher les case devant ROOT puis « supprimer les bases de données » et cliquer sur Exécuter

Une fois l’utilisateur 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 d’Agora-Project

Espace de travail collaboratif en PHP permettant la création de groupes de travail et offrant des fonctionnalités de partages de fichiers

Téléchargement de la sources

$ wget http://www.agora-project.net/agora-project.zip

Pour décompresser la source installer le paquet unzip

$ apt-get install unzip

Décompression de l’archive

$ unzip agora-project.zip

Installation d’Agora Project

Dans un premier temps nous allons créer la base SQL.

Dans un navigateur http://[VOTRESERVEUR]/phpmyadmin/

Mettre le nom de la base agora et cliquer sur CREER

Votre base de données qui va contenir les infos d’Agora est maintenant opérationnelle.

Donner les droits au dossier /agora/

$ chmod -R 777 agora/

Dans votre navigateur saisisser l’adresse suivante pour débuter l’installation

http://[VOTRESERVEUR]/agora/install/


Hostname : localhost

Nom d’utilisateur : Votre nom d’utilisateur

Mot de passe : Votre mot de passe

Nom : Votre Nom

Prénom : Administrateur

Identifiant : Votre Identifiant

Mot de Passe : Votre mot de passe

L’installation d’Agora est maintenant terminer.

Nous allons remettre les droits sur les fichiers.

$ chmod -R 755 agora/

10 – Personnalisation d’Agora

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 »>

////        AFFICHAGE DES LIVECOUNTERS

////

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;

}

}

////        VERIFICATION REGULIERE DU LIVECOUNTER ET DU MESSENGER

////

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

////

function start_livecounters_messenger()

{

if(existe(« livecounter_principal »))        { maj_livecounters(); livecounter_messenger_verif(); }

}

window.setTimeout(« start_livecounters_messenger(); », 3000);

////        AFFICHAGE / MASQUAGE DU MESSENGER

////

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 »)    maj_messenger_messages();

}

////        AFFICHAGE DES MESSAGES DU MESSENGER

////

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;    // Les derniers messages sont en bas de div

}

////        NOUVEAU MESSAGE SUR LE MESSENGER : MAJ des messages / Clignotement de l’icone / Son d’alerte

////

function messenger_nouveau_message()

{

if(element(« calque_messenger »).style.display!= »none »)    { maj_messenger_messages(); }

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);

set_value(« couleur_messenger »,couleur);

}

////        CONTROLE & POST DU MESSAGE DU MESSENGER

////

function post_message_messenger()

{

// Vérif 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; }

// Vérif des utilisateurs cochés

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)    { alert(« <?php echo $trad[« header »][« selectionner_utilisateur »]; ?> »); return false; }

// On poste le message, relance l’affichage des messages, on réinitialise le champs « message »

New_Http_Request(« POST », « <?php echo path_commun; ?>messenger_post.php », « texte_messenger= »+get_value(« texte_messenger »)+ »&couleur_messenger= »+get_value(« couleur_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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

Modification de la favicon

Mettre la nouvelle icône 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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée 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= »max-width: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 L’AGENDA

if(@$user_tmp[« agenda_plage_horaire »]!= » »)    { $plage_horaire = explode(« -« ,$user_tmp[« agenda_plage_horaire »]); }

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

////    DEBUT

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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

Supprimer   Identifiant / Mot de passe oublié ? Mémoriser

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=’text-align: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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

Rajout des icônes Rechercher, Déconnexion, Guide d’Utilisation

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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

Modification des fichiers de traduction pour l’icône Guide d’Utilisation

Traduction Français

Editer le fichier divers.php

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

Ajouter les lignes suivantes :

$trad[« divers »][« guide »] = « Guide d’Utilisation »;

Control + X pour quitter nano

Il demande si l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée 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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée 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;max-height:600px;\ »> »;

echo « <div class=\ »menu_ligne\ » style=\ »margin-bottom: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 supprimées ci-dessus

////    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;max-height:600px;\ »> »;

echo « <div class=\ »menu_ligne\ » style=\ »margin-bottom: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 d’Utilisation »)

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 d’Envoi 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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée 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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

Modification de la taille maximale d’upload des fichiers

Par défaut la taille maximale d’upload d’un fichier est de 2 Mo, nous allons l’augmenter à 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 – Sécuriser Apache avec SSL

Installation du paquet ssl-cert

$ apt-get install ssl-cert

Activation du module SSL

$ sudo a2enmod ssl

Rédémarrer le service apache

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

Modification du fichier HOSTS

Pour l’installation 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


Création 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 durée de validité (en jours) de votre certificat
  • -newkey rsa:1024 demande une clé RSA de 1024 bits – d’après la doc apache, il est déconseillé de créer 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é privée

Répondre aux questions suivantes :
Country Name (2 letter code) [GB]: FR

Entrer FR si vous êtes situé en France et valider par la touche « Entrée »

State or Province Name (full name) [Some-State]:

Entrer FRANCE et valider par la touche « Entrée »

Locality Name (eg, city) []:

Indiquer ici le nom de votre ville. (exemple :
CAEN) et validez par la touche « Entrée »

Organization Name (eg, company; recommended) []:

Indiquer le nom de votre organisation, de votre société

Organizational Unit Name (eg, section) []:

Indiquer ici le nom de la section de votre organisation, de votre société

Common Name (eg, YOUR name) []:

Ici, il convient de faire particulièrement attention à ce que vous allez entrer. Vous devez indiquer le nom de domaine que vous désirez sécuriser.

Email Address []:

Ici, il s’agit d’indiquer l’adresse E-mail de l’administrateur.

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 Société]

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 d’Apache

$ 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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

Rédémarrage du service Apache

$ /etc/init.d/apache2 restart

Redirection http vers https

Enfin, afin que les clients puissent continuer d’accéder au site Web en tapant une url de type http et non https, nous allons modifier l’hôte virtuel accessible sur le port 80 en remplaçant la directive DocumentRoot par une directive de redirection.

Création d’un 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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée 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 l’on sauve, dire Oui en pressant la touche O

Il demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.

Rédémarrage du service Apache

$ /etc/init.d/apache2 restart

Rajout de régles de sécurité dans le fichiers Apache.conf

$ nano /etc/apache2/apache2.conf

Pour un serveur moins bavard lors d’erreur ou autre telnet ip 80 :

ServerTokens Prod

ServerSignature Off

Contre le DOS (deny of service) :

MaxClients 150

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 5

Pour résoudre les adresses ip en nom dans les logs :

HostnameLookups On

Sécuriser PHP

Modification du fichier PHP.ini

$ nano /etc/php5/apache2/php.ini

Modification du fichier :

safe_mode    = On

expose_php    = Off

max_execution_time = 30

memory_limit = 8M

magic_quotes_gpc    = On

display_errors    = Off

sql.safe_mode   = ON

Une réponse à “INSTALLATION ET SECURISATION SERVEUR LAMP ET AGORA PROJECT SUR DEBIAN 5 LENNY

Les commentaires sont clos.