Вопрос

У меня Apache работает на общедоступном сервере Debian, и меня немного беспокоит безопасность установки.На этой машине размещается несколько хобби-проектов в свободное время, поэтому ни у кого из нас, использующих эту машину, нет времени постоянно следить за обновлениями исходной версии, быть в курсе проблем безопасности и т. д.Но я бы хотел не допускать плохих парней, а если они проникнут, держать их в песочнице.

Так какое же здесь лучшее, простое в настройке и обслуживании решение?Легко ли настроить песочницу Linux в пользовательском режиме в Debian?Или, может быть, chroot-тюрьма?Я хотел бы иметь легкий доступ к файлам внутри садбокса снаружи.Это один из тех случаев, когда мне становится совершенно ясно, что я программист, а не сисадмин.Любая помощь приветствуется!

Это было полезно?

Решение

Chroot-тюрьмы могут быть очень небезопасными, если вы используете полную изолированную среду.Злоумышленники имеют полный доступ к функциям ядра и, например, могут монтировать диски для доступа к «хостовой» системе.

Я бы посоветовал вам использовать linux-vserver.Вы можете рассматривать linux-vserver как улучшенную тюрьму chroot с полной установкой Debian внутри.Это действительно быстро, поскольку работает в одном ядре, и весь код выполняется изначально.

Лично я использую linux-vserver для разделения всех своих сервисов, и разница в производительности едва заметна.

Взгляните на Linux-vserver вики для инструкций по установке.

с уважением, Денис

Другие советы

Я поддерживаю то, что говорит Ксардиас, но рекомендую ОпенВЗ вместо.

Он похож на Linux-Vserver, поэтому вы можете сравнить их, пройдя по этому пути.

Я настроил веб-сервер с прокси-сервером http (nginx), который затем делегирует трафик различным контейнерам OpenVZ (в зависимости от имени хоста или запрошенного пути).Внутри каждого контейнера вы можете настроить Apache или любой другой веб-сервер (например.nginx, Lighttpd, ..).Таким образом, у вас не будет одного Apache для всего, но вы можете создать контейнер для любого подмножества сервисов (например,за проект).

Контейнеры OpenVZ можно легко обновить («for i in $(vzlist);выполните обновление vzctl exec apt-get;сделанный")

Файлы различных контейнеров хранятся в аппаратном узле, и поэтому вы можете легко получить к ним доступ, подключившись к аппаратному узлу по SFTP.Кроме этого ты мог добавьте публичный IP-адрес в некоторые из ваших контейнеров, установите там SSH, а затем получите к ним доступ непосредственно из контейнера.Я даже слышал о SSH-прокси, поэтому дополнительный общедоступный IP-адрес может оказаться ненужным даже в этом случае.

Вы всегда можете настроить его внутри виртуальной машины и сохранить его образ, чтобы при необходимости можно было повторно запустить его.Таким образом, сервер абстрагируется от вашего реального компьютера, и любые вирусы и т. д. содержатся внутри виртуальной машины.Как я уже говорил ранее, если вы сохраните изображение в качестве резервной копии, вы сможете легко восстановить его в предыдущее состояние.

Чтобы убедиться в этом, следует сказать, что CHRoot Jails редко бывает хорошей идеей, несмотря на намерение, из него очень легко выйти, на самом деле я видел, как пользователи делали это случайно!

Без обид, но если у вас нет времени следить за обновлениями безопасности и быть в курсе проблем безопасности, вам следует беспокоиться, независимо от ваших настроек.С другой стороны, уже сам факт, что вы задумываетесь над этими вопросами, выделяет вас среди остальных 99,9% владельцев таких машин.Вы на правильном пути!

Я нахожу удивительным, что никто не упомянул mod_chroot и suEXEC, это основные вещи, с которых вам следует начать, и, скорее всего, единственные, которые вам нужны.

Вам следует использовать SELinux.Я не знаю, насколько хорошо он поддерживается в Debian;если это не так, просто установите Centos 5.2 с включенным SELinux на виртуальной машине.Не должно быть слишком много работы, и это намного безопаснее, чем любой любительский chrooting, который не так безопасен, как считает большинство людей.SELinux имеет репутацию сложного в администрировании, но если вы просто используете веб-сервер, это не должно быть проблемой.Возможно, вам просто придется выполнить несколько «sebool», чтобы позволить httpd подключиться к БД, но это все.

Хотя все вышеперечисленное — хорошие предложения, я также предлагаю добавить правило iptables, запрещающее неожиданные исходящие сетевые подключения.Поскольку большинство автоматизированных веб-эксплойтов в первую очередь загружают остальную часть своей полезной нагрузки, предотвращение сетевого подключения может замедлить атаку злоумышленника.

Можно использовать некоторые правила, подобные этим (Осторожно, вашему веб-серверу может потребоваться доступ к другим протоколам):iptables -append output -m Владелец -UIID -владелец Apache -M State -Установленное, связанное -Jump Принять iptables -upture -mpend -m Владелец -UID -владелец Apache -protocol UDP -Destination -Port 53 -Jump принять iptables -upture -anpend -m владелец -UIID -владелец Apache -Jump отклонить

Если вы используете Debian, вам поможет debootstrap в сочетании с QEMU, Xen, OpenVZ, Lguest или множеством других.

Сделать виртуальную машину.попробуйте что-нибудь вроде vmware или qemu

Какую проблему вы действительно пытаетесь решить?Если вас волнует то, что находится на этом сервере, вам необходимо предотвратить проникновение на него злоумышленников.Если вас волнует, что злоумышленники сделают с вашим сервером, вам необходимо ограничить возможности самого сервера.

Ни одну из этих проблем невозможно решить с помощью виртуализации без серьезного повреждения самого сервера.Я думаю, что реальный ответ на вашу проблему таков:

  1. запустите ОС, которая предоставляет вам простой механизм обновления ОС.
  2. используйте программное обеспечение, поставляемое поставщиком.
  3. чаще делайте резервные копии всего.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top