El shell restringido es un shell de Unix que restringe algunas de las capacidades disponibles para una sesión de usuario interactiva, o para un script de shell , que se ejecuta dentro de él. Está destinado a proporcionar una capa adicional de seguridad, pero es insuficiente para permitir la ejecución de software que no es de confianza. Una operación en modo restringido se encuentra en el shell Bourne original [1] y su contraparte posterior Bash , [2] y en el KornShell . [3] En algunos casos, se usa un shell restringido junto con una cárcel chroot , en un intento adicional de limitar el acceso al sistema como un todo.
Invocación
El modo restringido del shell Bourne sh , y sus similares de trabajo POSIX, se utiliza cuando se invoca al intérprete de una de las siguientes formas:
- sh -r tenga en cuenta que esto entra en conflicto con la opción "leer" en algunos variantes de sh
- rsh tenga en cuenta que esto puede entrar en conflicto con el comando de shell remoto , que también se llama rsh en algunos sistemas
El modo restringido de Bash se utiliza cuando se invoca a Bash de una de las siguientes formas:
- rbash
- bash -r
- bash --restricted
De manera similar, el modo restringido de KornShell se produce invocándolo así:
- rksh
- ksh -r
Configuración de rbash
Para algunos sistemas (por ejemplo, CentOS ), la invocación a través de rbash no está habilitado de forma predeterminada y el usuario obtiene unComando no encontradoerror si se invoca directamente, o un error de inicio de sesión si el archivo / etc / passwd indica / bin / rbash como shell del usuario.
Basta con crear un enlace llamado rbash apuntando directamente a bash . Aunque esto invoca a Bash directamente, sin las opciones -ro --restricted, Bash reconoce que fue invocado a través de rbash y aparece como un shell restringido.
Esto se puede lograr con los siguientes comandos simples (ejecutados como root, ya sea con la sesión iniciada como usuario root o usando sudo ):
root @ host: ~ # cd / bin root @ host: / bin # ln bash rbash
Operaciones limitadas
Las siguientes operaciones no están permitidas en un shell restringido:
- cambiar de directorio
- especificar nombres de ruta absolutos o nombres que contienen una barra
- establecer la variable PATH o SHELL
- redirección de salida
Bash agrega más restricciones, que incluyen: [2]
- limitaciones en las definiciones de funciones
- limitaciones en el uso de nombres de archivo con barra inclinada en las funciones integradas de Bash
Las restricciones en el KornShell restringido son muy similares a las del shell Bourne restringido. [4]
Debilidades de un caparazón restringido
El caparazón restringido no es seguro. Un usuario puede salir del entorno restringido ejecutando un programa que cuenta con una función de shell. El siguiente es un ejemplo de la función de shell en vi que se utiliza para escapar del shell restringido:
usuario @ host: ~ $ vi
: establecer shell = / bin / sh : shell
O simplemente iniciando un nuevo shell sin restricciones, si está en el PATH , como se demuestra aquí:
usuario @ host: ~ $ rbash usuario @ host: ~ $ cd / rbash: cd: usuario restringido @ host: ~ $ bash usuario @ host: ~ $ cd / usuario @ host: / $
Lista de programas
Más allá de los modos restringidos de los shells habituales, los programas de shell restringidos especializados incluyen:
Ver también
Referencias
- ^ Especificación POSIX sh
- ^ a b Manual de GNU Bash
- ^ ksh manual , página de manual de Solaris (SunOS 5.10), Oracle Inc.
- ^ ksh (1) página de manual , conjunto de documentación de IBM AIX
- ^ Costales, Bryan; Assmann, Claus; Jansen, George; Shapiro, Gregory Neil (2007). Sendmail . Serie Oreilly (4 ed.). O'Reilly Media, Inc. pág. 379. ISBN 9780596510299. Consultado el 2 de agosto de 2012 .
Como ayuda en la prevención de [...] ataques, sendmail V8.1 ofreció primero el programa smrsh ( s end m ail r estricted sh ell).