Meilleur moyen de sandbox Apache sous Linux

J’ai Apache sur un serveur Debian public et je suis un peu inquiet de la sécurité de l’installation. Il s’agit d’une machine qui héberge plusieurs projets de loisir libres, donc aucun de nous n’a vraiment le temps de surveiller en permanence les correctifs en amont, de se tenir au courant des problèmes de sécurité, etc. , ou s’ils entrent, conservez-les dans un bac à sable.

Alors, quelle est la meilleure solution, facile à mettre en place et à maintenir ici? Est-il facile de configurer un sandbox Linux en mode utilisateur sur Debian? Ou peut-être une prison chroot? Je voudrais avoir un access facile aux fichiers à l’intérieur de la sadbox de l’extérieur. C’est un de ces moments où il devient très clair pour moi que je suis un programmeur, pas un administrateur système. Toute aide serait très appréciée!

Les chroot jails peuvent être vraiment peu sécurisés lorsque vous exécutez un environnement sandbox complet. Les attaquants ont un access complet aux fonctionnalités du kernel et, par exemple, peuvent monter des lecteurs pour accéder au système “hôte”.

Je suggère que vous utilisiez linux-vserver. Vous pouvez voir linux-vserver comme une prison chroot améliorée avec une installation complète de Debian à l’intérieur. Il est très rapide car il s’exécute dans un seul kernel, et toute exécution de code en est une native.

J’utilise personnellement linux-vserver pour séparer tous mes services et il n’y a que des différences de performances à peine perceptibles.

Consultez le wiki linux-vserver pour les instructions d’installation.

salutations, Dennis

J’appuie ce que dit xardias, mais recommande plutôt OpenVZ .

Il est similaire à Linux-Vserver, vous pouvez donc comparer ces deux-là lors de cette route.

J’ai configuré un serveur Web avec un serveur proxy HTTP ( nginx ), qui délègue ensuite le trafic à différents conteneurs OpenVZ (basés sur le nom d’hôte ou le chemin demandé). Dans chaque conteneur, vous pouvez configurer Apache ou tout autre serveur Web (par exemple, nginx, lighttpd, ..). De cette façon, vous n’avez pas un seul Apache pour tout, mais vous pouvez créer un conteneur pour n’importe quel sous-ensemble de services (par exemple, par projet).

Les conteneurs OpenVZ peuvent facilement être mis à jour (“pour i dans $ (vzlist); est-ce que vzctl exec apt-get upgrade; done”)

Les fichiers des différents conteneurs sont stockés dans le nœud matériel et vous pouvez donc les accéder facilement par SFTP au nœud matériel. En dehors de cela, vous pouvez append une adresse IP publique à certains de vos conteneurs, y installer SSH et y accéder directement depuis le conteneur. J’ai même entendu parler de proxy SSH, donc l’adresse IP publique supplémentaire pourrait être inutile même dans ce cas.

Vous pouvez toujours le configurer à l’intérieur d’une machine virtuelle et en conserver une image afin de pouvoir la relancer si nécessaire. La manière dont le serveur est extrait de votre ordinateur et de tout virus est contenue dans la machine virtuelle. Comme je l’ai déjà dit, si vous conservez une image en tant que sauvegarde, vous pouvez restaurer facilement votre état précédent.

Pour être sûr que cela soit dit, les CHRoot Jails sont rarement une bonne idée, mais malgré l’intention, très facile d’échapper, j’ai vu cela par des utilisateurs accidentels!

Aucune infraction, mais si vous n’avez pas le temps de surveiller les correctifs de sécurité et de restr informé des problèmes de sécurité, vous devriez être inquiet, quelle que soit votre configuration. D’autre part, le simple fait que vous pensiez à ces problèmes vous distingue des autres 99,9% des propriétaires de ces machines. Vous êtes sur le bon chemin!

Je trouve étonnant que personne n’ait mentionné mod_chroot et suEXEC , qui sont les éléments de base avec lesquels vous devriez commencer, et probablement les seules choses dont vous avez besoin.

Vous devez utiliser SELinux. Je ne sais pas dans quelle mesure il est supporté sur Debian; Si ce n’est pas le cas, installez simplement un Centos 5.2 avec SELinux activé sur une VM. Ne devrait pas être trop de travail et beaucoup plus sûr que n’importe quel chrooting amateur, qui n’est pas aussi sûr que la plupart des gens croient. SELinux a la réputation d’être difficile à administrer, mais si vous ne faites qu’exécuter un serveur Web, cela ne devrait pas poser de problème. Vous devrez peut-être faire quelques “sebool” pour permettre à httpd de se connecter à la firebase database, mais c’est à ce sujet.

Bien que toutes les suggestions ci-dessus soient utiles, je suggère également d’append une règle iptables pour interdire les connexions réseau sortantes inattendues. Puisque la première chose que font les exploits Web automatisés est de télécharger le rest de leur charge utile, empêcher la connexion réseau peut ralentir l’attaquant.

Certaines règles similaires peuvent être utilisées (attention, votre serveur web peut avoir besoin d’accéder à d’autres protocoles): iptables –append OUTPUT -m propriétaire –uid-owner apache -m state –state ESTABLISHED, RELATED -append OUTPUT -m le propriétaire –uid-owner apache –protocole udp –destination-port 53 –jump ACCEPT iptables –append OUTPUT -m propriétaire –uid-owner apache

Si vous utilisez Debian, debootstrap est votre ami associé à QEMU, Xen, OpenVZ, Lguest ou une pléthore d’autres.

Créez une machine virtuelle. essayez quelque chose comme vmware ou qemu

Quel problème tentez-vous vraiment de résoudre? Si vous vous souciez de ce qui se trouve sur ce serveur, vous devez empêcher les intrus d’y entrer. Si vous vous souciez de ce que les intrus feraient avec votre serveur, vous devez restreindre les capacités du serveur lui-même.

Aucun de ces problèmes n’a pu être résolu avec la virtualisation, sans que le serveur lui-même soit gravement atteint. Je pense que la vraie réponse à votre problème est la suivante:

  1. exécutez un système d’exploitation qui vous offre un mécanisme simple pour les mises à jour du système d’exploitation.
  2. Utilisez le logiciel fourni par le fournisseur.
  3. sauvegarder tout souvent.