Páginas

Mostrando entradas con la etiqueta ftp. Mostrar todas las entradas
Mostrando entradas con la etiqueta ftp. Mostrar todas las entradas

jueves, 12 de junio de 2025

Firewall Mikrotik Protege LAN y Permite Acceso a Internet

Configuración de firewall para MikroTik (RouterOS)

Protege la red LAN (10.10.10.0/24) y permite acceso a Internet. Las reglas incluyen protección anti-spoofing, bloqueo de tráfico no autorizado, y permiten tráfico legítimo.

El router Mikrotik esta conectado al puerto ehter1 (WAN_ether1) y uno de los puertos ethernet del router ISP usando DHCP Client

Configuración básica de interfaces

/interface bridge
add name=LAN_bridge
/interface bridge port
add bridge=LAN_bridge interface=ether2
add bridge=LAN_bridge interface=ether3
add bridge=LAN_bridge interface=ether4
add bridge=LAN_bridge interface=ether5
add bridge=LAN_bridge interface=wlan1
add bridge=LAN_bridge interface=wlan2
/ip address
add address=10.10.10.1/24 interface=LAN_bridge

DHCP Client en WAN (WAN_ether1)

/ip dhcp-client
add interface=WAN_ether1

NAT para acceso a Internet

/ip firewall nat
add chain=srcnat out-interface=WAN_ether1 action=masquerade

POLÍTICAS POR DEFECTO (FILTER)

/ip firewall filter

CONEXIONES ESTABLECIDAS

add chain=input action=accept connection-state=established,related \
comment="Permitir conexiones Establecidas/Realacionadas (Input)"
add chain=forward action=accept connection-state=established,related \
comment="Permitir conexiones Establecidas/Relacionadas (Forward)"
add chain=output action=accept connection-state=established,related \
comment="Permitir conexiones Establecidas/Relacionadas (Output)"

ANTI-SPOOFING Y SEGURIDAD BÁSICA Bloqueo de IPs falsas en WAN

add chain=input action=drop in-interface=WAN_ether1 src-address=10.10.10.0/24 \
comment="Bloquear LAN IP Spoofing (Input)"
add chain=forward action=drop in-interface=WAN_ether1 src-address=10.10.10.0/24 \
comment="Bloquear LAN IP Spoofing (Forward)"

Protección contra escaneos y ataques comunes

add chain=input action=drop in-interface=WAN_ether1 protocol=tcp psd=21,3s,3,1 \
comment="Bloquear TCP SYN Scans"
add chain=input action=drop in-interface=WAN_ether1 protocol=udp

REGLAS INPUT (TRÁFICO AL ROUTER) Permitir administración solo desde LAN

add chain=input action=accept in-interface=LAN_bridge protocol=tcp dst-port=22,8291,443 \
comment="Acceso Administracion (LAN)"

Permitir ICMP (ping)

add chain=input action=accept protocol=icmp comment="Allow ICMP"

Permitir DHCP desde ISP

add chain=input action=accept in-interface=WAN_ether1 protocol=udp src-port=67-68 dst-port=67-68 \
comment="DHCP Cliente"

Bloquear todo lo demás en WAN

add chain=input action=drop in-interface=WAN_ether1 \
comment="Bloquear Todo WAN Input"

REGLAS FORWARD (TRÁFICO A TRAVÉS DEL ROUTER)

Permitir LAN -> Internet

add chain=forward action=accept in-interface=LAN_bridge out-interface=WAN_ether1 \
connection-state=new comment="LAN a Internet"

Bloquear Internet -> LAN (excepto respuestas)

add chain=forward action=drop in-interface=WAN_ether1 out-interface=LAN_bridge \
connection-state=new comment="Bloquear Internet a LAN"

Permitir tráfico entre interfaces LAN (opcional)

add chain=forward action=accept in-interface=LAN_bridge out-interface=LAN_bridge \
comment="Inter-LAN Tráfico"

REGLAS OUTPUT (TRÁFICO DESDE EL ROUTER)

