9 votes

Comment verrouiller nginx sur debian wheezy (avec systemd) ?

Le fichier d'unité systemd fourni avec le paquet nginx-common exécute le processus maître en tant que root, ce qui me rend nerveux.

Je suppose que la seule raison pour laquelle il s'exécute en tant que root est de lier le port 80, mais être root est trop compliqué pour cela, donc je l'exécute en tant qu'utilisateur normal et je lui donne l'adresse suivante CAP_NET_BIND_SERVICE capacité.

J'ai modifié le fichier de l'unité pour qu'il ressemble à ceci :

[Service]
Type=forking
PIDFile=/var/run/nginx/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=/usr/sbin/nginx -s quit
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
Capabilities=cap_net_bind_service+=ep
user=www-data

Y a-t-il des inconvénients à cette approche ? Est-ce que nginx s'attend à être root pour une autre raison ? Existe-t-il un meilleur moyen de verrouiller nginx ? Je sais que certaines personnes aiment le "chrooter", mais cela semble être très compliqué.

5voto

etagenklo Points 5599

Le processus maître doit être exécuté en tant que root, sinon nginx ne sera pas en mesure de se lier au port 80, car il s'agit d'un port privilégié.

http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html

Vous devriez plutôt vous assurer que les processus de travail utilisent un utilisateur différent. Cet utilisateur peut être spécifié dans votre nginx.conf .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X