An automatic computer screen displaying the message "sorry you have been blocked".

Contourner le blocage du WAF Cloudflare pour les uploads de zip dans WordPress

Le blocage des fichiers zip par le WAF (Web Application Firewall) de Cloudflare est un casse-tête pour de nombreux développeurs WordPress, surtout lors de la mise à jour de plugins et de thèmes. Heureusement, il existe une solution pour contourner ce problème sans compromettre la sécurité de votre site WordPress.

Pourquoi le WAF bloque-t-il les fichiers Zip ?

Cloudflare met régulièrement à jour ses Managed Rules pour renforcer la sécurité. Un upload de fichier zip peut être un vecteur pour des attaques malveéillantes, comme l’installation de shells. Ainsi, Cloudflare bloque ces requêtes pour protéger votre site.

Dans notre cas, par contre, cela nous empêche de faire nos mises à jour et c’est quand même plus simple de mettre à jour les plugins et thèmes payants avec un fichier zip, plutôt que de passer par SFTP ou wp-cli.

Solution #1: créer une exception dans le WAF de Cloudflare

Évidemment, nous n’allons pas désactiver ces règles qui fonctionnent si bien et ajoutent une couche de protection à notre site. Non, nous allons simplement créer une exception aux Managed Rules, que nous placerons avant tous les autres set de règles pour qu’elle soit prise en compte en priorité.

Étape 1: rendez-vous dans le Dashboard de Cloudflare

Allez dans Security > WAF > Managed Rules.

Voici ce que vous obtenez:

A screenshot of the WAF settings in Google Analytics showcasing blocked zip files.

Cliquez ensuite sur le bouton Add exception à droite.

Lire la suite

BASH : lister, bloquer et débloquer des adresses IP avec iptables photo 1

BASH : lister, bloquer et débloquer des adresses IP avec iptables

Sur un serveur dédié, il n’est pas rare d’avoir des adresses IP à bannir pour se débarrasser de visiteurs malveillants, de spammeurs ou de bots qui effectuent des requêtes farfelues visant à perturber le bon fonctionnement des services du serveur.

Heureusement, toutes ces petites contrariétés peuvent être résolues en quelques secondes grâce à un firewall comme iptables.

Ce petit tutoriel vous montre les quelques commandes à retenir pour lister, bannir ou débloquer des adresses IP avec iptables ainsi qu’un petit script bash qui vous permettra d’automatiser la gestion de ces trois fonctions très simplement.

Bannir une IP

Pour bannir une adresse IP avec iptables, il suffit de lancer cette commande:

iptables -I INPUT -s x.x.x.x -j DROPCode language: CSS (css)

L’argument DROP indique que l’adresse IP indiquée (x.x.x.x) n’aura plus accès à la machine.

Lister les IP bloquées

Pour voir la liste des adresses IP bloquées, il suffit de demander à iptables la liste et de ne sélectionner que celles qui sont en DROP:

iptables -L INPUT -v -n | grep DROP

Résultat :

Chain INPUT (policy DROP 23 packets, 4122 bytes)

Débloquer une IP

Pour débloquer une IP, il faut d’abord afficher la liste des IP bannies:

iptables -L INPUT -v -n | grep DROP

Toutes les IP sont classées dans un ordre numéroté, ligne par ligne. Il suffit d’indiquer le numéro de la ligne de la règle à supprimer avec la commande:

iptables -D INPUT numero-de-la-regle

L’argument -D (pour delete) permet de supprimer la règle qui correspond à l’adresse IP que nous souhaitons supprimer. Par exemple, si on veut supprimer la règle 1, il suffit d’indiquer:

iptables -D INPUT 1

Vous aurez remarqué que toutes ces commandes sont bien fastidieuses et leurs syntaxes assez complexes à retenir.

Voyons donc comment créer un script bash qui prendrait en charge toutes ces commandes.

Script Bash pour automatiser la gestion des IP bannies dans iptables

Bash

Voici un script bash qui devrait grandement vous simplifier la gestion des IP dans iptables.

Il permet de bloquer, débloquer et lister les adresses IP en toute simplicité.

Lire la suite