add chain=output action=accept comment="Permitir Router Output" disabled=no

REGLAS ADICIONALES DE SEGURIDAD Bloqueo de redes reservadas/rfc1918 desde WAN

add chain=input action=drop in-interface=WAN_ether1 src-address-list=private_ranges \
comment="Bloquear IPs Privada (Input)"
add chain=forward action=drop in-interface=WAN_ether1 src-address-list=private_ranges \
comment="Bloquear IPs Privada (Forward)"

Lista de redes reservadas

/ip firewall address-list
add address=172.16.0.0/12 list=private_ranges
add address=10.0.0.0/8 list=private_ranges
add address=192.168.0.0/16 list=private_ranges
add address=169.254.0.0/16 list=private_ranges

LOGGING (OPCIONAL)

add chain=input action=log log-prefix="[BLOQUEO DE CORTAFUEGOS] " \
comment="Log Bloqueado Input"
add chain=forward action=log log-prefix="[BLOQUEO DE CORTAFUEGOS] " 
comment="Log Bloqueado Forward"

Configurar servicios:

/ip service
set ssh address=10.10.10.0/24,192.168.88.0/24
set winbox address=10.10.10.0/24,192.168.88.0/24
set ftp disable=yes
set telnet disable=yes
set api disable=yes
set api-ssl disable=yes
set www disable=yes
set www-ssl disable=yes

Protección bridge:

/interfaces bridge settings
set use-ip-firewall=yes

Protección extra:

/ip firewall filter
add chain=forward protocol=tcp tcp-flags=syn,!ack action=drop comment="Bloquear SYN-flood"
add chain=forward protocol=udp limit=10/1m action=drop comment="Limite UDP floods"

Explicación:

1. Conexiones Establecidas: - Acepta tráfico de respuestas en todas las cadenas (input, forward, output).

2. Protección Anti-Spoofing: - Bloquea tráfico WAN con IPs de la LAN (10.10.10.0/24). - Bloquea redes reservadas (RFC 1918) desde WAN.

3. Reglas INPUT: - Solo permite administración (SSH, Winbox, WebFig) desde la LAN. - Permite ICMP (ping) y DHCP del ISP. - Bloquea todo el tráfico entrante no autorizado en WAN.

4. Reglas FORWARD: - Permite nuevas conexiones desde LAN hacia Internet. - Bloquea nuevas conexiones desde Internet hacia LAN. - Permite comunicación entre dispositivos LAN (opcional).

5. Reglas OUTPUT: - Permite todo el tráfico generado por el router (se puede ajustar si es necesario).

6. Protección Adicional: - Bloqueo de escaneos TCP/UDP desde Internet. - Logging de tráfico bloqueado para diagnóstico.

Notas: - Políticas por Defecto: - Input: drop (implícito por reglas). - Forward: drop (regla final bloquea tráfico no autorizado). - Output: accept.

- NAT: La regla masquerade en srcnat permite a la LAN acceder a Internet usando la IP WAN (asignada por DHCP).

- Personalización: - Para permitir acceso desde Internet (ej: servidor web), agregar reglas `forward` específicas. - Ajustar puertos de administración en reglas `input` según necesidades.

Esta configuración equilibra seguridad y funcionalidad, protegiendo la LAN de amenazas externas mientras permite acceso a Internet.

FreeBSD es genial!.

sábado, 10 de marzo de 2018

Instalación y configuración de vsftpd

vsftpd servidor en Centos 6.9

FTP

FTP (File Transfer Protocol) o Protocolo de Transferencia de Archivos (o archivos informáticos) es uno de los protocolos estándar más utilizados en Internet siendo el más idóneo para la transferencia de grandes bloques de datos a través de redes que soporten TCP/IP. El servicio utiliza los puertos 20 y 21, exclusivamente sobre TCP. El puerto 20 es utilizado para el flujo de datos entre cliente y servidor. El puerto 21 es utilizando para el envío de órdenes del cliente hacia el servidor. Prácticamente todos los sistemas operativos y plataformas incluyen soporte para FTP, lo que permite que cualquier computadora conectada a una red basada sobre TCP/IP pueda hacer uso de este servicio a través de un cliente FTP.

