GNU/Linux >> Linux Esercitazione >  >> Linux

Impedire ad altre applicazioni di associarsi alla porta 80 e 443

Soluzione 1:

Non puoi impedire a una porta di essere vincolata dal servizio sbagliato. Nel tuo caso, rimuovi semplicemente apache dall'avvio automatico e dovresti essere a posto.

Per 16.04 e successivi:

sudo systemctl disable apache2

Per versioni precedenti di Ubuntu:

sudo update-rc.d apache2 disable

Soluzione 2:

Se davvero non stai usando apache2 , ed è PHP 7.0 che lo richiede, quindi sembra che tu abbia libapache2-mod-php7.0 installato. Quel pacchetto è inutile senza Apache. Dato che stai usando nginx, probabilmente hai anche php7.0-fpm o php7.0-cgi installato, uno dei quali è sufficiente per soddisfare php7.0 requisiti di dipendenza di:

$ 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>

Se hai uno dei php7.0-{fpm,cgi} installato, puoi andare avanti e disinstallare Apache.

Soluzione 3:

Per rispondere alla tua domanda, puoi probabilmente limitare una porta a un'applicazione specifica utilizzando SElinux. Non l'ho usato personalmente e ho solo una conoscenza superficiale delle sue capacità, ma ecco un suggerimento che ho trovato in questo sito:

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

In quella risposta, wzzrd sembra mostrare come concedere a un'applicazione specifica (foo) il permesso di collegarsi a una porta specifica (803). Dovresti solo impostare la politica in modo che solo la tua applicazione (nginx) abbia accesso alle porte specificate (80 e 443).

Basandomi sulla risposta di wzzrd, potrebbe essere semplice come aggiungere questo alla policy

allow nginx_t nginx_port_t:tcp_socket name_bind;

e l'esecuzione di questo

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

Tuttavia, immagino che avrai anche bisogno di una riga nella policy che specifichi che nessun altro programma può collegarsi a quelle porte.

Alla fine, sto solo indovinando quale sia la configurazione appropriata.

Ad ogni modo, non credo che ci sia stato un Ubuntu con SElinux installato e abilitato per impostazione predefinita. Poiché credo che richieda l'applicazione di determinate patch a varie utilità e un'opzione del kernel, potrebbe essere più semplice utilizzare semplicemente Centos che ha SElinux installato e abilitato fin dall'inizio.

Mi dispiace, non sono più di aiuto. Forse un'altra volta, scaricherò un'immagine di Centos e proverò questo; sarà un buon passo di apprendimento. Aggiornerò questa risposta se lo faccio.

Soluzione 4:

Qualcosa che non ho ancora visto nelle risposte, ma è ancora una possibilità:

Cambia la configurazione di Apache per ascoltare un'altra porta, per ogni evenienza. Puoi farlo aprendo il file di configurazione di Apache e modificando le righe che hanno Listen 80 a un'altra porta.


Linux
  1. Impedire l'esecuzione simultanea di uno script bash

  2. Differenza tra le applicazioni Gtk e Qt?

  3. Impedire al Tar di utilizzare troppa CPU e disco (il vecchio laptop si arresta in modo anomalo se al 100%)?

  4. ClipGrab – Scarica video da YouTube, Facebook e altri siti

  5. stordisci il traffico VPN e assicurati che assomigli al traffico SSL sulla porta 443

Ubuntu 22.04 apre la porta HTTP 80 e la porta HTTPS 443 con ufw

Come compilare PHP7.0/PHP7.1 dal sorgente su Arch Linux

Come estrarre l'audio dal video in Ubuntu e altre distribuzioni Linux

Scrittura e debug di applicazioni C++ Linux da Visual Studio usando il sottosistema Windows per Linux

tracciare un particolare IP e porta

Perché la porta 1111 è aperta ed è sicuro esserlo?