Maison  >  Article  >  Opération et maintenance  >  Compréhension approfondie des stratégies de protection de sécurité de Nginx pour limiter les taux de requêtes et prévenir les requêtes malveillantes

Compréhension approfondie des stratégies de protection de sécurité de Nginx pour limiter les taux de requêtes et prévenir les requêtes malveillantes

PHPz
PHPzoriginal
2023-08-07 10:21:261048parcourir

Compréhension approfondie des stratégies de protection de sécurité de Nginx pour limiter les taux de requêtes et prévenir les requêtes malveillantes

Nginx est un serveur Web open source hautes performances. Il peut non seulement être utilisé pour déployer des sites Web statiques, un proxy inverse et un équilibrage de charge, mais également. grâce à une série de stratégies de protection de sécurité pour protéger nos serveurs contre les requêtes malveillantes. Cet article se concentrera sur les stratégies de protection de sécurité de Nginx pour limiter les taux de requêtes et prévenir les requêtes malveillantes, et fournira des exemples de code pertinents.

  1. Limiter le taux de requêtes

Les requêtes malveillantes sont souvent initiées de plusieurs manières à haute fréquence, ce qui exerce une pression énorme sur le serveur. Afin d'éviter une surcharge du serveur, nous pouvons utiliser le module Nginx pour limiter le taux de requêtes. .

Dans le fichier de configuration Nginx, vous pouvez utiliser la directive limit_req_zone pour créer une zone de mémoire partagée avec une limite de taux de requêtes, par exemple : limit_req_zone指令来创建一个请求速率限制的共享内存区域,例如:

http {
    limit_req_zone $binary_remote_addr zone=limit:10m rate=1r/s;
}

以上配置创建了一个10MB大小的内存区域,限制每秒钟从同一个客户端IP地址发起的请求数不超过1个。接下来,我们可以在具体的请求处理块中使用limit_req指令来应用这个限制,例如:

server {
    location /api/ {
        limit_req zone=limit burst=5;
        proxy_pass http://backend;
    }
}

以上配置表示在/api/路径下限制请求速率,并设置了一个突发限制值为5。这样一来,如果有大量的请求超过了限制速率,Nginx将返回503错误给客户端,并抛弃这些请求。

  1. 防止恶意请求

除了限制请求速率,我们还可以通过其他策略来防止恶意请求,例如:

  • IP白名单/黑名单:可以通过allowdeny指令来设置IP的访问控制,只允许白名单中的IP访问,或者拦截黑名单中的IP。例如:
location /admin/ {
    allow 192.168.1.0/24;
    deny all;
}

以上配置表示只允许IP在192.168.1.0/24网段内的访问/admin/路径。

  • URI黑名单:可以通过if指令和正则表达式来拦截恶意请求的URI。例如:
location / {
    if ($uri ~* "/wp-admin" ) {
        return 403;
    }
}

以上配置表示如果请求的URI中包含/wp-admin,则返回403错误。

  • Referer检查:可以通过检查请求头中的Referer字段来判断请求的来源是否合法。例如:
server {
    location / {
        if ($http_referer !~* "^https?://example.com") {
            return 403;
        }
    }
}

以上配置表示如果Referer字段不是以http://example.comhttps://example.comrrreee

La configuration ci-dessus crée une zone mémoire de 10 Mo, limitée par seconde Le nombre de requêtes initiées à partir de la même adresse IP client ne doit pas dépasser 1. Ensuite, nous pouvons utiliser la directive limit_req dans le bloc de traitement de requête spécifique pour appliquer cette limite, par exemple :

rrreee

La configuration ci-dessus indique que les requêtes sont limitées sous le /api/ code> path rate et définissez une valeur limite de rafale de 5. De cette façon, si un grand nombre de requêtes dépasse le taux limite, Nginx renverra une erreur 503 au client et abandonnera ces requêtes. <p></p> <ol start="2">Prévenir les requêtes malveillantes<p></p>🎜En plus de limiter le taux de requêtes, nous pouvons également empêcher les requêtes malveillantes grâce à d'autres stratégies, telles que : 🎜</ol> <ul>🎜Liste blanche/liste noire IP : vous pouvez passer <code les directives>allow et deny sont utilisées pour définir le contrôle d'accès IP, autorisant uniquement l'accès IP dans la liste blanche, ou bloquant les IP dans la liste noire. Par exemple : 🎜rrreee🎜La configuration ci-dessus signifie que seules les adresses IP du segment réseau 192.168.1.0/24 sont autorisées à accéder au chemin /admin/. 🎜
    🎜Liste noire des URI : vous pouvez intercepter les URI demandés malveillants via la directive if et les expressions régulières. Par exemple : 🎜
rrreee🎜La configuration ci-dessus signifie que si l'URI demandé contient /wp-admin, une erreur 403 sera renvoyée. 🎜
    🎜Vérification du référent : vous pouvez déterminer si la source de la demande est légitime en vérifiant le champ Référent dans l'en-tête de la demande. Par exemple : 🎜
rrreee🎜La configuration ci-dessus signifie que si le champ Référent ne commence pas par http://example.com ou https://example.com code>, il sera renvoyé une erreur 403. 🎜🎜En résumé, Nginx propose une multitude de stratégies de protection de sécurité pour limiter les taux de requêtes et prévenir les requêtes malveillantes. En configurant correctement Nginx, nous pouvons protéger le serveur des requêtes malveillantes et améliorer la stabilité et la sécurité du serveur. 🎜🎜Ce qui précède est une introduction à la compréhension approfondie des stratégies de protection de sécurité de Nginx pour limiter les taux de requêtes et prévenir les requêtes malveillantes. J'espère que cela sera utile aux lecteurs. 🎜🎜 (Remarque : les éléments ci-dessus ne sont que des exemples de code et peuvent ne pas être entièrement applicables à l'environnement de production. Veuillez configurer en fonction de la situation réelle et de la documentation officielle de Nginx.) 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn