Ma première idée était un simple upstart script. /etc/init/webfs.conf
:
description "WebFS server"
start on (local-filesystems and net-device-up)
respawn
exec webfsd -F -p 80 -u d3vid -g d3vid /home/d3vid/Documents/www/ -f index.html
El -u
y -g
Les arguments sont vraiment important. Ils abandonnent les privilèges de l'administrateur après avoir lié le port... Ce qui veut dire qu'il n'y a pas de processus accessible par le réseau tournant en tant que root qui peut être exploité.
L'autre idée est de l'exécuter sur un port élevé (>1024) comme vous, en le démarrant automatiquement comme vous le souhaitez... Et ensuite, soit en utilisant un real pour un reverse proxy (nginx est un outil commun et léger ici) à partir du port 80... Ou simplement utiliser une redirection iptables.
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 10010 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 10010
L'avantage de webfs est jamais en tant que root... Mais ensuite, il ne vous reste plus qu'à exécuter la commande iptable
en tant que root à chaque démarrage. C'est une question d'équilibre.
Je pense que dans l'ensemble, si vous n'exposez pas le serveur à l'Internet directement, la première route est probablement assez sûre.
Mais si vous allez plus loin, laissez tomber WebFS et utilisez simplement nginx
...
- Il fait tout ce que fait WebFS (et bien plus encore)
- Il est simple à utiliser
- C'est efficace au-delà de toute raison
- Son SSL a une documentation décente
- Plus important encore, de nombreuses personnes ont un intérêt direct à ce que nginx reste sécurisé, y compris Canonical, de sorte que vous obtiendrez rapidement des mises à jour pour ce système (ce qui est essentiel lorsqu'il s'agit de choses orientées vers le Web).
Pour vous donner une idée de ce que signifie l'efficacité, j'ai un serveur web qui héberge une vingtaine de domaines, dont certains ont un trafic assez important. Les quatre processus de travail de nginx représentent 15 Mo de RAM combinés et aucun temps CPU observable. C'est insensé.