Servidor FTP en Centos 6

14
1 MANUAL PARA LA INSTALACIÓN Y CONFIGURACIÓN DE UN SERVIDOR FTP EN CENTOS 6 María Angélica Palacios Cárdenas Universidad Militar Nueva Granada Ingeniería en Telecomunicaciones

Transcript of Servidor FTP en Centos 6

Page 1: Servidor FTP en Centos 6

1

MANUAL PARA LA INSTALACIÓN Y CONFIGURACIÓN DE UN SERVIDOR

FTP EN CENTOS 6 María Angélica Palacios Cárdenas

Universidad Militar Nueva Granada Ingeniería en Telecomunicaciones

Page 2: Servidor FTP en Centos 6

2

TABLA DE CONTENIDO

Introducción ..................................................................................... 3 Protocolo FTP ........................................................................... 3 Protocolo FTPS ......................................................................... 4 Vsftpd ....................................................................................... 4

Permisos de Firewall ........................................................................ 5 Instalación del servidor FTP ............................................................. 5 Configuración del fichero vsftpd.conf .............................................. 6 Configuración del fichero chroot_list .............................................. 9 Creación de usuarios FTP ................................................................. 9 Inicio de servidor FTP ..................................................................... 10 Compartir archivos por medio de Filezilla Client ........................... 11 Referencias ..................................................................................... 14

Page 3: Servidor FTP en Centos 6

3

INTRODUCCIÓN

Protocolo FTP [1][2][3] Es un protocolo de transferencia de archivos, que como un nombre lo indica, sirve para transferir archivos a través de internet entre cliente y servidor por medio de una dirección. Es uno de los protocolos más viejos y populares que se encuentra en la Internet hoy en día. Se describe en le RFC 959 – FTP (“File Transfer Protocol”). FTP usa TCP como protocolo de transporte para proporcionar conexiones fiables entre los extremos. Se emplean dos conexiones: la primera es para el login y sigue el protocolo TELNET y la segunda es para gestionar la transferencia de datos. Como es necesario hacer un login en el host remoto, el usuario debe tener un nombre de usuario y un password para acceder a los archivos y a directorios. El usuario que inicia la conexión asume la función de cliente, mientras que el host remoto adopta la función del servidor. Un ejemplo de una sesión en FTP puede verse en la siguiente figura:

Figura 1. Sesión en FTP

Page 4: Servidor FTP en Centos 6

4

Protocolo FTPS [4] Es la forma de designar diferentes métodos a través de las cuales se pueden realizar transferencias de archivos a través del protocolo FTP utilizando SSL o TLS. Son métodos muy diferentes a los del protocolo SFTP (SSH File Transfer Protocol). Existen dos diferentes métodos para realizar una conexión SSL/TLS a través de FTP. La primera y más antigua es a través de FTPS Implícito (Implicit FTPS), que consiste en cifrar la sesión completa a través de los puertos 990 (FTPS) y 998 (FTPS Data), sin permitir negociación con el cliente, el cual está obligado a conectarse directamente al servidor FTPS con el inicio de sesión SSL/TLS. El segundo método, que es el recomendado por el RFC 4217 y el utilizado por vsftpd, es FTPS Explícito(Explicit FTPS o FTPES), donde el cliente realiza la conexión normal a través del puerto 21 y permitiendo negociar, de manera opcional, una conexión TLS.

Figura 2. Protocolo FTP

Vsftpd [5] 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 la sencillez para su configuración cuando se le es comparado con otras alternativas como ProFTPD y Wu-ftpd. En la actualidad se estima que vsftpd podría ser quizá el servidor FTP más seguro del mundo.

PERMISOS DE FIREWALL

Page 5: Servidor FTP en Centos 6

5

