Como enjaular usuarios locales con VSFTPD

En este post, trataremos el tema de como enjaular nuestros usuarios locales en un servidor Linux, para lo que a contiuación explico paso por paso:

1.- Instalamos el paquete vsftpd.
[root@repoiusa01 vsftpd]# yum install vsftpd.x86_64

2.- Obtenemos un respaldo del archivo de configuración vsftpd.conf
[root@repoiusa01 vsftpd]# cd /etc/vsftpd/
[root@repoiusa01 vsftpd]# cp vsftpd.conf vsftpd.conf.original

3.- El archivo vsftpd.conf  lo vaciamos y agregamos las siguientes lineas:
[root@repoiusa01 vsftpd]# > vsftpd.conf

4.-
[root@repoiusa01 vsftpd]# vi vsftpd.conf


# This file was configured for the FTP service for Iusa
#
# 29 de Noviembre 2013
# Allow anonymous FTP? (Beware – allowed by default
#if you comment this out).
anonymous_enable=NO
# Uncomment this to allow local users to log in.
local_enable=YES
#Uncomment this to enable any form of FTP write command.
write_enable=YES
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd’s)
local_umask=022
# Activate directory messages – messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
# Activate logging of uploads/downloads.
xferlog_enable=YES
#Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
# If you want, you can have your log file in standard ftpd xferlog format
xferlog_std_format=YES
# Run standalone? vsftpd can run either from an inetd or as a standalone
# daemon started from an initscript.
listen=YES
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#Enable user list for FTP
userlist_enable=YES
#Enabled Tcp Wrapper
tcp_wrappers=YES
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

5.- Validamos el servicio de SELINUX si esta habilitado
[root@repoiusa01 vsftpd]# getenforce
Enforcing

6.- Validamos el siguiente parametro de ftp si se encuentra en off

ftp_home_dir –> off

NOTA: Si se encuentra en off hay que colocarlo en on

[root@repoiusa01 vsftpd]# getsebool -a | grep ftp


allow_ftpd_anon_write –> off
allow_ftpd_full_access –> off
allow_ftpd_use_cifs –> off
allow_ftpd_use_nfs –> off
ftp_home_dir –> on
ftpd_connect_db –> off
ftpd_use_passive_mode –> off
httpd_enable_ftp_server –> off
tftp_anon_write –> off

7.- Procedemos a cambiar el valor indicado

[root@repoiusa01 vsftpd]# setsebool -P ftp_home_dir on

8.- Validamos nuevamente que el valor ftp_home_dir en on

[root@repoiusa01 vsftpd]# getsebool -a | grep ftp


allow_ftpd_anon_write –> off
allow_ftpd_full_access –> off
allow_ftpd_use_cifs –> off
allow_ftpd_use_nfs –> off
ftp_home_dir –> on
ftpd_connect_db –> off
ftpd_use_passive_mode –> off
httpd_enable_ftp_server –> off
tftp_anon_write –> off

9.- Creamos nuestro usuario para ftp, usuario userftp con y se le asigna un password.

[root@repoiusa01 vsftpd]# groupadd -g 517 userftp
[root@repoiusa01 vsftpd]# useradd -m -c “Usuario para FTP” -s /bin/bash -d /home/userftp -g 517 -u 517 userftp

10.- Creamos el archivo chroot_list en /etc/vsftpd/y agregamos los usuarios que querramos enjaular

root@repoiusa01 vsftpd]# echo “userftp” > chroot_list

Ojo, si queremos agregar un usuario màs hacerlo de la siguiente manera

[root@repoiusa01 vsftpd]# echo “userftp2” >> chroot_list

NOTA: Previamente debe estar creado el usuario

11.- Iniciamos el servicio de vsftpd

[root@repoiusa01 vsftpd]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]

12.- Y la prueba de fuego es conectarse con un cliente ftp puede ser con el comando ftp de linux o con un cliente como filezilla.

Introduccimos los datos de nuestro usuario FTP:

Img-FTP2

Voila, nos conectamos y podemos observar que solo estamos limitado al home del usuario:

Img-FTP

Bueno, eso es todo amigos. Espero y les siva como a mi me sirvio.