Modo activo

En modo Activo, el servidor siempre crea el canal de datos en su puerto 20, mientras que en el lado del cliente el canal de datos se asocia a un puerto aleatorio mayor que el 1024. Para ello, el cliente manda un comando PORT al servidor por el canal de control indicándole ese número de puerto, de manera que el servidor pueda abrirle una conexión de datos por donde se transferirán los archivos y los listados, en el puerto especificado.

Lo anterior tiene un grave problema de seguridad, y es que la máquina cliente debe estar dispuesta a aceptar cualquier conexión de entrada en un puerto superior al 1024, con los problemas que ello implica si tenemos el equipo conectado a una red insegura como Internet. De hecho, los cortafuegos que se instalen en el equipo para evitar ataques seguramente rechazarán esas conexiones aleatorias. Para solucionar esto se desarrolló el modo pasivo.

Modo pasivo

Fue creado como una alternativa al problema que representa el modo activo. A diferencia de éste último, el modo pasivo envía un mandato PASV en lugar del mandato PORT
a través del puerto de control del servidor. Éste devuelve como respuesta el número de puerto a través del cual debe conectarse el cliente para hacer la
transferencia de datos. El servidor puede elegir al azar cualquier puerto entre 1024 y 65535 o bien el rango de puertos determinado por el administrador del sistema. En el caso de Vsftpd, se puede definir un rango arbitrario de puertos para conexiones pasivas utilizando las opciones pasv_min_port y pasv_max_port. Éste es el método recomendado para servidores de acceso público.

Protocolo FTPS (FTP/SSL)

FTPS es la forma de designar diferentes maneras a través de las que se pueden realizar transferencias seguras de archivos mediante FTP utilizando SSL o TLS.

Aunque existen dos métodos para realizar una conexión SSL/TLS a través de FTP el utilizado por vsftpd es FTPS Explícito (FTPES), donde el cliente realiza la conexión normal por medio del puerto 21 y permitiendo negociar, de manera opciona, una conexión TLS.

RSA

RSA, acrónimo de los apellidos de sus autores, creado por Ron Rivest, Adi Shamir y Len Adleman, es un algoritmo para cifrar claves públicas Publicado por el MIT en 1977 y utilizado en todo el mundo para los protocolos destinados al comercio electrónico.

OpenSSL

Es una implementación libre de los protocoles SSL, (Secure Sockets Layer) y TLS (Transport Layer Security), continuación del proyecto SSLeay, iniciado por Eric Young y Tim Hudson.

Acerca de X.509

X.509 es un estándar ITU-T para infraestructura de claves públicas (PKI). Entre otras, establece los estándares para certificados de claves públicas y un algoritmo para validación de ruta de certificación.

vsftpd

vsftpd (Very Secure FTP Daemon) es utlizado para implementar servidores de archivos a través del protocolo FTP. Es sencillo y seguro.

Instalación de vsftpd

# yum -y install vsftpd

Configuración

/etc/vsftpd/chroot_list es el archivo que define la lista de usuarios a enajaular o no, (depende de la configuración).

Crear el archivo

# touch /etc/vsftpd/chroot_list


Iniciar el servicio

# service vsftpd start

Activar el servicio al arranque del sistema

# chkconfig vsftpd on


Abrir los puerto 20 y 21 (TCP). El primero FTP-DATA y el segundo FTP y el rango de puertos para conexiones pasivas que se defina.

Agregar las reglas de iptables

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 30300:30309 -j ACCEPT

# servicce iptables save

O agregue al archivo /etc/sysconfig/iptables lo siguiente

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 30300:30309 -j ACCEPT

# service iptables restart

SELinux y el servicio vsftpd

Obtenga la lista de valores (booleanos) actuales de SELinux para ftp

# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_fusefs --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_use_cifs --> off
tftp_use_nfs --> off


Para establecer un valor específico por ejemplo, ftp_home_dir, teclee

