servidor ftp

23
INSTALACION Y CONFIGURACION DE SERVIDOR FTP RODULFO GUSTAVO RODRÍGUEZ GARCÍA CÓD.: 1150485 ENTREGADO A: ING. JEAN POLO CEQUEDA OLAGO UNIVERSIDAD FRANCISCO DE PAULA SANTANDER FACULTAD DE INGENIERÍAS INGENIERÍA DE SISTEMA

Upload: erica-richards

Post on 09-Aug-2015

36 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Servidor Ftp

INSTALACION Y CONFIGURACION DE SERVIDOR FTP

RODULFO GUSTAVO RODRÍGUEZ GARCÍA

CÓD.: 1150485

ENTREGADO A:

ING. JEAN POLO CEQUEDA OLAGO

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER

FACULTAD DE INGENIERÍAS

INGENIERÍA DE SISTEMA

CÚCUTA

2012

Page 2: Servidor Ftp

CONFIGURACION DEL SERVICIO FTP EN FEDORA 17

Para la instalación del servicio FTP en Fedora es necesario abrir la terminal y acceder

en modo root, y luego de esto continuar con los siguientes pasos:

Paso 1: Instalación

En Fedora, el paquete vsftpd ofrece el Demonio FTP muy seguro. El Demonio FTP muy

seguro (vsftpd por las iníciales en inglés de Very Secure FTP Daemon) está diseñado

desde un principio para ser veloz, estable, y, lo más importante, seguro.

Para instalar vsftpd en nuestro Fedora escribimos: yum –y install vsftpd

Luego de terminada la instalación se necesita modificar el archivo de configuración de

vsftpd para hacer los cambios necesarios, para esto se abrirá el archivo vsftpd.conf

haciendo uso del editor de texto para la Terminal, nano. Se escribirá: nano

/etc/vsftpd/vftpd.conf

Page 3: Servidor Ftp

El archivo de configuración será de la siguiente manera y las lineas que se encuentran

resaltadas y con letras de tamaño mayor deberán quedar de esa manera para que sirva

el servidor ftp.

# 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

Page 4: Servidor Ftp

# 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.

# When SELinux is enforcing check for SE bool ftp_home_dir

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.

# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd$

# 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.

Page 5: Servidor Ftp

dirmessage_enable=YES

# Activate logging of uploads/downloads.

#anon_upload_enable=YES

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!

#chown_uploads=YES

#chown_username=whoever

# You may override where the log file goes if you like. The default is shown

# below.

#xferlog_file=/var/log/vsftpd.log

# If you want, you can have your log file in standard ftpd xferlog format.

# Note that the default log file location is /var/log/xferlog in this case.

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.

Page 6: Servidor Ftp

#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 blah FTP service.

Page 7: Servidor Ftp

# 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

# 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.

Page 8: Servidor Ftp

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

Las líneas a modificar son:

# linea 12: no anonymous

anonymous_enable=NO

Este parámetro se utiliza para definir si se permitirán los accesos anónimos al servidor.

Se establezca como valor YES o NO de acuerdo a lo que se requiera, en este caso no

deseamos accesos anónimos, por tanto ponemos NO.

# linea 82,83: quitar comentario ( permitir modo ascii )

ascii_upload_enable=YES

Las transferencias de datos serán en modo ASCII para las subidas de archivos al

servidor.

ascii_download_enable=YES

Page 9: Servidor Ftp

Las transferencias de datos serán en modo ASCII para las descargas de archivos del

servidor.

# line 97, 98: quitar comentario ( habilitar chroot )

chroot_local_user=YES

chroot_list_enable=YES

# line 100: quitar comentario ( especificar lista chroot )

chroot_list_file=/etc/vsftpd/chroot_list

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 recluir a los

usuarios a solo poder utilizar su propio directorio personal, puede hacerse fácilmente

con el parámetro chroot_local_user que habilitará la función de chroot() 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().

# line 106: quitar comentario

ls_recurse_enable=YES

Esta linea permite habilitar que el listado del contenido se realice de forma recursiva.

Basicamente y quitando los comentarios en el archivo de configuracion, este quedaría

de la siguiente manera:

1. anonymous_enable=NO : YES/NO, permite el acceso de usuarios anónimos al

servidor FTP.

2. local_enable=YES : YES/NO, permite a los usuarios el acceso a sus carpetas

creadas.

Page 10: Servidor Ftp

3. write_enable=YES : YES/NO, da permiso a los usuarios para poder subir los arvhivos

al servidor FTP.

4. local_umask=022 : 022/077, si el valor es "022", los archivos subidos al servidor FTP

tendrán permisos de solo lectura y escritura para el propietario del archivo y de solo

lectura para el grupo y el resto.

5. dirmessage_enable=YES : YES/NO, los clientes FTP son mostrados en un mensaje

cuando entran por primera vez en su directorio.

6. Xferlog_enable=YES : Activa el log del servidor.

7. connect_from_port_20=YES : Permite que el servicio se ejecute con privilegios

suficientes para abrir el puerto 20 en el servidor durante las transferencias de datos.