Antes de hacer el proceso de instalación del servicio FTP se debe desactivar el firewall para que se pueda acceder a la red desde el computador. Empezamos con ingresar con nuestro usuario y contraseña al terminal, para estar en modo privilegio. [Angelica_Palacios@AngelicaPalacios ~]$ su - Contraseña: [Angelica_Palacios@AngelicaPalacios ~]$ Procedemos a utilizar el comando iptables, el cual es una herramienta que nos va a permitir definir el filtrado del tráfico que circula por la red. Para este procedemos a utilizar los comandos service iptables stop y service ip6tables stop para detener los servicios, y para confirmar que el servicio este desactivado se emplean los comandos chkconfig iptables off y chkconfig ip6tables. [root@AngelicaPalacios ~]$ service iptables stop iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ] [root@AngelicaPalacios ~]$ service ip6tables stop ip6tables: Flushing firewall rules: [ OK ] ip6tables: Setting chains to policy ACCEPT: filter [ OK ] ip6tables: Unloading modules: [ OK ] [root@AngelicaPalacios ~]$ chkconfig iptables off [root@AngelicaPalacios ~]$ chkconfig ip6tables off

INSTALACIÓN DEL SERVICIO FTP Después de haber el proceso de los permisos de firewall, procedemos a la instalación del servidor ftp con el comando yum install –y vsftpd el cual solo tarda unos cuantos segundos (asegurese de que su máquina virtual tenga internet para el proceso de instalación). Utilizamos el comando service vsftpd start para iniciar los servicios de servicio ftp y confirmamos con el comando chkconfig vsftpd on. [root@AngelicaPalacios ~]$ yum install –y vsftpd ... (Muestra el proceso de instalación con todas las actualizaciones) [root@AngelicaPalacios ~]$ service vsftpd start Starting vsftpd for vsftpd: [ OK ] [root@AngelicaPalacios ~]$chkconfig vsftpd on

CONFIGURACIÓN DEL FICHERO VSFTPD.CONF

Page 6: Servidor FTP en Centos 6

6

Para la modificación del archivo vsftpd.conf empleamos el comando [root@AngelicaPalacios ~]$ nano /etc/vsftpd/vsftpd.conf

Abre el archivo dentro del mismo terminal para la modificación de este como se muestra a continuación : # Example config file /etc/vsftpd/vsftpd.conf # # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities. # # 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 # # Uncomment this to allow the anonymous FTP user to upload files. This only # has an effect if the above global write enable is activated. Also, you will # obviously need to create a directory writable by the FTP user. #anon_upload_enable=YES # # Uncomment this if you want the anonymous FTP user to be able to create # new directories. #anon_mkdir_write_enable=YES # # Activate directory messages - messages given to remote users when they # go into a certain directory. dirmessage_enable=YES # # The target log file can be vsftpd_log_file or xferlog_file. # This depends on setting xferlog_std_format parameter xferlog_enable=YES # # Make sure PORT transfer connections originate from port 20 (ftp-data). connect_from_port_20=YES # # If you want, you can arrange for uploaded anonymous files to be owned by # a different user. Note! Using "root" for uploaded files is not # recommended!

Page 7: Servidor FTP en Centos 6

7

#chown_uploads=YES #chown_username=whoever # # The name of log file when xferlog_enable=YES and xferlog_std_format=YES # WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log #xferlog_file=/var/log/xferlog # # Switches between logging into vsftpd_log_file and xferlog_file files. # NO writes to vsftpd_log_file, YES to xferlog_file xferlog_std_format=YES # # You may change the default value for timing out an idle session. #idle_session_timeout=600 # # You may change the default value for timing out a data connection. #data_connection_timeout=120 # # It is recommended that you define on your system a unique user which the # ftp server can use as a totally isolated and unprivileged user. #nopriv_user=ftpsecure # # Enable this and the server will recognise asynchronous ABOR requests. Not # recommended for security (the code is non-trivial). Not enabling it, # however, may confuse older FTP clients. #async_abor_enable=YES # # By default the server will pretend to allow ASCII mode but in fact ignore # the request. Turn on the below options to have the server actually do ASCII # mangling on files when in ASCII mode. # Beware that on some FTP servers, ASCII support allows a denial of service # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd # predicted this attack and has always been safe, reporting the size of the # raw file. # ASCII mangling is a horrible feature of the protocol. ascii_upload_enable=YES ascii_download_enable=YES # # You may fully customise the login banner string: ftpd_banner=Welcome to OSTECHNIX FTP service. # # You may specify a file of disallowed anonymous e-mail addresses. Apparently # useful for combatting certain DoS attacks. #deny_email_enable=YES # (default follows) #banned_email_file=/etc/vsftpd/banned_emails # # 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_local_user=YES #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd/chroot_list #

Page 8: Servidor FTP en Centos 6

