GNU/Linux >> Tutoriels Linux >  >> Linux

Empêcher d'autres applications de se lier aux ports 80 et 443

Solution 1 :

Vous ne pouvez pas empêcher un port d'être lié par le mauvais service. Dans votre cas, supprimez simplement apache du démarrage automatique et tout devrait bien se passer.

Pour 16.04 et versions ultérieures :

sudo systemctl disable apache2

Pour les anciennes versions d'Ubuntu :

sudo update-rc.d apache2 disable

Solution 2 :

Si vous n'utilisez vraiment pas apache2 , et c'est PHP 7.0 qui l'exige, alors il semble que vous ayez libapache2-mod-php7.0 installée. Ce paquet est inutile sans Apache. Puisque vous utilisez nginx, vous avez probablement aussi php7.0-fpm ou php7.0-cgi installé, l'un ou l'autre étant suffisant pour satisfaire php7.0 Exigences de dépendance :

$ 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 vous avez l'un des php7.0-{fpm,cgi} installé, vous pouvez continuer et désinstaller Apache.

Solution 3 :

Pour répondre à votre question, vous pouvez probablement restreindre un port à une application spécifique en utilisant SElinux. Je ne l'ai pas utilisé moi-même et n'ai qu'une connaissance superficielle de ses capacités, mais voici un pointeur que j'ai trouvé sur ce site :

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

Dans cette réponse, wzzrd semble montrer comment donner à une application spécifique (foo) l'autorisation de se lier à un port spécifique (803). Il vous suffirait de configurer la politique de sorte que seule votre application (nginx) soit autorisée aux ports que vous spécifiez (80 et 443).

En me basant sur la réponse de wzzrd, cela pourrait être aussi simple que d'ajouter ceci à la politique

allow nginx_t nginx_port_t:tcp_socket name_bind;

et en cours d'exécution

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

Cependant, j'imagine que vous aurez également besoin d'une ligne dans la stratégie qui spécifie qu'aucun autre programme ne peut se lier à ces ports.

En fin de compte, je ne fais que deviner quelle est la configuration appropriée.

Quoi qu'il en soit, je ne pense pas qu'il y ait eu un Ubuntu sur lequel SElinux est installé et activé par défaut. Parce que je pense que cela nécessite d'appliquer certains correctifs à divers utilitaires et une option de noyau, il pourrait être plus facile d'utiliser simplement Centos qui a SElinux installé et activé dès le départ.

Désolé, je ne suis pas d'une plus grande aide. Peut-être qu'une autre fois, je téléchargerai une image de Centos et j'essaierai ceci; ce sera une bonne étape d'apprentissage. Je mettrai à jour cette réponse si je le fais.

Solution 4 :

Quelque chose que je n'ai pas encore vu dans les réponses, mais qui reste une possibilité :

Modifiez la configuration d'Apache pour écouter un autre port, juste au cas où. Vous pouvez le faire en ouvrant le fichier de configuration Apache et en modifiant les lignes qui ont Listen 80 vers un autre port.


Linux
  1. Comment ouvrir les ports 80 et 443 dans FirewallD

  2. Empêcher un script bash de s'exécuter simultanément

  3. Rappelez-vous les applications lors de la déconnexion de Lxde ?

  4. Comment supprimer les applications Kde et Xfce du menu Gnome ? ?

  5. ClipGrab - Téléchargez des vidéos à partir de YouTube, Facebook et d'autres sites

Ubuntu 22.04 ouvre le port HTTP 80 et le port HTTPS 443 avec ufw

Comment compiler PHP7.0/PHP7.1 à partir de la source sur Arch Linux

Comment extraire l'audio d'une vidéo dans Ubuntu et d'autres distributions Linux

Écriture et débogage d'applications Linux C++ à partir de Visual Studio à l'aide du sous-système Windows pour Linux

Pourquoi le port 1111 est-il ouvert et est-il sûr de l'être ?

Linux obtient le décalage UTC des fuseaux horaires actuels (ou autres) à une date et une heure données