Serveur dédié : sécuriser Apache 2 avec ModSecurity photo

Serveur dédié : sécuriser Apache 2 avec ModSecurity

modsecurity

Aujourd’hui, on ajoute une couche de sécurité supplémentaire avec l’installation du module ModSecurity pour Apache.

ModSecurity est un firewall pour les applications web (WAF) pour Apache.

Il permet de se prémunir contre pas mal d’attaques (connues/inconnues, injections SQL, failles XSS…) et permet de surveiller le traffic HTTP en temps réel. Très utile pour un serveur dédié sous Apache!

L’installation est très rapide, cela ne prend que quelques minutes et 3 étapes.

Etape 1 : installation de mod_security

On commence par éditer nos sources de dépôts :

nano /etc/apt/sources.listCode language: PHP (php)

et on ajoute les backports :

deb  squeeze-backports main

On met à jour et on installe mod_security:

apt-get update
apt-get install libapache-mod-securityCode language: JavaScript (javascript)

On active le module :

a2enmod mod-security

Et on relance Apache pour prendre en compte nos changements :

/etc/init.d/apache2 restart

Lire la suite

Serveur dédié : création d'un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d'utilisateurs/domaines virtuels photo 1

Serveur dédié : création d’un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et Courier (accès POP et IMAP) utilisant une base MySQL d’utilisateurs/domaines virtuels

Aujourd’hui, nous voyons comment créer un serveur mail sécurisé et qui tient bien la route. Comme je suis seul utilisateur du serveur, je ne voyais pas trop l’intérêt de créer des comptes utilisateurs sur le serveur juste pour pouvoir bénéficier d’un serveur mail.

J’ai donc opté pour la solution suivante : un serveur mail Postfix (sécurisé avec Saslauthd et certificat SSL) et un serveur Courier (accès POP et IMAP) qui utilisent MySQL (utilisateurs et domaines virtuels) pour la redirection des messages des utilsateurs/domaines.

icon mail server1

Le tutoriel est certainement le plus long de la série, j’estime que cela prend à peu près 50 minutes à compléter (en 15 étapes!). Attention au niveau des copier/coller, une simple erreur peut vous faire perdre pas mal de temps !

Etape 1 : configurer le hostname

Le hostname est le nom du serveur en général. Mon domaine est skyminds.net donc mon serveur s’appelle mail.skyminds.net

Il est également important que ce nom soit présent dans la configuration bind du serveur.

Pour connaitre le nom de votre machine, tapez :

hostname -f

Pour le modifiez, il faut éditer /etc/hostname :

nano /etc/hostname

Remplacez ce qui s’y trouve avec le nom de votre serveur. J’y mets ‘mail.skyminds.net’.

Ensuite, éditez /etc/hosts:

nano /etc/hosts

On ne touche pas à la première ligne mais on ajoute l’adresse IP du serveur suivie de notre nom de machine :

127.0.0.1       localhost.localdomain localhost
xxx.xxx.xxx.xxx  mail.skyminds.netCode language: CSS (css)

Il ne vous reste plus qu’à rebooter le serveur pour que les modifications soient prises en compte :

/sbin/reboot

Vérifiez bien que le nouveau nom a bien changé :

hostname -f

J’obtiens bien :

mail.skyminds.netCode language: CSS (css)

Si vous obtenez une erreur du style “name or service not found”, vérifiez que les enregistrements DNS du serveur sont bien corrects.

Lire la suite

Serveur dédié : sécurisation de la couche TCP/IP photo

Serveur dédié : sécurisation de la couche TCP/IP

icon security firewall

Il est facile de sécuriser la couche TCP/IP du serveur juste en activant quelques directives.

Normalement, le réseau de l’hébergeur est suffisant stable pour que nous puissions désactiver certains fonctions de routage IPv4 et IPv6.

Nous allons donc désactiver les redirections ICMP, nous protéger des attaques SYN FLOOD, du spoofing, du smurfing, désactiver le routage à l’intérieur des paquets et finalement désactiver l’autoconf IPV6.

Ce tutoriel prend à peine 10 minutes.

Configuration du fichier /etc/sysctl.conf

Il existe pas mal d’options dans le fichier sysctl.conf liées à la sécurité. Commençons par éditer le fichier :

nano /etc/sysctl.conf

Lire la suite

Serveur dédié : sécurisation des services avec iptables et fail2ban photo

Serveur dédié : sécurisation des services avec iptables et fail2ban

icon security firewall

Notre serveur est maintenant opérationnel et sert les pages du site. Il faut toutefois penser à le sécuriser un peu contre les attaques les plus communes.

Nous utilisons donc iptables – un firewall qui filtre activement nos ports utilisés et qui bloque les autres – et fail2ban qui scanne vos fichiers logs à la recherche de requêtes étranges pour bloquer les intrus à la porte lorsqu’ils deviennent trop insistants.

