documentación_instalación_vsftpd-servidor

7

Click here to load reader

Transcript of documentación_instalación_vsftpd-servidor

Page 1: documentación_instalación_vsftpd-servidor

Instalación servidor VSFTPD en RED HAT

Fernando Valin Rodriguez

29/03/2013

Page 2: documentación_instalación_vsftpd-servidor

Lo primero es instalar el servidor ftp, en este caso vsftpd, para instalarlo en distribuciónes red hat, empleamos el siguiente comando.

# yum install vsftpd

A continuación editamos el archivo /etc/vsftpd.conf.

# vim /etc/vsftpd.conf

El contenido de este puede variar según las características que queramos dar al servicio, pero este sería el contenido mínimo necesario para que funcione bien con usuarios virtuales

# Bloquear el acceso anónimo

anonymous_enable=NO

# Permitir el acceso local, necesario para usuarios virtuales

local_enable=YES

# Permitir la escritura y la descarga de ficheros

write_enable=YES

download_enable=YES

# Máscara de ficheros

local_umask=022

# Puerto de conexión

connect_from_port_20=YES

# Generar archivo log

log_ftp_protocol=YES

# Otras características

listen=YES

xferlog_std_format=YES

Page 3: documentación_instalación_vsftpd-servidor

pam_service_name=vsftpd

userlist_enable=YES

hide_ids=YES

# Enjaulamiento de usuario

chroot_local_user=YES

# Usarios virtuales y ruta de acceso

user_sub_token=$USER

local_root=/var/ftpdome/$USER

virtual_use_local_privs=YES

guest_enable=YES

nopriv_user=vsftpd

guest_username=vsftpd

Bien, ahora mismo con el archivo de configuración definido, lo que deberíamos conseguir es que cada usuario virtual (no pertenece a la maquina) pueda conectarse al servidor mediante ftp y tener su propio directorio para subir o descargar archivos que se encuentren en su directorio o sub-directorios, eso si, sin que pueda acceder a otros directorios que estén por encima del que le definimos. Para esto, primero tenemos que modificar la manera en que nos autenticamos en el servicio, esto lo haremos modificando el archivo pam, indicándole que la autentificación la haga a través de un archivo de texto.

Ahora se crea un archivo PAM para que use el archivo pata autenticar los usuarios (el nombre del archivo tiene que ser el mismo especificado en la opción pam_service_name del archivo vsftpd.conf) # nano /etc/pam.d/vsftpd

El archivo ya se crea por defecto al instalar vsftpd, así que comentad todas las lineas que contiene y añadid lo siguiente sin comentar: auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd account required pam_permit.so IMPORTANTE: Estas reglas tienen que ocupar una linea cada una, de lo contrario, serán tomadas como módulos distintos y no funcionará.

Page 4: documentación_instalación_vsftpd-servidor

Ahora vamos a crear el archivo que contiene los usuarios y contraseñas, para esto utilizaremos htpasswd , el cual encripta las contraseñas de los usuarios virtuales mediante un hash, lo cual suma algo de seguridad.# cd /etc/vsftpd

(En caso de no tener instalado el modulo que nos permite utilizar htpasswd, lo instalamos)# yum install libpam-pwdfile

# htpasswd -c ftpd.passwd dome

Ahora creamos el usuario local al cual se conectaran los usuarios virtuales: # groupadd nogroup# useradd - -home /home/vsftpd - -gid nogroup -m - -shell /bin/false vsftpd

Bien, vamos a crear los directorios de los usuarios virtuales, uno para cada usuario virtual, tomaremos como ejemplo el usuario virtual “dome”, despues cambiamos su propietario por el usuario que gestiona los usuarios virtuales y por ultimo damos permisos 755 sobre los “home” de los usuarios virtuales. mkdir ftpdome

chown -R vsftpd:nogroup ftpdome

chmod 755 -R ftpdome

Page 5: documentación_instalación_vsftpd-servidor

Y probamos si funciona como deseamos , lo correcto es que cada usuario virtual tenga su directorio y no pueda acceder a ningún otro que este a su mismo nivel (por ejemplo el del resto de usuarios virtuales) , pero que en su directorio y sub-directorios pueda descargar, crear y subir archivos.

Page 6: documentación_instalación_vsftpd-servidor

IMPORTANTE: Durante la instalación del servidor, no conseguía logearme en el servicio FTP estando aparentemente todo correcto, el problema resultó ser que Cent OS no trae instalado el modulo de pam que utilizamos “pam_pwdfile.so” para autenticar a los usuarios, así que era imposible logearnos y mostraba el error 530: Login Failed. A continuación dejo la solución al problema.

Page 7: documentación_instalación_vsftpd-servidor

Creating vsftpd virtual user usually needs pam_pwdfile.so, unfortunately, Centos doesn’t have official pam_pwdfile package that you can yum.So we need to install from source.This requires Linux-PAM-0.77.tar.gz and pam_pwdfile-0.99.tar.gz.

1. Install required tools

[root@yohanes ~]# yum -y install gcc make autoconf

2. Download and edit a file (only for 64bit Centos)

Notes: Ignore when it says rm: cannot remove `default.defs’: No such file or directory

[root@yohanes ~]# cd /usr/local/src[root@yohanes /usr/local/src]# wget http://www.kernel.org/pub/linux/libs/pam/pre/library/Linux-PAM-0.77.tar.gz[root@yohanes /usr/local/src]# tar zxvf Linux-PAM-0.77.tar.gz[root@yohanes /usr/local/src]# cd Linux-PAM-0.77/modules[root@yohanes /usr/local/src/Linux-PAM-0.77/modules]# wget http://cpbotha.net/files/pam_pwdfile/pam_pwdfile-0.99.tar.gz[root@yohanes /usr/local/src/Linux-PAM-0.77/modules]# tar zxvf pam_pwdfile-0.99.tar.gz[root@yohanes /usr/local/src/Linux-PAM-0.77]# cd ..[root@yohanes /usr/local/src/Linux-PAM-0.77]# rm default.defs[root@yohanes /usr/local/src/Linux-PAM-0.77]# ln -s defs/redhat.defs default.defs

Note for Centos 64bit

For 64bit centos, we need to edit configure.in and add -fPIC to the OS_CFLAGS so that it

reads[...]

### Example: -D_POSIX_SOURCE: needed on Linux but harms Solaris.case $OS inlinux)OS_CFLAGS="-ansi -D_POSIX_SOURCE -pedantic -fPIC"[...]

3. Compile and install pam_pwdfile.so

Regenerate configure file

[root@yohanes /usr/local/src/Linux-PAM-0.77]# autoconf

Compile

[root@yohanes /usr/local/src/Linux-PAM-0.77]# make all

For 32bit Centos, copy pam_pwdfile.so to /lib/security, for 64bit Centos use /lib64/security

[root@yohanes /usr/local/src/Linux-PAM-0.77]# cp modules/pam_pwdfile-0.99/pam_pwdfile.so /lib64/security