238 votes

Autoriser un processus non root à se lier aux ports 80 et 443?

Est-il possible de régler un paramètre du noyau pour permettre à un programme utilisateur de se lier aux ports 80 et 443 ?

La raison pour laquelle je demande est que je pense qu'il est absurde de permettre à un processus privilégié d'ouvrir un socket et d'écouter. Tout ce qui ouvre un socket et écoute présente un risque élevé, et les applications à haut risque ne devraient pas s'exécuter en tant que root.

Je préférerais beaucoup essayer de déterminer quel processus non privilégié écoute sur le port 80 plutôt que d'essayer de supprimer un logiciel malveillant qui s'est infiltré avec des privilèges root.

20 votes

La réponse longue est oui... donc la réponse courte devrait aussi être oui.

6 votes

La réponse courte est oui.

1 votes

Utilisez la réponse de noob qui utilise iptables pour rediriger le trafic du port. La solution la plus simple de loin, et facile à annuler si nécessaire.

2voto

Roy Points 13839

Qu'est-ce que la chose la plus simple qui pourrait fonctionner?

Un reverse proxy. Nginx est plus simple que iptables (du moins pour moi). Nginx offre également une "terminaison ssl".

sudo apt install nginx
sudo service nginx start
# Vérifiez si ça fonctionne
curl http://localhost
# Créez des certificats
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/cert.key -out /etc/nginx/cert.crt
sudo nano /etc/nginx/conf.d/devserver.conf 

ajoutez ce contenu

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {

    listen 443;
    server_name www.example.com;

    ssl_certificate           /etc/nginx/cert.crt;
    ssl_certificate_key       /etc/nginx/cert.key;

    ssl on;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:8080;
    }
}

Ensuite redémarrez le serveur:

sudo service nginx restart

Configurer le DNS: Un enregistrement A pour www.example.com -> 127.0.0.1

# Testez-le :
curl --insecure --verbose https://www.example.com

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