Creación de jaulas chroot



Documentos relacionados
Instituto Tecnológico de Las Américas (ITLA)

PRACTICA 9 SERVIDOR WEB APACHE SERVIDOR WEB APACHE. JEAN CARLOS FAMILIA Página 1

DOCENTES FORMADORES UGEL 03 PRIMARIA

Instituto Tecnológico de Las América. Materia Sistemas operativos III. Temas. Facilitador José Doñe. Sustentante Robín Bienvenido Disla Ramirez

Animalandia. Manual de instalación. (Actualizado: Sept-2015) Fernando Lisón Martín

FTP. File Transfer Protocol. Protocolo De Transferencia De Archivo. Administración de Redes de Computadores. Ficha:

REQUERIMIENTOS TÉCNICOS

Servidor Web Apache Knoppix Linux.-

Software de Comunicaciones. Práctica 7 - Secure Shell. SSH

Instalación Hadoop. Guía para Debian y derivados

labs Linux para Administradores de Elastix Elastix Certification ELASTIX CERTIFICATION

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Actividad 1: Utilización cliente FTP (mediante línea de comandos, entornos gráficos y navegadores/exploradores) (I).

Servidor FTP. JEAN CARLOS FAMILIA Página 1

Crear servidor NFS en Debian

Explotación de Sistemas Informáticos IES Murgi PRÁCTICA 9: SERVICIO WEB Y FTP DE INTERNET INFORMATION SERVICE

CÓMO MANEJAR SU NUEVO SITIO WEB SOBRE DRUPAL Manual técnico y de usuario. Pontificia Universidad Javeriana Grupo PSU CDI

Capitulo 5. Implementación del sistema MDM

laboratorio de sistemas operativos y redes

INSTRUCTIVO DE INSTALACION ATOM 2.0.1

ProFTPD - un servidor FTP para profesionales

Manual de Usuario: Servidor Cloud y Servidor Cloud Gestionado

Instalación, creación y configuración del servicio FTP


PROCESO SERVICIOS INFORMÁTICOS Y DE TELECOMUNICACIONES. Versión: 02 GUIA PARA PUBLICACIÓN DE DOCUMENTOS EN LA WEB Página 1de 6.

Solicitud de conexión de servidores físicos y virtuales departamentales

Descripción. Este Software cumple los siguientes hitos:

IBM SPSS Statistics para Linux Instrucciones de instalación (Usuario individual)

Familia de Windows Server 2003

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Luis Villalta Márquez

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

Implementación de una Solución Tecnológica para la Gestión y Control de la Planificación Institucional del Gobierno Regional de Los Lagos

Instituto Tecnológico Las Américas (ITLA) Sistemas Operativos 3 (SO3) Daniel Alejandro Moreno Martínez. Matrícula:

Componentes de Integración entre Plataformas Información Detallada

MANUAL DE USUARIO AVMsorguar

Instrucciones de instalación de IBM SPSS Statistics para Linux (Licencia de red)

Instalación del sistema operativo Microsoft Windows Server 2008 Standard Edition x86

Administración avanzada de paquetes. apt-proxy.

Guía de inicio rápido de Laplink FileMover

Configuración de un servidor FTP

#09 Apache Web Server

Studium, Campus Virtual de la Universidad de Salamanca.

Contenido QUÉ ES SERVIDOR CLOUD?... 3 ACCESO AL SERVIDOR CLOUD... 3 ADMINISTRACIÓN DEL SISTEMA... 6

2. Instalación y configuración del servidor FTP IIS en Windows 2008 Server.

GUÍA PARA LA INSTALACIÓN DE MOODLE EN UN COMPUTADOR PERSONAL QUE USA EL SISTEMA OPERATIVO MS. WINDOWS

1. Configuración del entorno de usuario

Servidor FTP en Ubuntu Juan Antonio Fañas

Curso: Sistemas Operativos II Plataforma: Linux SAMBA

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas

Roles y Características

Instalación y configuración inicial del sistema SIU-Kolla Versión 3.0.0

Vielka Mari Utate Tineo Instituto Tecnológico de las Américas ITLA. Profesor José Doñé. Sistema Operativo 3 PRACTICA NO. 16, SERVIDOR

DIPLOMADO EN SEGURIDAD INFORMATICA

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

WINDOWS : TERMINAL SERVER

