Maison > développement back-end > Golang > Comment puis-je supprimer en toute sécurité les privilèges root après la liaison au port 80 sur un serveur Web Go ?

Comment puis-je supprimer en toute sécurité les privilèges root après la liaison au port 80 sur un serveur Web Go ?

DDD
Libérer: 2024-11-21 08:43:10
original
337 Les gens l'ont consulté

How Can I Safely Drop Root Privileges After Binding to Port 80 in a Go Web Server?

Abandon du privilège avec Golang en v1.7

Problème :

Concevoir un site Web personnalisé Le serveur Go nécessite les privilèges root initiaux pour se lier au port 80. Cependant, il est souhaitable d'abandonner les privilèges root dès que possible. possible.

Contexte :

Le syscall.SetUid() de Go n'est pas disponible en raison du problème #1435, ce qui rend la suppression directe des privilèges peu pratique. Les méthodes alternatives comme IPtables introduisent des failles de sécurité.

Solution :

Le langage Go offre une solution à ce problème sans recourir à des outils ou des solutions de contournement externes. En implémentant un code personnalisé, nous pouvons nous lier au port requis et ensuite supprimer les privilèges root.

Implémentation :

  1. Lier au port souhaité.
  2. Vérifiez l'ID utilisateur actuel (UID).
  3. Si l'UID est 0 (root), identifiez l'utilisateur prévu et son associé. UID et GID.
  4. Utilisez les appels de la glibc setuid() et setgid() pour modifier l'UID et le GID du processus en conséquence.

Avantages :

Cette approche permet une gestion flexible des privilèges. Par exemple, pendant le développement, l'application peut s'exécuter sur un utilisateur non root et un port élevé sans configurations supplémentaires.

Exemple de code :

package main

import (
    "crypto/tls"
    "log"
    "net/http"
    "os/user"
    "strconv"
    "syscall"
)

func main() {
    //... (continued)
}
Copier après la connexion

En suivant ces étapes, vous pouvez supprimer efficacement les privilèges dans votre application Go, garantissant ainsi un environnement d'exécution sécurisé et spécifique à l'utilisateur.

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