IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Limiter son port http


Sujet :

Linux

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 93
    Points : 95
    Points
    95
    Par défaut Limiter son port http
    Bonjour,

    Sur mon VPS, j'utilise UFW pour contrôler mes ports.
    Le port http est ouvert en tcp avec UFW ALLOW IN anywhere.

    Apache l'écoute, tout fonctionne très bien. Trop bien, même.
    Fin mai, j'ai programmé une page 404, qui note, dans une BD mysql l'historique des visites, avec l'adresse demandée, obtenue par $_SERVER['REQUEST_URI'].

    Conçue, au départ, pour m'aider à détecter d'éventuels liens brisés, j'ai découvert, avec effroi, qu'elle était très visitée.
    Et par des gens pas toujours bien intentionnés.

    Elle renseigne des liens qui n'existent pas, vers des pages qui sont, à mon avis, des points faibles d'applications pré-installées, ou qui ne sont pas destinées à tout internaute.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    +-----+------------------------------------------------------------------------------------------------------------------------------------------------+
    | nb  | uri                                                                                                                                            |
    +-----+------------------------------------------------------------------------------------------------------------------------------------------------+
    | 106 | /.env                                                                                                                                          |
    |  48 | /wp-login.php                                                                                                                                  |
    |  12 | /repeater.php                                                                                                                                  |
    |  11 | /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php                                                                                            |
    |  10 | /.git/config                                                                                                                                   |
    |   9 | //wp-admin/css/colors/blue/blue.php?wall=ZWNobyBhRHJpdjQ7ZXZhbCgkX1BPU1RbJ3Z6J10pOw==                                                          |
    |   9 | /wordpress/                                                                                                                                    |
    |   8 | /alfa-rex.php7                                                                                                                                 |
    |   8 | /boaform/admin/formLogin                                                                                                                       |
    |   8 | /wp-content/plugins/woocommerce/readme.txt                                                                                                     |
    |   7 | /dmosth                                                                                                                                        |
    |   6 | /simple.php                                                                                                                                    |
    |   6 | /wp-content/                                                                                                                                   |
    |   5 | //wp-content/plugins/TOPXOH/wDR.php                                                                                                            |
    |   5 | //wp-content/plugins/wordpresss3cll/up.php                                                                                                     |
    |   5 | //wp-includes/wp-class.php                                                                                                                     |
    |   5 | /admin.php                                                                                                                                     |
    |   5 | /ajax-actions.php                                                                                                                              |
    |   5 | /alfanew.php                                                                                                                                   |
    |   5 | /api/.env                                                                                                                                      |
    |   5 | /blog/                                                                                                                                         |
    |   5 | /cache-compat.php                                                                                                                              |
    |   5 | /wp-admin/ajax-actions.php                                                                                                                     |
    |   5 | /wp-admin/js/about.php                                                                                                                         |
    |   5 | /wp-admin/js/widgets/about.php7                                                                                                                |
    |   5 | /wp-admin/repeater.php                                                                                                                         |
    |   5 | /wp-consar.php                                                                                                                                 |
    |   5 | /wp-content/plugins/Cache/Cache.php                                                                                                            |
    |   5 | /wp-content/plugins/seoo/wsoyanz.php                                                                                                           |
    |   5 | /wp-content/plugins/seoo/wsoyanz1.php                                                                                                          |
    |   5 | /wp-content/repeater.php                                                                                                                       |
    |   5 | /wp-includes/repeater.php                                                                                                                      |
    |   5 | /wp-includes/wlwmanifest.xml                                                                                                                   |
    |   5 | /wp-p.php7                                                                                                                                     |
    |   5 | /wsoyanz.php                                                                                                                                   |
    |   5 | /xmlrpc.php
    Et j'en passe, il y en a des milliers ...
    La plupart ciblent WordPress, réputé le logiciel web le plus hacké au monde.

    Excédé par ces cyberbots malveillants, je me demande si je ne configurerais pas mon port http(s) avec UFW LIMIT
    Dont les valeurs par défaut me semblent, toutefois, trop strictes.

    Maximum 6 requêtes en 30 secondes, sinon, blocage de l'IP pendant un délai que je ne connais pas.
    Ces paramètres me conviennent très bien, pour sécuriser mon port ssh.
    Ils me semblent trop lourd, pour un port http.

    Dénommons ces trois variables max, intervalle et blocage.
    Pour mon port HTTP, je voudrais
    max = 5
    intervalle = 5 sec
    blocage = 20 sec

    5 pages en 5 secondes, plutôt qu'une page par seconde, car certaines pages lancent une requête Ajax, dans la foulée de leur ouverture.
    Ca me semble suffisant, pour tout internaute humain.
    Ces paramètres ne paralyseront qu'un robot-fouilleur.

    Ce matin, l'IP 18.221.236.1, attribuée à Amazon, avait lancé 73 requêtes en moins d'une seconde.
    Toutes sont datées de ce 20 août 2003 à 01:38:10
    L'attaque a donc duré moins d'une seconde !

    Toutes ces requêtes demandent des pages-clés de certains logiciels commerciaux, inexistantes sur mon VPS, et ont donc été révélées dans l'historique de ma 404.
    Je voudrais bloquer ce genre de fouilleur à l'avenir.

    J'ai installé fail2ban, mais qui ne me semble pas être conçu pour lutter contre ce type d'attaque.
    Car fail2ban détecte les logins erronés sur le port ssh.
    Rien à voir, donc, avec de l'http, dont il est question ici.
    -----------------
    Je n'ai, toutefois, trouvé aucune information permettant de configurer, port par port, les paramètres de blocage de UFW LIMIT.

    Dans mes lectures, j'ai découvert qu' UFW n'était pas un "vrai" firewall, en soi,
    mais une interface simplifiée, pour configurer iptables, qui resterait le seul firewall effectif.

    Quelqu'un pourrait-il m'expliquer comment limiter, port par port, l'accès avec UFW ou iptables ?
    En définissant, pour chaque port limité, les trois paramètres max, intervalle et blocage.

    Merci.
    Christian.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 876
    Points
    1 876
    Par défaut
    Ici, l'idée est de faire du rate limiting afin de limiter le trafic par adresse IP.
    iptables peut brider le trafic dans une certaine mesure, et probablement UFW, mais cette tâche serait probablement mieux prise en charge par un module Apache (si c'est le serveur web utilisé), comme mod_ratelimit. Il en existe d'autre comme mod_qos, je ne les connais pas tous et je ne pourrais faire un comparatif dans l'immédiat. Il faudrait donc faire une petite étude de marché. En plus de cela, comme j'ai déjà dû le mentionner on peut installer un WAF pour écarter les requêtes manifestement malfaisantes, encore que il y aura toujours du trafic plus ou moins douteux mais de toute façon ça ne devrait pas porter à conséquence.

    Il faut quand même garder à l'esprit que les navigateurs font des requêtes parallèles pour récupérer les éléments d'une page. Certaines pages peuvent inclure plusieurs feuilles de style et des dizaines de petites images, et si on est trop strict sur le nombre de connections on peut facilement bloquer des utilisateurs légitimes.

    A ma connaissance fail2ban couvre aussi les autres protocoles dont http, mais il faut peut-être rédiger des règles ad hoc. Ce serait un travail conséquent et il vaut mieux déléguer ça au WAF, qui aura aussi besoin d'être tuné probablement.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 93
    Points : 95
    Points
    95
    Par défaut Rationner les 404
    C'est tout à fait exact.
    Une requête peut en déclencher d'autres en cascade: CSS, modules JavaScript, images, sons, vidéos inclus dans la page initiale.

    Il faudrait donc trouver une solution pour rationner les 404.
    * Soit au niveau d'Apache2
    * Soit au niveau du firewall
    * Soit au niveau de fail2ban

    En ce qui concerne ces deux derniers, ils peuvent lire le header de la réponse,
    * qui contient un code 200 si tout va bien
    * Ou un code 404 si non trouvé.

    Plus on agit en amont, mieux c'est.
    Je préfèrerais une solution qui agisse au niveau du firewall, la porte d'entrée de mon VPS.
    S'il voit passer trop de réponses avec un code 404 dans le flux de sortie vers une IP donnée, il la bloque.

    Une ou deux, ça passe encore, après tout, je peux avoir raté un lien, moi aussi, et donc, provoquer une 404 chez un utilisateur légitime.
    Par contre, 70 erreurs 404 en moins d'une seconde: là, le doute n'est plus permis.

    Je vais me documenter sur les firewalls UFW et IpTables, pour voir s'ils peuvent analyser les paquets de sortie sur le port http.
    Et voir s'ils peuvent bloquer un utilisateur trop gourmand en 404.

    Merci et bien à toi.
    Christian.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Je vais me documenter sur les firewalls UFW et IpTables, pour voir s'ils peuvent analyser les paquets de sortie sur le port http.
    Et voir s'ils peuvent bloquer un utilisateur trop gourmand en 404.
    je ne suis pas convaincu : c'est fail2ban qui parcourt les journaux des serveurs pour dire au firewall quoi faire.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [Stratégie] Limiter le download HTTP/FTP
    Par PP(Team) dans le forum Général Java
    Réponses: 2
    Dernier message: 28/09/2007, 17h06
  2. Limiter la portée d'un style="clear:both"
    Par Bizen-Ya dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 05/04/2007, 16h13
  3. Download binaire en http sur le port https ?
    Par Yan25 dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 13/07/2006, 09h39
  4. [Débutant]Comment partager un dossier et limiter son accès
    Par digital prophecy dans le forum Windows XP
    Réponses: 4
    Dernier message: 20/01/2006, 15h44
  5. [Reseau][http] Ports Http
    Par Landolsi dans le forum Applications
    Réponses: 10
    Dernier message: 22/09/2005, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo