lunes, 23 de junio de 2014

Instalar servidor FTP en Linux

En esta nueva entrada del blog vamos a explicar como instalar y configurar un sencillo servidor ftp en linux. En principio el tutorial aclaro que es para CentOS y otras distribuciones derivadas de Red Hat como Fedora pero nos puede servir también para otras distribuciones linux. Como mucho las diferencias serán cambiar los comandos de instalación como es obvio y que el archivo de configuración se puede situar en otra ruta diferente.

Instalación

El paquete que contiene un servidor ftp se denomina vsftpd. Para instalarlo simplemente tecleamos como root

yum install vsftpd

Iniciar el Servidor FTP

Para arrancar nuestro servidor ftp utilizamos el comando service que vimos cuando explicamos como instalar un servidor web acompañada del parametro start

service vsftpd start

Igualmente si además queremos que el servicio arranque automaticamente al iniciar el sistema pues ejecutamos:

chkconfig vsftpd on


Configuración del Cortafuegos y SELinux

Una vez arrancado nuestro servidor ftp primero tendremos que realizar un par de modificaciones en el cortafuegos y SELinux para trabajar con nuestro servidor remotamente.

  • En el cortafuegos tenemos que abrir el puerto 21 que el puerto por donde se realizan las conexiones ftp. En Fedora con escribir Cortafuegos en el cuadro de búsqueda nos aparecerá la aplicación. En anteriores post vimos como instalar un interfaz grafico para el cortafuegos en CentOS, no obstante si queremos abrir el puerto directamente desde consola pues nos colocamos como root y tecleamos:
iptables -I INPUT -p tcp --dport 21 -j ACCEPT

service iptables save

service iptables restart


  • El siguiente problema que nos podemos encontrar es el sistema de seguridad SELinux que viene por defecto activado en las distribuciones derivadas de Red Hat Linux. Si queremos que los usuarios locales del sistema puedan acceder remotamente a su carpeta personal por ftp tendremos que indicarselo con la instrucción:
setsebool -P ftp_home_dir on


Configuración del Servidor: El archivo vsftpd.conf

Por defecto en el servidor ftp funcionan las cuentas de usuarios locales del sistema excepto el usuario root por cuestiones obvias de seguridad. Los usuarios accederán a su carpeta /home al loguearse en el sistema.

Para permitir accesos anonimos, usuarios no locales sino especificos del servidor ftp o cualquier otra configuración que se te ocurra en un servidor ftp tenemos que editar el archivo vsftpd.conf.

Para modificarlo podemos utilizar cualquier editor de texto. La ruta donde está situado el archivo en CentOS o en Fedora es /etc/vsftpd/vsftpd.conf  . Vamos a explicar algunos de las lineas o parametros del archivo que podemos añadir o modificar.




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=YES






local_enable

Establece si se van a permitir los accesos autenticados de los usuarios locales del sistema. Tendremos que colocar como valor YES o NO de acuerdo a lo que se requiera.

local_enable=YES




write_enable

Establece si se va a permitir la escritura en el servidor FTP. El valor será YES o NO de acuerdo a lo que deseemos.

       write_enable=YES





ftpd_banner

Este parámetro sirve para establecer el banderín de bienvenida que será mostrado cada vez que un usuario acceda al servidor. Puede establecerse cualquier frase breve que considere conveniente.

ftpd_banner=Bienvenido al servidor FTP de nuestra empresa.






Estableciendo jaulas para usuarios: chroot_local_user y chroot_list_file

De modo predeterminado los usuarios del sistema que se autentiquen tendrán acceso a otros directorios del sistema fuera de su directorio personal exactamente igual que si se loguean localmente, es decir, tienen acceso de lectura pero no van a poder realizar cambios en determinadas rutas.

 Si se desea recluir a los usuarios a solo poder utilizar su propio directorio personal, puede hacerse fácilmente con el parámetro chroot_local_user y los parámetros chroot_list_enable y chroot_list_file para establecer el fichero con la lista de usuarios que quedarán excluidos de la función chroot().

Es decir, si no queremos que los usuarios locales accedan a directorios del sistema fuera de su propia carpeta personal entonces establecemos YES en chroot_local_user

chroot_local_user=YES


Si queremos que algunos usuarios queden exentos de esa prohibición entonces debemos crear una lista con ellos. Primero chroot_local_list lo establecemos en YES y despues colocamos la ruta del archivo que contendrá la lista

chroot_local_list=YES

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list


ATENCION: No olvide crear el fichero /etc/vsftpd/vsftpd.chroot_list, ya que de otro modo no arrancará el servicio vsftpd.

touch /etc/vsftpd/vsftpd.chroot_list




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




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 locales:

local_max_rate=5120




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





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



Por ultimo hay que recordar que cada vez que realicemos un cambio en dicho archivo tendremos que reiniciar el servidor FTP para que se cargue con las novedades

service vsftpd restart