run - instalar php en linux
La mejor forma de sandbox Apache en Linux (11)
¿Qué problema estás tratando de resolver realmente? Si le importa qué hay en ese servidor, debe evitar que entren los intrusos. Si te importa lo que los intrusos harían con tu servidor, debes restringir las capacidades del servidor.
Ninguno de estos problemas se puede resolver con la virtualización, sin dañar seriamente el servidor. Creo que la verdadera respuesta a tu problema es esta:
- ejecutar un sistema operativo que le proporciona un mecanismo fácil para las actualizaciones del sistema operativo.
- use el software suministrado por el proveedor.
- copia de seguridad todo seguido
Apache corriendo en un servidor público Debian, y estoy un poco preocupado por la seguridad de la instalación. Esta es una máquina que aloja varios proyectos de hobby de tiempo libre, por lo que ninguno de nosotros que usemos la máquina realmente tenemos tiempo para observar constantemente los parches, estar al tanto de los problemas de seguridad, etc. Pero me gustaría mantener alejados a los malos. , o si entran, mantenlos en una caja de arena.
Entonces, ¿cuál es la mejor solución, fácil de configurar y fácil de mantener aquí? ¿Es fácil configurar un sandbox de Linux en modo de usuario en Debian? ¿O tal vez una cárcel chroot? Me gustaría tener acceso fácil a los archivos dentro del sadbox desde el exterior. Este es uno de esos momentos en los que me resulta muy claro que soy un programador, no un administrador de sistemas. ¡Cualquier ayuda sería muy apreciada!
En segundo lugar lo que dice xardias, pero en cambio recomiendo OpenVZ .
Es similar a Linux-Vserver, por lo que es posible que desee comparar esos dos cuando va por esta ruta.
Configuré un servidor web con un servidor http proxy ( nginx ), que luego delega el tráfico a diferentes contenedores OpenVZ (según el nombre de host o la ruta solicitada). Dentro de cada contenedor puede configurar Apache o cualquier otro servidor web (por ejemplo, nginx, lighttpd, ..). De esta forma, no tiene un Apache para todo, pero podría crear un contenedor para cualquier subconjunto de servicios (por ejemplo, por proyecto).
Los contenedores OpenVZ pueden actualizarse bastante fácilmente ("para i en $ (vzlist); hacer vzctl exec apt-get upgrade; done")
Los archivos de los diferentes contenedores se almacenan en el nodo de hardware y, por lo tanto, puede acceder fácilmente a ellos mediante SFTPing en el nodo de hardware. Aparte de eso, podría agregar una dirección IP pública a algunos de sus contenedores, instalar SSH allí y luego acceder a ellos directamente desde el contenedor. Incluso he escuchado de proxies SSH, por lo que la dirección IP pública adicional podría ser innecesaria, incluso en ese caso.
Hacer una máquina virtual intente algo como vmware o qemu
Las cárceles de Chroot pueden ser realmente inseguras cuando se ejecuta un entorno de recinto de seguridad completo. Los atacantes tienen acceso completo a la funcionalidad del kernel y, por ejemplo, pueden montar unidades para acceder al sistema "host".
Sugeriría que use linux-vserver. Puedes ver linux-vserver como una cárcel chroot mejorada con una instalación Debian completa dentro. Es realmente rápido, ya que se ejecuta dentro de un kernel único, y la ejecución de todos los códigos es una forma nativa.
Yo personalmente uso linux-vserver para la separación de todos mis servicios y solo hay diferencias de rendimiento apenas perceptibles.
Echa un vistazo a la wiki de linux-vserver para ver las instrucciones de instalación.
Saludos, Dennis
Me parece sorprendente que nadie haya mencionado mod_chroot y suEXEC , que son las cosas básicas con las que debe comenzar y, lo más probable, las únicas cosas que necesita.
Para asegurarse de que se diga, las cárceles de CHRoot rara vez son una buena idea, a pesar de la intención, es muy fácil escapar de ellas, de hecho, ¡las he visto accidentalmente!
Siempre puede configurarlo dentro de una máquina virtual y conservar una imagen, de modo que puede volver a lanzarlo si es necesario. De esta forma, el servidor se abstrae de su computadora real y cualquier virus, etc., está contenido dentro de la máquina virtual. Como dije antes, si mantiene una imagen como copia de seguridad puede restaurar su estado anterior de manera bastante fácil.
Sin ánimo de ofender, pero si no tiene tiempo para controlar los parches de seguridad y mantenerse al tanto de los problemas de seguridad, debería preocuparse, sin importar cuál sea su configuración. Por otro lado, el mero hecho de que esté pensando en estos temas lo diferencia del otro 99.9% de los propietarios de dichas máquinas. ¡Estás en el camino correcto!
Deberías usar SELinux. No sé qué tan bien es compatible con Debian; si no es así, solo instale un Centos 5.2 con SELinux habilitado en una máquina virtual. No debería ser demasiado trabajo, y mucho más seguro que cualquier aficionado al chrootismo, que no es tan seguro como la mayoría de la gente cree. SELinux tiene una reputación de ser difícil de administrar, pero si solo estás ejecutando un servidor web, eso no debería ser un problema. Puede que tenga que hacer algunos "sebool" para permitir que httpd se conecte a la base de datos, pero eso es todo.
Si bien todas las anteriores son buenas sugerencias, también sugiero agregar una regla de iptables para no permitir conexiones de red salientes inesperadas. Dado que lo primero que hacen la mayoría de los exploits web automatizados es descargar el resto de su carga, evitando que la conexión de red pueda ralentizar al atacante.
Se pueden usar algunas reglas similares a estas (tenga cuidado, su servidor web puede necesitar acceso a otros protocolos): iptables --append OUTPUT -m owner --uid-owner apache -m state --state ESTABLECIDO, RELACIONADO --jump ACCEPT iptables - -append OUTPUT -m owner -uid-owner apache -protocol udp -destination-port 53 -jump ACEPTAR iptables --append OUTPUT -m owner --uid-owner apache --jump REJECT
Si usa Debian, debootstrap es su amigo junto con QEMU, Xen, OpenVZ, Lguest o una plétora de otros.