Nivel Básico/Intermedio/Avanzado. Instalar y Configurar Servidores GNU/Linux. Administrar Servidores GNU/Linux. Proteger ante ataques a Servidores.

DIAGNOSTICO SERVIDOR Y PLATAFORMA MOODLE

TÉCNICO EN PRACTICA 3: INTRODUCCION. Protocol Secure.) En esta guía por Linux. OBJETIVOS. Al finalizar esta. servidor WEB y FTP.

Trabajo TICO Unidad 2: Sistemas Operativos. Guillermo Jarne Bueno.

Apéndice 5 Manual de usuario de ColeXión. ColeXión 1.0. Manual de usuario

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Utilización del sistema operativo GNU/ Linux en las netbooks

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Manual de Usuario Servidor Cloud

Redes II Universidad Nacional de Jujuy Facultad de Ingeniería Carrera: APU 2008

SERVICIO NACIONAL DE ADUANA DEL ECUADOR INSTRUCTIVO PARA DESCARGAR E INSTALAR EL AGENTE AVS PARA EL CHAT Y CONTROL REMOTO FEBRERO 2012

GUIA PARA LA DISTRIBUCION DE APLICACIONES DE VISUAL BASIC 6.0

MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A GERENCIA DE INFORMATICA

Análisis de aplicación: Skipfish

Antivirus PC (motor BitDefender) Manual de Usuario

Proyecto Fortalecimiento de las capacidades TIC en PyMEs y Gobiernos Locales mediante el uso de software libre Manual de Instalación Openbravo POS

a) Instalación del servidor SSH en GNU/Linux

MANUAL DE USUARIO SISTEMA DE ALMACEN DIF SONORA

Manual Básico de Helm 4.2 para Usuarios:

PUBLICAR FICHEROS VIA FTP EN EL SERVIDOR DEL CETT

Accede a su DISCO Virtual del mismo modo como lo Hace a su disco duro, a través de:

Como detectar conexión del Servidor y SQL?

Manual de instalación

PRACTICAS DE SERVICIOS DE RED E INTERNET

Instala y configura un servidor SSH/SFTP. Transferir ficheros a dicho servidor con un cliente SFTP y SCP.

COLEGIO COMPUESTUDIO

Instructivo de Instalación y Uso de software MasterControl

SISTEMA CABILDO MANUAL DE INSTALACIÓN CLIENTE ERP CABILDO LA SOLUCIÓN TECNOLÓGICA MÁS COMPLETA E INTEGRAL PARA GOBIERNOS LOCALES

Instalación y configuración servidor WDS

Prácticas A.S.O./A.S.O.P. - Boletín L08 NFS y NIS

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Validación de usuarios y acceso a recursos digitales con Ezproxy. Biblioteca Dulce Chacón

Instrucciones de instalación de IBM SPSS Modeler Server 16 para Windows

Manual AGENDA DE RESPALDO

Guía de Instalación. Glpi

Guía de instalación 1

Oficina Online. Manual del administrador


Transcripción:

- 1 - Creación de jaulas chroot para el mantenimiento de aplicaciones Web mediante sistemas de control de versiones (SCV) distribuidos sobre Debian GNU/Linux 7 Eugenia Bahit i Resumen Durante el laboratorio se crearon jaulas chroot mediante JailKit, asociadas a grupos de usuarios pertenecientes a un mismo equipo de desarrollo. Dentro de cada jaula se creó un repositorio de trabajo con Bazaar, el cual se estableció como ruta del DocumentRoot en los VirtualHost correspondientes. Habiendo simulado las diferentes conexiones de los miembros de los distintos equipos, se lograron mantener las diversas aplicaciones Web actualizadas, independientes unas de otras y con total abstracción del sistema circundante. Palabras clave: jail, jaula, enjaular, chroot, jailkit, debian, bazaar, ssh, apache, virtual host, scv