Installation et configuration d’iptables

Si ce n’est déjà fait, on installe iptables :

apt-get install iptablesCode language: JavaScript (javascript)

Les règles peuvent porter sur 3 chaînes :

  • INPUT en entrée,
  • FORWARD dans le cas d’un routage réseau,
  • OUPUT en sortie.

et les actions à entreprendre sont ACCEPT (accepter le paquet), DROP (le jeter), QUEUE et RETURN. Les arguments utilisés sont :

  • i : interface d’entrée (input)
  • o : interface de sortie (output)
  • t : table (par défaut filter contenant les chaînes INPUT, FORWARD, OUTPUT)
  • j : règle à appliquer (Jump)
  • A : ajoute la règle à la fin de la chaîne (Append)
  • I : insère la règle au début de la chaîne (Insert)
  • R : remplace une règle dans la chaîne (Replace)
  • D : efface une règle (Delete)
  • F : efface toutes les règles (Flush)
  • X : efface la chaîne
  • P : règle par défaut (Policy)
  • lo : localhost (ou 127.0.0.1, machine locale)

Lire la suite

Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur photo 4

Serveur dédié : changer les DNS du nom de domaine et le faire pointer vers le serveur

icon dns

Notre site est opérationnel sur le serveur en local, il ne nous reste plus qu’à faire pointer notre nom de domaine vers l’IP de notre serveur. Pour cela, nous devons changer l’adresse des serveurs DNS du domaine.

Cela prend à peu près 30 minutes à tout configurer. La propagation DNS peut prendre plusieurs heures toutefois.

Changer les serveurs DNS du nom de domaine

Cette opération s’effectue chez le registrar chez qui nous avons réservé le nom de domaine. Dans mon cas, il s’agit de GANDI.

Après s’être identifié sur le site, il suffit de cocher le domaine à modifier et de sélectionner l’option “changer/modifier les DNS” :

dns gandi change1

Lire la suite

Serveur dédié : créer et activer un Virtual Host sous Apache photo

Serveur dédié : créer et activer un Virtual Host sous Apache

icon apache2

Dans le tutoriel précédent, nous avons importé notre base de données et uploadé nos fichiers sur le serveur.

Il nous faut maitenant indiquer au serveur Apache où se trouvent nos fichiers pour qu’il puisse les servir.

L’ajout d’un virtual host (hôte virtuel) ne prend que quelques minutes.

Création du VirtualHost

Nous créons un fichier sous /etc/apache2/sites-available/ qui porte le nom de domaine de notre site, cela permet de s’y retrouver :

nano /etc/apache2/sites-available/www.skyminds.net

Lire la suite

MySQL : résoudre l'erreur "mysql_connect(): Headers and client library minor version mismatch" photo

Serveur dédié : créer la base de données MySQL et importer WordPress

icon mysql

Dans ce tutoriel, nous allons voir comment créer la base de données MySQL et importer notre base WordPress existante.

Ce tutoriel prend environ 15 minutes à réaliser. Tout se fait dans le terminal via une session SSH.

Création d’une base de données

On se connecte au serveur MySQL :

mysql -p -h localhost 

Entrez votre mot de passe du compte root pour MySQL. Vous obtenez un prompt.

On crée une base de données UTF-8, avec une collation utf8_unicode_ci :

CREATE DATABASE skyminds_wp CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Je vous recommande très fortement d’utiliser l’UTF-8 dès le départ. Cela évite bien des soucis qui pourraient survenir ultérieurement avec les caractères accentués.

Lire la suite

Serveur dédié : installation d'Apache, PHP, MySQL et Webmin photo

Serveur dédié : installation d’Apache, PHP, MySQL et Webmin

Ce premier guide est le premier d’une série d’articles consacrés à l’installation de services indispensables pour un serveur dédié.

Aujourd’hui, il s’agit d’installer Apache, PHP, MySQL et Webmin sur notre serveur.

Cela prend environ 20 minutes à réaliser.

Etape 1 : mettre à jour le système d’exploitation

Avant de commencer, on met l’OS à jour :

apt-get update && apt-get dist-upgradeCode language: JavaScript (javascript)

et on ajoute tout ce qu’il faut pour compiler :

apt-get install build-essentialCode language: JavaScript (javascript)

Voilà, nous sommes prêts à démarrer.

Lire la suite

Migration de serveur : Kimsufi 250G photo

Migration de serveur : Kimsufi 250G

Aujourd’hui, je vous donne les quelques news techniques du site.

Serveur Kimsufi 500G

Cela fait presque un an que SkyMinds.Net tourne sur un serveur dédié hébergé chez OVH. Le serveur était un Kimsufi avec 500 Go de disque dur.

Quelques jours seulement après le transfert du site, OVH annonce le Kimsufi avec 250 Go mais… à moitié prix ! Et on ne peut rendre un serveur Kimsufi pour un autre, il s’agit de deux achats séparés.

