GNU/Linux >> Tutoriales Linux >  >> Linux

Evitar que otras aplicaciones se vinculen a los puertos 80 y 443

Solución 1:

No puede evitar que un puerto esté vinculado por el servicio incorrecto. En su caso, simplemente elimine apache del inicio automático y debería estar bien.

Para 16.04 y posteriores:

sudo systemctl disable apache2

Para versiones anteriores de Ubuntu:

sudo update-rc.d apache2 disable

Solución 2:

Si realmente no estás usando apache2 , y es PHP 7.0 el que lo requiere, entonces parece que tiene libapache2-mod-php7.0 instalado. Ese paquete es inútil sin Apache. Dado que está utilizando nginx, es probable que también tenga php7.0-fpm o php7.0-cgi instalado, cualquiera de los cuales es suficiente para satisfacer php7.0 requisitos de dependencia:

$ apt-cache depends php7.0
php7.0
 |Depends: php7.0-fpm
 |Depends: libapache2-mod-php7.0
  Depends: php7.0-cgi
  Depends: php7.0-common
  Conflicts: <php5>

Si tiene cualquiera de php7.0-{fpm,cgi} instalado, puede continuar y desinstalar Apache.

Solución 3:

Para responder a su pregunta, probablemente pueda restringir un puerto a una aplicación específica usando SElinux. No lo he usado yo mismo y solo tengo un conocimiento superficial de sus capacidades, pero aquí hay un indicador que encontré en este sitio:

https://serverfault.com/a/257056/392230

En esa respuesta, wzzrd parece mostrar cómo otorgar permiso a una aplicación específica (foo) para vincularse a un puerto específico (803). Solo tendría que configurar la política para que solo su aplicación (nginx) pueda acceder a los puertos que especifique (80 y 443).

Basándome en la respuesta de wzzrd, podría ser tan simple como agregar esto a la política

allow nginx_t nginx_port_t:tcp_socket name_bind;

y ejecutando esto

semanage port -a -t nginx_port_t -p tcp 80
semanage port -a -t nginx_port_t -p tcp 443

Sin embargo, me imagino que también necesitará una línea en la política que especifique que ningún otro programa puede vincularse a esos puertos.

Al final, solo estoy adivinando cuál es la configuración adecuada.

De todos modos, no creo que haya habido un Ubuntu que tenga SElinux instalado y habilitado por defecto. Debido a que creo que requiere aplicar ciertos parches a varias utilidades y una opción de kernel, podría ser más fácil simplemente usar Centos, que tiene SElinux instalado y habilitado desde el primer momento.

Lo siento, no soy de más ayuda. Tal vez en otro momento, descargue una imagen de Centos y pruebe esto; será un buen paso de aprendizaje. Actualizaré esta respuesta si lo hago.

Solución 4:

Algo que aún no he visto en las respuestas, pero que sigue siendo una posibilidad:

Cambie la configuración de Apache para escuchar otro puerto, por si acaso. Puede hacerlo abriendo el archivo de configuración de Apache y cambiando las líneas que tienen Listen 80 a otro puerto.


Linux
  1. Cómo abrir los puertos 80 y 443 en FirewallD

  2. ¿Cómo eliminar las aplicaciones Kde y Xfce del menú Gnome?

  3. Conceptos básicos de Docker:exposición de puertos, vinculación de puertos y enlace de Docker

  4. ¿Cómo abrir, leer y escribir desde el puerto serie en C?

  5. ¿Permitir que el proceso no raíz se vincule a los puertos 80 y 443?

Ubuntu 22.04 abre el puerto HTTP 80 y el puerto HTTPS 443 con ufw

Cómo compilar PHP7.0/PHP7.1 desde la fuente en Arch Linux

Cómo extraer audio de video en Ubuntu y otras distribuciones de Linux

Escritura y depuración de aplicaciones C++ de Linux desde Visual Studio mediante el subsistema de Windows para Linux

¿Por qué está abierto el puerto 1111 y es seguro estarlo?

Linux obtiene el desplazamiento UTC de las zonas horarias actuales (u otras) en una fecha y hora determinadas