<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Servidor_FTP_vsftpd</id>
	<title>Servidor FTP vsftpd - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Servidor_FTP_vsftpd"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Servidor_FTP_vsftpd&amp;action=history"/>
	<updated>2026-10-21T19:37:40Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Servidor_FTP_vsftpd&amp;diff=69901&amp;oldid=prev</id>
		<title>Bruno: /* FTP seguro */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Servidor_FTP_vsftpd&amp;diff=69901&amp;oldid=prev"/>
		<updated>2022-04-21T11:44:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;FTP seguro&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;vsftp ou (Very secure FTP) supostamente é o servidor FTP máis seguro para o mundo Linux/Unix, en canto a seguridade, rendemento e escalabilidade.&lt;br /&gt;
&lt;br /&gt;
Soporta o uso de certificados dixitais SSL, sempre e cando o cliente ftp os soporte (empregar o cliente ftp-ssl en vez de ftp). Unha das peculiaridades que permite, e o uso de gaiolas chroot para os usuarios. Unha gaiola chroot, establece un directorio determinado como directorio raíz. Desde ese directorio, non se poderá acceder a ningún de nivel superior, pero si a todos os descendentes. &lt;br /&gt;
&lt;br /&gt;
==Instalación==&lt;br /&gt;
Para instalalo, en Linux, temos que instalar o paquete &amp;#039;&amp;#039;vsftpd&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo apt-get install vsftpd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Configuración básica==&lt;br /&gt;
&lt;br /&gt;
Os ficheiros que temos que editar para configurar o servidor son &amp;#039;&amp;#039;/etc/vsftpd.conf&amp;#039;&amp;#039; ou &amp;#039;&amp;#039;/etc/vsftpd/vsftpd.conf&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Unha vez editado o ficheiro de configuración, e feito algún cambio, estes aplícanse reiniciando o servidor:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo service vsftpd restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Tamén se pode configurar desde o Webmin, pero habería que instalar o módulo correspondente, módulo que non ven na instalación por defecto de Webmin. Podes descargar o módulo [http://provider4u.de/images/downloads/vsftpd.tar.gz vsftpd]   e instalalo no Webmin no apartado de módulos.&lt;br /&gt;
&lt;br /&gt;
Por defecto, poden acceder ao servidor FTP todos os usuarios do sistema, en modo so lectura.&lt;br /&gt;
&lt;br /&gt;
===Mensaxe de benvida===&lt;br /&gt;
&lt;br /&gt;
Podemos establecer unha mensaxe de benvida para os usuarios que se conectan ao sistema:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 ftpd_banner=Bienvenido ao servidor FTP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ou especificando un ficheiro de texto, onde se gardará a mensaxe a amosar como benvida (útil no caso de ocupar varias liñas)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
banner_file=/etc/vsftpd/welcome.banner&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Habilitación de escritura===&lt;br /&gt;
Por defecto, a escritura no sistema está deshabilitada. Para habilitala incluímos a seguinte directiva.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 write_enable=YES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Para os usuarios locais, esta directiva habilita tanto a subida de ficheiros, coma a creación de directorios e o renomeado.&lt;br /&gt;
&lt;br /&gt;
===Permisos dos ficheiros e directorios resultantes===&lt;br /&gt;
O &amp;#039;&amp;#039;umask&amp;#039;&amp;#039; para os usuarios locais está establecido a &amp;#039;&amp;#039;&amp;#039;077&amp;#039;&amp;#039;&amp;#039;. Podemos configuralo a outro valor coa directiva&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
local_umask=022&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Estes permisos sempre se van a restar, do valor que teña a directiva &amp;#039;&amp;#039;&amp;#039;file_open_mode&amp;#039;&amp;#039;&amp;#039; que por defecto ten o valor &amp;#039;&amp;#039;&amp;#039;0666&amp;#039;&amp;#039;&amp;#039; (sempre elimina os permisos de execución).&lt;br /&gt;
&lt;br /&gt;
==Gaiolas &amp;#039;&amp;#039;chroot&amp;#039;&amp;#039;==&lt;br /&gt;
Os usuarios, por defecto, poden acceder a todos os cartafois e directorios nos cales teña permiso de lectura e acceso. Pero podemos limitar esa característica ao seu directorio persoal. Isto é o que se coñece como establecer unha gaiola &amp;#039;&amp;#039;chroot&amp;#039;&amp;#039;. Configúrase coa directiva&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chroot_local_user=YES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gaiolas &amp;#039;&amp;#039;chroot&amp;#039;&amp;#039; so para certos usuarios===&lt;br /&gt;
Se queremos que so certos usuarios teñan activado &amp;#039;&amp;#039;chroot&amp;#039;&amp;#039;, establecemos a directiva &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chroot_list_enable=YES&lt;br /&gt;
chroot_list_file=/etc/vsftpd/users.list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
e no ficheiro &amp;#039;&amp;#039;/etc/vsftpd/users.list&amp;#039;&amp;#039; teremos unha lista dos usuarios afectados por &amp;#039;&amp;#039;chroot&amp;#039;&amp;#039;&lt;br /&gt;
*Se a directiva &amp;#039;&amp;#039;&amp;#039;chroot_local_user&amp;#039;&amp;#039;&amp;#039; aparece no ficheiro e ten o valor &amp;#039;&amp;#039;&amp;#039;YES&amp;#039;&amp;#039;&amp;#039; a lista conten os &amp;#039;&amp;#039;&amp;#039;usuarios que non teñen activado chroot&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Se a directiva &amp;#039;&amp;#039;&amp;#039;chroot_local_user&amp;#039;&amp;#039;&amp;#039; non aparece no ficheiro ou ten o valor &amp;#039;&amp;#039;&amp;#039;NO&amp;#039;&amp;#039;&amp;#039; a lista conten os &amp;#039;&amp;#039;&amp;#039;usuarios que teñen activado chroot&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
===Mensaxes de erro asociadas a &amp;#039;&amp;#039;chroot&amp;#039;&amp;#039;===&lt;br /&gt;
Se aparece un erro ao acceder os usuarios locais con esta mensaxe &amp;#039;&amp;#039;&amp;#039;500 OOPS: vsftpd: refusing to run with writable root inside chroot()&amp;#039;&amp;#039;&amp;#039; débese a que  &amp;#039;&amp;#039;vsftpd&amp;#039;&amp;#039; non permite que os usuarios poidan escribir na súa carpeta raíz. Unha solución é quitarlle os permisos de escritura a esa carpeta. Isto fará que o usuario non poida facer nada na súa propia carpeta, así que o mellor é crearlle outra dentro con permisos normais para que poida escribir nela. &lt;br /&gt;
&lt;br /&gt;
A outra alternativa para solucionar ese erro é engadir a directiva. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
allow_writeable_chroot=YES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note}}Esta directiva so estará dispoñible se a versión do servidor é a 3 ou superior.&lt;br /&gt;
&lt;br /&gt;
O usuario anónimo sempre conectará dentro dunha contorna &amp;#039;&amp;#039;chroot&amp;#039;&amp;#039;. E sempre será necesario que &amp;#039;&amp;#039;&amp;#039;non teña permiso de escritura no seu HOME&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Se nos aparece o erro:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
500 OOPS: priv_sock_get_cmd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
deberemos engadir a liña &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
seccomp_sandbox=NO&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Isto é un coñecido bug, que hai en versións 3.0.x con arquitectura amd64.&lt;br /&gt;
&lt;br /&gt;
==Acceso anónimo==&lt;br /&gt;
Podemos tamén habilitar o acceso a usuarios anónimos, que por defecto ven deshabilitado. Habilitámolo coa directiva &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
anonymous_enable=YES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O usuario anónimo, está engaiolado no directorio raíz (HOME) do usuario &amp;#039;&amp;#039;ftp&amp;#039;&amp;#039; do sistema. Tamén podemos facer que inicie sesión noutro directorio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
anon_root=/ruta/ao/directorio/onde/iniciara/sesion/o/usuario/anonimo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por defecto, o usuario &amp;#039;&amp;#039;anonymous&amp;#039;&amp;#039; non pode subir arquivos. Se queremos permitir que os usuarios anónimos poidan subir arquivos ao servidor teremos que ter en conta que:&lt;br /&gt;
&lt;br /&gt;
*O usuario ftp non debe ser propietario do directorio onde se suban os ficheiros.&lt;br /&gt;
*O usuario ftp non debe ser membro do grupo propietario do directorio onde se suban os ficheiros.&lt;br /&gt;
*O directorio anónimo debe ter os permisos de escritura correspondentes para OUTROS. &lt;br /&gt;
&lt;br /&gt;
Para permitir a escritura ao usuario anónimo, tendo en conta o anterior, temos que habilitar a directiva&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
anon_upload_enable=YES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se a maiores, queremos permitir que poida crear directorios, empregamos a directiva &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
anon_mkdir_write_enable=YES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O usuario propietario dos ficheiros subidos será o usuario &amp;#039;&amp;#039;ftp&amp;#039;&amp;#039; . Tamén podemos facer que o usuario propietario dese arquivo sexa calquera outro dos presentes no sistema. Iso consíguese coa directiva:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chown_uploads=YES&lt;br /&gt;
chown_username=whoever&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Recoméndase que o usuario propietario non se cambie a &amp;#039;&amp;#039;root&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==FTP seguro==&lt;br /&gt;
&lt;br /&gt;
Tradicionalmente, o servizo FTP sempre foi inseguro. Cando un usuario se conecta, o seu nome de usuario e contrasinal, son transmitidos sen encriptar, podendo pasar, que alguen intercepte a comunicación e se faga coas credenciais do usuario. Afortunadamante, pódese empregar facendo que o servidor FTP empregue autenticación de OpenSSL, facendo que o nome de usuario, o seu contrasinal e tamén os datos transferidos vaian encriptados.&lt;br /&gt;
&lt;br /&gt;
Para conseguir isto, o primeiro paso é crear o certificado SSL,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A continuación editamos o ficheiro de configuración de vsftp e introducimos as seguintes directivas (Se algunha delas está configurada, eliminámola):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ssl_enable=YES&lt;br /&gt;
allow_anon_ssl=NO&lt;br /&gt;
force_local_data_ssl=NO&lt;br /&gt;
force_local_logins_ssl=NO&lt;br /&gt;
ssl_tlsv1=YES&lt;br /&gt;
ssl_sslv2=NO&lt;br /&gt;
ssl_sslv3=NO&lt;br /&gt;
rsa_cert_file=/etc/ssl/certs/vsftpd.pem&lt;br /&gt;
rsa_private_key_file=/etc/ssl/private/vsftpd.pem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se queremos forzar a que os usuarios locais so se poidan conectar empregando SSL, cambiamos as seguintes directivas.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
force_local_data_ssl=YES&lt;br /&gt;
force_local_logins_ssl=YES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cando se realice a conexión, pode verse o algoritmo de encriptación empregado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; hihglight=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
 220 Welcome to blah FTP service.&lt;br /&gt;
 Name (192.168.56.253:bruno): adminlocal&lt;br /&gt;
 234 Proceed with negotiation.&lt;br /&gt;
 [SSL Cipher DES-CBC3-SHA]&lt;br /&gt;
 331 Please specify the password.&lt;br /&gt;
 Password:&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Todo o que se transmita por esta canle, queda encriptado.&lt;br /&gt;
