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!!