martes, 29 de mayo de 2012

Servidor FTP con VSFTPD sobre CentOS

En esta pequeña guía se mostrara la instalación de un servidor FTP con usuarios virtuales.

La plataforma es CentOS 6.2

Datos:
IP del FTP : 172.16.0.84

El proceso sera sencillo, comenzamos instalando el programa

# yum install vsftpd -y

Editamos el archivo /etc/vsftpd/vsftpd.conf

# vi /etc/vsftpd/vsftpd.conf

background=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
virtual_use_local_privs=YES
write_enable=YES
pam_service_name=vsftpd-virtual
xferlog_file=/var/log/vsftpd.log
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
ftp_data_port=20
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


Guardamos los cambios y listo ahora falta la creación de usuarios ....

Elabore un pequeño script para la creación de los usuarios ... lo llamaremos ftpadduser

# vi /usr/local/sbin/ftpadduser


#!/bin/bash
if [ -z "$1" ]; then
        echo "Ingrese el usuario ..."
        exit 1
fi
if [ -z "$2" ]; then
        echo "Ingrese la clave ..."
        exit 1
fi
echo "$1" >> /opt/virtual-users.txt
echo "$2" >> /opt/virtual-users.txt
db_load -T -t hash -f /opt/virtual-users.txt /etc/vsftpd/virtual-users.db
mkdir /var/www/html/$1
chown -R ftp:ftp /var/www/html/$1

Listo ejecutando ese script se podra crear las cuentas FTP

Ahora debemos ver el selinux, podriamos deshabilitarlo pero por temas de seguridad lo conservamos(Enforcing) y ejecutamos lo siguiente

setsebool allow_ftpd_full_access on
setsebool ftp_home_dir on

Ahora el servidor FTP ya esta operativo ... En nuestro Firewall(iptables) haremos el respectivo NAT

Dentro de nuestro script de iptables, cargaremos algunos módulos

#Definiendo variables
IPT="/sbin/iptables"
EXT_IP="IP Externa"
FTP="172.16.0.84"

# Cargando módulos 
...
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
...

#Realizando el NAT

$IPT -t nat -A PREROUTING -d $EXT_IP -p tcp --dport 20:21 -m state --state NEW,ESTABLISHED,RELATED -j DNAT --to-destination $FTP
$IPT -A FORWARD -d $FTP -p tcp --dport 20:21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -s $FTP -p tcp --sport 20:21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Listo ... con esto ya debería estar operativo al 100% ... se entiende que falta el enmascaramiento en el script del firewall ...
 


No hay comentarios:

Publicar un comentario