Serveur dédié : création d'une seedbox avec Transmission photo

Serveur dédié : création d’une seedbox avec Transmission

transmission-icon

Aujourd’hui, on apprend comment monter une seedbox sur un serveur dédié avec Transmission.

Une seedbox est un serveur privé dédié au téléchargement et à l’émission de fichiers, utilisant le protocole BitTorrent, connecté à des réseaux à très haut débit symétrique, souvent à 100 MBits/s et plus.

Les fichiers sont envoyés à la Seedbox par les autres utilisateurs du réseau BitTorrent, et de là ils peuvent être récupérés depuis un ordinateur personnel, à la vitesse maximale de sa connexion (ADSL, fibre optique, 3G…) et ceci par les protocoles FTP, HTTP, SFTP, rsync, SSH.

Etape 1 : installation de Transmission

Sur le serveur, dans le terminal, on installe Transmission :

apt-get install transmission-daemonCode language: JavaScript (javascript)

Le serveur se lance dès l’installation, on l’arrête :

/etc/init.d/transmission-daemon stop

Etape 2 : configurer Transmission

On édite sa configuration :

nano /etc/transmission-daemon/settings.json

Eléments à modifier selon votre configuration :

  • “download-dir”: “/home/files”,
  • “incomplete-dir”: “/home/files/tmp”,
  • “rpc-password”: “votre-mot-de-passe”,
  • “rpc-username”: “votre-login”,
  • “rpc-whitelist”: “254.254.254.254”,

Le mot de passe est hashé au redémarrage du serveur, vous pouvez le rentrer en clair.

Le serveur tourne par défaut sur le port 51413 et le webadmin sur le port 9091. Pensez à whitelister votre adresse IP.

Lire la suite

screw-you-livebox

Serveur dédié : impossible de se connecter à un port distant

Aujourd’hui, je vérifie les services du serveur et me rend compte qu’il m’est impossible de me connecter aux services qui tournent sur des numéros de port non-standards.

Le problème : plus de connexion distante sur des ports exotiques

screw you livebox

J’essaie de comprendre pourquoi cela ne fonctionne plus : je bidouille à droite à gauche, vérifie vingt fois la configuration iptables, reboote deux fois le serveur, flush les données iptables et me fait jeter de ma connexion SSH…

Reboot du serveur, toujours aucune connexion sur les ports exotiques.

Plus d’accès aux torrents, à webmin, IMAP et autres. Tout cela alors que depuis le serveur, en local, tout était bien accessible.

Je n’avais pourtant rien modifié dans la configuration du serveur. Recherches sur internet pendant environ 4 heures.

Des gens semblent avoir le même problème sur des forums. Dernière réponse du sujet : “j’ai trouvé merci, c’est réparé”. Ces gars-là, je les hais. Ils ont le problème, semblent avoir la solution mais ils ne la partagent pas b*rdel!

La solution : vérifier le firewall client (routeur ou box)

En vacances, j’ai une Livebox. Et j’avais bidouillé le paramétrage du firewall de la livebox pour pouvoir utiliser rsync.

Donc la source du problème n’était PAS le firewall du serveur, c’était le firewall de la LIVEBOX :

livebox firewall medium

Cela pourra peut-être servir à quelqu’un : il faut mettre le firewall de la livebox au niveau “moyen”.

Comme par magie, tous les accès aux ports distants sont rétablis.

Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances photo 1

Serveur dédié : installer APC comme système de cache et configurer Varnish comme reverse-proxy pour Apache pour améliorer les performances

Allez, on continue d’optimiser notre serveur : aujourd’hui, je vous montre comment améliorer nettement les performances du serveur.

Nous allons d’abord installer un système de cache – j’ai choisi APC – qui va soulager un peu le système en mettant en cache les pages du site les plus demandées.

Cela aura un impact sur le temps de traitement des pages (moins de traitement PHP) et sur la base de données (moins de requêtes SQL).

varnish apache

Dans un second temps, nous installons Varnish comme reverse-proxy pour Apache : tous les objets statiques (images, CSS, JS) seront traités par Varnish, le reste (PHP) sera traité par Apache. Cela divise sensiblement la charge serveur.

