Sei sulla pagina 1di 7

Instalacin servidor VSFTPD en RED HAT

Fernando Valin Rodriguez 29/03/2013

Lo primero es instalar el servidor ftp, en este caso vsftpd, para instalarlo en distribucines red hat, empleamos el siguiente comando. # yum install vsftpd A continuacin editamos el archivo /etc/vsftpd.conf. # vim /etc/vsftpd.conf El contenido de este puede variar segn las caractersticas que queramos dar al servicio, pero este sera el contenido mnimo necesario para que funcione bien con usuarios virtuales # Bloquear el acceso annimo 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 # Mscara de ficheros local_umask=022

# Puerto de conexin connect_from_port_20=YES # Generar archivo log log_ftp_protocol=YES # Otras caractersticas listen=YES xferlog_std_format=YES

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 configuracin definido, lo que deberamos 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 subdirectorios, eso si, sin que pueda acceder a otros directorios que estn 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, indicndole que la autentificacin la haga a travs 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 opcin 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 aadid 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, sern tomadas como mdulos distintos y no funcionar.

Ahora vamos a crear el archivo que contiene los usuarios y contraseas, para esto utilizaremos htpasswd , el cual encripta las contraseas 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

Y probamos si funciona como deseamos , lo correcto es que cada usuario virtual tenga su directorio y no pueda acceder a ningn 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.

IMPORTANTE: Durante la instalacin del servidor, no consegua 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 continuacin dejo la solucin al problema.

Creating vsftpd virtual user usually needs pam_pwdfile.so, unfortunately, Centos doesnt 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/LinuxPAM-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 in linux) 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

Potrebbero piacerti anche