Administrar permisos de carga, SFTP y Linux

Administrar permisos de carga, SFTP y Linux

Soy nuevo en Linux.

Estoy trabajando con un servidor Redhat 5.5 y estoy usando un script SFTP basado en Java que permitirá a varios usuarios cargar archivos de texto a un servidor. No estoy seguro de si cada usuario tendrá un directorio separado o si usaré una convención de nomenclatura que incluya su ID de cliente.

Los archivos incluyen información personal sobre la configuración de su LAN, por lo que prefiero usar SFTP en lugar de FTP. Tengo entendido que SFTP está cifrado (además, tengo una clase Java configurada para cargar a través de SFTP, por lo que prefiero no cambiar de protocolo a menos que sea una muy buena razón).

El prototipo es para un sistema que admitirá una gran cantidad de clientes y la idea de agregar y eliminar clientes continuamente a través de la línea de comando parece muy poco práctica. (Nuevamente, soy nuevo en/aprender Linux y Redhat).

¿Cuáles son las convenciones normales para otorgar permiso a varios usuarios para cargar archivos SFTP con un nombre de usuario y contraseña únicos para cada uno?

Respuesta1

Puede hacer esto configurando su sshd externo como sftpd chroot (use la opción sftpd-internal en sshd_config para esto). Cada usuario puede tener su propia cárcel chroot. En el archivo de clave_autorizada de sus usuarios (¡no permita contraseñas!), debe prefijar cada clave pública con los prefijos necesarios que no permitirán el acceso al shell. Su chroot también debe contener solo la configuración básica para el acceso sftp (sin archivos binarios, sin bibliotecas, solo /dev/null, /dev/zero, /dev/random y /dev/urandom, hasta donde recuerdo).

Respuesta2

Lo que estás describiendo es posible, pero probablemente no sea la mejor de las ideas, especialmente si, como dices, eres nuevo en Linux.

Como usted dice, administrar los permisos de archivos y los usuarios será una pesadilla, y SFTP requiere SSH que en sí mismo puede exponer todo tipo de funcionalidades, como ejecutar código en el servidor remoto y descargar archivos.

ÉlesEs posible configurar un servidor SFTP con un mínimo de seguridad, pero existen muchos inconvenientes al configurarlo. Hay muchos consejos engañosos en Internet sobre la configuración de usuarios exclusivos de SFTP con SSHd. En pocas palabras, esnobasta con simplemente cambiar su shell de inicio de sesión a un shell no válido, también debe preocuparse por su capacidad para ejecutar comandos de forma remota sin pasar por el shell y su capacidad para leer archivos de sistema potencialmente sensibles fuera de su directorio de inicio, así como su capacidad para usar Túnel SSH para evitar firewalls. Además de cualquier otra funcionalidad que quizás no recuerde.

y esoesEs posible evitar toda la cuestión de la "necesidad de crear un usuario para cada cliente", ya sea haciendo alguna magia oscura con PAM para permitir que SSH se autentique en alguna otra base de datos de usuario, o simplemente compartiendo una única cuenta de usuario (lo que debería ser suficiente siempre y cuando ya que solo te importa dejar que los usuariossubirarchivos).

Además, de alguna manera resolverá un problema de seguridad básico que SFTP tiene en su tipo de aplicación con muchos usuarios remotos que necesitan poder verificar si el servidor remoto es el que parece ser. No existen autoridades de certificación para SSH: el método que utiliza SSH para protegerse contra ataques de intermediario es almacenar en caché una huella digital de las claves del servidor SSH de los servidores a los que se conecta el cliente, y si la clave coincide con la clave vista anteriormente. , todo es bueno. Sin embargosi no se conoce la clave, debido a que es la primera vez que un cliente se conecta, SSH requiere que el usuario verifique la huella digital manualmente. No es razonable esperar que sus clientes realmente hagan esto; casi todos simplemente harán clic en "sí" porque quieren seguir con sus vidas. Es posible que pueda distribuir la huella digital válida del host con su aplicación, pero eso parece una pesadilla.

Si decide seguir adelante con SFTP, a pesar de los posibles problemas descritos, sugeriría investigarrsshpara restringir a los usuarios solo a SFTP. Además, debe mantener a todos sus usuarios SFTP en una cárcel chroot, donde no pueden interferir con las operaciones del servidor ni acceder a ningún archivo del sistema. (Incluso entonces, es posible que un atacante enumere los usuarios de su sistema...) Y también debe asegurarse de que el sshd esté configurado para evitar el túnel SSH de sus usuarios SFTP.

...

En lugar de lidiar con este tipo de lío, sugeriría considerar otro protocolo para cargar sus archivos que parece mucho más adecuado para su caso de uso. ¿Por qué no considerar cargar los archivos usando HTTPS? Necesitaría algún tipo de script CGI del lado del servidor o un servlet Java o algo así para recibir los archivos y hacer algo útil con ellos y realizar la autenticación. El script del lado del servidor podría encargarse de almacenar los archivos en una ubicación útil. En cuanto al problema del lado del cliente, cargar un archivo a través de HTTPS es algo tan común que me sorprendería si no hubiera alguna clase API lista para usar que puedas usar fácilmente para hacer ese tipo. de carga de archivos.

Por supuesto, esto significa que tendrías que escribir algún script CGI del lado del servidor para solucionar tu problema, pero sospecho que de todos modos ibas a querer tratar los archivos entrantes mediante programación, esto en realidad lo hace más fácil porque el código Se le llamará cada vez que haya un archivo nuevo.

información relacionada