Sécuriser un serveur Ubuntu 12.04 ou 14.04 (ClamAV,UFW,Fail2Ban,Rkhunter,Chkrootkit,LMD)

Un serveur gnu/linux est souvent considéré comme sûr de base, mais il convient tout de même d’installer un antivirus et un firewall. La présence potentiel de rootkit et autre webshell sur une machine qui fait de l’hébergement web requière l’installation de logiciels adaptés.

Aujourd’hui je vous propose un script sur Github fonctionnant sur Ubuntu 12.04 et 14.04 lts et qui intègre tout ces logiciels avec en prime la mise en place de notifications emails sur une base journalière. Voyons le listing dans le détail :

  • Configuration de l’envoi d’email
  • Configuration d’UFW pour un accès SSH
  • Installation et configuration de Rkhunter
  • Installation et configuration de Chkrootkit
  • Installation et configuration de Fail2Ban
  • Installation et configuration de ClamAV
  • Installation et configuration de Linux Malware Detection

Pour l’envoi d’email sur un serveur il faudra vous munir des identifiants et de l’adresse du serveur smtp pour que cela fonctionne.
Attention à correctement définir le port SSH car la configuration du firewall intégré à Ubuntu sera faite pour n’autoriser que SSH de l’extérieur.
Pour détecter les menaces de type rootkit, Rkhunter et Chkrootkit seront installés et avec une mise à jour et un scan par jour avec notification email.
Pour déjouer les forces brutes sur le port SSH, Fail2ban sera configurer avec notification email.
La détection des virus sera assuré par ClamAV et les malwares (webshell par exemple) seront détectés par LMD avec une mise à jour et un scan par jour avec notification email.

Attention tout de même aux faux positifs notamment avec Rkhunter et Chkrootkit ! Un RTFM est obligatoire sur chaque warning et chaque error ;)

Voila vous pouvez respirer maintenant !

Créer un certificat SSL auto-signé pour Nginx

Si vous ne souhaitez pas acheter un certificat SSL, il est tout a fait possible d’un générer un vous même.

On commence par créer un répertoire :

mkdir  /etc/nginx/ssl/
cd /etc/nginx/ssl/

Puis on génère une autorité de certification (CA) en spécifiant une passphrase:

openssl genrsa -des3 -out server.key 1024

Puis on spécifie les informations de l’autorité de certification :

openssl req -new -key server.key -out server.csr

Et on crée une clé allant avec le certificat :

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt

Finalement on intègre le certificat et la clé dans la config du vhost :

server {
    listen 443 ssl;
    ssl on;
    ssl_certificate      /etc/nginx/ssl/server.crt;
    ssl_certificate_key  /etc/nginx/ssl/server.key;

On peut éventuellement ajouter le support SPDY si Nginx a été compilé avec :

server {
    listen 443 ssl spdy;
    ssl on;
    ssl_certificate      /etc/nginx/ssl/server.crt;
    ssl_certificate_key  /etc/nginx/ssl/server.key;

Compiler Nginx 1.5.10 et installer Php 5.5.8 sur Ubuntu Trusty Tahr 14.04 lts

Même si Ubuntu Trusty Tahr est encore dans sa branche développement, j’ai décidé de commencer à jouer avec, en installant nginx depuis les sources en lisant un article de Jeff Mould.

A part quelques dépendances nouvelles ou avec une nouvelle syntaxe, rien ne change vraiment. J’ai posé un script d’installation sur mon Github avec quelques ajouts :

  • Création des repertoires
  • Script init
  • Nginx.conf modifié
  • Ajout d’un vhosts d’exemple
  • Installation de php5-fpm depuis les dépôts officiels (version 5.5.8)
  • Création d’un fichier contenant phpinfo()
  • Integration de SPDY pour les vhosts utilisant SSL

Petite note concernant SPDY, ce protocole proposé par Google est censé améliorer les temps de chargements des pages en SSL. Pour cela il vous suffit d’installer un certificat SSL dans le vhosts Nginx.

    listen 443 ssl spdy;
    ssl on;
    ssl_certificate      /etc/nginx/ssl/server.crt;
    ssl_certificate_key  /etc/nginx/ssl/server.key;

Pour tester la page une extension pour Chrome est disponible.