Pregunta

Tengo Apache ejecutándose en un servidor Debian de cara al público, y estoy un poco preocupado por la seguridad de la instalación. Esta es una máquina que alberga varios proyectos de pasatiempos de tiempo libre, por lo que ninguno de nosotros que usamos la máquina realmente tiene tiempo para estar constantemente atento a los parches aguas arriba, estar al tanto de los problemas de seguridad, etc. Pero me gustaría mantener alejados a los malos , o si entran, guárdelos 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 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 queda muy claro que soy un programador, no un administrador de sistemas. Cualquier ayuda sería muy apreciada!

¿Fue útil?

Solución

Las cárceles Chroot pueden ser realmente inseguras cuando se ejecuta un entorno de sandbox completo. Los atacantes tienen acceso completo a la funcionalidad del núcleo y, por ejemplo, pueden montar unidades para acceder al "host". sistema.

Sugeriría que use linux-vserver. Puede ver linux-vserver como una cárcel chroot mejorada con una instalación completa de debian en su interior. Es realmente rápido ya que se ejecuta dentro de un solo núcleo y todo el código se ejecuta de forma nativa.

Personalmente uso linux-vserver para separar todos mis servicios y solo hay diferencias de rendimiento apenas perceptibles.

Eche un vistazo a la linux-vserver wiki para obtener instrucciones de instalación.

saludos, Dennis

Otros consejos

Respaldo lo que dice xardias, pero recomiendo OpenVZ en su lugar.

Es similar a Linux-Vserver, por lo que es posible que desee comparar esos dos cuando vaya por esta ruta.

He configurado un servidor web con un servidor proxy http ( nginx ), que luego delega el tráfico a diferentes OpenVZ contenedores (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 manera, no tiene un Apache para todo, pero podría crear un contenedor para cualquier subconjunto de servicios (por ejemplo, por proyecto).

Los contenedores OpenVZ se pueden actualizar fácilmente (" para i en $ (vzlist); hacer vzctl exec apt-get upgrade; hecho ")

Los archivos de los diferentes contenedores se almacenan en el nodo de hardware y, por lo tanto, puede acceder fácilmente a ellos mediante SFTP al 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 servidores proxy SSH, por lo que la dirección IP pública adicional podría ser innecesaria incluso en ese caso.

Siempre puede configurarlo dentro de una máquina virtual y mantener una imagen de él, para que pueda volver a enrollarlo si es necesario. De esa manera, el servidor se abstrae de su computadora real, y cualquier virus o algo así está contenido dentro de la máquina virtual. Como dije antes, si mantiene una imagen como copia de seguridad, puede restaurarla a su estado anterior con bastante facilidad.

Para asegurarse de que se diga, CHRoot Jails rara vez es una buena idea, a pesar de la intención, es muy fácil salir, de hecho, ¡los usuarios lo han visto accidentalmente!

Sin ofender, pero si no tiene tiempo para buscar parches de seguridad y estar al tanto de los problemas de seguridad, debe preocuparse, sin importar cuál sea su configuración. Por otro lado, el simple hecho de que esté pensando en estos problemas lo distingue del otro 99.9% de los propietarios de tales máquinas. ¡Estás en el camino correcto!

Me parece sorprendente que nadie haya mencionado mod_chroot y suEXEC , que son las cosas básicas con las que debe comenzar y, muy probablemente, las únicas cosas que necesita.

Deberías usar SELinux. No sé qué tan bien es compatible con Debian; si no es así, simplemente instale un Centos 5.2 con SELinux habilitado en una VM. No debería ser demasiado trabajo y mucho más seguro que cualquier chrooting aficionado, lo que no es tan seguro como la mayoría de la gente cree. SELinux tiene la reputación de ser difícil de administrar, pero si solo está ejecutando un servidor web, eso no debería ser un problema. Es posible que solo tenga que hacer unos pocos "sebool" dejar que httpd se conecte a la base de datos, pero eso es todo.

Si bien todo lo anterior 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 los exploits web más automatizados es descargar el resto de su carga útil, evitar 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 propietario --uid-owner apache -m estado - estado ESTABLECIDO, RELACIONADO --jump ACEPTAR     iptables --append OUTPUT -m propietario --uid-propietario apache --protocol udp --destination-port 53 --jump ACCEPT     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 gran cantidad de otros.

Hacer una máquina virtual. pruebe algo como vmware o qemu

¿Qué problema realmente estás tratando de resolver? Si le importa lo que hay en ese servidor, debe evitar que intrusos entren en él. Si le preocupa lo que los intrusos harían con su servidor, debe restringir las capacidades del propio servidor.

Ninguno de estos problemas podría resolverse con la virtualización, sin dañar gravemente el servidor. Creo que la verdadera respuesta a su problema es esta:

  1. ejecute un sistema operativo que le brinde un mecanismo sencillo para las actualizaciones del sistema operativo.
  2. use el software suministrado por el proveedor.
  3. haga una copia de seguridad de todo a menudo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top