serveur dedie debian

Au niveau des performances, je dirai que mon Kimsufi 500G n’était pas terrible : il était constamment surchargé et j’avais l’impression de devoir relancer les services régulièrement pour assurer la disponibilité du service. Pas cool du tout.

Lire la suite

Créer un réseau privé virtuel (VPN) sous Debian photo

Créer un réseau privé virtuel (VPN) sous Debian

Alors que la course à l’anonymat sur internet bat son plein, que ce soit pour télécharger ou simplement pour surfer en toute tranquillité, je m’en vais vous présenter un tutoriel qui vous permettra de créer un VPN.

Commençons les choses dans l’ordre !

Un vépéquoi ?

vpn icon

VPN, ça signifie Virtual Private Network, et si on le traduit en français ça donne Réseau Privé Virtuel.

Pour faire court, il s’agit d’une passerelle entre le Client (nous) et, pour être vulgaire, Internet. C’est en tout cas l’utilisation que nous allons en faire ici.

Le grand avantage d’un tel tunnel c’est qu’il crypte toutes les données qu’il envoie et qu’il reçoit. Si vous passez par un VPN, vous êtes donc assez protégé. De plus, votre adresse IP sera celle du serveur sur lequel le VPN est installé.

En somme, il s’agit d’un gros proxy… en mieux.

Lire la suite

Résoudre l'erreur "... is not in the sudoers file" photo

Résoudre l’erreur “… is not in the sudoers file”

terminal icon

Lors de la rédaction d’un de mes articles techniques, j’ai ajouté mon utilisateur à un nouveau groupe en utilisant usermod et celui-ci a perdu ses privilèges administrateurs…

Résoudre l'erreur "... is not in the sudoers file" photo

Cela veut dire que je ne pouvais absolument plus lancer la commande sudo dans le terminal ou avoir accès à l’administration du système : plus de mises à jour, plus d’édition de fichiers critiques… mon utilisateur était devenu lambda et moi bien embêté !

Voici un exemple de ce que l’on obtient dans le terminal dans ce cas-là :

sudo apt-get update
[sudo] password for matt: 
matt is not in the sudoers file.  This incident will be reported.Code language: JavaScript (javascript)

Lire la suite

Serveur dédié : choix du système d'exploitation, SSH et commandes bash photo

Serveur dédié : choix du système d’exploitation, SSH et commandes bash

Cet article est le premier d’une série consacrée à la mise en place d’un serveur dédié. Le but est double : garder une trace de ce que je fais pour administrer mon serveur et donner des astuces à celles et ceux qui voudraient se lancer dans l’administration d’un serveur.

serveur dedie debian

J’ai reçu mon serveur OVH à peu près 30 minutes après avoir passé commande : on reçoit un email avec le nom de la machine, son adresse IP et les identifiants root pour se connecter dessus via SSH.

Système d’exploitation

Au moment de la commande, on peut indiquer quel système d’exploitation on veut installer sur le serveur. La plupart des hébergeurs que j’ai contacté proposent CentOS (qui est basé sur Red Hat).

J’ai donc installé CentOS dans une machine virtuelle sur mon PC pour voir ce que ça donne. J’ai assez vite abandonné l’idée, principalement parce que les noms des commandes changent : ce n’est plus apt-get mais yum etc. Réapprendre toutes les commandes d’une autre distribution n’ayant aucun attrait pour moi, j’ai éliminé CentOS de la liste des candidats.

Voici les distributions et systèmes d’exploitations proposés chez OVH à la date de cet article :

Debian 5.0 Stable, Ubuntu Server 8.04, Ubuntu Server 8.10, Ubuntu Server 9.04, Ubuntu Server 9.10, Open Suse 11, Red Hat Ent. Linux 5, Fedora 11, CentOS, Gentoo 2007, Gentoo 2008, Gentoo 10.1, Slackware 12.1, Slackware 13, Mandriva, ArchLinux, FreeBSD 7.1, FreeBSD 8.0, OpenSolaris (BETA), Openfiler NSA 2.3, Windows Server 2008 R2 Datacenter Edition, Windows Server 2008 R2 Entreprise Edition, Windows Server 2008 R2 Standard Edition, Windows Server 2008 R2 Web Edition, Windows Server 2008 R2 Core Datacenter Edition, Windows Server 2008 R2 Core Entreprise Edition, Windows Server 2008 R2 Core Standard Edition, Windows Server 2008 R2 Core Web Edition, Windows Server 2008 Datacenter Edition SP2, Windows Server 2008 Web Edition SP2, Windows 2003 Enterprise Edition, Windows 2003 Standard Edition, Windows Server 2003 Web Edition.

J’ai opté pour la simplicité et la robustesse, j’ai installé une Debian 64-bits.

Lire la suite