El shell restringido es un shell de Unix que limita algunas de las capacidades disponibles para una sesión de usuario interactiva o para un script de shell que se ejecuta dentro de ella. Su objetivo es proporcionar una capa adicional de seguridad, pero resulta insuficiente para impedir la ejecución de software completamente no confiable. El modo restringido se encuentra en el shell Bourne original [ 1 ] y en su sucesor , Bash [ 2 ] , y en KornShell [ 3 ] . En algunos casos, un shell restringido se utiliza junto con un entorno chroot , en un intento adicional de limitar el acceso al sistema en su conjunto.
Invocación
El modo restringido del intérprete de comandos Bourne shell sh , y sus equivalentes POSIX, se utiliza cuando el intérprete se invoca de una de las siguientes maneras:
- sh -r Tenga en cuenta que esto entra en conflicto con la opción "read" en algunas 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 Bash se invoca de una de las siguientes maneras:
- rbash
- bash -r
- bash --restricted
De manera similar, el modo restringido de KornShell se produce invocándolo de la siguiente manera:
- rksh
- ksh -r
Configurando rbash
Para algunos sistemas (por ejemplo, CentOS ), la invocación a través de rbash no está habilitada por defecto, y el usuario obtiene un error.comando no encontradoerror si se invoca directamente, o un fallo de inicio de sesión si el archivo /etc/passwd indica /bin/rbash como el intérprete de comandos del usuario.
Basta con crear un enlace llamado rbash que apunte directamente a bash . Aunque esto invoca a Bash directamente, sin las opciones o , Bash reconoce que fue invocado a través de rbash y se abre como un intérprete de comandos restringido.-r--restricted
Esto se puede lograr con los siguientes comandos sencillos (ejecutados como root, ya sea iniciando sesión 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:
- cambiando de directorio
- especificando rutas absolutas o nombres que contengan una barra diagonal.
- establecer la variable PATH o SHELL
- redirección de la salida
Bash añade más restricciones, entre ellas: [ 2 ]
- limitaciones en las definiciones de funciones
- Limitaciones en el uso de nombres de archivo con barra diagonal en las funciones integradas de Bash.
Las restricciones en la KornShell restringida son muy similares a las de la Bourne shell restringida. [ 4 ]
Debilidades de una capa restringida
La consola restringida no es segura. Un usuario puede salir del entorno restringido ejecutando un programa que incluya una función de shell. A continuación, se muestra un ejemplo de cómo se utiliza la función de shell en vi para escapar de la consola restringida:
usuario@host:~$ vi : establecer shell = /bin/ sh : shellO simplemente iniciando una nueva sesión de shell sin restricciones, si está en la variable PATH , como se muestra aquí:
usuario@host:~$ rbash usuario@host:~$ cd / rbash: cd: restringido usuario@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:
Véase también
Referencias
- ↑ "Especificación POSIX sh" . Archivado del original el 21/12/2014 . Consultado el 04/10/2010 .
- 1 2 Manual de GNU Bash
- ↑ Manual de ksh , página del manual de Solaris (SunOS 5.10), Oracle Inc.
- ↑ Página del manual ksh(1) , conjunto de documentación de IBM AIX
- ↑ Costales, Bryan; Assmann, Claus; Jansen, George; Shapiro, Gregory Neil (2007). Sendmail . Serie O'Reilly (4.ª ed.). O'Reilly Media, Inc. pág. 379. ISBN 9780596510299. Recuperado el
2
de
agosto de 2012.Como ayuda para prevenir [...] ataques, sendmail V8.1 ofreció por primera vez el programa smrsh ( sendmail restricted shell ) .
- shells de comandos