Maison > Opération et maintenance > Nginx > Pratique d'attaque et de défense de la sécurité Web Nginx

Pratique d'attaque et de défense de la sécurité Web Nginx

王林
Libérer: 2023-06-10 12:11:29
original
937 Les gens l'ont consulté

Nginx est un serveur Web hautes performances largement utilisé dans les applications Internet et d'entreprise. En plus d'offrir d'excellentes performances et fiabilité, Nginx dispose également de puissantes fonctionnalités de sécurité. Dans cet article, nous examinerons les attaques et la défense pratiques de Nginx en matière de sécurité Web et présenterons comment protéger les applications Web contre diverses attaques.

  1. Configuration SSL/TLS

SSL/TLS est un protocole de communication crypté indispensable à la protection des applications web. En utilisant SSL/TLS, vous pouvez crypter toutes les communications Web, protégeant ainsi les données sensibles contre le vol et la falsification des pirates. Pour activer SSL/TLS dans Nginx, vous devez installer un certificat SSL/TLS, qui doit être signé par une autorité de certification (CA) de confiance. Ce qui suit est une configuration Nginx simple pour activer SSL/TLS :

server {
    listen 443 ssl;
    server_name mywebsite.com;

    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;

    location / {
        # Your web application logic...
    }
}
Copier après la connexion

Dans la configuration ci-dessus, la directive listen 443 ssl; indique à Nginx d'utiliser le port standard 443 et d'activer SSL/TLS. Les directives ssl_certificate et ssl_certificate_key spécifient le chemin du fichier du certificat SSL/TLS et de la clé privée. listen 443 ssl;指令告诉Nginx使用标准的443端口并启用SSL/TLS。ssl_certificatessl_certificate_key指令指定SSL/TLS证书和私钥的文件路径。

  1. 配置HTTP2

HTTP2是一种新的网络协议,它可以提供比传统的HTTP 1.1更快的网页加载速度和更好的性能。当你使用HTTP2时,你可以同时从服务器上获取多个文件或资源,并且可以使用二进制而不是文本格式,从而使得通信更快。同时,HTTP2还提供了更好的安全性,例如服务器推送,就可以一次性将多个文件传输到客户端,从而减少了往返时间。要在Nginx中启用HTTP2,您可以使用以下配置:

server {
    listen 443 ssl http2;
    server_name mywebsite.com;

    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;

    location / {
        # Your web application logic...
    }
}
Copier après la connexion

在以上配置中,我们在listen指令中将http2选项添加到ssl选项后面,以启用HTTP2。

  1. 防止SQL注入

SQL注入是一种非常流行的攻击方式,黑客可以通过注入恶意代码来访问数据库,窃取敏感信息或破坏数据完整性。在Nginx中,您可以通过使用以下配置来防止SQL注入攻击:

location / {
    # Your web application logic...

    # Block SQL injection attacks
    if ($args ~ "(<|%3C).*script.*(>|%3E)" ) {
        return 403;
    }
}
Copier après la connexion

在以上配置中,我们使用了一个正则表达式来检查请求的参数中是否包含脚本。如果是因为有了脚本,就会返回一个403错误,从而拒绝请求。

  1. 防止跨站点请求伪造(CSRF)

跨站点请求伪造(CSRF)是一种非常常见的攻击方式,黑客可以通过欺骗用户在他们不知情的情况下执行恶意操作。为了防止CSRF攻击,您可以在Nginx配置中添加以下代码:

location / {
    # Your web application logic...

    # Block CSRF attacks
    if ($http_referer !~ "^https?://mywebsite.com") {
        return 403;
    }
}
Copier après la connexion

在以上配置中,我们使用了一个正则表达式来检查请求的Referer标头是否与我们自己的网站域名匹配。如果不匹配,就会返回一个403错误,从而拒绝请求。

  1. 防止DDoS攻击

分布式拒绝服务(DDoS)攻击是一种非常流行的攻击方式,黑客会使用大量的计算资源来模拟大量的网络流量,从而使目标Web服务器宕机。在Nginx中,您可以通过以下配置来防止DDoS攻击:

http {
    # Define blacklist zone
    geo $blacklist {
        default 0;
        # Add IP address to blacklist if over 100 connections per IP
        # in the last 10 seconds
        limit_conn_zone $binary_remote_addr zone=blacklist:10m;
        limit_conn blacklist 100;
    }
 
    server {
        listen 80 default_server;
        server_name mywebsite.com;

        # Add IP addresses to whitelist
        allow 192.168.1.1/24;
        deny all;

        # Block blacklisted IP addresses
        if ($blacklist = 1) {
            return 403;
        }

        location / {
            # Your web application logic...
        }
    }
}
Copier après la connexion

在以上配置中,我们使用了Nginx的limit_conn_zonelimit_conn模块来限制每个IP地址的同时连接数。我们也添加了一个白名单,允许特定的IP地址范围,只有在IP地址不在白名单中并且超过连接限制时才会禁止访问。

总结

