Friday, November 30, 2012

SunOS: Como crear un usuario con acceso a FTP solamente y limitado a su home folder.

Quizás en algún momento necesites que algún extraño entre a tu servidor a recoger unos archivos. Por razones de seguridad no quieres que ese extraño ejecute comandos ni que acceda archivos que no le competen. Por eso hoy te voy a mostrar como crear un usuario que tenga acceso a FTP *solamente* en SunOS . 

1. Creamos el usuario.
useradd -m ftpuser
2. Le asignamos un password
passwd ftppassword
3. Necesitamos asignarle un shell al usuario que no le permita ejecutar comandos pero si que le permita hacer login. Por lo que le vamos a asignar /bin/false
usermod -s /bin/false ftpuser
4. Hay que asegurarnos que el shell que le asignamos se encuentre en el grupo de los shells autorizados a hacer login. Así que corremos el próximo comando, editamos el archivo /etc/shells  y añadimos /bin/false (si es que no se encuentra).

vi /etc/shells
/bin/bash
/bin/csh
/bin/hash
/bin/jsh
/bin/ksh
/bin/pfcsh
/bin/pfksh
/bin/pfsh
/bin/remsh
/bin/rksh
/bin/rsh
/bin/sh
/bin/ssh
/bin/tcsh
/bin/zsh
/bin/ftpaccess
/sbin/sh
# add this line
/bin/false
*Nota: Si el archivo de /etc/shells no existe puedes crearlo pero tienes que asegurarte que incluyas todos los shells en tu sistema pues los shells que no estén aquí no podrán hacer login al sistema.

5. Vamos a restringir el usuario a su home folder mediante este comando:

ftpconfig -d /home/ftpuser
6. Tenemos que editar el archivo de ftpaccess  para decirle que usuario vamos a estar limitando.

vi /etc/ftpd/ftpaccess
Obtendrás esto:

# ident "@(#)ftpaccess  1.1     01/06/26 SMI"
#
# FTP server configuration file, see ftpaccess(4).
#

class           realusers       real            *
class           guestusers      guest           *
class           anonusers       anonymous       *

loginfails      3
passwd-check    trivial         warn
private         no
keepalive       yes
shutdown        /etc/ftpd/shutdown.msg

# email         user@hostname
guestuser       ftpuser
# timeout       idle            300

banner          /etc/ftpd/banner.msg
greeting        brief
message         /etc/ftpd/welcome.msg   login
message         .message                cwd=*
readme          README*                 login
readme          README*                 cwd=*

chmod           no              anonymous
delete          no              anonymous
overwrite       no              anonymous
rename          no              anonymous
umask           no              anonymous

compress        yes             realusers guestusers anonusers
tar             yes             realusers guestusers anonusers
...
Hay que asegurarnos que la línea  de "class guestusers guest *" se encuentre en el archivo, que la línea de "guestuser username" no este comentada y que en vez de username diga el nombre del usuario que queremos limitar "guestuser ftpuser". Salvamos el archivo.



7. Ahora corremos este comando para permitir el uso del file ftpaccess.

in.ftpd -a
Ya terminamos. Ahora solo resta hacer dos pruebas.

Prueba 1: Conexión mediante FTP para asegurarnos que no pueda acceder nada mas que su Home Folder.

ftp 1.1.1.1.1
Connected to 1.1.1.1.1
Name (1.1.1.1.1:root): ftpuser
331 Password required for ftpuser.
Password:
230 User ftpuser logged in.  Access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/" is current directory.
ftp> cd ..
250 CWD command successful.
ftp> pwd
257 "/" is current directory.
ftp>
Podemos ver que mi directorio actual dice "/" en vez de "/home/ftpuser"

Prueba 2: Conexión mediante Putty.

Intente conectarse al servidor mediante Putty con las credenciales del usuario de ftp. Al poner las credenciales Putty se cerrará evitando que el usuario pueda ejecutar comandos directo en el command line. Esto es gracias al shell /bin/false.

Terminamos! 


No comments:

Post a Comment