- 2 - Introducción Los servidores destinados al hospedajes de aplicaciones Web, suelen ser generalmente accedidos por el administrador del sistema y un profesional del equipo de desarrollo. Cuando múltiples proyectos son hospedados en el mismo servidor, la cantidad de usuarios con acceso al sistema suele ser equivalente -y a veces superior- a la cantidad de proyectos alojados en el equipo. Por lo general, el transporte de los archivos -desde los ordenadores locales de desarrollo-, suele hacerse a través de clientes de transferencia de archivos que emplean protocolos como FTP y en otros casos, se recurre a la transferencia directa a través de SSH. Ambos protocolos (FTP y SSH) han sido desarrollados con fines específicos -diferentes a los mencionados- y si bien resuelven la necesidad a niveles pragmáticos, como consecuencia, generan conflictos derivados planteando así, de forma cíclica, problemas que a largo plazo, terminan siendo irresolubles tanto para la seguridad del sistema y su entorno circundante como para la evolución y mantenimiento preciso de las aplicaciones alojadas. Las jaulas chroot (change root) sobre sistemas GNU/Linux constituyen una forma de mantener el aislamiento de los usuarios del sistema, generando entornos virtuales de la raíz del mismo. El proceso de enjaulado consiste en copiar los binarios -y directorios dependientes- que serán habilitados a cada usuario, dentro de un directorio (jaula chroot) consignado a dicho propósito, simulando que el mismo constituye la raíz del sistema. A cada jaula chroot le es asignado uno o más usuarios de forma tal que cuando los mismos acceden al sistema, no pueden conocer ni investigar el árbol de archivos y directorios real, sino tan solo, la estructura creada dentro la jaula. Los sistemas de control de versiones (SCV) distribuidos, han sido desarrollados específicamente para mantener un control de cambios preciso y certero sobre el Software desarrollado.

- 3 - Con el presente estudio, mediante el análisis lógico de la necesidad planteada de mantener en constante actualización los archivos de múltiples aplicaciones Web desde diversos puestos de trabajo, se buscó hallar un mecanismo de acción que resuelva el requerimiento de forma fehaciente, evitando la generación de conflictos subyacentes encontrados en las alternativas pragmáticas «ut supra» mencionadas. El laboratorio realizado pretende sentar precedente empírico para la resolución lógica y efectiva del requerimiento, mediante el uso concomitante de jaulas chroot y un sistema de control de versiones distribuido. Materiales y Métodos Equipo empleado Para realizar el laboratorio se ha empleado un Servidor Virtual Dedicado (VPS) con 512 MB de RAM, IP fija dedicada y disco SSD de 20 GB con microprocesador de 1 núcleo. El VPS se instaló con la versión 7.0 del sistema operativo Debian GNU/Linux para arquitecturas de 32 bits. Paquetes y herramientas instaladas Servidor Web : Apache 2.2 Enjaulado chroot: JailKit 1 2.17 SCV distribuido: Bazaar 2 2.6 Paquetes adicionales : GNU C Compiler (gcc) y build-essential 3 (para compilar e instalar JailKit); Vim (como editor de textos) 1 http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz 2 http://bazaar.canonical.com 3 https://packages.debian.org/es/wheezy/build-essential

- 4 - Procedimiento 1. Instalación de paquetes necesarios mediante apt: apt-get install gcc build-essential vim apache2 bzr 2. Obtención, compilación e instalación de JailKit: wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz tar -xzvf jailkit-2.17.tar.gz && cd jailkit-2.17./configure make && make install 3. Creación del contenedor de proyectos (directorio en el que se alojarán las aplicaciones web) mkdir -p /srv/projects/jails 4. Creación de las jaulas para cada proyecto mkdir -p /srv/projects/jails/{proyecto1,proyecto2,proyecto3}/www Solo a los fines prácticos del laboratorio, dentro de cada una de las carpetas de los proyectos, se creó una carpeta denominada www la cual ha sido utilizada como ruta para el DocumentRoot de cada uno de los respectivos VirtualHost de Apache. No se crearon estructuras de directorios complejas para las aplicaciones Web puesto que las mismas no hubieran podido influir en el resultado del estudio. Así mismo, como único contenido de los archivos VirtualHost, solo se indicaron las directivas ServerName y DocumentRoot sin ningún otro agregado. 5. Creación de los grupos de trabajo Se crearon tres grupos de usuarios, denominados equipo1, equipo2 y equipo3 respectivamente. groupadd <equipo> 6. Creación de usuarios Se crearon cuatro usuarios para cada par de grupo/proyecto:

