Skip to content
  • Acerca del Sitio
  • Contactame
  • SiteMap

Guatewireless.org

Linux para servidores empresariales, Bitcoin blockchain

  • Acerca del Sitio
  • Contactame
  • SiteMap
  • Toggle search form

Configurar rssh Chroot Jail en Linux para bloquear a los usuarios en su directorio home

Posted on 24/10/200824/05/2013 By Linux Gratis No hay comentarios en Configurar rssh Chroot Jail en Linux para bloquear a los usuarios en su directorio home

El dia de hoy un amigo me pregunto como puede restringir a un usuario para que cuando se conecte por ssh solo tenga acceso a su /home.

Esto de restringir acceso a los directorios del sistema de un usuario en especifico no es nada nuevo, pero yo lo desconocia.

Asi que para no quedar mal me puse a investigar y encontre que el software rssh soporta la opcion de chroot. Si queremos encarcelar usuarios tenemos la opcion chrootpath.

chrootpath

Esta opcion es utilizada para establecer el directorio raiz donde la cárcel chroot estara ubicada, esto con el fin de aumentar la seguridad del sistema.

Un chroot en Linux o Unix es una operacion la cual cambia el directorio raiz para el usuario. Solo afecta el proceso actual y sus hijos.

Si tu directorio home predeterminado es /home/usuario normalmente puedes acceder a los archivos en los directorios /etc, /bin o sbin. Esto permite a un atacante instalar programas desde el servidor web dentro de /tmp. La funcionalidad de chroot permite restringuir los accesos al sistema de archivos y encierra al usuario dentro de su directorio inicial o home.

Configurando rssh chroot

Directorio Chroot: /usuarios
Es posible montar el sistema de archivoscon las opciones noexec/nosuid para mejorar la seguridad.

Directorios requeridos en la jaula:

  • /usuarios/dev – Archivo de dispositivos
  • /usuarios/etc – Archivos de configuracion tales como passwd
  • /usuarios/lib – Librerias compartidas
  • /usuarios/usr – rssh y otros binarios
  • /usuarios/bin – Copiar el shell predeterminado (/bin/csh o /bin/bash)

