Installer et sécuriser un serveur web avec accès FTP sur Debian 8 Jessie


273 views
Temps de lecture 19min 24s
4/9/2023, 6:25:26 PM
Auteur : Michael

Installer et sécuriser un serveur web avec accès FTP sur Debian 8 Jessie

 

Ce tutoriel explique de manière simple et directe comment configurer un serveur web sur Debian Jessie avec un serveur FTP, SSH et des services de messagerie, ainsi que des outils de surveillance et de sécurité tels que fail2ban, logwatch ou monit.

 

La sécurité mise en place dans ce tutoriel ne sera pas optimale et pourra toujours être améliorée, mais c'est un bon point de départ.

 

Nous allons lister une série de commandes à exécuter en SSH. Elles sont pratiquement toutes suffisamment explicites pour se passer de commentaires.

Vous pouvez tout faire sous votre compte root.

 

 

Changer le mot de passe root fourni par votre hébergeur (par exemple : OVH, Kimsufi, SoYouStart).

# passwd

 

Supprimer les clés SSH autorisées pour le compte root.

# echo > /root/.ssh/authorized_keys

 

Supprimer les scripts d'initialisation de votre hébergeur.

# rm /root/scripts-d-initialisation-de-votre-hebergeur -rf

 

Mettre à jour et installer divers logiciels.

# apt-get update # apt-get install aptitude # aptitude update && aptitude full-upgrade # aptitude install nano ntp ntpdate 

 

Vérifier que la date est correcte.

# date

 

Mettre à jour les serveurs NTP localisés en France, par exemple.

# dpkg-reconfigure tzdata 
# whereis ntp 
# nano /etc/ntp.conf

 

Ajouter les serveurs NTP suivants :

server fr.pool.ntp.org iburst dynamic
server 0.fr.pool.ntp.org iburst dynamic
server 1.fr.pool.ntp.org iburst dynamic
server 2.fr.pool.ntp.org iburst dynamic
server 3.fr.pool.ntp.org iburst dynamic

 

Modifier éventuellement le fichier .bashrc pour ajouter de la couleur ou activer des alias.

# nano ~/.bashrc 
# source ~/.bashrc 
# nano /etc/pam.d/su

Décommenter la ligne suivante :

auth required pam_wheel.so

 

Modifier le fichier de configuration SSH pour changer le port SSH par défaut.

# nano /etc/ssh/sshd_config

 

Modifier la ligne suivante :

Port 15839

