vsftpd virtual users centos5.5
TRANSCRIPT
CentOS 5.5
VSFTPD (Very Secure FTP server)
JHON FREDY HERRERA
SERVICIOS DE RED
Manual Step by Step
COLOMBIA (MEDELLIN)
2010
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 2
INDICE
Objetivo ............................................................................................................................... 3
Topología ............................................................................................................................. 4
Tabla de direccionamiento .................................................................................................... 6
VSFTPD ................................................................................................................................. 7
VSFTPD & Usuarios virtuales ................................................................................................. 8
VSFTPD ....................................................................................................................................................... 8
Bibliografía ......................................................................................................................... 29
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 3
Objetivo
Realizar la instalación y configuración de FTP en CentOS permitiendo la administración de los
usuarios en una base de datos local permitiendo así la creación de usuarios virtuales.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 4
Topología
A continuación se muestra por medio de una imagen la topología que se implementara para la
realización de este proyecto.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 6
Tabla de direccionamiento
Dispositivo Interfaz Dirección IP Mascara de
subred Gateway
predeterminada
SVR-WEB-FTP-01 NIC 192.168.1.253 255.255.255.0 192.168.1.254
PCCLIENTE NIC 192.168.1.1 255.255.255.0 192.168.1.254
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 7
VSFTPD
vsftpd, que significa "muy Secure FTP Daemon", es un servidor FTP para sistemas Unix, incluyendo
Linux. Es licenciado bajo la GNU General Public License. Es compatible con IPv6 y SSL.
vsftpd apoya explícita (desde 2.0.7) e implícitos FTPS (desde 2.1.0).
vsftpd es el servidor FTP por defecto en Ubuntu, CentOS, Fedora, y distribuciones de Red Hat
Enterprise Linux NimbleX Linux.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 8
VSFTPD & Usuarios virtuales
En esta sección veremos cómo instalar y configurar los servicios de FTP para que utilice cuentas
virtuales para el inicio de secciones, esto con el fin de tener una administración de las cuentas que
se utilicen para el servicio de FTP de un amanera centralizada y flexible.
VSFTPD
Asumiendo que nuestro OS (Operating System) esté instalado y actualizado procederemos a
instalar los paquetes necesarios, comenzaremos con el servicio de ftp, para llevar a cabo esto
ejecutamos el comando como root.
yum update
Si nuestro servidor hace tiempito que lo tenemos se recomienda actualizar el kernel e iptables, lo
hacemos de la siguiente manera
yum update kernel iptables
yum install vsftpd
Debemos tener presente que en CentOS no se inicia automáticamente los servicios, ni tampoco se
inician cuando inicia el sistema, entonces con los siguientes comandos solucionaremos esto.
chkconfig vsftpd on
/sbin/service vsftpd restart (MODO GRAFICO CentOS)
service vsftpd restart (MODO CLI CentOS)
El primer comando es para que el servicio de ftp se inicie durante el inicio del sistema, el segundo
comando se debe utilizar para reiniciar el servicio si estamos trabajando en CentOS en modo
grafico, y el tercer comando se utiliza si estamos trabajando con CentOS en modo CLI (Interfaz de
Línea de Comandos).
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 9
El comando chkconfig --list | grep vsftpd nos permite visualizar si el servicio realmente si iniciara
durante el inicio del sistema.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 10
El comando netstat -tan nos confirma que el servicio está en escucha en el puerto predeterminado
21 de tcp.
Con el siguiente comando crearemos el directorio donde alojaremos todos los archivos de
configuración de todos los usuarios virtuales que iremos creando para el servicio de FTP.
yum install db4-utils
Posteriormente a la instalación del paquete db4-utils crearemos el archivo a partir del cual se
creara la base de datos y la cual contendrá los usuarios virtuales que usaremos para el servicio de
FTP.
Nos posicionamos en el directorio /etc/vsftpd
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 11
Observemos que el comando pwd nos ratifica que estamos en la ubicación /etc/vsftpd.
Creamos el archivo virtual-users.txt, en el cual agregaremos los usuarios y passwords los usuarios
deben ir en una linea y los password en otra, ejemplo:
Usuario1
passwordusuario1
usuario2
passwordusuario2
Y asi sucesivamente con todos los uaurios que queramos agregar a la base de datos para que se
puedan loguear en el servicio de FTP.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 12
Guardamos el archivo y sus cambios.
Ejecutamos el comando siguiente para guardar la información en un archivo de base de datos.
db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db
Y eliminamos el archivo virtual-users.txt.
Nota: si deseamos en un futuro agregar más usuarios para permitir en FTP debemos crear
nuevamente el archivo virtual-users.txt con los usuarios existentes y los nuevos que se permitirán
y generar nuevamente el archivo virtual-users.db con el comando anterior.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 13
A continuación crearemos un archivo PAM, en el cual especificaremos el archivo que contendrá los
usuarios que se permitirán loguear en el servicio de FTP.
nano /etc/pam.d/vsftpd-virtual
El archivo lo crearemos en /etc/pam.d/ con el nombre de vsftpd-virtual, y agregaremos la
siguiente información al archivo.
auth required pam_userdb.so db=/etc/vsftpd/virtual-users
account required pam_userdb.so db=/etc/vsftpd/virtual-users
session required pam_loginuid.so
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 14
Guardamos los cambios.
A continuación realizaremos una copia del archivo de configuración principal de vsftpd.
cp -v vsftpd.conf vsftpd.conf-orig
El modificados -v se agrega para ver la copia en tiempo real.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 15
Ejecutaremos el comando:
> /etc/vsftpd/vsftpd.conf
Esto con el fin de limpiar todo la información que contenga el archivo vsftpd.conf y empezar a
agregar las directivas que requerimos.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 16
Editamos el archivo vsftpd.conf y agregaremos la siguiente información.
background=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
virtual_use_local_privs=YES
write_enable=YES
pam_service_name=vsftpd-virtual
user_sub_token=$USER
local_root=/var/www/html/$USER
anon_root=/var/www/ftp
chroot_local_user=YES
hide_ids=YES
listen=YES
listen_port=21
pasv_min_port=65500
pasv_max_port=65535
connect_from_port_20=YES
local_umask=022
max_clients=20
max_per_ip=10
secure_chroot_dir=/usr/share/empty
Si observamos el directorio root del servicio FTP será /var/www/html, y que en el cual se irán
creando los directorios root para cada sitio web que demos de alta en Apache. Y que el nombre
del servicio de PAM que vamos a utilizar es el archivo que creamos vsftpd-virtual.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 17
El directorio y subdirectorios de /var/www se crean en el momento de instalar apache entonces
realizaremos la instalación de apache con el siguiente comando.
yum install httpd
E igualmente agregamos el servicio en el inicio del sistema.
chkconfig httpd on
Creamos los directorios siguientes.
mkdir -p /usr/share/empty
mkdir -p /var/www/ftp
A continuación crearemos los directorios raíz para cada usuario que agregamos en el archivo de
base de datos de usuarios virtual-users.txt y que lo pasamos a una base de datos anteriormente.
mkdir /var/www/html/adminjoomla
mkdir /var/www/html/adminjoomla
chown ftp:ftp /var/www/html
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 18
Con esto estamos creando los directorios, igualmente estamos especificando que el directorio
/var/www/html pertenece a el usuario ftp e igualmente a el grupo ftp, el usuario ftp y grupo ftp
se creó cuando instalamos el servicio de vsftpd.
NOTA: es importantísimo que los nombres de los directorios sean los mismos que los nombres
de usuarios que se definieron en el archivo virtual-users.txt, muy importante.
Con esta tarea realizada ejecutaremos el siguiente comando.
usermod -d /var/www ftp
Con la ejecución de este comando estamos especificando que el nuevo directorio del usuario ftp
será /var/www.
El comando usermod nos permite modificar el directorio home o raíz de un usuario.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 19
Y podemos observar con el comando ls –la /var/www que efectivamente el nuevo propietario de
la carpeta html es ftp y que el grupo es ftp.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 20
Reiniciamos el servido de ftp y podemos corroborar que se nos inicio correctamente.
Ejecutamos el comando ftp localhost para logearnos en el servicio de FTP.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 21
Observemos que nos saca un error que es 500 OOPS cannot change directory /var/www, esto es
porque el selinux de CentOS nos está prohibiendo cambiar de directorio para solucionar esto
ejecutamos el siguiente comando:
setsebool -P ftp_home_dir=1
-P es para que sea permanente y si reiniciamos no tengamos que ejecutamos nuevamente el
comando.
Nuevamente intentamos loguearnos.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 22
Y observamos que nos logueamos correctamente.
Ahora vamos a loguearnos desde la PCCLIENTE que tiene la ip 192.168.1.1/24.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 23
Y de momento observamos que no nos conecta con el servidor, esto es porque debemos abrir el
puerto 20 y 21 en el firewall de CentOS que es iptables.
Editamos el archivo /etc/sysconfig/iptables
Y agregaremos las siguientes directivas.
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 20:21 -j ACCEPT
Reiniciamos el servico de iptables.
service iptables restart
Y verificamos que si nos halla cargado la configuración correctamente con el comando.
iptables -L
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 24
Y correctamente nos cargo la nueva configuración.
Entonces nuevamente probamos.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 25
Observemos que ya nos conecta pero se queda en LIST o sea se queda listando y no se obtiene
ninguna respuesta por parte del servidor, NUEVAMENTE TENEMOS QUE EDITAR EL Firewall.
Y modificaremos la directiva:
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Por
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 26
NOTA: no se pueden dejar saltos de línea ya que si se dejan nos generaría un error y no iniciaría
nuestro Firewall.
Nuevamente reiniciamos el servicio.
service iptables restart
Y verificamos que si nos halla cargado la configuración correctamente con el comando.
iptables -L
Y nuevamente intentamos iniciar sección con nuestro cliente de FTP.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 27
Y UFFFFF como podemos observar ya iniciamos sección correctamente.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 28
SI recibimos el error de que no podemos subir archivos, ejecutamos el siguiente comando.
setsebool -P ftpd_disable_trans 1
NOTA: se requiere que reinicie el OS.
Y reiniciamos el equipo.
Y ya nos deja subir archivos.
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 29
Bibliografía
http://www.alcancelibre.org/staticpages/index.php/09-como-vsftpd
http://en.wikipedia.org/wiki/Vsftpd
http://xyzvn.com/linuxunix/setup-of-vsftpd-virtual-users.html
Mind Wide Open™ BLOG – http://jfherrera.wordpress.com
VSFTPD & Virtual Users | CentOS 5.5 GROUP | “???”
MiNdWiDe - Group 30
Gracias… Jhon Fredy Herrera Osorno