&lt;br /&gt;
==Restriccións FTP==&lt;br /&gt;
No servidor vsftpd, podemos restrinxir o acceso por parte dos usuarios, coas seguintes directivas&lt;br /&gt;
*Para restrinxir o número de clientes conectados de forma simultánea:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
max_clients=5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Para limitar o número máximo de conexións que se poden realizar desde un mesmo enderezo IP. Hai que ter en conta que algunhas redes acceden a través dun servidor proxy ou porta de ligazón e debido a isto poderían quedar bloqueados innecesariamente algúns accesos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
max_per_ip=4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Para limitar o ancho de banda de descarga para os usuarios locais e o usuario anónimo (en bytes por segundo). Por defecto, o valor é 0, o cal significa que non hai límite:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
local_max_rate=5120&lt;br /&gt;
anon_max_rate=4096&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Para establecer un tempo de espera para manter establecidas conexións inactivas.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
idle_session_timeout=600&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Para establecer un tempo de espera para manter establecidass conexións de datos inactivas.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
data_connection_timeout=120&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Para activar/desactivar conexións pasivas&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pasv_enable=YES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Cotas de disco===&lt;br /&gt;
Tamén podemos establecer cotas de disco para os distintos usuarios.  Para máis información, acceder ao seguinte [[Instalación de Servidor FTP vsftpd en Debian#Habilitación de cuotas en discos | enlace]]&lt;br /&gt;
&lt;br /&gt;
==Logs==&lt;br /&gt;
Por defecto vsftpd garda un log de todas as cargas/descargas no ficheiro &amp;#039;&amp;#039;&amp;lt;tt&amp;gt;=/var/log/vsftpd.log&amp;lt;/tt&amp;gt;&amp;#039;&amp;#039;.  Se queremos cambiar esa configuración temos estas dúas directivas:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
xferlog_enable=YES&lt;br /&gt;
xferlog_std_format=YES&lt;br /&gt;
xferlog_file=/var/log/vsftpd.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outras referencias==&lt;br /&gt;
#[https://security.appspot.com/vsftpd/vsftpd_conf.html Páxina de manual de vsftpd.conf]&lt;br /&gt;
#[http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-ftp-vsftpd-conf.html Opcións de configuración de vsftpd]&lt;br /&gt;
#[http://www.alcancelibre.org/staticpages/index.php/09-como-vsftpd Manual de vsftpd]&lt;/div&gt;</summary>
		<author><name>Bruno</name></author>
	</entry>
</feed>