Cómo acceder a una única aplicación desde ssh?

Iniciado por WHK, 17 Abril 2015, 21:39 PM

0 Miembros y 1 Visitante están viendo este tema.

WHK

Hola, me gustaría tener un usuario en mi sistema linux (que puede ser con ubuntu o centos) el cual pueda tener acceso vía ssh unicamente a la ejecución de una aplicación, algo así como la película de las guerras de las galáxias via telnet pero en mi caso quiero prestar un servicio no http sino via terminal desde internet.

El software lo tengo y es un script en php el cual recibe comandos y muestra resultados.

Lo que hice para intentar hacer esto es crear un usuario nuevo en el servidor remoto:
# useradd --create-home -d /home/feedsh -s /home/feedsh/feedsh.sh feedsh

mi script feedsh.sh lo unico que hace es llamar al script en php y luego finalizar:
#!/bin/bash
php feedsh.php
exit


Asi que luego de poner los scripts en sh y php le hago un chown feedsh:feedsh . -R y le doy permisos de ejecución con chmos +x feedsh.sh y listo.

El tema es que no quiero correr riesgos de que alguna persona pueda ejecutar comandos arbitrarios o tenga acceso a hacer otra cosa que no sea solamente ejecutar ese script. Como lo hice es suficiente? o debo considerar otras cosas?


MinusFour

Si yo creo que es suficiente. Cualquier argumento que le pasen a tu "shell", el script siempre va a ejecutar lo mismo.

WHK


Gh057

#4
Perdón, hablando siempre desde la ignorancia (y desde el sueño mientras preparo otro parcial...XD) pero... si bien no se pueda acceder a modificar el script por tener solamente permisos de ejecucción, un usuario malicioso no podría mover a otra ubicación el mismo, y crear uno  con el mismo nombre, mas con contenido apócrifo? En este momento no podría probar un entorno similar -me acabo de quedar sin carga en la tablet donde corro un linux enjaulado- pero, no sería factible?

Acabo de verlo con más detenimiento, y creo que restringiendo el usuario a la jaula, y controlando el acceso a unos pocos comandos, se evitaría... un usuario normal sin embargo, si podría mover la ubicación del script...

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...

MinusFour

Cita de: Gh057 en 18 Abril 2015, 07:31 AM
Perdón, hablando siempre desde la ignorancia (y desde el sueño mientras preparo otro parcial...XD) pero... si bien no se pueda acceder a modificar el script por tener solamente permisos de ejecucción, un usuario malicioso no podría mover a otra ubicación el mismo, y crear uno  con el mismo nombre, mas con contenido apócrifo? En este momento no podría probar un entorno similar -me acabo de quedar sin carga en la tablet donde corro un linux enjaulado- pero, no sería factible?

Acabo de verlo con más detenimiento, y creo que restringiendo el usuario a la jaula, y controlando el acceso a unos pocos comandos, se evitaría... un usuario normal sin embargo, si podría mover la ubicación del script...



Mientras que el script este protegido contra escritura nadie lo puede modificar. Idealmente el script deberia tener permiso 500 o dejar el archivo inmutable:

Código (bash) [Seleccionar]

sudo chattr +i /home/feedsh/feedsh.sh

WHK

Pero ojo, el usuario no podrá acceder a la cuenta si no es a traves del ssh asi que como podría mover el script? si el script mismo es el ejecutable de arranque?

MinusFour

Cita de: WHK en 18 Abril 2015, 16:25 PM
Pero ojo, el usuario no podrá acceder a la cuenta si no es a traves del ssh asi que como podría mover el script? si el script mismo es el ejecutable de arranque?

El punto es que si tienes permisos de escritura para otros usuarios fuera de ese usuario, los otros pueden sobreescribir el archivo y ejecutar el codigo atraves de SSH. La mascara por defecto creo que te deja con permisos 644 asi que lo mas probable es que solo el dueño tenga permisos de escritura. Personalmente no me arriesgaria a dejarle ese permiso, simplemente porque en ningun momento quisiera que el usuario escribiera sobre el archivo.

WHK

#8
Ahh si, pero de todas maneras yo soy el único que accede a la maquina completa, el único acceso que dejaré de forma remota es el ssh de ese usuario en específico con ese script, todo el resto se entra con un usuario con privilegios elevados y se acabó.

De todas maneras lo tendré presente y le aplicacré dichos permisos.

Hace un tiempo tuve un problema muy similar pero con apache ya que intenté utilizar user_dir el cual me permitía tener un public_html por cada usuario en su propio home pero al final desde el apache cualquier usuario podía acceder al directorio del otro usuario a leer ya que apache se ejecutaba con permisos de www-data y al final a todos los directorios home había que darle permisos de lectura grupal 755 para que apache pudiera leer todos los homes o darle chown www-data:www-data a todos los public_html. Estuve averiguando y la única solucuión a esto era utilizar jail o un módulo de apache que no es oficial y ya está descontinuado :( pero en fin... eso ya es otro tema.