- 5 - useradd -g <equipo> -md /home/<usuario> -s /bin/bash <usuario> Posteriormente se estableció una contraseña de acceso diferente a cada uno de los usuarios: passwd <usuario> 7. Copia de recursos necesarios en cada una de las jaulas Para poder disponer del intérprete de Python en cada una de las jaulas (necesario para el funcionamiento de Bazaar), así como de sus binarios, dependencias e incluso, páginas man, se agregó una sección [python] al archivo de configuración 4 de JailKit con todas las rutas obtenidas a través del comando whereis python. Se agregaron una a una, para cada proyecto, las secciones python, ssh, jk_lsh, editors, basicshell y extendedshell: jk_init -vj /srv/projects/jails/<proyecto>/ <seccion> Bazaar se copió en cada una de las carpetas, mediante la opción jk_cp de JailKit: jk_cp /srv/projects/jails/<proyecto>/ bzr 8. Asignación recursiva de los grupos creados a cada uno de los directorios del DocumentRoot de los proyectos chown -R :<equipo> /srv/projects/jails/<proyecto>/www Dado que por defecto el grupo no contaba con permisos de escritura y éstos serían necesarios para que los miembros del equipo pudiesen escribir en la carpeta del proyecto consignado, los mismos han sido asignados de forma manual: chmod 775 -R /srv/projects/jails/{proyecto1,proyecto2,proyecto3}/www 9. Asignación de usuarios a cada una de las jaulas jk_jailuser -m -j /srv/projects/jails/<proyecto>/ <usuario> 4 /etc/jailkit/jk_init.ini

- 6-10. Prueba Al intentar conectar a uno de los nuevos usuarios mediante SSH, la conexión se cerraba inmediatamente después de aportar la contraseña consignada al usuario. Se editó el archivo passwd de la jaula del usuario, modificando la shell que JailKit establece por defecto, cambiando la ruta /usr/sbin/jk_lsh por la de la shell de GNU Bash, /bin/bash resolviendo así el problema. Sin embargo, tras lograr la conexión mediante SSH, el promt de la shell mostraba la leyenda «I have no name!» en lugar del nombre del usuario. El problema fue erradicado tras copiar la librería de resolución de nombres del sistema, dentro de la jaula del usuario: jk_cp <jail-path> /lib/i386-linux-gnu/libnss_compat.so.2 11. Creación de ramas y repositorios Conectados ya como usuarios, fue posible convertir la carpeta www de cada proyecto, en un repositorio y asignarlo a la vez como rama principal, tras presentar el usuario a Bazaar: bzr whoami "$USER <$USER@$HOSTNAME>" bzr init-repo /www cd /www bzr init Una vez creadas las ramas y repositorios, se realizaron los branch desde cada uno de los ordenadores locales de los miembros del equipo, habiendo logrado operar de forma absolutamente normal y sin inconvenientes inesperados.

- 7 - Resultados El enjaulado chroot fue exitoso al 100%. Los miembros de un grupo no pudieron acceder más allá de la carpeta raíz asignada al proyecto que les fue consignado. Los integrantes de cada grupo de desarrollo tuvieron a su disposición los comandos y herramientas fundamentales para trabajar en el equipo remoto con total libertad, sin afectar por ello la seguridad del servidor. El trabajo mediante el sistema de control de versiones permitió un control preciso y cuidado de la aplicación desarrollada y evitó por completo la sobre-escritura y/o el borrado accidental de archivos así como la falta de actualización de los mismos. Discusión La incapacidad de los usuarios enjaulados de ejecutar comandos del sistema que requieran permisos de administrador, puede suponer un problema considerable a la hora de mantener al día aplicaciones Web que requieran un gateway entre la aplicación y el servidor Web, como podría ser el caso de las aplicaciones Web desarrolladas en Python, ya que el gateway requiere del reinicio del servidor Web en cada cambio del código fuente, para mantener al día la aplicación. Finalizado el laboratorio principal, los escasos intentos por poner a disposición de los usuarios enjaulados servicios como Apache y MySQL han sido infructuosos. No obstante, se contempla como tema de investigación futura. A fin de reforzar la seguridad del sistema, sería factible -sin lugar a dudas-, la habilitación de acceso mediante autentificación RSA en lugar del uso de contraseñas, a fin de restringir no solo la conexión desde equipos autorizados, sino además, frustraría cualquier tipo de ataque por fuerza bruta. i Eugenia Bahit LAECI (Laboratorio de Altos Estudios en Ciencias Informáticas) 483 Green Lanes. London, N13 4BS (UK)