Maison  >  Questions et réponses  >  le corps du texte

Comment empêcher l'exploration de ddos ​​malveillants sur nginx

Tout d'abord, je n'ai aucune objection à ce que d'autres personnes explorent le contenu de mon site Web. Je ne limite pas nécessairement strictement l'exploration des autres, mais l'exploration de certaines personnes n'a aucun résultat. Elles utilisent un ou même plusieurs scripts pour explorer. un certain site Web simultanément. Le contenu d'un serveur n'est pas différent de celui de ddos.

Mon serveur rencontre actuellement une telle situation. Une exploration malveillante sans pause a sérieusement affecté notre analyse des journaux et a également augmenté la charge sur le serveur.

Comment prévenir ce genre de comportement ? J'utilise le serveur nginx. Pour autant que je sache, il ne peut utiliser qu'une certaine adresse IP, mais le refus apparaîtra toujours dans le journal à l'avenir, mais ce sera 403. De plus, le refus manuel est trop passif. Pouvez-vous déterminer intelligemment que le nombre de visites sur une certaine adresse IP a fortement augmenté, puis l'interdire ? deny

黄舟黄舟2712 Il y a quelques jours1009

répondre à tous(4)je répondrai

  • 某草草

    某草草2017-05-16 17:32:17

    1. ngx_http_limit_conn_module peut être utilisé pour limiter le nombre de connexions pour une seule IP
    http://nginx.org/en/docs/http/ngx_htt...

    2. ngx_http_limit_req_module peut être utilisé pour limiter le nombre de requêtes par seconde pour une seule IP
    http://nginx.org/en/docs/http/ngx_htt...

    3. nginx_limit_speed_module peut être utilisé pour limiter la vitesse IP
    https://github.com/yaoweibin/nginx_li...

    répondre
    0
  • 世界只因有你

    世界只因有你2017-05-16 17:32:17

    Je fournirai également une solution, utilisant principalement fail2ban (http://www.fail2ban.org/). fail2ban détermine de manière asynchrone s'il faut interdire l'utilisation d'iptable en analysant le journal, cela a donc un impact relativement faible sur le système d'origine et ne nécessite pas de reconfiguration de nginx. Mais je ne sais pas si le nombre de visites sera trop important.

    Ajoutez d'abord /etc/fail2ban/jail.conf里加入

    [http-get-dos]
    enabled = true
    port = http,https
    filter = nginx-bansniffer
    logpath = /usr/local/nginx/logs/segmentfault.log
    maxretry = 120
    findtime = 120
    bantime = 3600
    action = iptables[name=HTTP, port=http, protocol=tcp]

    然后找到/etc/fail2ban/filter.d/nginx-bansniffer.conf,把里面针对404的判断改成

    [Definition]
    
    failregex = <HOST> -.*- .*HTTP/1.* .* .*$
    ignoreregex =

    最后重启fail2ban dans /etc/fail2ban/jail.conf rrreee

    Ensuite, recherchez /etc/fail2ban/filter.d/nginx-bansniffer.conf et modifiez le jugement de 404 en 🎜 rrreee 🎜Enfin, redémarrez le service fail2ban Dans la configuration ci-dessus, nous interdisons les adresses IP avec plus de 120 visites toutes les 120 secondes pendant 1 heure. 🎜

    répondre
    0
  • 高洛峰

    高洛峰2017-05-16 17:32:17

    1. Empêcher l'exploration des araignées en fonction de l'agent utilisateur

    ## Block download agents ##
         if ($http_user_agent ~* WebZIP|wget) {
                return 403;
         }
    ##

    2. Créez des règles dans le pare-feu du système d'exploitation pour limiter le nombre de connexions simultanées à partir de la même IP
    En prenant comme exemple iptables sous Linux, la configuration suivante limitera l'établissement d'un maximum de 15 connexions pour la même IP en une minute. Les connexions dépassantes seront rejetées par iptables et n'atteindront pas nginx

    .
    /sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
    /sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60  --hitcount 15 -j DROP
    service iptables save

    3. Écrivez un script bash pour compter la fréquence d'accès de chaque IP et jetez automatiquement les IP dont la fréquence dépasse la limite supérieure que vous avez définie dans la liste noire
    Pour l'IP dans la liste noire, utilisez un script pour l'écrire automatiquement dans iptables ou nginx.conf, bloquez-la pendant quelques minutes ou réduisez sa fréquence d'accès autorisée

    J'utilisais un module Apache appelé YDoD (Yahoo! Department of Defense) lorsque j'étais chez Yahoo. Je pouvais personnaliser les règles pour empêcher les abus externes de nos services WEB. Après mon arrivée sur Taobao, j'ai changé mon nom en tdod. en cherchant autour, je ne l'ai pas trouvé. Trouver l'open source. Mais le principe est similaire à ce que j'ai dit plus haut.

    répondre
    0
  • PHPz

    PHPz2017-05-16 17:32:17

    Essayez ngx_lua_waf
    https://github.com/loveshell/ngx_lua_waf
    Fonction :

    防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击
    防止svn/备份之类文件泄漏
    防止ApacheBench之类压力测试工具的攻击
    屏蔽常见的扫描黑客工具,扫描器
    屏蔽异常的网络请求
    屏蔽图片附件类目录php执行权限
    防止webshell上传
    

    répondre
    0
  • Annulerrépondre