Maison  >  Article  >  Opération et maintenance  >  Configuration du contrôle d'accès basé sur la liste blanche dans le proxy inverse Nginx

Configuration du contrôle d'accès basé sur la liste blanche dans le proxy inverse Nginx

WBOY
WBOYoriginal
2023-06-10 08:28:442093parcourir

Nginx est un serveur HTTP et un serveur proxy inverse hautes performances offrant les avantages de stabilité et d'évolutivité. Pour protéger les serveurs Web contre les attaques d'utilisateurs malveillants et de programmes malveillants, de nombreuses entreprises et organisations mettent en œuvre des mesures de contrôle d'accès. Cet article explique comment contrôler l'accès au proxy inverse via la liste blanche dans Nginx.

1. Qu'est-ce qu'un proxy inverse ?

Le proxy inverse fait référence à une méthode de configuration de serveur Web qui cache le serveur Web derrière un groupe de serveurs proxy. L'adresse du serveur proxy inverse est visible par le client. Le serveur proxy inverse est chargé de transmettre la demande du client au serveur Web réel et de renvoyer la réponse du serveur Web au client. Un proxy inverse peut augmenter le débit de votre serveur Web et empêcher les attaques.

2. Pourquoi le contrôle d'accès est-il nécessaire ?

Les serveurs Web sont généralement accessibles depuis le monde entier, et certaines requêtes peuvent provenir d'utilisateurs malveillants ou de programmes malveillants. Ces requêtes malveillantes peuvent entraîner des problèmes de sécurité tels que la paralysie du serveur Web, la fuite de données, la falsification et le vol d'informations sensibles. Afin d'éviter ces problèmes, il est généralement nécessaire de mettre en œuvre un mécanisme de contrôle d'accès pour restreindre uniquement l'accès au serveur Web par des adresses IP, des noms de domaine ou des utilisateurs spécifiques.

3. Comment Nginx implémente-t-il un contrôle d'accès basé sur une liste blanche ?

  1. Définissez les adresses IP autorisées à accéder

Dans le fichier de configuration nginx.conf, vous pouvez utiliser la directive Allow pour spécifier les adresses IP autorisées à accéder, par exemple :

http {
    #定义白名单
    geo $whitelist {
        default 0;
        10.0.0.0/8 1;
        192.168.0.0/16 1;
    }

    server {
        listen 80;
        server_name example.com;
        location / {
            #指定允许访问的IP地址
            allow $whitelist;
            #禁止其他IP地址的访问
            deny all;
            #...
        }
    }
}

Dans la configuration ci-dessus fichier, utilisez la directive geo pour définir la liste blanche. Parmi eux, $whitelist est une variable indiquant les adresses IP auxquelles l'accès est autorisé. Par défaut, la valeur de $whitelist est 0, indiquant que l'accès n'est pas autorisé. Si l'adresse IP consultée se trouve dans le segment de réseau 10.0.0.0/8 ou 192.168.0.0/16, la valeur de $whitelist est 1 et l'accès est autorisé. À l'emplacement, utilisez la directive Allow pour spécifier que l'accès aux adresses IP dans la variable $whitelist est autorisé et utilisez la directive Deny pour interdire l'accès aux autres adresses IP.

  1. Définissez les noms de domaine auxquels l'accès est autorisé

Dans le fichier de configuration nginx.conf, vous pouvez utiliser la directive server_name pour spécifier les noms de domaine auxquels l'accès est autorisé, par exemple :

http {
    #定义白名单
    server {
        listen       80;
        server_name  example.com;

        #允许访问的域名
        if ($host !~* ^(example.com)$ ) {
            return 403;
        }
        
        location / {
            #...
        }
    }
}

Dans le ci-dessus, utilisez la directive server_name pour spécifier que seul le nom de domaine example.com est autorisé à visiter. En localisation, si le nom de domaine demandé n'est pas exemple.com, une erreur 403 sera renvoyée directement.

  1. Définir l'accès autorisé des utilisateurs

Dans le fichier de configuration nginx, vous pouvez utiliser l'authentification de base HTTP ou d'autres mécanismes d'authentification pour empêcher uniquement les utilisateurs authentifiés d'accéder au serveur Web. Par exemple, en utilisant l'authentification HTTP Basic, le nom d'utilisateur et le mot de passe peuvent être cryptés et placés dans l'en-tête HTTP. Nginx authentifie la demande, et seuls les utilisateurs authentifiés peuvent accéder au serveur Nginx. Dans le fichier de configuration nginx.conf, vous pouvez utiliser les directives auth_basic et auth_basic_user_file pour implémenter l'authentification de base HTTP, par exemple :

http {
    #定义白名单
    server {
        listen       80;
        server_name  example.com;

        #Nginx对请求进行认证
        auth_basic           "Restricted Area";
        auth_basic_user_file conf.d/.htpasswd;
        
        location / {
            #...
        }
    }
}

Dans le fichier de configuration ci-dessus, spécifiez la directive auth_basic dans le serveur pour décrire les informations de zone qui nécessitent une authentification. Utilisez la directive auth_basic_user_file pour spécifier le chemin d'accès au fichier de mots de passe. Seuls les utilisateurs authentifiés peuvent accéder au serveur Web.

4. Résumé

Le proxy inverse peut améliorer le débit du serveur Web et empêcher les attaques. Le mécanisme de contrôle d'accès peut protéger le serveur Web contre les attaques d'utilisateurs malveillants et de programmes malveillants. Dans Nginx, le contrôle d'accès basé sur une liste blanche peut être utilisé pour contrôler l'accès au proxy inverse et protéger la sécurité du serveur Web. Selon vos besoins, vous pouvez définir les adresses IP, les noms de domaine ou les utilisateurs autorisés à accéder pour améliorer la sécurité du proxy inverse.

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