# setsebool -P ftp_home_dir on

SELinux aumenta el nivel de seguridad de vsftpd

Ejecute lo siguiente para permitir que el servidor FTP pueda asociarse a cualquier puerto sin reservar al funcionar en modo pasivo:

# setsebool -P ftpd_use_passive_mode 1

Ejecute lo siguiente para permitir que los usuarios anónimos puedan realizar procesos de escritura sobre el sistema de archivos:

# setsebool -P allow_ftpd_anon_write 1

Si se necesita permitir el acceso utilizando las cuentas de usuarios del anfitrión local, a fin de que éstos puedan acceder a sus directorio de inicio, se debe habilitar la política ftp_home_dir

# setsebool -P ftp_home_dir 1

Ejecute lo siguiente para hacer que SELinux permita acceder a los usuarios locales al resto del sistema de archivos:

# setsebool -P allow_ftpd_full_access 1

Ejecute lo siguiente para permitir que el servicio vsftpd pueda hacer uso de sistemas de archivos remotos a través de CIFS (Samba) o NFS y que serán utilizados para compartir a través del servicio

setsebool -P allow_ftpd_use_cifs 1
setsebool -P allow_ftpd_use_nfs 1


# getsebool -a | grep ftp

allow_ftpd_anon_write --> on
allow_ftpd_full_access --> on
allow_ftpd_use_cifs --> on
allow_ftpd_use_nfs --> off
ftp_home_dir --> on
ftpd_connect_db --> off
ftpd_use_fusefs --> off
ftpd_use_passive_mode --> on
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_use_cifs --> off
tftp_use_nfs --> off


Archivo de configuración de vsftpd.

Opción anonymous_enable

Define si se permitirán accesos anónimos al servidor.

anonymous_enable=YES

Opcion local_enable

Establece si se permiten accesos autenticados de los usuarios locales del sistema

local_enable=YES

Opción write_enable

Permite escritura en el servidor

write_enable=YES

Opción anon_upload_enable

Determina si los usuarios anónimos pueden subir contenido al servidor. No es una función deseada, por lo que se acostumbra a desactivarla.

Opción anon_upload_enable=NO


Opción anon_mkdir_write_enable

Igual que la anterior normalmente esta función no es deseada por lo que se desactiva

anon_mkdir_write_enable=NO

Opción ftpd_banner

Establece el banderín que será mostrado al acceder un usuario al servidor. La frase no debe contener signos de puntuación.

ftpd_banner=Bienvenido al servidor FTP

Establecer jaulas para los usuarios

Opciones chroot_local_user y chroot_list_file

Los usuarios del sistema que se autentiquen tendrán acceso a otros directorios del sistema fuera de su directorio personal. Para limitar a los usuarios a sólo utilizar su propio directorio, puede hacerse con la opción chroot_local_user que habilita la función chroot() y las opciones chroot_list_enable y chroot_list_file para establecer el archivo con la lista de usuarios que quedarán excluidos de la función chroot().

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

Crear el archivo /etc/vsftpd/chroot_list si aún no lo ha hecho

# touch /etc/vsftpd/chroot_list

A partir de ahora cada vez que un usuario local se autentique en el servidor FTP sólo tendrá acceso a su directorio personal y lo que este contenga.

Si el usuario regular tiene acceso al intérprete de comandos del sistema (/bin/bash o /bin/sh) y privilegios de escritura sobre el directorio raíz de su propia jaula (su directorio de inicio) la función chroot() puede ser peligrosa. Los directorios de inicio de los usuarios involucrados deben tener permiso 755, propiedad de root y asignar al usuario /bin/false o /sbin/nologin como intérprete de comandos.

Modificar una cuenta de usuario regular para la cual se quiere dar acceso al servidor FTP utilizando chroot() con vsftpd

# chroot 755 /home/fulano
# chown root:root /home/fulano
# mkdir /home/fulano/uploads
# chown fulano:fulano /home/fulano/uploads
# usermod -s /sbin/nologin fulano

Opciones pasv_min_port y pasv_max_port

