Apache 2 ITK MPM

Bonjour a tous,
Voici deux bonnes semaines ou je tente sur un serveur de test de remplacer ISPConfig. Le but etant bien sur d’évoluer personnellement, mais aussi d’ajouter une securité acrue et des utilitaires non disponible sur ISP (wildcard par exemple). Hors hier, sur un autre thread concernant la manière que j’ai choisie pour faire du SFTP pour des sites webs en respectant les chmods standards, un membre a souligné un fait indéniable qui me chagrine.

Aujourd’hui, il y a un site que l’on va appelé xxx.com dans /var/www/xxx.com. Ce dossier est mount dans /home/xxx/www/xxx.com. L’user xxx se connecte en SFTP dans son dossier avec ses droits xxx:xxx, quand il upload, le fichier se retrouve dans /var/www/xxx.com avec les droit www-data:www-data a l’aide de BindFS. Jusque la tout va bien, mais en effet, tout les users ayant un site web vont donc uploader avec les droit www-data:ww-data ce qui n’est donc pas très serieux pour quelqu’un qui veut renforcer la securité par rapport a ISP.

Donc ce matin, je regarde quels sont mes droits sur un fichier FTP quand j’upload dans un espace crée via ISPConfig, et la surprise, le chown est a client(x):web(x), et y’a pas tout un chmilblic derriere avec bindfs. Mais comment fait t’il ?
Je fouille, je regarde de plus pret, et la je decouvre un mod chelou dans le virtualhost :
# add support for apache mpm_itk

AssignUserId web21 client1

Ce qui m’amène donc a la question, que penser vous de ce module par rapport a ce que j’utilise aujourd’hui ? Est ce un standards quand on héberge du web avec plusieurs clients ?
Je n’ai pas trop envie d’essayer d’autres panels juste pour voir comment c’est fichu ailleurs si vos experience peuvent m’aiclairer ^^

Merci d’avance

Apache mpm, possède trois grand type à utiliser selon les besoins, prefork, itk et worker.
Chacun d’eux amène quelque chose à apache.
ITK à ma connaissance ne proviens pas de Apache2 par contre.

Comme d’habitude un peu de lecture :

https://httpd.apache.org/docs/2.4/fr/mod/worker.html

https://httpd.apache.org/docs/2.4/mod/prefork.html

Et en ce qui te concerne :


http://bibabox.fr/apache2-mpm-itk-utiliser-un-utiliser-un-utilisateur-different-pour-chaque-vhost/

C’est ce que nous utilisons et cherchons à remplacer sur une énorme plateforme (pour raison de maintenabilité, on parle de dizaine de milliers d’utilisateurs différents tout de même relié par un LDAP).

1 J'aime

Merci Clochette !

Pourquoi n’avions nous pas aborder ce module lors du post que j’avais ouvert concernant mes problemes de droits et de chmod standard sur un thread que j’avais ouvert ^^. J’y avais passer le WE entier pour trouver la solution avec bindfs alors que ce module convient farpetement !

Tu peux éventuellement développer pour ma culture STP ?

Parce que je suis une quiche en matière de serveur web apache, et que ça ne m’ai naturellement pas venue à l’esprit :stuck_out_tongue:

Les performances et la complexité de l’infrastructure mon bon ami, avec trois génération de backend derrière un cluster de reverse proxy en amont et une série de quatre apache en ITK.
J’en ai des mal de crâne rienqu’a l’idée de devoir y retravailler dessus pour migrer tous ça en micro service.

En exemple, j’ai un client qui ouvre beaucoup de connexion, donc autant de thread, mais ne sait pas les fermer … Apache à un moment va faire la gueule … multiplie le phénomène par autant de client et tu va vite comprendre là où le bas blesse si tu ne peux pas mettre en place des règles strict pour tout ce qui est maintient de connexion et de thread au niveau apache.

Mais pour de la plateforme comme la tienne c’est une excellente solution.
Le mieux serait éventuellement de passer sur du micro service, mais c’est à un tout autre niveau de mise en place.

imagine donc autant de pod kubernetes que tu as de site différent, le tout utilisant un reverse proxy unique, tu multiplie les services web, mais tu renforce l’isolation complètement de chaque site.

Une image alpine avec du Apache ou du Nginx ça doit peser moins de 40Mo, et en empreinte mémoire c’est ridicule.

PS : pod = un ou plusieurs container

Je test la et j’me casse les dents, apache n’ecrit pas, rien dans les logs, sauf :

  • itk n’est pas compatible http2, faut changer de mpm et du coup itk ne fonctionne plus, et de toute facons, ne fonctionnais pas non plus avant le changement de mpm.
  • j’me tourne vers le mpm de php-fpm, et les sock sont incompatibles <apache 4.9 [edit, visiblement une connerie, y’a pas que du vrai sur le net)

Bien, ca n’a pas été de tout repos cette affaire, mais mes tests ont reussis.
Finalement j’utilise mpm de php-fpm, de ce que j’ai lu, c’est plus performant qu’itk avec le mpm-event mod d’apache qui lui aussi est plus performant que worker/prefork, que du bonheur quoi.

  • du coup, plus de bidouilles dans le /etc/fstab, plus desoin de bindfs
  • donc pas de site dans var/www, on reste dans /home/user/
  • plus d’upload en www-data, chaque user a son dossier avec des fichiers dont il est propriétaire/group avec des chmods 755/644
  • Apache fait ce qu’il veut
  • on se connecte toujours en SFTP chrooté dans le home/user avec clé privé personnelle, c’est sécurisé en amont comme en aval et c’est bien mieux qu’avant :stuck_out_tongue:
    QUE DU BONHEUR !