Faire un serveur web de mon Raspberry Pi

Pour faire de mon RPI un serveur web, j’ai,opté pour l’installation d’une distribution RASPBIAN stable que vous pouvez trouver ici : http://www.raspberrypi.org/downloads

Mon Raspberry Pi

J’ai choisi ensuite  d’utiliser lighttpd + php + mysql :

apt-get install lighttpd
apt-get install php5-common php5-cgi php5
apt-get install mysql-server
lighty-enable-mod fastcgi-php
chown www-data:www-data /var/www

On donne ensuite les droits d’écriture au groupe :

chmod g+w /var/www
usermod -a -G www-data pi

Pour copier les répertoires (et en exclure) provenant d’un autre serveur web accessible en ssh :

rsync -av --exclude=rep1* --exclude=rep2* /var/www/ pi@ip_rpi:/var/www

Pour traduite la  ligne ci-dessus, j’ai copié le /var/www de mon ancien serveur (en excluant rep1 et rep2) dans le /var/www de mon RPI (utilisateur pi et IP=ip_rpi)

Afin de ne pas perdre la connexion de votre RPI, on peut utiliser le script de reconnexion. Ajouter >/dev/null 2>&1 à la fin de la ligne crontab pour éviter l’envoi de mail si votre RPI à tendance à le faire systématiquement.

Sécurisation minimale

J’ai choisi de n’ouvrir que deux ports de communication pour limiter les tentatives d’intrusion. Le port 80 sera ouvert par lighttpd et le 1234 pour le ssh. Pas de ftp qui n’est pas assez sécurisé à mon goût ….

  • SSH : changement du port d’écoute

Dans /etc/ssh/sshd_config indiquer le port 1234 (par exemple)
Relancez le serveur ssh :

/etc/init.d/ssh restart

ou

service ssh restart

Avant de vous déconnecter, vérifiez bien que ssh est lancé sur le bon port :

netstat -nptl | grep 1234

Cette commande doit retourner une sortie semblable à :

tcp 0 0 0.0.0.0:1234 0.0.0.0:*
  • Installation de fail2ban
apt-get install fail2ban

Le web regorge de tutoriels de configuration de cet excellent logiciel qui permet de bannir  pour un temps, les IP qui tentent de « rentrer » dans votre RPI.

  •  Installation de logwatch
apt-get install logwatch

Renseigner le fichier /etc/logwatch/conf/logwatch.conf avec votre adresse mail :

MailTo = mon_nom@mondomaine.org

Logwatch est fait pour fonctionner avec Apache … il va falloir l’adapter pour Lighttpd.

En premier :

On crée un fichier lighttpd.conf dans /usr/share/logwatch/default.conf/logfiles/, en prenant comme modèle le fichier par défaut pour un serveur web.

cd /usr/share/logwatch/default.conf/logfiles/
cp  http.conf lighttpd.conf

On modifie le fichier lighttpd.conf pour indiquer le chemin vers les fichiers de logs de lighttpd. Par défaut, la variable « LogDir » est /var/log/.

########################################################
# Define log file group for lighttpd
########################################################

# What actual file? Defaults to LogPath if not absolute path….
LogFile = lighttpd/*access.log

# If the archives are searched, here is one or more line
# (optionally containing wildcards) that tell where they are…
#If you use a “-” in naming add that as well -mgt
Archive = lighttpd/*access.log*
En deuxième :

On procède de la même façon qu’à l’étape précédente, mais cette fois-ci dans le répertoire /usr/share/logwatch/default.conf/services/

cd /usr/share/logwatch/default.conf/services/
cp  http.conf lighttpd.conf

Éditez ce nouveau fichier lighttpd.conf pour obtenir ceci au début du fichier :

###########################################################################
# Configuration pour lighttpd
###########################################################################

Title = “lighttpd”

# Which logfile group…
LogFile = lighttpd
En troisième

C’est la dernière étape …

Il faut créer un fichier « lighttpd » identique au fichier « http » dans le répertoire /usr/share/logwatch/scripts/services :

cd /usr/share/logwatch/scripts/services
cp http lighttpd

Et voilà, rien à modifier dans ce fichier.

Si vous souhaitez tester, voila ce qu’il faut rentrer dans votre console :

logwatch --output stdout --format text --detail high --service lighttpd --range today

Il envoie tous les matins un résumé des logs de connexion au serveur si vous avez correctement configuré le fichier /etc/cron.daily/00logwatch en remplaçant la ligne :

/usr/sbin/logwatch --output mail

par

/usr/sbin/logwatch --mailto mon_nom@mondomaine.org
  • Installation de rkhunter
apt-get install rkhunter

Il détecte la présence de rootkit. Il envoie également un rapport tous les matins.

 Il va détecter et bloquer les scan de ports

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Etes-vous humain ? * Time limit is exhausted. Please reload CAPTCHA.