Maison > développement back-end > Golang > Comment puis-je supprimer des privilèges en toute sécurité après m'être lié à des ports privilégiés sur un serveur Web Go ?

Comment puis-je supprimer des privilèges en toute sécurité après m'être lié à des ports privilégiés sur un serveur Web Go ?

Barbara Streisand
Libérer: 2024-11-27 02:29:13
original
582 Les gens l'ont consulté

How Can I Securely Drop Privileges After Binding to Privileged Ports in a Go Web Server?

Suppression des privilèges dans Go (v1.7)

La tâche de création d'un serveur Web personnalisé dans Golang rencontre souvent le besoin de se lier à ports privilégiés comme le port 80. Pour garantir la sécurité, il est crucial de supprimer les privilèges root après la liaison à ces ports. Cet article explore le problème de la suppression des privilèges dans Go et propose une solution.

Dans les versions antérieures de Go, l'utilisation de syscall.SetUid() pour supprimer les privilèges renvoyait « Non pris en charge ». Comme alternative, on pourrait rediriger le port 80 vers un port non privilégié en utilisant iptables. Cependant, cette solution ouvre des failles de sécurité en permettant à des processus non root d'usurper l'identité du serveur Web.

La solution réside dans l'utilisation d'une combinaison des capacités de mise en réseau et d'appel système de Go. Après avoir ouvert le port privilégié et déterminé l'UID, nous pouvons identifier l'utilisateur souhaité, obtenir son UID et définir à la fois l'UID et le GID à l'aide des fonctions glibc setgid() et setuid(). Il est important d'exécuter ce code immédiatement après avoir lié le port, mais avant d'appeler http.Serve.

L'extrait de code fourni démontre cette approche. Il charge d'abord les certificats TLS nécessaires et écoute sur un port privilégié. Si l'application s'exécute en tant que root, elle passe à un utilisateur spécifié en définissant l'UID et le GID à l'aide d'appels glibc. Par la suite, il écoute les demandes entrantes et sert le contenu Web.

Cette solution répond efficacement au besoin de suppression des privilèges dans les applications Go. Il permet la création de serveurs Web personnalisés sécurisés et robustes sans compromettre la sécurité.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal