Re: [suse-linux-s] Ejecución remota
Venga, me intentaré explicar bien... Tengo un script de en una máquina A, esta es la unica que puede mediante comandos rsh acceder a otras máquinas (y lo necesito en el script), por lo tanto es la unica que puede ejecutar este script. Pues bien, quiero hacer una interface web para el script, el problema es que la máquina A no tiene (ni debe tener) servidor web, por lo tanto uso una maquina servidora web (llamemosla B). El problema, como puede hacer que al pulsar un boton en una página web de la máquina B se ejecute un script en A. La respuesta sería facil, poniendo en el .rhost de A "<maquinaB> <usuarioWeb>". Pero con esto le daria permiso para que ejecutase mas cosas. ¿Como puede hacer que solo pueda ejecutar el script? que este sea el único acceso que tenga, no pueda hacer nada más (no me gustaria por una tonteria comprometer la seguridad de A). Es decir, hay alguna forma de decir (supongo que en la máquina A): El usuario <usuario> de la máquina B tiene permiso para ejecutar (solo) la aplicación X. Espero que ahora esté claro, Gracias, Enrique.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2006-01-26 a las 15:52 +0100, Enrique escribió:
La respuesta sería facil, poniendo en el .rhost de A "<maquinaB> <usuarioWeb>". Pero con esto le daria permiso para que ejecutase mas cosas. ¿Como puede hacer que solo pueda ejecutar el script? que este sea el único acceso que tenga, no pueda hacer nada más (no me gustaria por una tonteria comprometer la seguridad de A).
Se me ocurren varias maneras. Una es con ssh, puesto para poder entrar con el método de pareja de llaves y con la frase clave en blanco. Luego, puedes limitar lo que ejecuta me parece que con acl. Puedes ponerle una shell restringida, como rbash. Con ssh puedes lanzar un programa arbitrario en otra máquina, sin necesidad de entrar en una shell interactiva. Otra manera peculiar de disparar un script, es mandar un email a cierto usuario, quizás con firma encriptada. El usuario en cuestión recibe el correo, procmail lo procesa, y eso dispara el script deseado - todo automático. Yo usaba ese método para arrancar internet en un ordenador, y que el script ip-up disparara el ip-up de otro ordenador más adentro. Esto se llama genéricamente "robots": el correo lo procesa un programa y genera una salida determinada que devuelve también por correo; puede ser, por ejemplo, una consulta de base de datos por email. Mira, los servidores de llaves GPG usan ese sistema, entre otros. A mi me gusta particularmente porque es muy fácil de limitar o definir que es lo que se ejecuta. - -- Saludos Carlos Robinson -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFD2Op5tTMYHG2NR9URAmmwAKCFC83lztIQ2JJJOMkfgUX654L4TgCfYdN+ A9KhZkm4HmXP+i/Fk3AsunI= =rgU+ -----END PGP SIGNATURE-----
Enrique escribió:
Venga, me intentaré explicar bien...
Tengo un script de en una máquina A, esta es la unica que puede mediante comandos rsh acceder a otras máquinas (y lo necesito en el script), por lo tanto es la unica que puede ejecutar este script.
Pues bien, quiero hacer una interface web para el script, el problema es que la máquina A no tiene (ni debe tener) servidor web, por lo tanto uso una maquina servidora web (llamemosla B).
El problema, como puede hacer que al pulsar un boton en una página web de la máquina B se ejecute un script en A.
La respuesta sería facil, poniendo en el .rhost de A "<maquinaB> <usuarioWeb>". Pero con esto le daria permiso para que ejecutase mas cosas. ¿Como puede hacer que solo pueda ejecutar el script? que este sea el único acceso que tenga, no pueda hacer nada más (no me gustaria por una tonteria comprometer la seguridad de A).
Es decir, hay alguna forma de decir (supongo que en la máquina A): El usuario <usuario> de la máquina B tiene permiso para ejecutar (solo) la aplicación X.
Espero que ahora esté claro,
Gracias,
Enrique.
Bueno, creo que lo que antes te comentaba te podría valer. Te haces el front-end (el script en php) en tu servidor web que tienes en la máquina B. Ese script en php podría conectarse por ssh a la máquina A. Puedes incluso limitar en la máquina A desde qué máquinas se puede entrar por ssh. Puedes preparar A y B para que no sea necesario introducir login y password (es cuestión de configurar bien el ssh de A y B intercambiando las claves necesarias sólo una vez). Una vez ejecutas en B el script en php, éste, mediante la conexión ssh mencionada antes, lanza en A, el script que sólo se puede ejecutar en A. Como te decía puedes crear en A un grupo especial con muy pocos permisos, y un usuario que sólo pertenezca a ese grupo, y sólo a tu script de A le das permisos para ser ejecutado por ese usuario o por el grupo al que pertenece ese usuario. ¿Crees que puede servir?
¿Crees que puede servir?
Muchas gracias, pero no estoy seguro, es una máquina un tanto comprometida, y en principio nadie se puede logar en ella, se me ha ocurrido que, si no teneis alguna otra solucion, lo mejor puede ser alterar el script para que escuche en un puerto de A cuando tiene que ejecutarse, y que la página web (la màquina B) mande una señal a ese puerto para arrancar el script. Se que es muy rebuscado, pero no puedo dar acceso a un usuario. Pense que a lo mejor había algo tipo rhosts que no solo filtrase la máquina y el usuario, sino tambien la aplicación. En fin, que se le va a hacer. Muchas gracias de todas formas, Un saludo.
Hola :) Enrique wrote:
¿Crees que puede servir?
Muchas gracias,
pero no estoy seguro, es una máquina un tanto comprometida, y en principio nadie se puede logar en ella, se me ha ocurrido que, si no teneis alguna otra solucion, lo mejor puede ser alterar el script para que escuche en un puerto de A cuando tiene que ejecutarse, y que la página web (la màquina B) mande una señal a ese puerto para arrancar el script.
Se que es muy rebuscado, pero no puedo dar acceso a un usuario. Pense que a lo mejor había algo tipo rhosts que no solo filtrase la máquina y el usuario, sino tambien la aplicación. En fin, que se le va a hacer.
Muchas gracias de todas formas,
Resumiendo, dices que necesitas: - conexión remota - máquina que requiere seguridad ... no entiendo por qué hablas de rsh en ese caso ... es muy inseguro - que no haya un login Resultado: ssh SSH te permite: - conectar de forma segura - ejecutar _EN_ la máquina remota un comando - puedes hacer este punto anterior sin interacción humana (desde cron) Échale un vistazo al man de ssh que te pone ejemplos ;) HTH Rafa -- Rafa Grimán Systems Engineer Silicon Graphics Spain Santa Engracia , 120 - Planta Baja 28003 Madrid, Spain Tel: +34 91 3984200 Fax: +34 91 3984201 Móvil: +34 628 117 940 http://www.sgi.com
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2006-01-26 a las 16:47 +0100, Enrique escribió:
pero no estoy seguro, es una máquina un tanto comprometida, y en principio nadie se puede logar en ella, se me ha ocurrido que, si no teneis alguna otra solucion, lo mejor puede ser alterar el script para que escuche en un puerto de A cuando tiene que ejecutarse, y que la página web (la màquina B) mande una señal a ese puerto para arrancar el script.
Pues eso es lo que te dije yo de hacerlo con email, un robot. - -- Saludos Carlos Robinson -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFD2SBStTMYHG2NR9URAnyuAJ0bJi9ncKvTY04hPq5Il2FZ3AAO1wCghTay oDyzZykbKQKN/x9fQojnw+Q= =zUeJ -----END PGP SIGNATURE-----
lo que se me ocurre a mi es un script en perl donde la maquina A tenga un puerto logico abierto o una tuberia ....y la maquina B se conectaria a dicho puerto ...luego desde la pagina web ...enviara un unico comando o una clave que ejecutaria dicho script ...
Enrique
¿Crees que puede servir?
Muchas gracias, pero no estoy seguro, es una máquina un tanto comprometida, y en principio nadie se puede logar en ella, se me ha ocurrido que, si no teneis alguna otra solucion, lo mejor puede ser alterar el script para que escuche en un puerto de A cuando tiene que ejecutarse, y que la página web (la mà quina B) mande una señal a ese puerto para arrancar el script. Se que es muy rebuscado, pero no puedo dar acceso a un usuario. Pense que a lo mejor habÃa algo tipo rhosts que no solo filtrase la máquina y el usuario, sino tambien la aplicación. En fin, que se le va a hacer. Muchas gracias de todas formas, Un saludo. -- Para dar de baja la suscripción, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com --------------------------------- LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com
On Thursday 26 January 2006 15.52, Enrique wrote:
Venga, me intentaré explicar bien...
Es decir, hay alguna forma de decir (supongo que en la máquina A): El usuario <usuario> de la máquina B tiene permiso para ejecutar (solo) la aplicación X.
Espero que ahora esté claro,
Gracias,
Enrique. Pues, si... Hay muchas... pero te complicas todo en partir la tarea en dos...
El mejor seria SSH. porque esta hecho para eso... Para empesar metale usuario/password El commando te devuelve el resultado del commando como si fuese ejecutato local. Una ves que te func. Puedes empesar a cambiar la manera de autorizacion. Halli hay tambien muchas optiones, (lea man sshd para ver que restriciones le puedes meter por usuario, maquina, etc...) Jerry P.D. Puedes darle permiso ha la maquina enves de un usuario.
participants (6)
-
Carlos E. R.
-
Enrique
-
Jerry Westrick
-
Luis
-
Manuel Sanguino
-
Rafa Grimán