Skip to content

Protéger le serveur apache des attaques DOS

J’ai lu avec intérêt l’article du blog de Bartounet et j’ai eu envie de reproduire la démarche. Par contre, j’ai commencé par créer la protection avant de simuler l’attaque. :-D

L’idée est de permettre au serveur web Apache de résister à une attaque DOS (Deny of Service). L’attaque DOS consiste à submerger le serveur web de requêtes jusqu’à que le serveur de puisse plus suivre et ne réponde plus aux requêtes normales.

Une attaque coordonnée à partir de plusieurs ordinateurs devient une attaque distribuée : DDOS.

Le module evasive ajoute cette protection à Apache de la façon suivante:

Authentification SSH par cryptographie asymétrique

J’ai voulu franchir une étape supplémentaire pour sécuriser l’accès de mon serveur en activant l’authentification par clef publique et clef privée.cryptographie

Le principe de la cryptographie asymétrique est le suivant: la clef publique sert à encoder le message et la clef privée, protégée par un mot de passe, sert à décoder le message. De plus, la clef privée ne peut pas être déduite en partant de la clef publique.

Cet échange crypté permet d’établir la liaison entre client et serveur. Le reste de la communication utilise un mode symétrique moins gourmand en ressources CPU.

Sécuriser les connexions sur un hotspot

putty


Il m’arrive régulièrement de me connecter sur des hotspot wifi non sécurisés et je n’aime pas l’idée que mes mots de passe de connexion ftp ou smtp soient envoyés en clair.

J’ai découvert que mon serveur dédié pouvait me servir de proxy pour sécuriser ma connexion très simplement.

L’idée est de mettre en place un proxy SOCKS en utilisant la fonction serveur de SSH.

Je suis impressionné par la simplicité et l’efficacité du principe.

Il suffit de paramétrer Putty pour que SSH fasse un transfert dynamique de port.

Identifier l’origine dun paquet

En effectuant un upgrade du système, apt-get m’a proposé une mise à jour de sudo, le programme qui permet d’accorder à certains utilisateurs la possibilité de lancer une commande en tant qu’administrateur.

J’ai été surpris parce que je lis toujours les annonces de mise à jour de sécurité sur la mailing list ubuntu-security-announce et aucune mise à jour n’avait été annoncée pour sudo.

Heureusement je suis également abonné à la mailing list ubuntu-fr@lists.ubuntu.com.

Découvrir Ubuntu avec l’appui de la communauté est un vrai plaisir et j’ai ainsi découvert l’usage de apt-cache policy, qui affiche des informations précises sur la priorité du paquet.

Les alias pour gagner du temps

J’ai installé des alias pour me faciliter la vie et ne pas retaper les commandes apt-get.

Un alias est un raccourci pour une commande en console.

alias permet de lister les alias existants, tandis que alias exemple=’commande’ va créer un raccourci nommé exemple qui exécutera une commande.

unalias exemple supprimera l’alias créé.

Voila donc les alias que je me suis créé:

user@sd-12345:~$ alias
alias acs=’apt-cache search’
alias agd=’sudo apt-get dist-upgrade’
alias agg=’sudo apt-get upgrade’
alias agi=’sudo apt-get install’
alias agr=’sudo apt-get remove’
alias agu=’sudo apt-get update’
alias ban=’sudo fail2ban-client status’
alias ls=’ls –color=auto’
user@sd-12345:~$

lister l’historique du shell et gérer les fichiers à la souris

Un serveur dédié fait la part belle à la console.

Deux outils me semblent incontournables pour créer un confort en console:

midnight commander

Le gestionnaire midnight commander, qui s’installe avec sudo apt-get install mc est un excellent gestionnaire de fichier.

Il accepte même l’utilisation de la souris, ce qui n’est pas désagréable en console !

Et la commande history permet de lister toutes les commandes enregistrés dans le shell.

Très pratique, lorsque vous recherchez la syntaxe précise d’une commande netstat, par exemple, pour interroger vos connexions réseau, et que vous avez saisi il y a quelques heures:

Mesurer la vitesse de chargement d’une page web

J’ai trouvé ce site, WebWait, pour mesurer simplement et rapidement la vitesse de chargement d’une page web, sans avoir besoin de s’enregistrer au préalable.

Le site effectue dix requêtes consécutives et fournit la vitesse moyenne, la vitesse médiane et l’écart type.

Pour ce blog gnulinux.fr, voila le résultat :

http://www.gnulinux.fr. Moyenne: 3.81s. Médiane: 3.57s. Ecart type: 3.81s.

Je prévois de transférer ce soir un site web sur mon serveur et je pourrais comparer la performance d’un hébergement mutualisé et d’un hébergement sur serveur dédié.

sécuriser l’accès à phpmyadmin

Vous voulez que votre serveur devienne une serveur LAMP ? cet acronyme désigne les quatre applications qui font un serveur performant :

  1. un système d’exploitation Linux stable et garanti.  Si vous êtes sur ce site, vous êtes probablement déjà convaincu.
  2. un serveur web Apache pour servir les requêtes envoyés par le navigateur,
  3. une base de données MySQL ,
  4. un langage de script PHP pour générer des pages web dynamiques et gérer la base MySQL.

Il ne vous manquera alors qu’un outil pour administrer vos bases de données: phpmyadmin, un utilitaire écrit en PHP.

Installer et sécuriser le serveur FTP

Un bon client ftp comme Filezilla peut utiliser quatre modes d’accès ftp pour le transfert des fichiers.

Le mode SFTP est le plus simple à utiliser avec un serveur dédié puisqu’il fonctionne out of the box, étant inclus dans le protocole SSH. Les échanges de données et surtout les informations de connexion sont cryptées puisqu’elles bénéficient du tunnel SSH.

A l’inverse le mode FTP de base expose vos informations de connexion (user et mot de passe) sur l’internet.

Il peut donc être utile de sécuriser les échanges avec les modes FTPS et FTPES : un logiciel de gestion de contenu comme WordPress peut utiliser ce mode sécurisé pour les téléchargements internes des extensions.

booter en toute tranquillité avec un nouveau kernel

Avec un serveur dédié chez un hébergeur, aucun accès physique n’est possible au serveur. Il est donc essentiel de pouvoir rebooter en toute sécurité pour pouvoir accéder ensuite à la machine en ssh.

A l’inverse, il est toujours possible chez soi de booter sur un cd puis de monter les partitions manuellement.

La mise à jour du kernel est donc une opération délicate : en cas d’échec, il n’existe à ma connaissance que deux options, accéder à la machine avec une KVM sur IP (option payante généralement) ou réinstaller la distribution.