GNU/Linux >> Tutoriales Linux >  >> Linux

Permitir que un usuario permita escuchar un puerto por debajo de 1024

setcap 'cap_net_bind_service=+ep' /path/to/program

esto funcionará para procesos específicos. Pero para permitir que un usuario en particular se vincule a puertos por debajo de 1024, deberá agregarlo a sudoers.

Eche un vistazo a esta discusión para obtener más información.


(Algunos de estos métodos se han mencionado en otras respuestas; doy varias opciones posibles en orden aproximado de preferencia).

Puede redirigir el puerto bajo a un puerto alto y escuchar en el puerto alto.

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 1080

Puede iniciar su servidor como raíz y eliminar los privilegios después de que haya comenzado a escuchar en el puerto privilegiado. Preferiblemente, en lugar de codificarlo usted mismo, inicie su servidor desde un contenedor que haga el trabajo por usted. Si su servidor inicia una instancia por conexión, inícielo desde inetd (o un programa similar como xinetd ). Para inetd , usa una línea como esta en /etc/inetd.conf :

http  stream  tcp  nowait  username:groupname  /path/to/server/executable  argv[0] argv[1]…

Si su servidor escucha en una sola instancia, inícielo desde un programa como authbind . Crea un archivo vacío /etc/authbind/byport/80 y hacerlo ejecutable para el usuario que ejecuta el servidor; o crea /etc/authbind/byuid/1234 , donde 1234 es el UID que ejecuta el servidor, que contiene la línea 0.0.0.0/0:80,80 .

Si el ejecutable de su servidor está almacenado en un sistema de archivos que admite capacidades, puede asignarle el cap_net_bind_service capacidad. Tenga en cuenta que las capacidades aún son relativamente nuevas y todavía tienen algunos problemas.

setcap cap_net_bind_service=ep /path/to/server/executable

La respuesta corta es que esto no es posible por diseño.

La respuesta larga es que en los mundos de código abierto hay mucha gente jugando con el diseño y proponiendo métodos alternativos. En general, es una práctica ampliamente aceptada que esto no debería ser posible. El hecho de que lo esté intentando probablemente signifique que tiene otra falla de diseño en su sistema y debería reconsiderar toda la arquitectura de su sistema a la luz de las mejores prácticas de *nix y las implicaciones de seguridad.

Dicho esto, un programa para autorizar acceso no root a puertos bajos es authbind. Tanto selinux como grsecurity también proporcionan marcos para autenticaciones tan precisas.

Por último, si desea que usuarios específicos ejecuten programas específicos como root y lo que realmente necesita es permitir que un usuario reinicie Apache o algo así, sudo es tu amigo!


Linux
  1. Cambiar el número de puerto del servidor SSH predeterminado

  2. Cómo instalar VSFTPD en un servidor en la nube de CentOS

  3. Cómo instalar un servidor PostgreSQL en Ubuntu 18.04

  4. Matar el proceso que se ejecuta en el puerto 80

  5. Permitir FTP con IPTables

Cómo inicializar la configuración del servidor CentOS 7

Cómo:Configuración inicial del servidor Ubuntu 15.04

Cómo:Configuración inicial del servidor Fedora 21

Cómo:Configuración inicial del servidor Debian 8.2

Configuración inicial del servidor con Ubuntu 18.04

¿Cómo habilitar el usuario raíz en Ubuntu Server?