8

# You may activate the "-R" option to the builtin ls. This is disabled by # default to avoid remote users being able to cause excessive I/O on large # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume # the presence of the "-R" option, so there is a strong case for enabling it. ls_recurse_enable=YES # # When "listen" directive is enabled, vsftpd runs in standalone mode and # listens on IPv4 sockets. This directive cannot be used in conjunction # with the listen_ipv6 directive. listen=YES # # This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6 # sockets, you must run two copies of vsftpd with two configuration files. # Make sure, that one of the listen options is commented !! #listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES

Buscamos en el archivo anterior con el comando ctrl + W las opciones, en donde una vez ubicada en la línea borrar (si es que esta) el signo de número (#) para habilitar la función:

La opción anonymous_enable se utiliza para definir si se permitirán los accesos anónimos al servidor. En este caso pondremos NO.

La opción local_enable establece si se van a permitir los accesos autenticados de los usuarios locales del sistema. En este caso pondremos YES.

La opción write_enable establece si se permite ejecutar la escritura en el servidor. En este caso pondremos YES.

La opción ftpd_banner establece el banderín de bienvenida que será mostrado cada vez que un usuario acceda al servidor. Puede establecerse cualquier frase breve que considere conveniente, pero sin signos de puntuación. En este caso pondremos Bienvenido al Servidor FTP de Linux para todos

La opción chroot_list_enable establece que el servidor FTP que el usuario solo podrá trabajar dentro de su carpeta de trabajo. En este cado pondremos YES.

La opción local_umask indica que los archivos subidos al servidor quedarán con algunos permisos. En este caso pondremos 022 para que solo pueda escribir para el grupo y los demás.

Las opciones ascii_upload_enable y ascii_download_enable indican que habilita la carga y descarga de archivos en formato ascii. En este caso podremos YES.

Page 9: Servidor FTP en Centos 6

9

Después de haber hecho todas las modificaciones anteriores de las opciones, procedemos a guardar con ctrl + O, luego enter y para salir del fichero ctrl + X. Como ya habíamos iniciado los servicios de ftp sin las modificaciones, reiniciamos el servidor con el comando service vsftpd restart. [root@AngelicaPalacios ~]$ service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ]

CONFIGURACIÓN DEL FICHERO CHROOT_LIST La configuración de este fichero es sencillo, ya que solo se agregan el nombre de los usuarios que serán limitados para trabajar dentro de su carpeta personal de trabajo., para esto se emplea el siguiente comando: [root@AngelicaPalacios ~]$ nano /etc/vsftpd/chroot_list

Abre el archivo dentro del mismo terminal para la creación de la lista de usuarios : abcdef ghijkl mnopqr stuvwx yzabcd efghij “chroot_list”

Después de haber hecho todas las modificaciones anteriores de las opciones, procedemos a guardar con ctrl + O, luego enter y para salir del fichero ctrl + X.

CREACIÓN DE USUARIOS FTP Para la creación de usuarios FTP tenemos que tener en cuenta la lista que creamos en el fichero chroot_list. Cada usuario debe tener una contraseña para lo que utilizan los siguientes comandos

Useradd para agregar el nombre del usuario que estará en el servidor FTP

Passwd que es la contraseña del usuario para ingresar el servidor FTP [root@AngelicaPalacios ~]$ useradd abcdef [root@AngelicaPalacios ~]$ passwd abcdef Changing password for user abcdef New password:

Page 10: Servidor FTP en Centos 6

10

BAD PASSWORD: it is base on a dictionary Word Retype new password: passwd: all authentication tokens updated successfully

INICIO AL SERVICIO FTP Para mirar la dirección IP de donde esta conectado el servidor FTP, utilizamos el comando ifconfig, donde se muestra las diferentes tarjetas de red del computador pero solo hay una que esta activada, en este caso fue la dirección IP 192.168.3.5. Ingresamos al servidor FTP con el comando ftp (en minúsculas) seguido de la dirección IP del servidor como se muestra a continuación: [root@AngelicaPalacios ~]$ ftp 192.168.3.5 -bash: ftp: command not found