Establece el rango arbitrario de puertos utilizados para las conexiones pasivas. Cualquier rango de puertos es válido entre 1024 y 65535

pasv_min_port=30300
pasv_max_port=30309

Controlar el ancho de banda

Opción anon_max_rate

Utilizada para limitar la tasa de transferencia en bytes por segundo, para los usuarios anónimos, muy útil en servidores FTP de acceso público. En este caso 500 kb por segundo.

anon_max_rate=524288

Opción local_max_rate

Limita la tasa de transferencia en bytes por segundo para los usuarios locales del servidor. En este caso a 1 MB

local_max_rate=1048576

Opción max_clients

Establece el número máximo de clientes accediendo simultáneamente al servidor FTP. En este caso 20

max_clients=20

Opción max_per_ip

Evita que algunos accesos queden bloqueados, como en el caso de redes que acceden a través de un Proxy (servidor intermediario) o puerta de enlace.

max_per_ip=10

Soporte SSL/TLS  

Todos los datos enviados mediante el protocolo FTP lo hacen en texto simple (nombre de usuario y claves de acceso), lo cual es muy peligroso, vsftpd se puede configurar para utilizar los protocolos SSL y TLS a través de un certificado RSA.

Como usuario root acceda al directorio /etc/pki/tls

# cd /etc/pki/tls

Generar el certificado y firma digital

Utilizando una estructura X.509, algoritmo de cifrado RSA de 2048 bits, sin Triple DES que permite iniciar sin interacción alguna al servicio vsftpd, con una validez de 1825 días (5 años):


# openssl req -x509 -nodes -days 1825 -newkey rsa:2048 \
> -keyout private/vsftpd.key \
> -out certs/vsftpd.crt

Ingrese los siguientes datos

Código de dos letras para el país.
Estado o provincia.
Ciudad.
Nombre de la empresa o bien la razón social.
Unidad o sección responsable del certificado.
Nombre del anfitrión (FQDN) o bien dominio con comodín.
Dirección de correo electrónico de la persona responsable del certificado


Generating a 2048 bit RSA private key

....+++

...........+++

writing new private key to 'private/vsftpd.key'

