Ir al contenido principal

Instalacion Configuracion VSFTP


Introducción.

FTP (File Transfer Protocol) o Protocolo de Transferencia de Archivos (o ficheros informáticos) es uno de los protocolos estándar más utilizados en Internet siendo el más idóneo para la transferencia de grandes bloques de datos a través de redes que soporten TCP/IP. El servicio utiliza los puertos 20 y 21, exclusivamente sobre TCP. El puerto 20 es utilizado para el flujo de datos entre cliente y servidor. El puerto 21 es utilizando para el envío de órdenes del cliente hacia el servidor. Prácticamente todos los sistemas operativos y plataformas incluyen soporte para FTP, lo que permite que cualquier computadora conectada a una red basada sobre TCP/IP pueda hacer uso de este servicio a través de un cliente FTP.
VSFTPD (Very Secure FTP Daemon) es un sustento lógico utilizado para implementar servidores de archivos a través del protocolo FTP. Se distingue principalmente porque sus valores por defecto son muy seguros y por su sencillez en la configuración, comparado con otras alternativas como Wu-ftpd. Actualmente se presume que VSFTPD es quizá el servidor FTP más seguro del mundo.

Instalacion vsftpd con YUM.

[root@localhost ~]# yum -y install vsftpd

Ficheros de configuración.

/etc/vsftpd.user_list ó
/etc/vsftp/chroot_list
Lista que definirá usuarios a enjaular o no a enjaular, dependiendo de la configuración.
/etc/vsftpd/vsftpd.conf
Fichero de configuración.

Procedimientos.