Nos genera un error, se deba a que no se ha instalado el paquete ftp, utilizamos el comando yum install –y ftp y se empieza a descargar con todas las actualizaciones necesarias: [root@AngelicaPalacios ~]$ yum install –y ftp Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package ftp.i686 0:0.17-51.1.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: ftp i686 0.17-51.1.el6 localrepo 55 k Transaction Summary ================================================================================ Install 1 Package(s) Total download size: 55 k Installed size: 91 k Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. Installing : ftp-0.17-51.1.el6.i686 1/1 Verifying : ftp-0.17-51.1.el6.i686 1/1 Installed: ftp.i686 0:0.17-51.1.el6 Complete!

Page 11: Servidor FTP en Centos 6

11

Despues de haber instalado el paquete ftp, ingresamos nuevamente al servidor, como se muestra a continuación veremos que nos muestra el mensaje que habíamos puesto en una de las opciones del fichero vsftpd.conf (“Bienvenido al servidor FTP de Linux para todos”). Nos pide que ingresemos el usuario creado (abcdef) con su respectiva contraseña para poder acceder al servidor ftp. [root@AngelicaPalacios ~]$ ftp 192.168.3.5 Connected to 192.168.3.5 (192.168.3.5). 220 Bienvenido al servidor FTP de Linux para todos Name (192.168.3.5:root): abcdef 331 Please specify the password Password: 230 Login successful Remote system type is UNIX Using binary mode to transfer files. ftp>

Ya estando dentro del servidor ftp, procedemos a utilizar el comando pwd donde nos imprime la ruta remota en la cual estamos trabajando. En este caso es el del usuario abcdef. ftp> pwd 257 “/home/abcdef”

COMPARTIR ARCHIVOS POR MEDIO DE FILEZILLA CLIENT

Como ya podemos ingresar el servidor ftp, por fuera de la máquina virtual instalamos el programa Filezilla Client para compartir archivos desde el pc con el usuario. En el campo de Servidor ingresamos la dirección del servidor (192.168.3.5), el nombre del usuario (abcdef), la contraseña y el número del puerto (21 para ftp), como se muestra en la figura 3 donde se puede ver que se estableció conexión con el usuario en el servidor ftp. Procedemos a compartir un archivo desde el PC (ver figura 4) al usuario del servidor ftp (ver figura 5), donde el proceso de envio del archivo se muestra en Filezilla Client (ver figura 3) con el mensaje de que la transferencia ha sido correcta al directorio de /home/abcdef.

Page 12: Servidor FTP en Centos 6

12

Figura 3. Conexión del servidor

Figura 4. Archivo enviado al usuario abcdef

Figura 5. Archivo recibido del PC

Page 13: Servidor FTP en Centos 6

13

Para también comprobar que el archivo llegó al usuario en el servidor FTP, realizamos el

siguiente proceso:

[root@AngelicaPalacios ~]$ cd /etc [root@AngelicaPalacios etc]$ ls

Page 14: Servidor FTP en Centos 6

14

[root@AngelicaPalacios etc]$ cd vsftpd [root@AngelicaPalacios vsftpd]$ ls chroot_list ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh [root@AngelicaPalacios vsftpd]$ cd .. [root@AngelicaPalacios etc]$ cd .. [root@AngelicaPalacios /]$ ls

[root@AngelicaPalacios /]$ cd home [root@AngelicaPalacios home]$ ls

[root@AngelicaPalacios home]$ cd abcdef [root@AngelicaPalacios abcdef]$ ls Interfaz red.PNG

El comando ls muestra todo los archivos que se encuentran disponibles en el fichero o carpeta donde se encuentre ubicado.

REFERENCIAS [1] Protocolo FTP, Herramientas WEB para la enseñanza de Protocolos de Comunicación, http://neo.lcc.uma.es/evirtual/cdd/tutorial/aplicacion/ftp.html [2] Protocolo FTP, Red Hat Enterprise Linux 4: Manual de referencia, http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-ftp.html [3]RFC 959 – FTP (File Transfer Protocol), J. Postel y J. Reynolds, Octubre 1985, IETF, https://www.ietf.org/rfc/rfc959.txt [4] Protocolo FTPS, Alcance libre, Barrios Dueñas Joel, http://www.alcancelibre.org/staticpages/index.php/09-como-vsftpd [5] Vsftpd, Probably the most secure and fastest FTP server for UNIX – like systems, about vsftpd, https://security.appspot.com/vsftpd.html#about