Archivos necesarios en la jaula en el directorio /usuarios (predeterminado para RHEL / CentOS / Linux Debian ):

  • /etc/ld.so.cache
  • /etc/ld.so.cache.d/*
  • /etc/ld.so.conf
  • /etc/nsswitch.conf
  • /etc/passwd
  • /etc/group
  • /etc/hosts
  • /etc/resolv.conf
  • /usr/bin/scp
  • /usr/bin/rssh
  • /usr/bin/sftp
  • /usr/libexec/openssh/sftp-server o /usr/lib/openssh/sftp-server
  • /usr/libexec/rssh_chroot_helper o /usr/lib/rssh/rssh_chroot_helper (el suid tiene que ser establecido en este binario)
  • /bin/sh or /bin/bash (shell predeterminado)

Para aumentar la seguridad limiten la cantidad de binarios dentro de la jaula al minimo. Usualmente /bin/bash y /bin/sh no son necesarios pero en algunos sistemas puede dar error.

Acerca del sistema de archivos

Los archivos tienen que estar dentro del directorio de la jaula (en nuestro caso de ejemplo, /usuarios) y a su vez dentro de directorios que imiten su ubicacion en el sistema de archivos de root (/).
Por ejemplo, /usr/bin/rssh se encuentra en /. Si nuestra jaula esta localizada en /usuarios, entonces copiamos /usr/bin/rssh a /usuarios/usr/bin/rssh.

Las siguientes instucciones han sido probadas satisfactoriamente en:

  • FreeBSD
  • Solaris UNIX
  • RHEL / Redhat / Fedora / CentOS Linux
  • Debian Linux

Constuyendo el entorno Chroot

Creamos todos los directorios necesarios:

deathbian:~# mkdir -p /usuarios/{dev,etc,lib,usr,bin}
deathbian:~# mkdir -p /usuarios/usr/bin
deathbian:~# mkdir -p /usuarios/libexec/openssh

Creamos /usuarios/dev/null:

deathbian:~# mknod -m 666 /usuarios/dev/null c 1 3

Copiamos los archivos de configuracion de /etc/, dentro del directorio de la jaula /usuarios/etc:

deathbian:~# cd /usuarios/etc
deathbian:~# cp /etc/ld.so.cache .
deathbian:~# cp -avr /etc/ld.so.cache.d/ .
deathbian:~# cp /etc/ld.so.conf .
deathbian:~# cp /etc/nsswitch.conf .
deathbian:~# cp /etc/passwd .
deathbian:~# cp /etc/group .
deathbian:~# cp /etc/hosts .
deathbian:~# cp /etc/resolv.conf .

Abrimos los archivos /usuarios/group y /usuarios/passwd para remover las cuentas de root y las demas.

Ahora copiamos los archivos binarios requeridos hacia el directorio /usuarios/bin:

deathbian:~# cd /usuarios/usr/bin
deathbian:~# cp /usr/bin/scp .
deathbian:~# cp /usr/bin/rssh .
deathbian:~# cp /usr/bin/sftp .
deathbian:~# cd /usuarios/usr/libexec/openssh/
deathbian:~# cp /usr/libexec/openssh/sftp-server .
O
deathbian:~# cp /usr/lib/openssh/sftp-server .
deathbian:~# cd /usuarios/usr/libexec/
deathbian:~# cp /usr/libexec/rssh_chroot_helper
O
deathbian:~# cp /usr/lib/rssh/rssh_chroot_helper
deathbian:~# cd /usuarios/bin/
deathbian:~# cp /bin/sh .
O
deathbian:~# cp /bin/bash .

Copiamos todos los archivos de las librerias compartidas

Los archivos de las librerias que cualquiera de estos archivos necesite se pueden encontrar utilizando el comando ldd / strace. Por ejemplo, al correr ldd contra /usr/bin/wget, produce la siguiente informacion:

deathbian:~# ldd /usr/bin/wget
linux-gate.so.1 =>  (0xb7fdc000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7fc2000)
librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7fb9000)
libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xb7f76000)
libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7e34000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7ce5000)
/lib/ld-linux.so.2 (0xb7fdd000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7ccd000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7cb8000)

Necesitamos copiar todas esas librerias, les recomiendo usar el script l2chroot con este proposito. El script lo descargan de esta manera:

deathbian:~# cd /sbin
deathbian:~# wget -O l2chroot http://www.cyberciti.biz/files/lighttpd/l2chroot.txt
deathbian:~# chmod +x l2chroot

Editamos el script l2chroot y cambian la variable BASE por nuestro directorio chroot (jail), BASE=”/usuarios”:
Ahora copiamos todos los archivos de las librerias compartidas:

deathbian:~# l2chroot /usr/bin/scp
deathbian:~# l2chroot /usr/bin/rssh
deathbian:~# l2chroot /usr/bin/sftp
deathbian:~# l2chroot /usr/libexec/openssh/sftp-server
O
deathbian:~# l2chroot /usr/lib/openssh/sftp-server
deathbian:~# l2chroot /usr/libexec/rssh_chroot_helper
O
deathbian:~# l2chroot /usr/lib/rssh/rssh_chroot_helper
deathbian:~# l2chroot /bin/sh
O
deathbian:~# l2chroot /bin/bash

Modificar la Configuracion de Syslogd

La funcion de la libreria de syslog trabaja escribiendo mensajes a un archivo FIFO como /dev/log. Se necesita pasar la opcion -a /path/to/chroot/dev/log. Utilizando este argumento se puede especificar sockets adicionales en los que syslogd escucha. Esto es necesario si van a permitir que un daemon corra dentro del entorno chroot(). Se pueden utilizar hasta 19 sockets adicionales. Si el entorno necesita mas, se puede aumentar el simbolo MAXFUNIX dentro del archivo fuente syslogd.c.

Editamos el archivo /etc/sysconfig/syslog, buscamos la linea:
SYSLOGD_OPTIONS="-m 0"
y la cambiamos por:
SYSLOGD_OPTIONS="-m 0 -a /usuarios/dev/log"

Guardamos y cerramos el archivo para luego reiniciar syslog.

deathbian:~# /etc/init.d/syslog restart

Si estan utilizando Debian / Ubuntu, apliquen estos cambios descritos al archivo /etc/default/syslogd.

Establecer el path de chroot

Editamos el archivo /etc/rssh.conf, y cambiamos la variable a chrootpath=/usuarios y guardamos.

Agregar el usuario a la jaula

Ahora configuramos la cuenta del usuario de rssh. Por ejemplo, con el siguiente comando agregamos al usuario fher98 dentro de chroot:

deathbian:~# useradd -m -d /usuarios/fher98 -s /usr/bin/rssh fher98
deathbian:~# passwd fher98

Ahora fher98 puede logearse usando sftp o copiar archivos utilizando scp. Incluso podra crear, trabajar y transferir archivos, pero no tendra acceso a navegar a otro directorio del sistema.

Related

Howto, Linux Tags:chroot jail, csh, servidor web, usr bin

Navegación de entradas

Previous Post: Google libera su plataforma móvil Android como proyecto de código abierto
Next Post: Como extraer archivos de imágenes ISO de un cd o dvd en Linux

More Related Articles

Linux Kernel 2.6.22, mas limpio, mas compacto y con soporte Wireless nativo Kernel
Personalizando la pantalla de arranque de Grub Howto
Como crear imagenes ISO de un CD o DVD en Linux Ubuntu/Debian Administracion de Sistemas
Ubuntu Linux: Como descomprimir 7z Linux
Linux: Se debe de utilizar el doble de la cantidad RAM de espacio Swap? Linux
Iptables Bloquear IP Linux

Deja tus preguntas o comentariosCancel reply

  • Bitcoin, divisas y criptomonedas: Potencial y perspectivas | Análisis 2023
    ?? Resumen video : Gareth Soloway Bitcoin, prepárate …
  • El desmoronamiento de Silicon Valley Bank: la crisis de bancaria del 2023
    En marzo de 2023, el mundo financiero se vio sacudido …
  • SegWit – Bitcoin Segregated Witness
    A medida que Bitcoin continúa ganando popularidad y …
  • Ley Bitcoin en El Salvador
    Bitcoin como moneda de curso legal En los últimos …
  • Como Instalar Java Ubuntu 20.10
    En este articulo les muestro como instalar Oracle Java …

Bitcoin y Blockchain

  • El ascenso y la caída de Mt. Gox 2013 – 2014
    Desde sus inicios, la revolución del Bitcoin se ha …
  • 6 Mitos de Bitcoin
    Los Seis Mitos de Bitcoin Empecemos por dejar las …
  • Criterios tributarios de Criptomonedas en Estados Unidos 2,020
    Introducción Este documento no pretende explicar que …
  • Como Instalar cgminer en Linux (Debian Ubuntu Mint)
    cgminer instalación y configuración en Linux Debian, …
  • SegWit – Bitcoin Segregated Witness
    A medida que Bitcoin continúa ganando popularidad y …

Siguenos

  • Facebook
  • Twitter

Copyright © 2023 Guatewireless.org.

Powered by PressBook Green WordPress theme