grupo1_usuarios, enjaulado seguridad y monitoreo usando snort
TRANSCRIPT
1
Resumen— El presente artículo se centra en el despliegue de
un esquema básico de seguridad en un sistema Debian,
comenzando por la creación de usuarios y la asginación de
permisos; se procede luego a enjaular uno de esos usuarios
para demostrar como es posible asegurar la integridad de los
directorios clave del sistema y del contenido de otros usuarios.
Finalmente, se instala en analizador de paquetes Snort y se
prueba su funcionamiento utilizando Nessus para simular un
ataque externo, se explora el sistema de reglas de Snort
definiendo alertas sobre el acceso a dos sitios web específicos
y se analizan los logs generados por el programa para ambos
casos.
.
Índice de Términos— Cuentas de usuario, Detección de
intrusos, Enjaulado de usuarios, Seguridad en Debian, Snort.
I. INTRODUCCIÓN
na de las principales características de Linux, como
sistema basado en UNIX, es el soporte para múltiples
usuarios. En un entorno multiusuario es importante
garantizar la integridad y la seguridad de los datos de cada
quien, la definición de un esquema de usuarios es el primer
paso hacia este objetivo. Por defecto cualquier sistema
operativo basado en Linux requiere un usuario raíz (también
llamado root o superusuario) con control y potestad total sobre
el sistema; sin embargo, según se considere necesario, pueden
agregarse usuarios y grupos de ellos con diferentes niveles de
acceso y permisos especiales.
Si se desea que un sistema explote realmente su capacidad
multiusuario es necesario que varios usuarios se conecten al
tiempo mediante algún protocolo de comunicación (SSH,
telnet, etc.), en esta situación puede resultar conveniente
restringir el acceso de cada usuario a solo un conjunto de
directorios específicos (por ejemplo, la propia HOME), para lo
cual es útil la técnica de enjaulado de usuarios [1].
Otro punto importante con miras a proteger el sistema es la
detección de intrusos y de vulnerabilidades que pudieran
aprovechar eventuales atacantes; existen en el mercado varios
productos software para la monitorización de sistemas,
destacando Snort por su potencia, utilidad y facilidad de uso,
Julian Andrés Quiroga García, estudiante de ingeniería de sistemas de la
Universidad Industrial de Santander. E-mail: [email protected]
Jesús Alberto Muñoz Mesa estudiante de ingeniería de sistemas de la
Universidad Industrial de Santander. E-mail: [email protected] Lizeth Johana García Guerrero estudiante de ingeniería de sistemas de la
Universidad Industrial de Santander. E-mail: [email protected]
Alexander Martínez Méndez estudiante de ingeniería de sistemas de la Universidad Industrial de Santander. E-mail: [email protected]
surgido como alternativa libre a las costosas opciones
comerciales que imperaban en la época.
II. MARCO TEÓRICO
A. Usuarios Linux
El acceso a cualquier sistema basado en Unix requiere de una
cuenta de usuario compuesta por un nombre de usuario y una
contraseña; así mismo, es obligatorio que esté incluída en por
lo menos un grupo de usuarios. Cada cuenta otorga una ruta
donde se almacena el perfil y los documentos del usuario
(comúnmente ubicada bajo el directorio /home) y un intérprete
de comandos (shell) para la ejecución de aplicaciones [2].
El sistema Unix codifica los usuarios con un número diferente
a cada uno que es el identificador de usuario (UID = User
IDentifier). Internamente el sistema trabaja con el uid, no con
el nombre del usuario. Normalmente a los usuarios que se
crean se les asignan uids desde 1000 en adelante. Los números
uid menores que 100 se reservan para usuarios especiales del
sistema.
1) Superusuario (root o raíz): con acceso total al sistema y
que suele utilizarse para fines administrativos. El sistema
asume que el administrador del sistema sabe exactamente lo
que se está haciendo. Su UID es 0.
II) Usuario del sistema: que éste mismo define, con algunos
privilegios y permisos de acceso a recursos y servicios
seguros; Se les llama también cuentas del sistema.
No tienen contraseñas pues son cuentas que no están
diseñadas para iniciar sesiones con ellas, se crean
(generalmente) automáticamente al momento de la instalación
de Linux o de la aplicación. Generalmente se les asigna un
UID entre 1 y 100 [3].
III) Usuario normal: que requiere autorización del root para
ejecutar cualquier recurso o servicio seguro; Se usan para
usuarios individuales, cada usuario dispone de un directorio de
trabajo, ubicado en /home y puede personalizar su entorno de
trabajo, tienen solo privilegios completos en su directorio de
trabajo. Generalmente se le asigna un UID superior a 500.
IV) Usuarios de red: utilizados para varias actividades de
red y para la conexión a diferentes sistemas a través de la red.
El usuario podrá acceder remotamente a la máquina virtual
conectado desde un computador diferente en la misma red a
través del protocolo Secure Shell (SSH). Teniendo en cuenta
que fuera de ella no sería posible, ya que la máquina virtual no
Usuarios, enjaulado y monitorización Snort en
Linux.
Julian Quiroga, Jesús Muñoz, Lizeth García, Alexander Martínez. EISI, UIS
U
2
cuenta con una IP pública. Generalmente se le asigna un UID
superior a 6000.
V) Pseudousuario: que son réplicas del superusuario a las
que éste les ha concedido permisos similares.
VI) Usuario Enjaulado: es un usuario creado sin
privilegios, en el cual su carpeta de usuario (home) se crea
desde el inicio y se le asigna una cantidad de herramientas
limitadas. Para la creación de nuestro usuario utilizamos una
herramienta llamada Jailkit la cual en el fondo utiliza el
comando chroot, comando utilizado para la correcta
instalación de estos usuarios.
B. Monitorización
La monitorización es una parte integral de cualquier política
de seguridad por muchas razones; una de ellas, que la
seguridad no se reduce a la confidencialidad de los datos, sino
que también incluye la garantía de disponibilidad de los
servicios. Por tanto, es imprescindible comprobar que todo
funcione como se espera y detectar de manera oportuna
cualquier comportamiento anómalo o variación en la calidad
de los servicios prestados. Monitorizar la actividad puede
ayudar a detectar intentos de intrusión y permite una reacción
rápida antes de que aparezcan consecuencias graves [4].
C. Sistema de detección de intrusos (IDS)
Es una herramienta de seguridad que permite monitorizar
los eventos que tienen lugar en un sistema informático
tratando de identificar intentos de intrusión. Un intento de
intrusión se define como cualquier tentativa de comprometer
la integridad, disponibilidad o confidencialidad del sistema o
de evadir los mecanismos de seguridad internos de una red o
un host; hay varias formas de intrusión: Ataques remotos
desde internet, usuarios del sistema procurando privilegios que
no les ha sido asignados o usuarios haciendo mal uso de sus
permisos.
Dentro de las ventajas de los IDS se barajan la disuasión de
posibles atacantes, el descubrimiento de vulnerabilidades no
previsibles de otro modo, la detección de preámbulos de
ataques, el soporte para la documentación del riesgo de la
organización y, como última instancia, el proporcionar
informacón útil sobre intrusiones en curso [5].
D. Snort
Snort es una aplicación de seguridad moderna disponible
bajo licencia GNU concebida inicialmente como un analizador
de paquetes, aunque ahora cuenta con otros dos modos de
funcionamiento adicionales: Registrador de paquetes y sistema
de detección de intrusos basado en red (NIDS). Por defecto,
trabaja solo con los protocolos de la pila TCP/IP; sin embargo,
es posible agregar soporte a otros por medio de extensiones.
Dispone de gran cantidad de add-ons con los cuales
incrementar la funcionalidad, además de soporte para
diferentes sistemas operativos.
Snort no plantea grandes requerimientos de hardware para
su funcionamiento, pero se ve limitado por el espacio en disco
disponible para la captura de datos y la velocidad de las
conexiones de red. Igualmente, utiliza reglas para clasi
Está diseñado con una arquitectura compuesta por cuatro
componentes bien diferenciados: El analizador, el
preprocesador, el motor de detección y la salida. El analizador
se encarga de tomar todos los paquetes del backbone de la red
y enviarlos al preprocesador quien decide qué tratamiento dar
a cada paquete, a continuación el motor de detección utiliza
las reglas para clasificar los paquetes y generar las salidas
necesarias (alertas, por ejemplo) [6]. Véase la figura 1.
E. Nessus
Nessus es un explorador de seguridad de servicio completo.
La arquitectura de extensiones de Nessus permite a los
usuarios personalizarlo para sus sistemas y redes. Como
cualquier otro explorador, Nessus es bueno sólo si la base de
datos de firmas es buena. Afortunadamente, Nessus es
actualizado con frecuencia. Esta caracterizado por tener
facilidades completas de informes, exploración de hosts y
búsquedas de vulnerabilidades en tiempo real. Pueden existir
falsos positivos y falsos negativos, aún en una herramienta tan
poderosa y tan actualizada como Nessus.
En operación normal, nessus comienza escaneando los
puertos con nmap o con su propio escaneador de puertos para
buscar puertos abiertos y después intentar varios exploitspara
atacarlo. Las pruebas de vulnerabilidad, disponibles como una
larga lista de plugins, son escritos en NASL (Nessus Attack
Scripting Language, Lenguaje de Scripting de Ataque Nessus
por sus siglas en inglés), un lenguaje scripting optimizado para
interacciones personalizadas en redes.
Algunas de las pruebas de vulnerabilidades de Nessus
pueden causar que los servicios o sistemas operativos se
corrompan y caigan. El usuario puede evitar esto desactivando
"unsafe test" (pruebas no seguras) antes de escanear.
Actualmente existen dos versiones: "Home" y "Work" Esta
ultima de pago y sin restricciones [7] [8].
Fig. 1. Arquitectura de Snort
3
III. SELECCIÓN DE SOFTWARE
Se optó por utilizar como sistema operativo debían por la
seguridad y estabilidad que ofrece, características cruciales
para este tipo de equipos, además de las herramientas
preconfiguradas que trae y que facilitarían el despliegue y
administración de la infraestructura.
Para verificar la eficiencia de Snort se usó Nessus ya que es
una herramienta muy popular a la hora de encontrar y analizar
vulnerabilidades de software [9] [10].
IV. PROCEDIMIENTO
A. Instalación y configuración de Snort
La instalación se realizó siguiendo un tutorial disponible en
la web, los pasos seguidos se detallan a continuación:
1. Se descarga el instalador desde la terminal por medio del
comando apt-get install Snort [11].
2. Se elige el modo de arranque de Snort; en este caso se
escogió modo manual (fig. 4).
3. El instalador solicita la interfaz de red sobre la cual va a
operar Snort (fig. 5.).
4. Se ingresa la dirección de red local a la cual va a
monitorizar Snort (fig. 6.).
5. El programa sugiere reiniciar Snort, y se hizo por medio
de la línea de comandos con /etc/init.d/Snort restart (fig. 7.).
6. Por último se habilita el modo promiscuo de Snort
respondiendo negativamente cuando el instalador pregunta si
desea desactivarlo; así éste podrá funcionar de manera
completa (fig. 8.).
Fig. 2. Arquitectura de nessus
Fig. 4. Modo de arranque de Snort.
Fig. 5. Selección de interfaz.
Fig. 6. Configuración de la dirección de red.
Fig. 3. Descargando snort
4
B. Instalación y configuración de Nessus
La instalación se realizó bajo el siguiente procedimiento, en
una máquina virtual diferente a la que contiene el paquete
Snort; además, es prudente aclarar que para poder realizar los
pasos a continuación es necesario estar en modo de
superusuario.
1. Se accede a la página oficial y se descarga el archivo con
extensión .deb [12].
2. Se extrae e instala el paquete Nessus, esto puede hacerse
en modo gráfico o desde la línea de comandos; en este caso se
realizó desde la terminal con el comando dpgk -i Nessus-
5.2.7-debian6_i386.deb (fig. 10.).
3. Se procede a reiniciar el servicio por medio del comando
/etc/init.d/nessusd restart (fig. 11.).
4. Se accede a Nessus a través del navegador web
Iceweasel; y se procede a definir un usuario administrador
para poder utilizar los componentes que éste ofrece (fig. 12.).
C. Ejecución y puesta en marcha
Luego de tener los componentes software necesarios para
la realización de este proyecto se procede a su debida
ejecución para así observar y evaluar los resultados obtenidos.
1. Se configuran las reglas del IDS snort en la máquina
virtual snort host (fig. 13.).
2. Para probar el Snort, primero por medio del comando
/etc/init.d/snort restart se reanuda el servicio, él
Fig. 7. Sugerencia de reinicio de Snort.
Fig. 8. Deshabilitar el modo promiscuo Snort. Respuesta negativa.
Fig. 9. Archivo .deb para la instalación de Nessus.
Fig. 10. Extracción del paquete Nessus.
Fig. 11. Reinicio del servicio de Nessus.
Fig. 12. Página de inicio de Nessus.
5
automáticamente creará el archivo alert en /var/log/snort
siempre no exista ya; se abre el navegador web iceweasel y se
accede a ebay.com y wix.com. Por último, se observa el
contenido del log alert con el comando less (o con algún editor
de texto) (fig. 14, Fig.15.).
3. En la máquina virtual Nessus ataque se reanuda el
servicio de nessus por medio del comando /etc/init.d/nessusd
restart, luego abrimos Nessus con el navegador web
ingresamos con nuestro usuario grupo1 y escogemos una
política de escaneo; en este caso seleccionamos Host
Discovery.
4. Luego de hacer el escaneo con la política de detección de
puertos abiertos procedemos a observar y analizar los
resultados arrojados gráficamente por nessus.
I) Resultado del escaneo para la cantidad de host (fig. 17.).
II) Resultado de vulnerabilidades (fig. 18.)
V. ESQUEMA DE USUARIOS
A. Usuario Enjaulado
Los pasos para la creación de este usuario se detallan a
continuación:
Nota: Todos los comandos se deben ejecutar en modo
superusuario [13].
1. Instalación de la herramienta Jaikit. Para esto se
ejecutan los siguientes comando:
a. wget http://ftp.desdelinux.net/jailkit-
2.14.tar.gz.
b. tar xzf jailkit-2.14.tar.gz && cd jailkit-
2.14
c. ./configure.
Fig. 13. Reglas Snort.
Fig. 14. Alert Snort.
Fig. 15. Alert Snort.
Fig. 16. Escaneo Nessus.
Fig. 17. Resultado de hosts escaneo Nessus.
Fig. 18. Resultado de vulnerabilidades escaneo Nessus.
6
d. make.
e. make install.
2. El paso a seguir es la creación de la jaula para este
tipo de usuarios. en nuestro caso la creamos en
/opt/ y la llamamos jail. Los comandos se detallan
a continuación.
a. mkdir /opt/jail
b. chown root:root /opt/jail
3. Teniendo creada nuestra jaula, procedemos a
asignar las herramientas que va a poder utilizar el
usuario con los siguientes comandos.
a. jk_init -v /opt/jail basicshell
b. jk_init -v /opt/jail editors
c. jk_init -v /opt/jail extendedshell
d. jk_init -v /opt/jail netutils
e. jk_init -v /opt/jail ssh
f. jk_init -v /opt/jail sftp
g. jk_init -v /opt/jail jk_lsh
4. T Seguido a esto, creamos el usuario y lo
agregamos a la jaula con los siguientes comandos.
a. adduser enjaulado (ingresamos los datos
que nos solicite la terminal y
continuamos)
b. jk_jailuser -m -j /opt/jail enjaulado
cat /etc/passwd | grep jk_chroot
5. En este punto ya tenemos nuestro usuario
enjaulado, pero esta tan enjaulado, que no se
puede conectar por ssh. para permitir esta
conexión debemos modificar el archivo
etc/passwd de la jaula es decir
/opt/jail/etc/passwd, en este comentamos la linea
del usuario creado y colocamos la siguiente:
enjaulado:x:1002:1002::/home/enjaulado:/bin/b
ash.
Nos quedaría algo así:
root:x:0:0:root:/root:/bin/bash
enjaulado:x:1002:1002::/home/enjaulado:/b
in/bash
#enjaulado:x:1002:1002:enjaulado
Luego de hacer esto, ya el usuario podrá entrar sin
ningún tipo de problema y tendremos nuestro
usuario enjaulado.
B. Usuario Normal
La creación de este usuario se hizo por medio del comando
Useradd Estudiante el cual no posee ningún privilegio aparte
de leer archivos [14].
C. Usuario Administrador
Su creación se realizó a partir de las siguientes líneas de
comando [15]:
sudo adduser root
password: root
sudo/usr/sbin/visudo
Despues de esto, añadimos abajo de la línea donde pone
‗root‘,root (nuestro nombre de usuario), con las líneas de ALL
así:
# User privilege specification
root ALL=(ALL:ALL) ALL
root ALL=(ALL:ALL)
D. Usuario de Acceso remoto
Este cliente tendrá la capacidad de conectarse remotamente
medianteun cliente ssh.
Como superusuario:
apt-get install openssh-server
gedit/etc/ssh/sshd_config
/etc/init.d/ssh/ start
VI. CONCLUSIONES Y RECOMENDACIONES
La creación de un esquema de usuarios se constituye en el
primer paso en la definición de una política de seguridad para
cualquier sistema, la posibilidad de otorgar permisos y niveles
de acceso le concede al administrador la facultad de tener un
mayor y mejor control.
El enjaulado de usuarios es una técnica importante que
permite aislar a los usuarios unos de otros y mantener las
partes críticas del sistema fuera del alcance de ellos, es
especialmente útil cuando se permiten conexiones remotas.
El funcionamiento basado en reglas le concede a Snort gran
flexibilidad; así, el administrador puede decidir recibir alertas
sobre cierto tipo de contenido o incluso restringir el acceso al
mismo. Además, puede recibir información sobre actividad
inusual en la red, que le permita identificar posibles intentos
de vulneración al sistema.
A pesar de que en muchas ocasiones Snort no brinda
solución a los problemas que identifica, el simple hecho de
tener la información que éste provee le da al administrador la
facultad de tomar medidas por su cuenta. Por otro lado, cabe
recordar que la ejecución de Snort puede reducir el
rendimiento de las conexiones, y los logs generados, ocupar
grandes cantidades de disco duro (proporcional al nivel de
7
actividad que se registre); estos dos factores deben
considerarse al momento de desplegar el NIDS, puesto que de
lo contrario se estaría haciendo un esfuerzo en vano.
REFERENCIAS
[1] Instituto Nacional de Tecnologías Educativas y de Formación del
Profesorado. Usuarios y grupos de usuarios en Linux [En línea]. Disponible en:
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m1/usuari
os_y_grupos_de_usuarios_en_linux.html. [2] One Stop For Linux. Linux User Types [En línea]. Disponible en:
http://linuxsecuritysolutions.wordpress.com/2013/02/10/linux-user-
types/. [3] Linux Total. Administración de Usuarios [En línea]. Disponible en:
http://www.linuxtotal.com.mx/index.php?cont=info_admon_008
[4] Debian. Supervisión: prevención, detección, disuasión [En línea]. Disponible en: http://debian-handbook.info/browse/es-
ES/stable/sect.supervision.html.
[5] E.J. Mira Alfaro, ―Implantación de un Sistema de Detección de Intrusos en la Universidad de Valencia,‖ Proyecto Final de Carrera,
Escola Tècnica Superior D‘Enginyeria, Universidad de Valencia,
Valencia, España, 2002. [6] J. Beale et al., Snort 2.0 Intrusion Detection. Rockland, MA: Syngress.
2003, pp. 29 – 34.E. H. Miller, ―A note on reflector arrays (Periodical
style—Accepted for publication),‖ IEEE Trans. Antennas Propagat., to be published.
[7] Slideshare. Herramientas de Detección de Vulneraibilidades - NESSUS
[En línea]. Disponible en: http://es.slideshare.net/seguridadelinux/herramientas-de-deteccin-de-
vulnerabilidadesnessus.
[8] Wikipedia. Nessus. Disponible en: http://es.wikipedia.org/wiki/NessusW. D. Doyle, ―Magnetization
reversal in films with biaxial anisotropy,‖ in 1987 Proc. INTERMAG Conf., pp. 2.2-1–2.2-6.
[9] CSIRT-CV. Herramientas Escaneadora y Detectoras de Vulnerabilidades [En línea]. Disponible en:
http://www.csirtcv.gva.es/es/paginas/herramientas-escaneadoras-y-
detectoras-de-vulnerabilidades.html. [10] DesdeLinux. Las 11 mejores Aplicaciones de Hacking y Seguridad para
Linux [En línea]. Disponible en: http://blog.desdelinux.net/las-11-
mejores-aplicaciones-de-hacking-y-seguridad-para-linux/. [11] Debian. Setting up a Snort IDS [En línea]. Disponible en:
http://www.aboutdebian.com/snort.htm.
[12] Tenable. Nessus 5.2 Installation and Configuration Guide [En línea]. Disponible en:
http://static.tenable.com/documentation/nessus_5.2_installation_guide.p
df. [13] DesdeLinux. ¿Cómo enjaular a usuarios que se conecten por ssh? [En
línea]. Disponible en: http://blog.desdelinux.net/como-enjaular-jail-a-
usuarios-que-se-conecten-por-ssh/. [14] Instituto Nacional de Tecnologías Educativas y de Formación del
Profesorado. Administración de Usuarios y Grupos [En línea].
Disponible en: http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m1/admin
istracin_de_usuarios_y_grupos.html.
[15] A. Lara. Crear usuario con privilegios de root [En línea]. Disponible en:
http://www.alvarolara.com/2013/05/07/crea-usuario-con-privilegios-de-
root/.