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 :
- 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 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 » /> <?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 »; ?> />
</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>
</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 » <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 » <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\ » /> « .$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\ » /> « .$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 :
/ <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 »]). » /> »;
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
Partager la publication "INSTALLATION ET SECURISATION SERVEUR LAMP ET AGORA PROJECT SUR DEBIAN 5 LENNY"
merci infiniment pour ce tuto d’une précision chirurgicale et une efficacité absolue …
Merci