Installation d’APC

APC est un système de cache que je trouve très performant. On l’installe avec :

pecl install apc

puis on crée le fichier de configuration :

nano /etc/php/7.4/conf.d/apc.ini

et on y ajoute :

extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.stat=0
apc.ttl=7200
apc.user_ttl=7200
apc.enable_cli=1
apc.max_file_size=10M
apc.rfc1867 = On

Lire la suite

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

24_logo

24 saison 7

La septième saison de 24 commence avec Jack Bauer en train d’être interrogé lors d’un procès à Washington D.C., promptement interrompu par un problème de sécurité nationale dû à une intrusion dans un firewall, permettant de prendre le contrôle des communications aériennes.

La personne que tout le monde croyait morte, Tony Almeida, est à l’origine de ce problème.

Pendant ce temps, la nouvelle présidente des Etats-Unis, Alison Taylor, doit gérer la situation traînante à Sangala. Et la CTU a été dissoute, ce qui n’arrange pas les choses…

Lire la suite

Tests de firewalls pour ordinateur portable

FW

Je me suis mis à la recherche d’un firewall pour mon nouvel ordinateur portable et cela n’a pas été chose facile : il faut en effet quelque chose de léger et performant à la fois, histoire de ne pas compromettre la sécurité du WiFi. J’ai donc essayé plusieurs firewalls (ou parefeu comme devrais-je plutôt dire) afin de voir lequel conviendrait le mieux, sachant qu’il faut quelque chose qui ne consomme pas trop de ressources pour ne pas épuiser la batterie trop vite ou ralentir la machine. Voici donc les résulats de mes tests empiriques.

Outpost Professional

Outpost est très complet mais ne s’adresse pas aux néophyte. C’est un firewall utilisant des règles de filtrage : il faut définir le niveau d’accès de chaque application qui veut accèder à Internet. A l’utilisation, cela est très exhaustif sur le plan sécurité mais assez complexe à mettre en oeuvre pour l’utilisateur, surtout lorsqu’Outpost ne mémorise pas certains choix. Au démarrage par exemple, il demande toujours quel niveau d’accès donner à kernel32.dll alors que la règle avait déjà été créée auparavant.

McAfee Personal Firewall

McAfee Personal Firewall est le firewall que j’utilise sur mon PC principal. Il n’est pas adapté à une utilisation nomade car il consomme pas mal de RAM et gère principalement les accès au niveau des applications : les programmes sont autorisés à se connecter à Internet ou non. Comparé à Oupost, c’est beaucoup plus simple et donc beaucoup moins configurable. C’est le genre de firewall qui se fait oublier après quelques jours.

Look ‘n’ Stop

Look ‘n’ Stop est celui que j’ai finalement gardé. Il est simple d’utilisation et fonction à partir de règles de filtrage à la manière d’Outpost mais il existe la possibilités de télécharger les règles de filtrage les plus utilisées et des plugins ajoutant des fonctionnalités supplémentaires, ce qui permet de gagner un temps précieux. Un bon firewall.

Routeur et port forwarding : la redirection de ports photo

Routeur et port forwarding : la redirection de ports

Un routeur (ou box internet) bloque par défaut tout connexion entrante différente du port 80 sauf si une règle a été créée pour ouvrir un port. Le port-forwarding ou port-mapping consiste donc en 2 étapes.

Il faut d’abord configurer le port à ouvrir (numéro de début et de fin des ports à ouvrir, protocole utilisé) et ensuite le rediriger vers la machine sur laquelle le port doit être ouvert. Cette translation d’adresse est effectué par la NAT (Network Address Translation).

L’exemple suivant sera exploité tout au long de ce tutoriel : on cherche à ouvrir le port 8000 pour permettre la diffusion de notre web radio.

La même procédure s’applique pour ouvrir d’autres ports ou ensembles de ports, pour emule ou bittorrent par exemple. Le routeur qui a servi de base à la rédaction de cet article est un NetGear DG834G.

La redirection de port prend environ 8-10 minutes à configurer la première fois, ce sera beaucoup plus rapide les fois suivantes vu qu’on sautera la première étape.

Lire la suite