8. xferlog_std_format=YES : Cuando se activa en combinación con xferlog_enable, sólo

se escribe un archivo de registro compatible con wu-ftpd al archivo especificado en la

directriz xferlog_file.

9. ascii_upload_enable=YES : Activa el modo ASCII, pero suele estar desactivada para

evitar ataques DDoS usando este modo.

10. ascii_download_enable=YES : Igual a “ascii_upload_enable”.

11. chroot_local_user=YES : Este parámetro se utiliza para el enjaulamiento de

usuarios.

12. chroot_list_enable=YES : Este parámetro establece que se utilizará la lista de

exclusiones para el enjaulamiento.

13. chroot_list_file=/etc/vsftpd/chroot_list : Este parámetro especifica la lista que se

utilizará para las exclusiones de enjaulamiento.

14. ls_recurse_enable=YES : Establece si la opción -r del comando ls estará activa o

no.

Page 11: Servidor Ftp

15. listen=YES : Establece si el servicio estará a la escucha o no (si no está a la

escucha es obvio que no funcionará).

16. pam_service_name=vsftpd : Especifica el nombre de servicio PAM para vsftpd.

17. userlist_enable=YES : Si esta habilitada, se le negara el acceso a los usuarios

especificado en el archivo userlist_file.

18. tcp_wrappers=YES : Sirve para controlar las conexiones.

Luego de modificar correctamente el archivo vsftpd.conf se guardan los cambios y se

abre el archivo /etc/vsftpd/chroot_list con el editor de texto para la terminar nano.

Dentro de este archivo se escribe el nombre de los usuarios que se van a conectar a

nuestro servidor FTP.

Page 12: Servidor Ftp

Se guardan los cambios.

Después de hacer esas modificaciones se escribe:

Setsebool –P ftp_home_dir=1: El comando setsebool permite activar o desactivar

booleanos. El comando –P se utiliza para que las modificaciones que se hagan se

mantengan una vez la maquina sea reiniciada. El booleano ftp_home_dir es el que

permite a FTP la lectura y escritura de archivos en el directorio principal del usuario, al

hacerlo = 1, se esta permitiendo al demonio FTP (vsftpd) la lectura y escritura de

archivos en los directorios de inicio de los usuarios.

Para iniciar el proceso de vsftpd se escribe: systemctl start vsfptd.service

para ejecutar por primera vez el servicio, utilice:

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

Luego de arrancar el proceso se puede acceder a al servidor desde otra máquina

conectada a la red.

Page 13: Servidor Ftp

Para esto se utilizara filezilla que es una aplicación para la transferencia de archivos por

FTP. Permite transferir archivos desde una computadora local, hacia uno o más

servidores FTP (y viceversa) de forma sencilla.

Se escribe la direccion ip del servidor al que se va a acceder, el usuario, la contraseña y

se hace clic en “quicconect”

Page 14: Servidor Ftp

En la parte izquierda de filezilla se encuentran los archivo locales, y en la parte dereca

se encuentran los archivos de la maquina remota.

Posible error con VSFTPD

Montando un Simple Servidor FTP, me encontré con varios errores al momento de la

conexión (es mi primera vez montando un servidor FTP utilizando la herramient

VSFTPD, en Linux CentOS).

Comenzemos; ya instalado el software en mi máquina, al intentar acceder vía FTP

presentaba errores como estos con mi cliente FTP:

Page 15: Servidor Ftp

500 OOPS: cannot change directory:/home/

Para resolver este error, es necesario ejecutar las siguientes líneas en una terminal:

# getsebool -a | grep ftp (para consultar el estado de las configuraciones FTP).

Como se logra apreciar, están todas las configuraciones en OFF (por eso el directorio

no es accesible). Pueso ahora corregimos esto con el siguiente comando:

# setsebool -P ftp_home_dir on (esperamos un poco...)

una vez ejecutado el proceso, volvemos a ejecutar el primer comando para verificar la

corrección de los parámetros:

Page 16: Servidor Ftp

Ahora chequeamos nuestro cliente FTP y probamos la conexión:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Este error se da porque vsftpd no permite que los usuarios puedan escribir en su

carpeta raíz. Una solución es quitarle los permisos de escritura a esa carpeta. Esto hará

Page 17: Servidor Ftp

que el usuario no pueda hacer nada en su propia carpeta, así que lo mejor es crearle

otra dentro con permisos normales para que pueda utilizarla.

sudo   chmod   555   /home/ftp/antonio

sudo   mkdir   /home/ftp/antonio/documentos

sudo   chown   antonio:ftp   /home/ftp/antonio/documentos

Con todo esto ya deberías poder acceder al servidor FTP con cualquier usuario del

sistema sin ningún problema.

Cómo crear un usuario FTP

1. El directorio en donde tenga que acceder el usuario debe estar creado, con

propietario "ftp" y con permisos para operar:

sudo mkdir /ruta/a/su/directorio

sudo chown -R ftp:ftp /ruta/a/su/directorio

sudo chmod -R 755 /ruta/a/su/directorio