-----

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:ES
State or Province Name (full name) []:Catalunya
Locality Name (eg, city) [Default City]:Barcelona
Organization Name (eg, company) [Default Company Ltd]:Empresa S.L. 
Organizational Unit Name (eg, section) []:Direccion Comercial
Common Name (eg, your name or your server's hostname) []:*.linux.bcn
Email Address []:webmaster@linux.bcn


El archivo del certificado y de la firma digital, deben tener permisos de sólo lectura para el usuario root.

# chmod 400 certs/vsftpd.crt private/vsftpd.key

# cd

Edite el archivo de configuración de vsftpd.conf

# vim /etc/vsftpd/vsftpd.conf

# Habilita el soporte de TLS/SSL
ssl_enable=YES
# Deshabilita o habilita utilizar TLS/SSL con usuarios anónimos
allow_anon_ssl=NO
# Obliga a utilizar TLS/SSL para todas las operaciones, es decir, 
# transferencia de datos y autenticación de usuarios locales.
# Establecer el valor NO, hace que sea opcional
# utilizar TLS/SSL.
force_local_data_ssl=YES
force_local_logins_ssl=YES
# Se prefiere TLSv1 sobre SSLv2 y SSLv3
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# Rutas del certificado y firma digital
rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt
rsa_private_key_file=/etc/pki/tls/private/vsftpd.key
# Los desarrolladores de FileZilla decidieron eliminar 
# el soporte para el algoritmo de cifrado 3DES-CBC-SHA, 
# agregue la siguiente línea para solucionarlo
ssl_ciphers=HIGH
# Filezilla además requiere desactivar la siguiente opción
require_ssl_reuse=NO

Aplicar los cambios

# service vsftpd restart
# service vsftpd restart
Apagando vsftpd:   [  OK  ]
Iniciando vsftpd para vsftpd: [  OK  ]

Asigne una contraseña al usuario fulano

$ ssh 192.168.0.1
carles@192.168.0.1's password: 
Last login: Fri Mar  9 19:52:01 2018 from 192.168.0.53

# passwd fulano

Cambiando la contraseña del usuario fulano.
Nueva contraseña: 
Vuelva a escribir la nueva contraseña: 
passwd: todos los tokens de autenticación se actualizaron exitosamente.

Cliente para acceder a FTPES

# yum -y install lftp

El mandato lftp con las opciones -e 'set ftp:ssl-force true' y -e set ssl:verify-certificate no' como argumentos y un nombre anfitrión o dirección IP como último argumento. Inicie una conexión hacia la dirección del servidor 192.168.0.1.

[carles@aldos ~]$ lftp -e 'set ftp:ssl-force true' -e 'set ssl:verify-certificate no' 192.168.0.1

En el intérprete de comandos de LFTP teclee el comando user seguido del nombre de usuario que quiera utilizar. En este caso fulano, le pedirá la contraseña.

lftp 192.168.0.1:~> user fulano
Clave:

Teclee el comando pwd

lftp fulano@192.168.0.1:~> pwd

Devolverá una salida similar a la siguiente

ftp://fulano@192.168.0.1

Cree una carpeta llamada prueba

lftp fulano@192.168.0.1:~> mkdir prueba

Lo anterior devuelve una salida como esta

mkdir ok, `prueba' creado           

Ejecute un ls

lftp fulano@192.168.0.1:/> ls

La salida es la siguiente

drwxr-xr-x    2 504      504   4096 Mar 09 20:41 prueba

Salir de lftp

lftp fulano@192.168.0.1:/> bye


Filezilla cliente FTP
# yum -y install filezilla


Red Hat System Administrator Guide
Protocolo de transferencia de archivos

Centos es genial!.

martes, 4 de febrero de 2014

pure-ftpd FreeBSD

Configuración de un servidor FTP Pure-ftpd con usuarios virtuales

Pure-ftpd es un país libre (BSD), con calidad de producción segura y servidor FTP estándar conforme.

Esta guía proporciona instrucciones para utilizar el sistema de usuario virtual para gestionar y controlar a los usuarios. Mediante el uso de usuarios virtuales, cuentas FTP se pueden administrar sin afectar las cuentas del sistema.

Iniciar la instalación de Pure-ftpd:

# portsnap
# cd /usr/ports/ftp/pure-ftpd
# make config-recursive

Un menú emergente contiene opciones de compilación de Pure-ftpd. Es posible incluir y excluir opciones. En mi caso, he optado por dejar estas opciones en sus valores por defecto.

# ee /var/db/ports/pure-ftpd/options
WITH_UTF8=true
WITH_LARGEFILE=true

# make install clean distclean
# rehash

Al finalizar el proceso de instalación empezaremos copiando el archivo
de configuración de ejemplo y establecer los permisos adecuados:

# cd /usr/local/etc
# cp pure-ftpd.conf.sample pure-ftpd.conf
# chmod 444 pure-ftpd.conf

Ajustar valores net.inet.ip.portrange.{first,last} en /etc/sysctl.conf


Fase de configuración:

# ee pure-ftpd.conf
# Rango de puertos para conexiones de respuestas pasivas. - Para los
# cortafuegos.
PassivePortRange 30000 30900

# Dirección IP/puerto para escuchar (default = todas IP y puerto 21).
# Bind 127.0.0.1,21

# Si desea registrar todos los comandos del cliente, ajústelo a "sí".
# Esta directiva puede ser duplicado para también registrar
# las respuestas del servidor.
VerboseLog yes

# PureDB base de datos de usuario (see README.Virtual-Users)
PureDB /usr/local/etc/pureftpd.pdb

# Crear un archivo de registro adicional con transferencias
# registradas en el estándar W3C Formato # (compatible con
# la mayoría de los analizadores de registros comerciales)
AltLog w3c:/var/log/pureftpd.log

# Creación automática de los directorios de inicio si se han perdido
CreateHomeDir yes

# No permitir conexiones anónimas. Sólo permitirá a los usuarios autenticados.
NoAnonymous yes

# No permitir a los usuarios anónimos para subir nuevos archivos
# (no = se permite cargar)
AnonymousCantUpload yes

# Número máximo de clientes sim con la misma dirección IP
MaxClientsPerIP  5

# Máximo numero de usuarios simultaneos
MaxClientsNumber  50

# Máscara de creación de archivos. :
# 177:077 si se siente paranoico.
Umask  022:022

# UID mínimo para un usuario autenticado que entrar
MinUID  100

La opción CreateHomeDir permite añadir usuarios virtuales más fácil mediante la creación del directorio principal de un usuario al iniciar sesión por primera vez.

Existe la posibilidad de importar usuarios con cuentas en el sistema (definidos en /etc/master.passwd) a la vez o crear nuevos usuarios de forma manual. Para importar los usuarios que ya existen en el sistema a usuarios virtuales FTP con la herramienta pure-pwconvert:

# pure-pwconvert >> /usr/local/etc/pureftpd.passwd
# chmod 600 /usr/local/etc/pureftpd.passwd
# pure-pw mkdb

No olvidemos que la pure-pwconvert sólo importa las cuentas que tienen
acceso a una consola. Las cuentas con la shell establecida a nologin
se tienen que añadir de forma manual.

Para agregar usuarios a la base de datos de usuarios virtual Pure-FTPd
manualmente, tenemos que crear una cuenta a nivel de sistema que se
asociará con los usuarios virtuales. Crear un nuevo usuario llamado ftp:

Crear una cuenta a nivel de sistema:
# pw useradd -n ftp -s /sbin/nologin -w no -d /home/ftp -c "FTP user" -m

Nota: Al instalar pureftp, se crea un grupo de ftp, pero ningún usuario ftp, lo que da como resultado el error "mail pure-ftpd:(?:?) [ERROR] Unable to find the 'ftp' account". So we need to manually create the ftp user.

Llegados a esta punto, ahora podemos agregar usuarios a la base de datos de usuarios virtuales utilizando los siguientes comandos:

Agregar usuarios a la base de datos de usuarios virtuales:
# pure-pw useradd ftpuser1 -u ftp -g ftp -d /home/ftp/ftpuser1
# pure-pw mkdb

# pure-pw useradd ftpuser2 -u ftp -g ftp -d /home/ftp/ftpuser2
# pure-pw mkdb

Permitir direcciones IP de clientes:
# pure-pw usermod remote_user -r 95.21.88.35
# pure-pw mkdb

Restablecer la contraseña del usuario ftpuser2: 
# pure-pw passwd fptuser2
# pure-pw mkdb

Ver información acerca del usuario ftpuser1
# pure-pw show fptuser1

Para ver una lista de los usuarios: 
# pure-pw list

Eliminar el usuario ftpuser2
# pure-pw userdel fptuser2
# pure-pw mkdb

Iniciar Pure-FTPd: 
# /usr/local/etc/rc.d/pure-ftpd onestart

Determinar si pure-ftpd se está ejecutando:


Probando el servidor FTP:

 

Para que Pure-FTPd se inicie durante el arranque:
# echo 'pureftpd_enable="YES"' >> /etc/rc.conf

Reiniciar pure-ftpd
# /usr/local/etc/rc.d/pure-ftpd restart


Rotar archivo de registro pure-ftpd: 
# vim /etc/newsyslog.conf
/var/log/pureftpd.log 600 7 100000 * JC /var/run/pure-ftpd.pid

# /etc/rc.d/newsyslog restart

Pure-ftpd proporciona características útiles para los usuarios personales, así como los proveedores de alojamiento. Esta es solo una configuración básica, para más opciones de configuración visite la página web del proyecto.

Fuente:
http://download.pureftpd.org/pub/pure-ftpd/doc/FAQ
http://www.pureftpd.org/project/pure-ftpd/doc
http://forums.freebsd.org/showthread.php?t=591


Unix es genial!.