(Notez que vous devrez vous connecter à ce nouveau port SSH à l'avenir.)

 

Changer le nom d'hôte de votre serveur.

# nano /etc/hostname

Ajouter le nom de domaine de votre site, par exemple :

monsite.com

 

Modifier le fichier /etc/hosts pour ajouter ou vérifier les entrées suivantes :

# nano /etc/hosts

127.0.0.1 localhost.localdomain localhost 111.222.333.444 monsite.com monsite

Remplacez 111.222.333.444 par l'adresse IP de votre serveur.

 

Installer les paquets nécessaires pour un serveur web.

# aptitude install binutils debian-goodies debianutils sudo spamassassin clamav clamav-daemon unzip gcc mutt ftp make bzip2 curl perl openssl locate

 

Vérification et redirection des e-mails

Ouvrir le fichier d'alias en utilisant l'éditeur de texte "nano" :

sudo nano /etc/aliases

Modifier si nécessaire l'adresse e-mail de l'utilisateur root en la remplaçant par votre propre adresse e-mail, par exemple :

root : [email protected]

Cela permettra de rediriger les e-mails destinés à l'utilisateur root vers votre adresse e-mail personnelle.

Enregistrer les modifications et fermer l'éditeur de texte.

 

Mettre à jour les alias en exécutant la commande suivante pour prendre en compte les modifications :

sudo newaliases

Cela permettra de mettre à jour la configuration des alias e-mails.

 

Ouvrir le fichier de configuration du nom de domaine de l'e-mail en utilisant l'éditeur de texte "nano" :

sudo nano /etc/mailname

Modifier le nom de domaine de l'e-mail en remplaçant "monsite.com" par le nom de domaine approprié pour votre site web.

Enregistrer les modifications et fermer l'éditeur de texte.

 

En suivant ces étapes, vous pouvez vérifier ou rediriger les e-mails liés à votre serveur et vous assurer qu'ils sont correctement configurés pour votre site web.

N'oubliez pas de toujours sauvegarder vos fichiers de configuration avant de les modifier, et de tester attentivement les modifications pour vous assurer qu'elles fonctionnent correctement sur votre système.

 

Installation du serveur Apache et configuration d'un site web sur Apache 2.4

Après avoir installé Apache avec la commande

aptitude install apache2

 

vous pouvez installer les modules PHP nécessaires en utilisant la commande suivante :

sudo aptitude install php5 php5-gd php5-curl php5-dev php5-mcrypt php5-gmp php5-apcu php5-memcached memcached apache2-dev php-pear php5-imagick php5-mysql

 

Ensuite, vous pouvez configurer certains paramètres de sécurité dans le fichier security.conf en utilisant la commande suivante pour l'ouvrir avec l'éditeur de texte nano :

sudo nano /etc/apache2/conf-available/security.conf

Décommentez, ajoutez ou modifiez les lignes suivantes pour améliorer la sécurité de votre serveur Apache :

ServerTokens Prod ServerSignature Off

Ces paramètres permettent de masquer les informations de version d'Apache dans les en-têtes de réponse du serveur, ce qui peut aider à renforcer la sécurité en ne divulguant pas d'informations sensibles.

 

Ensuite, activez les modules nécessaires pour Apache en utilisant la commande a2enmod. Par exemple, pour activer les modules cgi, rewrite, expires et headers, utilisez la commande suivante :

sudo a2enmod cgi rewrite expires headers

 

Ensuite, vous pouvez modifier le fichier de configuration principal d'Apache en utilisant la commande suivante :

sudo nano /etc/apache2/apache2.conf

Assurez-vous que les paramètres suivants sont configurés ou modifiés comme suit dans le bloc <Directory /var/www/> :

<Directory /var/www/> 
Options FollowSymLinks 
AllowOverride None 
Require all granted 
</Directory>

Cela permet d'autoriser les liens symboliques dans le répertoire de base du site web (/var/www/) et d'autoriser les directives d'override pour les fichiers .htaccess.

 

Ensuite, vous pouvez créer un fichier de configuration pour votre site web en utilisant la commande suivante :

sudo nano /etc/apache2/sites-available/monsite.conf

Ajoutez les lignes suivantes pour configurer un virtual host pour votre site web :

<VirtualHost *:80> 
ServerName www.monsite.com 
ServerAdmin [email protected] 
DocumentRoot /var/www/monsite 
ErrorLog ${APACHE_LOG_DIR}/error.log 
CustomLog ${APACHE_LOG_DIR}/access.log combined 
<Directory /var/www/monsite> 
  AllowOverride All 
  Require all granted 
</Directory> 
</VirtualHost>

Assurez-vous de remplacer www.monsite.com et [email protected] par le nom de domaine et l'adresse e-mail de votre site web respectivement. Le répertoire DocumentRoot doit être configuré avec le chemin vers le répertoire racine de votre site web.

 

Ensuite, activez le virtual host que vous venez de créer en utilisant la commande suivante :

sudo a2ensite monsite

 

 

Installation du serveur FTP

Entrez la commande suivante et suivez les instructions

# aptitude install proftpd
répondez : Indépendamment (standalone)
# adduser monlogin -shell /bin/false -home /var/www/monsite
# nano /etc/proftpd/proftpd.conf
Ajoutez/Modifiez :
ServerName "Mon serveur FTP"
TimeoutStalled 3600
ListOptions "-latr"
AllowStoreRestart on
Décommentez :
RequireValidShell off

Ces étapes permettent d'installer et de configurer le serveur FTP ProFTPD sur votre système. Une fois que vous avez installé ProFTPD, vous pouvez créer un nouvel utilisateur pour accéder au serveur FTP en utilisant la commande adduser. Dans l'exemple ci-dessus, nous avons créé un nouvel utilisateur avec le nom "monlogin", en utilisant /bin/false comme shell pour restreindre son accès au serveur FTP seulement, et en définissant /var/www/monsite comme répertoire principal.

Ensuite, vous pouvez modifier la configuration de ProFTPD en éditant le fichier de configuration /etc/proftpd/proftpd.conf avec l'éditeur de texte nano. Vous pouvez personnaliser la configuration en ajoutant ou modifiant les directives nécessaires. Dans l'exemple ci-dessus, nous avons ajouté/modifié les directives suivantes :

  • ServerName: Cela permet de définir le nom du serveur FTP, qui sera affiché dans les messages de connexion et les réponses du serveur.
  • TimeoutStalled: Cela définit le délai d'attente en secondes pour les connexions FTP en mode passif qui sont inactives. Dans cet exemple, nous avons défini la valeur à 3600 secondes (1 heure).
  • ListOptions: Cela définit les options d'affichage pour la commande de liste (ls) utilisée par le serveur FTP. Dans cet exemple, nous avons configuré les options pour afficher les fichiers en utilisant le format long, triés par date de modification inversée et avec les fichiers cachés inclus.
  • AllowStoreRestart: Cela permet d'autoriser la reprise des transferts interrompus lors de l'envoi de fichiers via FTP. Dans cet exemple, nous avons activé cette fonctionnalité en la définissant sur "on".
  • RequireValidShell: Cela permet de spécifier si un shell de connexion valide est requis pour les utilisateurs FTP. En décommentant cette directive et en la définissant sur "off", vous autorisez les utilisateurs FTP à se connecter sans avoir besoin d'un shell de connexion valide.

 

N'oubliez pas de sauvegarder les modifications apportées au fichier de configuration et de redémarrer le service ProFTPD pour appliquer les modifications en utilisant la commande suivante :

sudo service proftpd restart

 

Vous avez maintenant installé et configuré un serveur FTP sur votre système. Vous pouvez maintenant utiliser un client FTP pour vous connecter au serveur FTP et transférer des fichiers vers/des répertoires configurés. Assurez-vous de prendre les mesures de sécurité appropriées pour protéger votre serveur FTP, par exemple en limitant les droits d'accès des utilisateurs, en activant le chiffrement SSL/TLS pour les connexions FTP, et en utilisant des mots de passe forts et en mettant à jour régulièrement le logiciel ProFTPD pour bénéficier des dernières mises à jour de sécurité.

 

 

Installation du serveur MySQL et de PhpMyAdmin

Pour installer MySQL et PhpMyAdmin, vous pouvez utiliser les commandes suivantes :

# aptitude install mysql-server-5.5 phpmyadmin

Notez que pour Debian Stretch (Debian 9 et versions ultérieures), vous devrez exécuter la commande suivante pour sécuriser l'installation de MySQL :

# sudo mysql_secure_installation

 

Ensuite, vous devez configurer PhpMyAdmin pour qu'il fonctionne avec Apache. Pour cela, vous pouvez modifier le fichier de configuration d'Apache avec la commande suivante :

# nano /etc/phpmyadmin/apache.conf

Dans ce fichier, modifiez la ligne suivante :

Alias /phpMyAdmin /usr/share/phpmyadmin

par

Alias /DOSSIER-secret phpMyAdmin /usr/share/phpmyadmin

Remarque : Remplacez DOSSIER-secret par le nom de dossier secret que vous souhaitez utiliser pour accéder à PhpMyAdmin.

 

Ensuite, ajoutez les lignes suivantes après la ligne "DirectoryIndex index.php" :

AuthType Basic
AuthName "phpMyAdmin"
AuthUserFile /etc/phpmyadmin/htpasswd.setup #ou un autre fichier htpasswd (cf section plus bas, monitoring - login pass)
Require valid-user

Ces lignes ajoutent une authentification basée sur un mot de passe pour PhpMyAdmin.

 

Enfin, vous pouvez créer un fichier htpasswd pour définir les noms d'utilisateur et les mots de passe qui seront utilisés pour accéder à PhpMyAdmin. Vous pouvez utiliser la commande suivante pour créer ce fichier :

# htpasswd -c /usr/local/.monfichierpassword monlogin

Remarque : Remplacez monfichierpassword par le nom de fichier que vous souhaitez utiliser pour stocker les noms d'utilisateur et les mots de passe, et monlogin par le nom d'utilisateur que vous souhaitez créer.

 

Une fois que vous avez effectué ces modifications, enregistrez le fichier de configuration d'Apache et quittez l'éditeur de texte.

Maintenant, vous devriez être en mesure d'accéder à PhpMyAdmin en utilisant le dossier secret que vous avez configuré dans l'URL de votre site web, par exemple :

http://monsite.com/DOSSIER-secret/

 

 

Installation du monitoring serveurs et des statistiques serveur awstats

Installer les packages nécessaires avec la commande suivante :

# aptitude install logwatch monit awstats

 

Modifier les permissions du fichier de journal d'accès Apache :

# chmod 644 /var/log/apache2/access.log*

 

Modifier les permissions du répertoire de journaux d'Apache :

# chmod 755 /var/log/apache2/

 

Modifier le fichier de rotation des journaux d'Apache avec la commande suivante :

# nano /etc/logrotate.d/apache2

Vérifier que la ligne suivante est présente ou la modifier si nécessaire :

create 644 root adm

Ajouter les lignes suivantes à la fin du fichier :

prerotate 
/usr/share/doc/awstats/examples/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl >> /var/log/awstats.log 
endscript

Créer un fichier de mot de passe pour accéder aux statistiques avec la commande suivante :

# htpasswd -c /usr/local/.monfichierpassword monlogin

Remplacer "monfichierpassword" par le nom de votre fichier de mot de passe et "monlogin" par le nom d'utilisateur de votre choix.

 

Modifier le fichier de configuration d'awstats avec la commande suivante :

# nano /etc/apache2/conf-available/awstats.conf

Créer le fichier si nécessaire et ajouter les lignes suivantes :

Alias /awstats-icon "/usr/share/awstats/icon/"
ScriptAlias /AWstats/ /usr/lib/cgi-bin/
<Location /AWstats>
AuthType Basic
AuthName "Statistiques awstats"
AuthUserFile /usr/local/.monfichierpassword
Require valid-user
Require user monlogin
</Location>
<Directory /usr/lib/cgi-bin/>
DirectoryIndex awstats.pl
UseCanonicalName off
Options +ExecCGI
AllowOverride None
</Directory>

 

Activer la configuration d'awstats avec la commande suivante :

# a2enconf awstats

 

Modifier le fichier de configuration d'awstats avec la commande suivante :

# nano /etc/awstats/awstats.conf

Vérifier les lignes suivantes ou les modifier si nécessaire :

LogType=W 
LogFormat=1 
SiteDomain="monsite.com" 
DNSLookup=2

 

Créer un fichier de configuration pour monit avec la commande suivante :

# nano /etc/monit/conf.d/isy

Configurer le fichier en fonction de vos besoins, notamment l'adresse e-mail de notification, le port d'accès à monit, le nom d'utilisateur et mot de passe, ainsi que les seuils de surveillance pour la charge du système, l'utilisation de la mémoire, et l'espace disque. Un exemple de configuration est donné dans le tutoriel.

 

Si vous utilisez l'utilisateur "@adm", ajouter l'utilisateur à ce groupe avec les commandes suivantes :

# adduser monlogin 
# adduser monlogin adm

 

 

Installation de fail2ban

Entrez les commandes

# aptitude install fail2ban 
# nano /etc/fail2ban/jail.conf

Configurez vos prisons à activer et ajoutez par exemple, en général ou sur un module précis :

[ssh]
enabled = true
port = 65000
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
# durée du banissement en secondes
bantime = 20000
# durée de recherches entre plusieurs tentatives
findtime = 3600

 

 

Installer le serveur mail Postfix avec un serveur SMTP configuré pour GMAIL

Si vous utilisez exim4, il peut être utile de désactiver la gestion d'IPV6 qui peut causer des problèmes. Pour cela, ouvrez le fichier de configuration avec la commande suivante :

# nano /etc/exim4/update-exim4.conf.conf

Ajoutez la ligne suivante :

dc_disable_ipv6='true'

 

Enregistrez les modifications et rechargez la configuration avec la commande suivante :

# update-exim4.conf

 

Ajoutez les enregistrements DNS nécessaires sur votre fournisseur de domaine (ex: Godaddy, Namecheap, etc.) pour votre serveur mail. Voici un exemple d'enregistrements à ajouter :

smtp IN A 111.222.333.444
monsite.com. IN MX 10 smtp

Cela permet de lier l'adresse IP de votre serveur (111.222.333.444) à un enregistrement MX pour votre domaine (monsite.com).

 

Installez Postfix et les modules nécessaires avec la commande suivante :

# aptitude install postfix libsasl2-modules sasl2-bin

Lorsque vous êtes invité à choisir le type de configuration, sélectionnez "Site Internet" (Internet Site) et saisissez le nom de domaine de votre site (ex: monsite.com).

 

Ouvrez le fichier de configuration principal de Postfix avec la commande suivante :

# nano /etc/postfix/main.cf

Ajoutez ou vérifiez les lignes suivantes :

myorigin = /etc/mailname
smtpd_tls_security_level=encrypt
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtpd_tls_ask_ccert = yes
myhostname = monsite.com
mydestination = $myhostname, localhost.$mydomain $mydomain
mailbox_size_limit = 0
message_size_limit = 1024000000
#sasl conf
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

 

Créez un utilisateur pour l'adresse e-mail [email protected] avec la commande suivante :

# adduser webmaster

 

Ouvrez le fichier d'aliases avec la commande suivante :

# nano /etc/aliases

Ajoutez ou modifiez les lignes suivantes :

root: webmaster 
webmaster: [email protected]

Enregistrez les modifications.

 

Testez l'envoi d'un e-mail à [email protected] avec la commande suivante :

# echo "Email test" | mail -s "test de mon serveur mail" [email protected]

 

Vérifiez les logs pour vous assurer que l'envoi s'est bien déroulé:

# tail –F /var/log/mail.log

 

 

Configurer le SMTP SASL pour l'envoi via SMTP TLS de Gmail

Ouvrez le fichier de configuration du daemon SASL pour le serveur SMTP :

# nano /etc/postfix/sasl/smtpd.conf

Ajoutez les lignes suivantes :

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

 

Copiez le fichier de configuration par défaut de saslauthd et éditez le nouveau fichier :

# cp /etc/default/saslauthd /etc/default/saslauthd-postfix
# nano /etc/default/saslauthd-postfix

Modifiez les lignes suivantes :

START=yes
DESC="SASL Auth. Daemon for Postfix"
NAME="saslauthd-postf"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

 

Modifiez les droits d'accès pour le répertoire saslauthd :

# dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd

 

Ajoutez l'utilisateur postfix au groupe sasl :

# adduser postfix sasl

 

Redémarrez le daemon saslauthd :

# service saslauthd restart

 

Redémarrez le service postfix :

# service postfix restart

 

Configurer Gmail avec votre serveur SMTP pour envoyer des e-mails depuis l'adresse [email protected]

1. Accédez aux paramètres de votre compte Gmail, puis à "Comptes et importations", et cliquez sur "Envoyer des e-mails en tant que : Ajouter une autre adresse e-mail".

2. Décochez l'option "Traiter comme un alias".

3. Configurez les paramètres suivants :

- Serveur SMTP : smtp.monsite.com

- Port : 25

- Utilisateur : webmaster

- Mot de passe : le mot de passe que vous avez défini lors de la création de l'utilisateur "webmaster"

- Connexion sécurisée : TLS

 

 

Configurer muttrc

Ouvrez le fichier de configuration muttrc :

# nano ~/.muttrc

Ajoutez le contenu suivant en remplaçant les valeurs par les vôtres :

   set from="monsite.com <[email protected]>"
   set locale="fr_FR"
   set date_format="%A %d %b %Y à %H:%M:%S (%Z)"
   set attribution="Le %d, %n a écrit :"
   set forward_format="[Fwd: %s]"
   set forward_quote
   set pager_index_lines=7
   set pager_stop
   set copy = no

 

Installation d'un script de sauvegarde des sites et du serveur

Si vous possédez le script de sauvegarde Isyweb, vous pouvez l'installer comme suit :

Téléchargez le script de sauvegarde :

# wget http://machin/scriptbackup.sh (désolé pour ceux qui ne l'ont pas, le script n'est plus disponible !)

 

Éditez le fichier scriptbackup.sh :

# nano scriptbackup.sh

Configurez les noms des sites, du serveur, l'adresse e-mail, l'heure de la tâche cron, les informations FTP, etc.

 

Exécutez le script de sauvegarde

# sh scriptbackup.sh

Ensuite vous pouvez le supprimer, tout s'est installé sur votre serveur.

rm scriptbackup.sh

 

 

Redémarrez, votre serveur Debian 8 Jessie est prêt à la production et complètement configuré!

# reboot

 

Selon vos besoins ou préférences, vous pouvez également envisager d'installer d'autres logiciels complémentaires tels que :

  • amavisd-new : un framework pour l'analyse antivirus et antispam des courriers électroniques.
  • nginx : un serveur web alternatif à Apache, connu pour sa performance élevée et sa consommation de ressources réduite.
  • php-fpm : un gestionnaire de processus PHP qui peut être utilisé en conjonction avec nginx pour améliorer les performances de sites web PHP.

 

Ces logiciels peuvent offrir des fonctionnalités supplémentaires ou des performances améliorées pour votre serveur, en fonction de vos besoins spécifiques.

 

 

En bonus, voici quelques ajouts pour mettre en place SPF, DKIM et DMARC afin d'éviter que vos e-mails soient classés comme SPAM :

- SPF (Sender Policy Framework) : SPF est un mécanisme d'authentification des e-mails qui permet de spécifier les serveurs de messagerie autorisés à envoyer des e-mails au nom de votre domaine. Cela peut aider à prévenir la falsification de l'adresse d'expéditeur et à améliorer la délivrabilité des e-mails.

- DKIM (DomainKeys Identified Mail) : DKIM est une méthode d'authentification des e-mails qui permet de signer les messages sortants avec une clé cryptographique pour garantir leur authenticité. Cela peut aider à prouver que les e-mails proviennent réellement de votre domaine et à éviter qu'ils soient classés comme SPAM.

- DMARC (Domain-based Message Authentication, Reporting, and Conformance) : DMARC est un protocole qui permet de spécifier comment les serveurs de messagerie doivent traiter les e-mails en fonction des résultats SPF et DKIM. Cela peut aider à renforcer l'authentification des e-mails et à améliorer la délivrabilité des messages.

N'hésitez pas à consulter la documentation officielle de ces protocoles pour en savoir plus sur leur mise en place et leur configuration appropriée.

J'espère que ces informations supplémentaires vous seront utiles pour améliorer la sécurité et la délivrabilité de vos e-mails. N'hésitez pas à les mettre en œuvre en fonction de vos besoins spécifiques.

 

En conclusion, votre serveur Debian 8 Jessie est maintenant prêt à être utilisé en production avec Apache, ProFTPD et autres logiciels installés et configurés selon vos besoins. Assurez-vous de bien comprendre les concepts et les commandes que vous utilisez, et de prendre les mesures de sécurité appropriées pour protéger votre serveur et les données qu'il contient. Si vous avez des questions supplémentaires, n'hésitez pas à demander de l'aide à la communauté ou à des experts en la matière.

Bonne utilisation de votre serveur Debian 8 Jessie !