Quizás el protocolo FTP sea uno de los más utilizados, a pesar de que no sea el más seguro. En primer lugar, debemos saber que es 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.”
Fuente: http://www.alcancelibre.org
Ahora que tenemos un poco más claro, que es FTP, debemos saber de lo que estamos hablando, es decir, saber que es VSFTP
“Vsftpd (Very Secure FTP Daemon) es un equipamiento lógico utilizado para implementar servidores de archivos a través del protocolo FTP. Se distingue principalmente porque sus valores predeterminados son muy seguros, y por su sencillez en la configuración, comparado con otras alternativas como ProFTPD, y Wu-ftpd. Actualmente se presume que vsftpd podría ser quizá el servidor FTP más seguro del mundo.”
Fuente http://www.alcancelibre.org/
$ sudo aptitude install vsftpCentOS:
$ sudo yum install vsftpCon VSFTP instalado, y como medio de seguridad, respaldaremos la configuración por defecto, para tener un respaldo en caso de que cometamos algún error. Debian:
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bakCentOS:
$ sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bakEl fichero de configuración trae varias líneas ya configuradas, para trabajar de una manera más limpia, lo que haremos será vaciar el fichero. Debian:
$ sudo cat /dev/null > /etc/vsftpd.confCentOS:
$ sudo cat /dev/null > /etc/vsftpd/vsftpd.confTeniendo listo el fichero, comenzaremos a trabajar en él, aquí podemos utilizar nuestro editor de texto preferido (nano, vi, vim, etc), en mi caso, utilizaré nano. Debian:
$ sudo nano /etc/vsftpd.confCentOS:
$ sudo nano /etc/vsftpd/vsftpd.confAquí debemos realizar la configuración, la cual es la siguiente: Debian:
anonymous_enable=YES #Permite usuarios anónimos (YES/NO) write_enable=YES use_localtime=YES #Hora local en vez de GTM (YES/NO) dirmessage_enable=YES #Mensaje de directorio (YES/NO) xferlog_enable=YES #Generación de log en /var/log/xferlog (YES/NO) ftpd_banner=Bienvenido pam_service_name=vsftpd #Nombre del servicio PAM local_enable=YES #Conexión de usuarios del sistema (YES/NO) chroot_local_user=YES chroot_list_enable=YES #Los usuarios no pueden ver otros directorios (Enjaular) chroot_list_file=/etc/vsftpd.chroot_list #Indica ubicación del fichero vsftpd.chroot_list #Permitir modo pasivo pasv_enable=YES pasv_min_port=30000 pasv_max_port=30300 pasv_address=XX.XX.XX.XX #ip que resuelveCentos:
listen=YES #Trabajar en modo independiente (YES/NO) anonymous_enable=YES #Permite usuarios anónimos (YES/NO) write_enable=YES use_localtime=YES #Hora local en vez de GTM (YES/NO) dirmessage_enable=YES #Mensaje de directorio (YES/NO) xferlog_enable=YES #Generación de log en /var/log/xferlog (YES/NO) ftpd_banner=Bienvenido pam_service_name=vsftpd #Nombre del servicio PAM local_enable=YES #Conexión de usuarios del sistema (YES/NO) chroot_local_user=YES chroot_list_enable=YES #Los usuarios no pueden ver otros directorios (Enjaular) chroot_list_file=/etc/vsftpd/chroot_list #Indica ubicación del fichero chroot_list #Permitir modo pasivo pasv_enable=YES pasv_min_port=30000 pasv_max_port=30300 pasv_address=XX.XX.XX.XX #ip que resuelveSi tenemos iptables activados, debemos permitir el puerto 20 y 21, u otro puerto si es que queremos
# iptables -I INPUT 5 -p tcp -m tcp --dport 20 -j ACCEPT # iptables -I INPUT 5 -p tcp -m tcp --dport 21 -j ACCEPT # iptables -I INPUT 5 -p tcp -m tcp --dport 30000:30300 -j ACCEPT # service iptables save # service iptables restartEn el caso de CentOS / RHEL tenemos SELinux, y si no lo hemos desactivado, debemos permitir todo lo necesario para trabajar con FTP, esto lo trabajamos como boolan, es decir: 0 = no permitir 1 = si permitir Lo básico que debemos agregar es lo siguiente:
$ sudo setsebool -P ftp_home_dir 1Aquí hay una lista de lo que podemos o no permitir
Booleans
|
Description
|
ftp_home_dir
|
Allows FTP to read and write
files in the users’ home directories.
|
allow_ftpd_full_access
|
Allows FTP servers to log in to
local users and read/write all files on the system, governed by
DAC.
|
allow_ftpd_use_nfs
|
Allows FTP servers to use NFS for
public file transfer services.
|
allow_ftpd_anon_write
|
Allows FTP servers to upload
files used for public file transfer services. Directories must be
labeled public_content_rw_t.
|
ftpd_connect_db
|
Allows FTP servers to connect to
the MySQL database.
|
allow_ftpd_use_cifs
|
Allows FTP servers to use CIFS
for public file transfer services.
|
httpd_enable_ftp_server
|
Allows httpd to act as an FTP
server by listening on the FTP port.
|
Respecto a los usuarios para lograr la conexión, en este ejemplo estamos utilizando los usuarios del sistema, y estos deben ser añadidos en: Debian
/etc/vsftpd.chroot_listCentOS / RHEL
/etc/vsftpd/chroot_listY dentro de este, escribimos el usuario línea a línea, por ejemplo
usuario1 usuario2 usuario3Además, estos usuarios deben pertenecer al grupo ftp del sistema, para lograr eso debemos:
# gpasswd -aUna buena recomendación es que se programe para que el servicio vsftpd inicie con el sistema.ftp
# chkconfig vsftpd onFinalmente, hacemos una conexión FTP, puede ser a través del comando ftp, o de un cliente como filezilla u otro.
1 comentarios:
excelente información
saludos.
Publicar un comentario