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 :

[pastacode provider= »manual » lang= »bash »]

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

[/pastacode]

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

[pastacode provider= »manual » lang= »bash »]

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

[/pastacode]

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

[pastacode provider= »manual » lang= »bash »]

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

[/pastacode]

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 :
[pastacode provider= »manual » lang= »bash »]

/etc/init.d/ssh restart

[/pastacode]
ou

[pastacode provider= »manual » lang= »bash »]

service ssh restart

[/pastacode]

Avant de vous déconnecter, vérifiez bien que ssh est lancé sur le bon port :
[pastacode provider= »manual » lang= »bash »]

netstat -nptl | grep 1234

[/pastacode]
Cette commande doit retourner une sortie semblable à :

[pastacode provider= »manual » lang= »bash »]

tcp 0 0 0.0.0.0:1234 0.0.0.0:*

[/pastacode]

  • Installation de fail2ban

[pastacode provider= »manual » lang= »markup »]

apt-get install fail2ban

[/pastacode]

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

[pastacode provider= »manual » lang= »bash »]

apt-get install logwatch

[/pastacode]

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

[pastacode provider= »manual » lang= »bash »]

MailTo = mon_nom@mondomaine.org

[/pastacode]

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.

[pastacode provider= »manual » lang= »bash »]

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

[/pastacode]

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/.

[pastacode provider= »manual » lang= »bash »]

########################################################
# 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*

[/pastacode]

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/

[pastacode provider= »manual » lang= »bash »]

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

[/pastacode]

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

[pastacode provider= »manual » lang= »bash »]

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

Title = “lighttpd”

# Which logfile group…
LogFile = lighttpd

[/pastacode]

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 :

[pastacode provider= »manual » lang= »bash »]

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

[/pastacode]

Et voilà, rien à modifier dans ce fichier.

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

[pastacode provider= »manual » lang= »bash »]

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

[/pastacode]

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 :

[pastacode provider= »manual » lang= »bash »]

/usr/sbin/logwatch --output mail

[/pastacode]

par

[pastacode provider= »manual » lang= »markup »]

/usr/sbin/logwatch --mailto mon_nom@mondomaine.org

[/pastacode]

  • Installation de rkhunter

[pastacode provider= »manual » lang= »bash »]

apt-get install rkhunter

[/pastacode]

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