Question

Apache tourne sur un serveur Debian ouvert au public et je suis un peu inquiet pour la sécurité de l'installation. Il s'agit d'une machine qui héberge plusieurs projets de loisir, alors personne parmi ceux qui l'utilisent n'a vraiment le temps de surveiller en permanence les correctifs en amont, de rester au courant des problèmes de sécurité, etc. Mais je tiens à garder les méchants à l'écart , ou s'ils entrent, conservez-les dans un bac à sable.

Alors quelle est la solution la meilleure, facile à configurer et à maintenir ici? Est-il facile de configurer un sandbox Linux en mode utilisateur sur Debian? Ou peut-être une prison chroot? J'aimerais pouvoir accéder facilement aux fichiers de l'extérieur de la sadbox. C’est l’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 la bienvenue!

Était-ce utile?

La solution

Les jails Chroot peuvent être vraiment peu sûrs lorsque vous exécutez un environnement Sandbox complet. Les attaquants ont un accès complet aux fonctionnalités du noyau et peuvent, par exemple, monter des lecteurs pour accéder à la fonction "hôte". système.

Je suggérerais que vous utilisiez linux-vserver. Vous pouvez voir linux-vserver comme une prison chroot améliorée avec une installation Debian complète à l'intérieur. Il est très rapide car il est exécuté dans un seul noyau et tout le code est exécuté de manière 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 obtenir les instructions d'installation.

salutations, Dennis

Autres conseils

J'approuve ce que dit xardias, mais recommande plutôt OpenVZ .

Il est similaire à Linux-Vserver. Vous voudrez peut-être comparer ces deux lorsque vous suivez cette voie.

J'ai configuré un serveur Web avec un serveur proxy HTTP ( nginx ), qui délègue ensuite le trafic à différents OpenVZ. conteneurs (en fonction du nom d'hôte ou du chemin demandé). Dans chaque conteneur, vous pouvez configurer Apache ou tout autre serveur Web (par exemple, nginx, lighttpd, ..). Ainsi, vous n’avez pas un 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 très facilement être mis à jour ("pour i in $ (vzlist); exécutez-vous 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 y accéder assez facilement en SFTP dans le nœud matériel. En dehors de cela, vous pouvez ajouter une adresse IP publique à certains de vos conteneurs, y installer SSH, puis y accéder directement à partir du conteneur. J'ai même entendu parler de mandataires SSH, de sorte que l'adresse IP publique supplémentaire pourrait ne pas être nécessaire, même dans ce cas.

Vous pouvez toujours l'installer dans une machine virtuelle et en conserver une image afin de pouvoir la relancer si nécessaire. De cette manière, le serveur est extrait de votre ordinateur réel et tout virus, ou autre, est contenu dans la machine virtuelle. Comme je l'ai dit précédemment, si vous conservez une image en tant que sauvegarde, vous pourrez restaurer votre état antérieur très facilement.

Pour s’assurer que cela est bien dit, CHRoot Jails est rarement une bonne idée. Malgré l’intention, il est très facile de s’échapper, en fait je l’ai vu faire accidentellement par des utilisateurs!

Ne vous inquiétez pas, mais si vous n'avez pas le temps de surveiller les correctifs de sécurité et de rester au courant des problèmes de sécurité, vous devriez vous inquiéter, quelle que soit votre configuration. D'autre part, le simple fait que vous réfléchissiez à ces problèmes vous distingue des autres 99,9% des propriétaires de telles 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 devez commencer, et très probablement, les seuls dont vous avez besoin.

Vous devriez utiliser SELinux. Je ne sais pas dans quelle mesure cela est supporté par Debian; si ce n'est pas le cas, installez simplement Centos 5.2 avec SELinux activé sur une machine virtuelle. Ne devrait pas être trop de travail, et beaucoup plus sûr que n'importe quel amateur chrooter, 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 utilisez uniquement un serveur Web, cela ne devrait pas être un problème. Il vous suffira peut-être de faire quelques "sebool". laisser httpd se connecter à la base de données, mais c'est à peu près tout.

Bien que toutes les suggestions ci-dessus soient de bonnes suggestions, je suggère également d'ajouter une règle iptables pour interdire les connexions réseau sortantes inattendues. Comme la plupart des exploits Web les plus automatisés sont de télécharger le reste de leur charge utile, empêcher la connexion au réseau peut ralentir l'attaquant.

Certaines règles similaires à celles-ci peuvent être utilisées (attention, votre serveur web peut avoir besoin d'accéder à d'autres protocoles):     iptables --append OUTPUT -m propriétaire --uid-propriétaire apache -m état --état ESTABLISHED, RELATED --jump ACCEPT     iptables --append OUTPUT - m propriétaire --uid-propriétaire apache --protocol udp --destination-port 53 --jump ACCEPT     iptables --append OUTPUT -m propriétaire --uid-propriétaire apache - saute REJECT

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

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

Quel problème essayez-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 pénétrer. Si vous vous souciez de ce que feraient les intrus avec votre serveur, vous devez limiter les fonctionnalités du serveur lui-même.

Aucun de ces problèmes ne pourrait être résolu avec la virtualisation, sans pour autant nuire gravement au serveur lui-même. Je pense que la vraie réponse à votre problème est la suivante:

  1. exécutez un système d'exploitation qui vous fournit un mécanisme simple pour les mises à jour du système d'exploitation.
  2. utilisez le logiciel fourni par le fournisseur.
  3. sauvegardez souvent tout.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top