Es recomendable antes de iniciar modificaciones a algun archivo de configuración, realizar una copia de seguridad.
[root@localhost ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
Ahora seria bueno listar alguno de los parametros del archivo vsftpd.conf
[root@localhost ~]# egrep -v "^#|^$" /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
Utilice un editor de texto y modifique el fichero /etc/vsftpd/vsftpd.conf. A continuación analizaremos los parámetros a modificar o añadir, según se requiera para necesidades particulares.
[root@localhost ~]# vi /etc/vsftpd/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

Habilitar o negar autenticarse a los usuarios locales del sistema

Para habilitar o negar los accesos autenticados de los usuarios locales en el servidor FTP deberá buscar la siguiente linea:
local_enable=YES

Habilitar o negar la escritura en el servidor FTP

Para habilitar o negar la escritura en el servidor FTP deberá buscar la siguiente linea
write_enable=YES
Una vez ubicada esta linea recuerde borrar ( si es que esta ) el signo de numero (#) para habilitar esta función. Establezca el valor YES o NO de acuerdo a lo que se requiera.

Estableciendo permisos de escritura, lectura y ejecución al contenido albergado en el servidor FTP

La siguiente linea indica que los archivos subidos al servidor quedarán con los permisos 022, es decir, sólo
escritura para el grupo y los demás.
local_umask=022
Si tu deseas agregar otro tipo de permisos sobre el contenido que sera albergado en tu servidor FTP solo
deberás modificar el valor 022 por el que tu creas mas conveniente.
Nosotros recomendamos usar el permiso “664”
local_umask=664
es decir, lectura y escritura para el propietario del fichero, y sólo lectura para el grupo y los demás

Estableciendo un mensaje de bienvenida en el servidor FTP

Este parámetro sirve para establecer un mensaje de bienvenida el cual será mostrado cada vez que un
usuario acceda al servidor de archivos.
Una vez ubicada esta linea recuerde borrar ( si es que esta ) el signo de numero (#) para habilitar esta función.
Para agregar este mensaje al servidor FTP deberá buscar la siguiente linea y editarla.
ftpd_banner=Bienvenido al Servidor FTP Linux

Estableciendo enjaulamiento a los usuarios de FTP

Estas opciones vienen incluidas en la configuración predeterminada.

De modo predeterminado los usuarios del sistema que se autentiquen tendrán acceso a otros directorios del sistema fuera de su directorio personal.
Si se desea limitar a los usuarios a sólo poder utilizar su propio directorio personal, puede hacerse fácilmente con la opción chroot_local_user que habilitará la función de chroot() y las opciones chroot_list_enable y chroot_list_file, para establecer el archivo con la lista de usuarios que quedarán excluidos de la función chroot().
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
Con lo anterior cada vez que un usuario local se autentique en el servidor FTP, sólo tendrá acceso a su propio directorio personal y lo que éste contenga. Por favor recuerde crear el archivo /etc/vsftpd/chroot_list debido a que de otro modo será imposible que funcione correctamente el servicio vsftpd.

NOTA: La función chroot() puede ser peligrosa si el usuario regular utilizado tiene acceso al intérprete de mandatos del sistema (/bin/bash o /bin/sh) y además privilegios de escritura sobre el directorio raíz de su propia jaula (es decir su directorio de inicio).

Los directorios de inicio de los usuarios involucrados deben tener permiso 755, sean propiedad de root y se asigne al usuario /bin/false o /sbin/nologin como intérprete de mandatos.

Configuración del fichero chroot_list

La configuración de este fichero es relativamente fácil, solo deberá añadir dentro de el los nombres de los
usuarios que serán excluidos a trabajar dentro de su carpeta personal de trabajo.
Ejemplo:
[root@ localhost ~]# vi /etc/vsftpd/chroot_list
paty
angelica
erika
viridiana
iliana
regina
"chroot_list"
Al terminar solo deberá guardar los cambios hechos al fichero.

Habilitar al usuario anónimo la función de subir contenido al servidor FTP

Para habilitar o negar al usuario anónimo el subir datos al servidor FTP deberá buscar la siguiente linea:
anon_upload_enable=YES|NO 
Una vez ubicada esta linea recuerde borrar ( si es que esta ) el signo de numero (#) para habilitar esta función.
Establezca el valor YES o NO de acuerdo a lo que se requiera

Habilitar al usuario anónimo la función de crear carpetas en servidor FTP

Para habilitar o negar al usuario crear carpetas en servidor FTP deberá buscar la siguiente linea:
anon_mkdir_write_enable=NO

Limitando la tasa de transferencia a los usuarios anónimos

Usted puede limitar la tasa de transferencia ( en bytes ) para los usuarios anónimos, solamente deberá agregar la siguiente linea al final del archivo
anon_max_rate=10240

Limitando la tasa de transferencia a los usuarios autenticados

Usted puede limitar la tasa de transferencia ( en bytes ) para los usuarios anónimos, solamente deberá agregar la siguiente linea al final del archivo
local_max_rate=10240
Como podemos observar hemos limitado la tasa de transferencia a solo 10 MB para los usuarios autenticados,
usted podrá definir ese parámetro de acuerdo a sus necesidades.

Limitando el numero de conexiones hacia el servidor FTP

Usted podrá establecer un numero máximo de conexiones que podrán acceder simultáneamente al servidor FTP, para ello solo habrá que añadir la siguiente linea al final de archivo.
max_clients=3
Como podemos observar hemos limitado el acceso a solamente 3 clientes FTP

Limitando el numero de conexiones por IP hacia el servidor FTP

Usted podrá establecer un numero máximo de conexiones desde una misma dirección IP que podrán acceder simultáneamente al servidor FTP, para ello solo habrá que añadir la siguiente linea al final de archivo.
max_per_ip=3
Como podemos observar hemos limitado el acceso a simultaneo a solamente 3 IP´s .

Aplicando los cambios.

A diferencia de otros servicios FTP, VSFTPD no requiere configurarse como servicio sobre demanda. Por lo tanto no depende de servicio xinetd. La versión incluida en distribuciones como Red Hat™ Enterprise Linux 5.0 y White Box Enterprise Linux 5.0 puede inicializarse, detenerse o reinicializarse a través de un guión similar a los del resto del sistema. De modo tal, podrá inicializarse, detenerse o reinicializarse a través del mandato service y añadirse al arranque del sistema en un nivel o niveles de corrida en particular con el mandato chkconfig.

Iniciar , detener o reiniciar el servidor FTP

Para iniciar el servidor FTP por primera vez solo deberá teclear en terminal el siguiente comando:
[root@ localhost ~]# /etc/init.d/vsftpd start
Igualmente existen opciones ya sea para reiniciar, detener, recargar o conocer el status en el que se encuentra
el servidor FTP. Estas opciones pueden ser consultadas en la siguiente tabla:
start --Inicia el servicio
stop --Detiene el servicio
restart --Reinicia el servicio.-La diferencia con reload radica en que al ejecutar un restart este mata todos los procesos relacionado con el servicio y los vuelve a generar de nueva cuenta
reload --Recarga el servicio.-La diferencia con restart radica en que al ejecutar un reload este solamente carga las actualizaciones hechas al fichero de configuración del
servicio sin necesidad de matar los procesos relacionados con el mismo, por lo que podría entenderse que hace el cambio en caliente.
condrestart--Reinicio Condicional.- Solamente se inicia si el servicio se encuentra ejecutándose.
status --Da a conocer el estado en el que se encuentra el servicio
Como alternativa también podemos ocupar el siguiente comando para iniciar el servidor FTP
service vsftpd start
Para hacer que los cambios hechos a la configuración surtan efecto, utilice:
service vsftpd restart
Para detener el servicio, utilice:
service vsftpd stop
Para añadir VSFTPD al arranque del sistema en todos los niveles de corrida, utilice:
chkconfig vsftpd on

Creación de cuentas de usuario en el servidor FTP

Crear cuentas de usuario en el servidor FTP es un proceso muy parecido a dar de alta usuarios en Linux.
La sintaxis general para dar de alta usuarios es la siguiente:
useradd -d /carpeta/del/usuario -s /sbin/nologin/ sistemas
Las opciones utilizadas son explicadas en la siguiente tabla:
-d | --home -d /carpeta/demo → Carpeta de trabajo que sera asignado al usuario
-s | --shell -s /sbin/nologin → El usuario no podrá logearse en el sistema.
Ideal para usuarios con acceso a Samba o FTP pero sin acceso al interprete de comandos.

Adicionalmente se tiene que asignar una contraseña al usuario FTP.
[root@ localhost ~]# passwd sistemas
Cambiando la contraseña del usuario .
Nueva UNIX contraseña: xxxxxxxxxx
Vuelva a escribir la nueva UNIX contraseña:xxxxxxxxxx
passwd: todos los tokens de autenticación se actualizaron exitosamente.
Ejemplo:
[root@ localhost ~]# useradd -d /home/ftp/sistemas -s /sbin/nologin \ >
sistemas

Modificaciones necesarias en el muro cortafuegos.

Si se utiliza un cortafuegos con políticas estrictas, como por ejemplo Shorewall, es necesario abrir los puerto 20 y 21 por TCP (FTP-DATA y FTP, respectivamente).
Las reglas para el fichero /etc/shorewall/rules de Shorewall correspondería a algo similar a lo siguiente:
#ACTION SOURCE DEST PROTO  DEST  SOURCE
#    PORT  PORT(S)1
ACCEPT net fw tcp 20,21
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Otra opción adicional es realizar modificaciones gráficas con el comando.
system-config-firewall-tui

Accediendo al servidor FTP

La forma en que accederemos a los recursos del servidor FTP sera a través de la siguiente sintaxis Ejemplo:
[root@ localhost ~]# ftp 216.244.191.36
Luego de que el cliente haya establecido un comunicación con con el servidor FTP este le pedirá que se
autentique . En este punto el usuario deberá teclear su nombre de usuario así como también su contraseña:
[root@ localhost ~]# ftp 216.44.191.36
Connected to 216.244.191.36 (216.244.191.36).
220 Bienvenido al Servidor FTP Linux
331 Please specify the password.
Password: xxxxxxxxxx
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
En caso de que se acceda al servidor de forma anónima solo bastara con teclear como nombre de usuario la
palabra “anonymous”, por consiguiente no nos pedirá ninguna contraseña, solo deberá teclear la palabra “enter”.
Ejemplo:
Connected to 216.244.191.36 (216.244.191.36).
220 Bienvenido al Servidor FTP Linux
Name (216.244.191.36:): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
NOTA: La carpeta de trabajo del usuario “anonymous” no existe así que debe crearla usted mismo, Normalmente el acceso por medio del usuario ““anonymous” solo podrá leer y copiar los archivos existentes, pero no modificarlos ni crear otros nuevos. La ubicación de esta carpeta estará ubicada en la siguiente ruta:
/etc/vsftpd/
El nombre que llevara esta carpeta sera
vació
Por consiguiente esta carpeta estará ubicada en:
/etc/vsftpd/vacio
En caso de no tener creada la carpeta de trabajo para el usuario “anonymous”, el servidor FTP nos arrojara el siguiente error.
[root@ localhost ~]# ftp 216.244.191.36
Connected to 216.244.191.36 (216.244.191.36).
220 Bienvenido al Servidor FTP de Linux
Name (207.249.24.67:): anonymous
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/etc/vsftpd/vacio
Login failed.
ftp>

Comentarios

Entradas más populares de este blog

JSP y MySQL Conexion a Base de Datos

Tema anterior: http://superahacker.blogspot.com/2009/06/instalacion-netbeans-glassfish.html El modulo JSP con conexion a una base de datos MySQL, tiene las siguientes caracteristicas usar una clase Java llamada "Customers" que se encuentra en un package llamado "Mypackage" , para usar sus metodos y con ellos llevar acabo una consulta.

JSP y MsSQL Conexion a Base de Datos

Tema anterior: http://superahacker.blogspot.com/2009/09/jsp-y-mysql-conexion-base-de-datos.html El modulo JSP con conexion a una base de datos Ms SQL Server, tiene las siguientes caracteristicas usar una clase Java llamada "Customers" que se encuentra en un package llamado "Mypackage" , para usar sus metodos y con ellos llevar acabo una consulta.

FreeTDS para el acceso a MsSQL desde PHP en Linux CentOS 5

Tema Anterior: http://superahacker.blogspot.com/2009/04/instalacion-de-unixodbc-para-la.html En esta ocasion la situación es como conectar con PHP 5 desde un Servidor Linux a una base de Datos Ms Sql Server en Servidor Windows.