HowTo: Instalar vsftpd GNU/Linux

sftpd (Very Secure FTP Daemon) es un equipamiento lógico utilizado para implementar servidores de archivos a través del protocolo FTP. Se distingue principalmente porque sus valores predeterminados son muy seguros, y por su sencillez en la configuración, comparado con otras alternativas como ProFTPD, y Wu-ftpd. Actualmente se presume que vsftpd podría ser quizá el servidor FTP más seguro del mundo.

Accedemos a /usr/local/src/

rokitoh@red-orbita:/# cd /usr/local/src/

 

Descargamos Vsftpd

rokitoh@red-rbita: /usr/local/src/# wget  https://security.appspot.com/downloads/vsftpd-2.3.4.tar.gz

 

Descomprimimos

rokitoh@red-orbita: /usr/local/src/# tar xvf vsftpd-2.3.4.tar.gz

Accedemos al directorio.

rokitoh@red-orbita: /usr/local/src/# cd  vsftpd-2.3.4

instalamos!

rokitoh@red-orbita:/vsftpd-2.3.4# make
rokitoh@red-orbita:/vsftpd-2.3.4# make install
if [ -x /usr/local/sbin ]; then \
install -m 755 vsftpd /usr/local/sbin/vsftpd; \
else \
install -m 755 vsftpd /usr/sbin/vsftpd; fi
if [ -x /usr/local/man ]; then \
install -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \
install -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \
elif [ -x /usr/share/man ]; then \
install -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \
install -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \
else \
install -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \
install -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
if [ -x /etc/xinetd.d ]; then \
install -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi

comprobamos que está instalado.

rokitoh@red-orbita:/vsftpd-2.3.4# ls -l /usr/local/sbin/vsftpd
-rwxr-xr-x 1 root staff 107440 nov 23 23:32 /usr/local/sbin/vsftpd

Copiamos el fichero de configuración a /etc

rokitoh@red-orbita:/vsftpd-2.3.4# cp vsftpd.conf /etc

 

Configurar vsftpd

rokitoh@red-orbita:/vsftpd-2.3.4# vi /etc/vsftpd.conf

Parámetro anonymous_enable.


Se utiliza para definir si se permitirán los accesos anónimos al servidor. Establezca como valor 
YES o NO de acuerdo a lo que se requiera.

anonymous_enable=NO

Parámetro local_enable

Es particularmente interesante si se combina con la función de jaula (chroot). Establece si se van a permitir los accesos autenticados de los usuarios locales del sistema. Establezca como valor YES o NO de acuerdo a lo que se requiera.

local_enable=no

Parámetro write_enable.


Establece si se permite el mandato write (escritura) en el servidor. Establezca como valor YES o NO de acuerdo a lo que se requiera.

write_enable=YES

Parámetro ftpd_banner.


Este parámetro sirve para establecer el banner que será mostrado cada vez que un usuario acceda al servidor.

ftpd_banner= Bienvenido al servidor de Red-Orbita.es, ten cuidado con lo que tocas.

Parámetro anon_max_rate.



Se utiliza para limitar la tasa de transferencia en bytes por segundo para los usuarios anónimos, algo sumamente útil en servidores FTP de acceso público. En el siguiente ejemplo se limita la tasa de transferencia a 5 Kb por segundo para los usuarios anónimos:

anon_max_rate=5120

Parámetro local_max_rate.

Hace lo mismo que anon_max_rate, pero aplica para usuarios locales del servidor. En el siguiente ejemplo se limita la tasa de transferencia a 5 Kb por segundo para los usuarios lorales:

local_max_rate=5120

Parámetro max_clients.


Establece el número máximo de clientes que podrán acceder simultáneamente hacia el servidor FTP. En el siguiente ejemplo se limitará el acceso a 5 clientes simultáneos.

max_clients=5

Parámetro max_per_ip.


Establece el número máximo de conexiones que se pueden realizar desde una misma dirección IP. Tome en cuenta que algunas redes acceden a través de un servidor proxy o puerta de enlace y debido a esto podrían quedar bloqueados innecesariamente algunos accesos. en el siguiente ejemplo se limita el número de conexiones por IP simultáneas a 5.

max_per_ip=5

Parámetro  xferlog_enable

Establece si queremos guardar los LOG’S (por defecto estará en /var/log).


xferlog_enable=YES

Parámetros chroot_*

chroot se usan para crear y mantener una copia virtual separada del sistema operativo en un directorio del mismo.

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Creamos el fichero  donde se guardara todos los usuarios que accederán mediante el ftp

rokitoh@red-orbita:/vsftpd-2.3.4# touch /etc/vsftpd.chroot_list

Añadimos lo siguiente en la shell

rokitoh@red-orbita:/vsftpd-2.3.4# echo /bin/ftp >> /etc/shells

y creamos /bin/ftp

rokitoh@red-orbita:/vsftpd-2.3.4# mkdir /bin/ftp

Ahora tocaría crear los usuarios, para ello yo he creado un pequeño script algo cutre pero funcional.

######################################################################################
######################################################################################
######################################################################################
############## SCRIPT ADMINISTRACIÓN USUARIOS FTP  ##################################
##################### By rokitoh. Copyleft!!! ##################################
######################################################################################

if [ $(whoami) != “root” ]; then
echo “Debes ser root para correr este script.”
echo “Para entrar como root, escribe \”su o sudo \” sin las comillas.”
exit 1
fi
while :
do
echo
echo ” Administrar Usuarios FTP”
echo “_____ ____ __________________”
echo
echo “1. Crear usuario FTP”
echo “2. Borrar usuario FTP”
echo “3. Listar usuarios FTP”
echo -n “Seleccione una opcion [1 – 3] ”
read opcion
case “$opcion” in

1)
read -p “Introduzca nombre de usuario: ” user
cat /etc/passwd | grep $user > /dev/null
if [ $? -eq 0 ]
then
echo “el usuario $user ya existe”

else

useradd -m -d /home/ftp/$user -s /bin/ftp -g ftp $user; passwd $user
echo $user >> /etc/vsftpd.user_list

fi

;;
2)
read -p “Introduzca nombre de usuario: ” user
cat /etc/passwd | grep $user > /dev/null
if [ $? -eq 1 ]
then
echo “el usuario $user no existe”

else

while true; do
echo
read -p “¿Estas seguro que quieres borrar el usuario? ” yn
case $yn in
yes ) break;;
no ) exit;;
* ) echo “por favor responda yes o no”;;
esac
done
userdel $user
sed ‘/$user/d’ /etc/vsftpd.user_list > /etc/vsftpd.user_list
fi

;;
3)

 

clear
echo
echo ” Usuarios disponibles”
echo “_____ ____ __________________”
echo

cat /etc/vsftpd.user_list
;;
*)
echo “$opcion es una opcion invalida.”
echo “Presiona una tecla para continuar…”
read foo;;

esac
done

Un saludo, espero que os sirva de ayuda.
rokitoh!!

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*