Nginx有很多强大的Web安全特性,您可以使用它们来保护自己的Web应用程序免受各种攻击。在本文中,我们介绍了以下几个重要的安全措施:

  • 配置SSL/TLS证书,加密通信数据。
  • 配置HTTP2协议,提高网页加载速度和性能。
  • 防止SQL注入,通过检测请求参数中的脚本来防止攻击。
  • 防止CSRF攻击,通过检查请求中的Referer标头来拒绝非法请求。
  • 防止DDoS攻击,使用limit_conn_zonelimit_conn
    1. Configurer HTTP2

    HTTP2 est un nouveau protocole réseau qui peut fournir des performances plus rapides que la vitesse de chargement des pages Web HTTP 1.1 traditionnelle et de meilleures performances. Lorsque vous utilisez HTTP2, vous pouvez obtenir plusieurs fichiers ou ressources du serveur en même temps, et ils peuvent utiliser le format binaire au lieu du format texte, ce qui accélère la communication. Dans le même temps, HTTP2 offre également une meilleure sécurité, comme le serveur push, qui peut transférer plusieurs fichiers au client à la fois, réduisant ainsi le temps d'aller-retour. Pour activer HTTP2 dans Nginx, vous pouvez utiliser la configuration suivante : #🎜🎜#rrreee#🎜🎜# Dans la configuration ci-dessus, nous ajoutons l'option http2 dans la directive listen Recherchez l'option ssl pour activer HTTP2. #🎜🎜#
      #🎜🎜#Prévenir l'injection SQL#🎜🎜##🎜🎜##🎜🎜#L'injection SQL est une méthode d'attaque très populaire à laquelle les pirates peuvent accéder en injectant une base de données de code malveillant, voler des informations sensibles ou compromettre l’intégrité des données. Dans Nginx, vous pouvez empêcher les attaques par injection SQL en utilisant la configuration suivante : #🎜🎜#rrreee#🎜🎜# Dans la configuration ci-dessus, nous avons utilisé une expression régulière pour vérifier si les paramètres de la requête contiennent un script. Si c'est à cause d'un script, une erreur 403 sera renvoyée et la demande sera rejetée. #🎜🎜#
        #🎜🎜#Prévenir la falsification de requêtes intersites (CSRF) #🎜🎜##🎜🎜##🎜🎜#La falsification de requêtes intersites (CSRF) est une attaque très courante De cette manière, les pirates peuvent inciter les utilisateurs à effectuer des actions malveillantes à leur insu. Pour éviter les attaques CSRF, vous pouvez ajouter le code suivant à votre configuration Nginx : #🎜🎜#rrreee#🎜🎜# Dans la configuration ci-dessus, nous avons utilisé une expression régulière pour vérifier l'en-tête Referer du request Est-ce qu'il correspond au nom de domaine de notre propre site Web ? S'il n'y a pas de correspondance, une erreur 403 sera renvoyée et la demande sera rejetée. #🎜🎜#
          #🎜🎜#Prévenir les attaques DDoS#🎜🎜##🎜🎜##🎜🎜# Les attaques par déni de service distribué (DDoS) sont une méthode d'attaque très populaire que les pirates utiliseront à grande échelle. quantités de ressources informatiques pour simuler de grandes quantités de trafic réseau, faisant ainsi tomber le serveur Web cible. Dans Nginx, vous pouvez empêcher les attaques DDoS grâce à la configuration suivante : #🎜🎜#rrreee#🎜🎜# Dans la configuration ci-dessus, nous avons utilisé les modules limit_conn_zone et limit_conn de Nginx pour limiter le nombre de connexions simultanées par adresse IP. Nous avons également ajouté une liste blanche qui autorise des plages d'adresses IP spécifiques et bloque l'accès uniquement si l'adresse IP ne figure pas dans la liste blanche et dépasse la limite de connexion. #🎜🎜##🎜🎜#Summary#🎜🎜##🎜🎜#Nginx dispose de nombreuses fonctionnalités de sécurité Web puissantes que vous pouvez utiliser pour protéger vos applications Web contre diverses attaques. Dans cet article, nous présentons les mesures de sécurité importantes suivantes : #🎜🎜#
      #🎜🎜#Configurer le certificat SSL/TLS et crypter les données de communication. #🎜🎜##🎜🎜#Configurez le protocole HTTP2 pour améliorer la vitesse et les performances de chargement des pages Web. #🎜🎜##🎜🎜#Prévenez l'injection SQL et prévenez les attaques en détectant les scripts dans les paramètres de la requête. #🎜🎜##🎜🎜#Prévenez les attaques CSRF en vérifiant l'en-tête Referer dans la demande pour rejeter les demandes illégales. #🎜🎜##🎜🎜#Prévenez les attaques DDoS, utilisez les modules limit_conn_zone et limit_conn pour limiter le nombre de connexions simultanées par adresse IP et utilisez des listes blanches pour autoriser des adresses IP spécifiques accès à l'adresse. #🎜🎜##🎜🎜##🎜🎜# En utilisant les mesures de sécurité mentionnées ci-dessus, vous pouvez protéger la sécurité de vos applications Web et les protéger de diverses attaques. #🎜🎜#

    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!

    Étiquettes associées:
    source:php.cn
    Déclaration de ce site Web
    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
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal