<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>servidor | ahierro.es</title>
	<atom:link href="https://blog.ahierro.es/tag/servidor/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ahierro.es</link>
	<description>Un blog personal  donde compartir experiencias e inquietudes relacionadas con internet, tecnología y otros asuntos interesantes</description>
	<lastBuildDate>Thu, 07 Oct 2021 07:02:51 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>

<image>
	<url>https://blog.ahierro.es/wp-content/uploads/2018/10/cropped-logo_small-1-2-32x32.png</url>
	<title>servidor | ahierro.es</title>
	<link>https://blog.ahierro.es</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Variables de configuración de PHP en .htaccess</title>
		<link>https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/</link>
					<comments>https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Thu, 07 Oct 2021 07:02:49 +0000</pubDate>
				<category><![CDATA[Apache 2]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[servidor]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=2352</guid>

					<description><![CDATA[<p>No siempre disponemos de acceso a la configuración del servidor. Aprendemos a configurar las variables de PHP mediante el archivo .htaccess cuando esto ocurre</p>
La entrada <a href="https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/">Variables de configuración de PHP en .htaccess</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Al momento de desplegar nuestras aplicaciones web no siempre tenemos acceso a la configuración del servidor. Aprendemos a configurar las variables de PHP mediante el archivo .htaccess cuando esto ocurre.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="576" src="https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-1024x576.png" alt="Variables de PHP en htaccess" class="wp-image-2388" srcset="https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-1024x576.png 1024w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-300x169.png 300w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-768x432.png 768w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-1536x864.png 1536w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess.png 1920w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></figure>



<span id="more-2352"></span>



<p>Y es que a veces encontraremos que nuestra aplicación tiene unos requisitos mínimos que el servidor no cumple. Pongamos por ejemplo que queremos <a href="https://blog.ahierro.es/instalar-prestashop-1-7/" title="Instalar Prestashop 1.7">instalar prestashop</a> que tiene ciertos <a href="https://blog.ahierro.es/requisitos-minimos-de-prestashop-1-7/" title="Requisitos mínimos de Prestashop 1.7">requisitos mínimos</a> y que por algún motivo nuestro hosting no satisface.</p>



<h2 class="wp-block-heading">Cómo configurar variables de PHP desde .htaccess</h2>



<p>Hay varias formas de actuar sobre estas variables, pero tal y como reza el título de esta entrada hoy vamos a hacerlo con el archivo <em>.htaccess</em>, y para ello utilizaremos la orden <em>php_value</em>. Su sintaxis es muy sencilla<em>:</em></p>



<p><em>php_value</em> + <em>variable_php</em> + <em>valor</em>. </p>



<p>Un ejemplo podría ser que necesitamos que la variable <em>memory_limit</em> esté configurada en 64M y el servidor la tiene configurada en 32M, o quizás el <em>max_input_vars</em> está configurado en 500 y nuestros requisitos mínimos son 1.000. Para ello incluiríamos las siguientes líneas en el archivo .htaccess:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
php_value memory_limit 64M
php_value max_input_vars 1000
</pre></div>


<p>O supongamos que queremos mostrar los errores de PHP de nuestra aplicación. Podemos hacerlo desde el archivo .htaccess:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
php_value error_reporting 7
php_flag display_errors On
</pre></div>


<h2 class="wp-block-heading">Dónde colocar las líneas dentro del archivo .htaccess</h2>



<p>Personalmente me gusta colocar este tipo de sentencias al comienzo del archivo .htaccess, justo detrás de los comentarios:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
# Comentarios habituales en archivos .htaccess

# variables php
php_value error_reporting 7
php_flag display_errors On

&amp;lt;IfModule mod_rewrite.c&gt;
&amp;lt;IfModule mod_env.c&gt;
SetEnv HTTP_MOD_REWRITE On
&amp;lt;/IfModule&gt;

RewriteEngine on
...
</pre></div>


<h2 class="wp-block-heading">Créditos, referencias y artículos relacionados</h2>



<ul class="wp-block-list"><li><a href="https://blog.ahierro.es/aumentar-el-limite-de-memoria-de-un-script-en-php/">Aumentar el límite de memoria de un script en PHP</a></li><li><a href="https://blog.ahierro.es/aumentar-el-limite-de-tiempo-maximo-de-ejecucion-de-un-script-en-php/">Aumentar el limite de tiempo máximo de ejecución de un script en PHP</a></li><li><a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">Servidor Web en Raspberry PI y Ubuntu Mate</a></li><li><a href="https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/">Como configurar Virtual Hosts en Apache 2 y Ubuntu</a></li><li><a href="https://blog.ahierro.es/habilitar-modulos-en-apache-2-sobre-ubuntu/">Habilitar módulos en Apache 2 sobre Ubuntu</a></li></ul>La entrada <a href="https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/">Variables de configuración de PHP en .htaccess</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>FTP activo vs FTP pasivo</title>
		<link>https://blog.ahierro.es/ftp-activo-vs-ftp-pasivo/</link>
					<comments>https://blog.ahierro.es/ftp-activo-vs-ftp-pasivo/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Tue, 19 Nov 2019 07:02:42 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftps]]></category>
		<category><![CDATA[servidor]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=2078</guid>

					<description><![CDATA[<p>El protocolo FTP lleva con nosotros desde la década de los setenta, y hoy, casi cincuenta años después, sigue siendo una tecnología muy presente en el flujo de trabajo habitual de los desarrolladores web. Personalmente lo utilzo con relativa frecuencia, generalmente con el cliente FileZilla, un cliente FTP multiplataforma de código abierto muy recomendable. Y &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/ftp-activo-vs-ftp-pasivo/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "FTP activo vs FTP pasivo"</span></a></p>
La entrada <a href="https://blog.ahierro.es/ftp-activo-vs-ftp-pasivo/">FTP activo vs FTP pasivo</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>El protocolo FTP lleva con nosotros desde la década de los setenta, y hoy, casi cincuenta años después, sigue siendo una tecnología muy presente en el flujo de trabajo habitual de los desarrolladores web.</p>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://lh3.googleusercontent.com/yRgL9935kWlYQIhJf0mXw_oaa6ulwsW9mbw2OWCo-QhDz2vE35Kqk1ZbjI9XiTU9T1wKhKKxCe3svz5S72pD9x5aFEjLxzGtLkD-00w4WLbB5wwqsJ--u_nrJI6DPuQlKHeQ7SDHmkW97ukFSNTdlWH-z43BzJJ0H51hasNjJkGvf3aDzz0cht-F78bk8TqGIYCYA_25bHZ0cGpk6fY2ZKXrTvPgklJ58JXibyWI2AtgDUz0A8RMmTtz3yFxJw0PWsgayACnamN032kXlb9yE8Y8APsNpmk5racVLM_EwsjceRCN0O9xperEORykp5IYUMaAdjb8VNGzHLjPvhuYo7JVsujGLhaN__eJxWH2TtwIXuu91K9KDmXMvigZKjTR6cmrtwaZ-wTrIXUBS1wAfo3c_sQ7QWwKEHLmSOwaYTwSC3jWRkHU8HlVbS3eNcjLvgEWwJ70F-H2Ti0KLJKo4ySqSPrOrG02v2gNJHrUaN46p6p6BNLgUIrOzHSUonfoOHY0j2YtojI8baFqt74LFyu4LuwC8lj-XpDIud2CLRBkGmBxi2zP3NyObUplJiwRbl7BnojmhpbqrPjAKpwY-rCatqymzedjgzpvCh9a5ADFKqQDM4-Vl8qMLEZ_iBrNBOPiJr8emKN_FXEM_HIOCKKA1dnb8rDf75_hRmm-c0D9e-0RDsl90V5crdwSkDmPWFwZ5SvO7xpQqusK8BzaG9CsvnXkYd0qiyN7n_7qhPo=w1622-h912-no" alt="FTP activo vs FTP pasivo" width="840" height="470"/></figure>



<span id="more-2078"></span>



<p>Personalmente lo utilzo con relativa frecuencia, generalmente con el cliente FileZilla, un cliente FTP multiplataforma de código abierto muy recomendable. Y siendo honestos, hasta la escritura de esta entrada, mi desconocimiento sobre los modos de conexión activo o pasivo era absoluto, algo que intuyo que le sucede a mucha gente, y ya se sabe que mal de muchos <s>consuelo de tontos</s> entrada en el blog.</p>



<h2 class="wp-block-heading">FTP, FTPS y SFTP.</h2>



<p>Recordemos que existen tres protocolos distintos a los que solemos referirnos cuando hablamos de FTP: FTP, FTPS y SFTP. Si tienes dudas sobre alguno de ellos puedes echarle un vistazo a la entrada <a href="https://blog.ahierro.es/ftp-ftps-y-sftp-diferencias-ventajas-inconvenientes/">FTP, FTPS y SFTP: diferencias, ventajas e inconvenientes</a>.</p>



<p>Pues bien, los modos activo o pasivo solo aplican sobre los protocolos FTP y FTPS, en ningún caso sobre SFTP, pues es un protocolo que dista bastante de los dos anteriores.</p>



<h2 class="wp-block-heading">Puerto de datos y puerto de control</h2>



<p>Otro aspecto clave que debemos conoce para entender el funcionamiento del FTP es que trabaja sobre dos puertos distintos: el puerto de datos y el puerto de comandos o puerto de control.</p>



<p>Los nombres son bastante auto-explicativos, el  puerto de datos se encarga de la transmisión de los ficheros y el puerto de control de las instrucciones entre ambos host. Se diseñó así para poder enviar comandos sin la necesidad de detener la transmisión de datos ni de encolarlos tras estos.</p>



<p>Si nos centramos en el servidor, tradicionalmente el puerto de control ha sido el 21 y el puerto de datos varía en función del modo, siendo el 20 para el modo activo, y un puerto aleatorio para el modo pasivo.</p>





<p>En el lado del cliente, en cambio, el puerto de control será un puerto aleatorio P superior a 1023, y el puerto de datos será P+1. Esto es así tanto en el modo activo, como en el pasivo.</p>



<p>Pero veamos cada uno de los modos en detalle para entenderlo mejor.</p>



<h2 class="wp-block-heading">FTP activo</h2>



<p>Es el modo predeterminado para las conexiones FTP, de hecho fue el primero en desarrollarse. En este modo el servidor utilizará el puerto 20 para la transferencia de datos, mientras que transmitirá los comandos utilizando el puerto 21. El cliente en cambio utilizará un puerto aleatorio P superior al 1023 para la transferencia de comandos, y un puerto P+1 para la transferencia de datos.</p>



<h3 class="wp-block-heading">Secuencia de conexión del modo activo</h3>



<p>La secuencia de conexión del modo activo es la siguiente:</p>



<ol class="wp-block-list"><li>El cliente FTP comienza la conexión dese un puerto de control aleatorio P con destino al puerto 21 del servidor. Como hemos mencionado el puerto P será superior a 1023.</li><li>El servidor responde desde el puerto de control.</li><li>El servidor inicia entonces la conexión del canal de datos: puerto 20 para el servidor y puerto P+1 para el cliente.</li><li>El cliente responde desde el puerto de datos estableciendo así la conexión.</li></ol>



<h3 class="wp-block-heading">Inconvenientes del modo activo</h3>



<p>Históricamente el principal inconveniente de este modo ha radicado en que si no hay una directiva específica en los firewalls del lado del cliente, la conexión es propensa a ser bloqueada. Esto se debe a que, como hemos visto, existen dos conexiones independientes: una de salida en la que el cliente establece la conexión del canal de control y otra de entrada en la que el servidor hace lo propio con el de datos. Esta última conexión es iniciada por el servidor en el puerto previamente negociado, y en ocasiones es bloqueada por el firewall del cliente al ser identificada como un intento de conexión externa no autorizada.</p>



<p>Recordemos que este sistema se diseñó en los años 70, cuando la democratización de los sistemas informáticos y los problemas de seguridad eran completamente distintos a los que podemos encontrar hoy en día.</p>



<p>Sea como sea, en todos los años que llevo utilizando el protocolo FTP desde el rol de cliente, no recuerdo haber experimentado nunca problemas de este tipo, y habré conectado con varias decenas de servidores de muchos proveedores distintos. Entiendo que esto se deba a la sofisticación de los sistemas de red y de seguridad más modernos.</p>



<h2 class="wp-block-heading">FTP pasivo</h2>



<p>El modo de FTP pasivo surge como consecuencia de los problemas de conexión  del modo activo. Este modo mantiene los dos canales (control y datos) pero en este caso es el cliente el encargado de establecer las dos conexiones.</p>



<p>El servidor sigue manteniendo el puerto 21 como puerto de comandos, el puerto de datos en cambio difiere del modo activo y pasa a ser un rango de puertos Q superior a 1023. Del lado del cliente seguimos manteniendo el puerto P superior a 1023 para control, y el puerto P+1 para datos.</p>



<h3 class="wp-block-heading">Secuencia de conexión del modo pasivo</h3>



<p>La secuencia de conexión del modo pasivo es la que sigue a continuación:</p>



<ol class="wp-block-list"><li>El cliente FTP comienza la conexión dese un puerto de control aleatorio P con destino al puerto 21 del servidor.</li><li>El servidor responde desde el puerto de control.</li><li>El cliente inicia la conexión del canal de datos dese el puerto P+1 hacia el puerto Q del servidor.</li><li>El servidor responde desde el puerto de datos estableciendo así la conexión.</li></ol>



<p>Como ves, los pasos uno y dos son iguales que en el modo activo, y es en los pasos tres y cuatro dónde vemos como se invierten los roles y es el cliente el que inicia la conexión de datos.</p>



<h3 class="wp-block-heading">Inconvenientes del modo pasivo del FTP</h3>



<p>El principal inconveniente de habilitar el modo pasivo en un servidor FTP está asociado con el riesgo extra en materia de seguridad que conlleva la apertura de un rango de puertos extra con respecto al modo activo. Notemos que para que el modo pasivo funcione adecuadamente estos puertos deben ser abiertos tanto en el servidor como en el firewall.</p>





<p>Para minimizar este riesgo la estrategia pasa por definir un rango de puertos lo más pequeño posible en función del número de conexiones concurrentes que esperemos tener, pero ojo, porque un cliente no se corresponde con una única conexión, es muy probable que cada cliente abra múltiples conexiones concurrentes.</p>



<h2 class="wp-block-heading">Resumen</h2>



<p>Para cerrar esta entrada os dejo una tabla con el resumen de lo que hemos visto.</p>



<figure class="wp-block-table"><table class=""><tbody><tr><th></th><th></th><th>Activo</th><th>Pasivo</th></tr><tr><th>Servidor</th><th>Puerto de control</th><td>21</td><td>21</td></tr><tr><th>Servidor</th><th>Puerto de datos</th><td>20</td><td>Rango Q &gt; 1023</td></tr><tr><th>Cliente</th><th>Puerto de control</th><td>P &gt; 1023</td><td>P &gt; 1023</td></tr><tr><th>Cliente</th><th>Puerto de datos</th><td>P + 1</td><td>P + 1</td></tr><tr><th>Quien inicia</th><th>Conexión de control</th><td>Cliente</td><td>Cliente</td></tr><tr><th>Quién inicia</th><th>Conexión de datos</th><td>Servidor</td><td>Cliente</td></tr><tr><th></th><th>Inconvenientes</th><td>Bloqueo por firewalls</td><td>Riesgo extra de seguridad</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Créditos, referencias y artículos relacionados</h2>



<ul class="wp-block-list"><li>Imagen de portada por <a rel="noreferrer noopener" aria-label="Michal Jarmoluk  (abre en una nueva pestaña)" href="https://pixabay.com/users/jarmoluk-143740/" target="_blank">Michal Jarmoluk </a>en Pixabay</li><li><a href="https://blog.ahierro.es/ftp-ftps-y-sftp-diferencias-ventajas-inconvenientes/">FTP, FTPS y SFTP: diferencias, ventajas e inconvenientes</a></li><li><a href="https://blog.ahierro.es/vsftp-instalar-y-configurar-un-servidor-ftp-en-raspberry-pi-con-ubuntu/">VSFTP instalar y configurar un servidor FTP en una Raspberry Pi con Ubuntu</a></li><li><a href="https://blog.ahierro.es/ftps-o-como-habilitar-ssl-en-vsftp/">FTPS o cómo habilitar SSL en vsftp</a></li><li><a href="https://blog.ahierro.es/usuarios-virtuales-en-vsftp/">Usuarios virtuales en vsftp</a></li></ul>



<p></p>La entrada <a href="https://blog.ahierro.es/ftp-activo-vs-ftp-pasivo/">FTP activo vs FTP pasivo</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/ftp-activo-vs-ftp-pasivo/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Usuarios virtuales en vsftp</title>
		<link>https://blog.ahierro.es/usuarios-virtuales-en-vsftp/</link>
					<comments>https://blog.ahierro.es/usuarios-virtuales-en-vsftp/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Tue, 07 May 2019 05:46:22 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[vsftp]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=859</guid>

					<description><![CDATA[<p>Ya os había comentado en otra entrada que tres de los motivos por los que valoro tanto vsftp son la versatilidad, la sencillez de configuración y la facilidad para dar respuesta a las dudas en internet. Y una de las características que contribuye a esa versatilidad y que me resulta de las más interesante es &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/usuarios-virtuales-en-vsftp/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Usuarios virtuales en vsftp"</span></a></p>
La entrada <a href="https://blog.ahierro.es/usuarios-virtuales-en-vsftp/">Usuarios virtuales en vsftp</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Ya os había comentado en otra entrada que tres de los motivos por los que valoro tanto vsftp son la versatilidad, la sencillez de configuración y la facilidad para dar respuesta a las dudas en internet. Y una de las características que contribuye a esa versatilidad y que me resulta de las más interesante es la posibilidad de crear usuarios virtuales.</p>



<figure class="wp-block-image"><img decoding="async" width="650" height="438" src="https://blog.ahierro.es/wp-content/uploads/2019/05/vsftp_usuarios_virtuales.png" alt="" class="wp-image-875" srcset="https://blog.ahierro.es/wp-content/uploads/2019/05/vsftp_usuarios_virtuales.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/05/vsftp_usuarios_virtuales-300x202.png 300w" sizes="(max-width: 650px) 100vw, 650px" /></figure>



<span id="more-859"></span>



<p>Esta entrada continua el contenido iniciado en el artículo <a href="https://blog.ahierro.es/vsftp-instalar-y-configurar-un-servidor-ftp-en-raspberry-pi-con-ubuntu/">VSFTP instalar y configurar un servidor FTP en una Raspberry Pi con Ubuntu</a>, desde dónde enlazamos más contenido relacionado con la insralación y la configuración de vsftp. </p>



<h2 class="wp-block-heading">Usuarios virtuales vs usuarios de sistema</h2>



<p>La configuración por defecto de vsftp nos permite autentificarnos con las  credenciales de los usuarios que tengamos creados en el sistema, dándonos acceso a las mismas carpetas a las que estos tienen acceso. Pero además nos permite autentificarnos con usuarios virtuales creados especificamente para acceder por ftp a una determinada carpeta. Y lo mejor de todo es que estas dos opciones son totalmente compatible entre si, pudiendo elegir entre:</p>



<ol class="wp-block-list"><li>Habilitar solo el acceso de los usuarios del sistema (por defecto).</li><li>Habilitar solo el acceso de usuarios virtuales.</li><li>Habilitar el acceso de usuarios del sistema y usuarios virtuales.</li></ol>





<h2 class="wp-block-heading">/etc/vsftps.conf</h2>



<p>Para no extendernos demasiado en esta entrada, a continuación veremos el  resultado final del archivo /etc/vsftpd.conf. Si estás interesado en  conocer los detalles de cada línea de configuración puede echarle un  vistazo a la <a rel="noreferrer noopener" href="https://security.appspot.com/vsftpd/vsftpd_conf.html" target="_blank">documentación oficial de vsftp en este enlace</a>. Para facilitar la lectura hemos eliminado todas las líneas de comentarios originales del archivo:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
# configuración excluyendo comentarios
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
user_sub_token=$USER
hide_ids=YES
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
hide_ids=YES

# Configuración específica de usuarios virtuales
user_config_dir=/etc/vsftpd/usersConf
guest_enable=YES
virtual_use_local_privs=YES
pam_service_name=vsftpd
</pre></div>


<h3 class="wp-block-heading">Creación de usuarios virtuales</h3>



<p>Una vez realizada la configuración de vsftp, lo siguiente que haremos será crear los usuarios virtuales. Para ello crearemos un directorio dónde alojar los ficheros de autentificación y acto seguido los propios ficheros, que en este ejemplo serán dos, uno por usuario. Por algún motivo que desconozco no he podido hacer funcionar la autentificación con PAM sin incluir la opción -d en la creación de los ficheros de autentificación, lo que nos limita a contraseñas con un máximo de 8 caracteres, una opción que lamentablemente reduce bastante la seguridad.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
sudo mkdir /etc/vsftpd
sudo htpasswd -c -d /etc/vsftpd/ftpd.passwd ftpUser1
sudo htpasswd -d /etc/vsftpd/ftpd.passwd ftpUser2
</pre></div>


<p>El comando htpasswd nos solicitará que definamos la contraseña y que la confirmemos, y ojo que en el segundo usuario hemos omitido la opción -c, solo es necesario incluirla con el primer usuario, si la incluimos en el segundo o sucesivos truncaremos el fichero y por lo tanto únicamente dejaremos el último usuario que hemos creado.</p>





<h3 class="wp-block-heading">Instalación y Configuración de PAM</h3>



<p>Como adelantabamos en el punto anterior utilizaremos PAM (Pluggable Authentication Modules) para la autentificación de los usuarios, así que si no lo tenemos instalado deberemos hacerlo:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
sudo apt-get update
sudo apt-get install libpam-pwdfilev
</pre></div>


<p>El archivo de configuración de PAM para el servicio vsftp por defecto se encuentra en /etc/pam.d/vsftp, notad que hicimos referencia a él en la configuración de vsftp mediante la directiva pam_service_name. Así que por seguridad realizaremos una copia de seguridad de este archivo y acto seguido lo editaremos de forma que quede así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so
</pre></div>


<p>Como ves, le estamos indicando que utilice el archivo que acabamos de crear con el comando htpasswd para autentificar a los usuarios virtuales.</p>



<h3 class="wp-block-heading">Directorios de usuarios virtuales</h3>



<p>El último paso que nos queda para tener nuestro servicio funcionando es definir cuales serán los directorios a los que tendrán acceso los usuarios. Para realizar esta configuración crearemos un archivo por cada usuario al que estemos concediendo acceso, y para mantenerlos organizados los almacenaremos dentro de un directorio que crearemos a tal efecto, al que ya hemos hecho referencia en /etc/vsftpd.conf mediante la directiva user_config_dir. El nombre de cada archivo debe ser idéntico al nombre de usuario al que hace referencia:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
sudo mkdir /etc/vsftpd/usersConf
sudo vim /etc/vsftpd/usersConf/ftpUser1
sudo vim /etc/vsftpd/usersConf/ftpUser2
</pre></div>


<p>El contenido de cada archivo debe hacer referencia al directorio al que le estamos concediendo acceso de la siguiente manera:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
local_root=/var/www/targetDir
</pre></div>


<h2 class="wp-block-heading">Permisos de escritura</h2>



<p>Un aspecto de gran importancia es configurar correctamente los permisos de escritura del directorio de cada usuario, en caso contrario nos encontraremos con un error cuando intentemos cargar cualquier archivo en nuestro servidor.</p>



<p>En nuestro caso, estamos concediendo acceso a una carpeta de un servidor web, así que daremos por hecho que los permisos están configurados tal y como explicamos en la entrada <a href="https://blog.ahierro.es/archivos-y-permisos-de-usuario-en-apache-y-linux/">Archivos y permisos de usuario en Apache 2 y Linux</a>.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
sudo usermod -a -G www-data ftpd
sudo chown ftpd:www-data /var/www/users/ftpUser1
</pre></div>


<h2 class="wp-block-heading">Comprobamos que todo funciona</h2>



<p>Reiniciamos el servidor y comprobamos que todo funciona:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
sudo service vsftpd restart
</pre></div>


<p>Recuerda que si tienes algún problemalor archivos de logs de vsftp están en /var/log/vsftp.log y los logs de autentificación  /var/log/auth.log.</p>La entrada <a href="https://blog.ahierro.es/usuarios-virtuales-en-vsftp/">Usuarios virtuales en vsftp</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/usuarios-virtuales-en-vsftp/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>FTPS o cómo habilitar SSL en vsftp</title>
		<link>https://blog.ahierro.es/ftps-o-como-habilitar-ssl-en-vsftp/</link>
					<comments>https://blog.ahierro.es/ftps-o-como-habilitar-ssl-en-vsftp/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Tue, 07 May 2019 05:23:28 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftps]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[vsftp]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=854</guid>

					<description><![CDATA[<p>El uso del protocolo https en la web es cada día es más habitual, las principales organizaciones que marcan el rumbo de la web, conocedoras de la necesidad de aumentar la seguridad en internet, fomentan su uso hasta el punto de que los principales navegadores del mercado identifican las webs que no cifran el tráfico &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/ftps-o-como-habilitar-ssl-en-vsftp/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "FTPS o cómo habilitar SSL en vsftp"</span></a></p>
La entrada <a href="https://blog.ahierro.es/ftps-o-como-habilitar-ssl-en-vsftp/">FTPS o cómo habilitar SSL en vsftp</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>El uso del protocolo https en la web es cada día es más habitual, las principales organizaciones que marcan el rumbo de la web, conocedoras de la necesidad de aumentar la seguridad en internet, fomentan su uso hasta el punto de que los principales navegadores del mercado identifican las webs que no cifran el tráfico como no seguras.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="438" src="https://blog.ahierro.es/wp-content/uploads/2019/05/ftps_o_ssl_en_vsftp.png" alt="" class="wp-image-878" srcset="https://blog.ahierro.es/wp-content/uploads/2019/05/ftps_o_ssl_en_vsftp.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/05/ftps_o_ssl_en_vsftp-300x202.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<span id="more-854"></span>



<p>Lamentablemente, según mi experiencia, esa practica no está tan extendida en los servidores ftp, dónde a día de hoy todavía todavía existen un gran número de ellos que no implementan el protocolo FTPS, haciendo uso de conexiones sin encriptar y por lo tanto menos seguras. Una lástima teniendo en cuenta que no es algo complicado.</p>



<p>Hoy veremos cómo habilitar el protocolo FTPS en nuestro servidor vsftp, ampliando el contenido publicado en el artículo <a href="https://blog.ahierro.es/vsftp-instalar-y-configurar-un-servidor-ftp-en-raspberry-pi-con-ubuntu/">VSFTP instalar y configurar un servidor FTP en una Raspberry Pi con Ubuntu</a>. Además, es muy probable que también te interese echarle un vistazo a la entrada <a href="https://blog.ahierro.es/ftp-ftps-y-sftp-diferencias-ventajas-inconvenientes/">FTP, FTPS y SFTP: diferencias, ventajas e inconvenientes</a>, pues es una buena introducción si no estás familiarizado con estos protocolos.</p>





<p>Esta configuración está realizada sobre Ubuntu Mate 16.0.4.2 corriendo en una Raspberry PI, pero es perfectamente aplicable a otras distribuciones y versiones de Linux y otros hardwares.</p>



<p>Asumiremos que ya tenemos nuestro servidor vsftp funcionando y que tenemos OpenSSL instalado. Así que el primer paso será crear los certificados SSL pertinentes:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
</pre></div>


<p>A continuación agregamos las siguientes líneas al final del archivo /etc/vsftpd.conf: </p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
# Opciones para el certificado SSL
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
</pre></div>


<p>Ya solo nos queda reiniciar el servidor y comprobar que la configuración que hemos aplicado funciona correctamente.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
sudo service vsftpd restart
</pre></div>


<p>Y con estos sencillos pasos hemos terminado, mejorando notablemente la seguridad de nuestro servidor FTP.</p>La entrada <a href="https://blog.ahierro.es/ftps-o-como-habilitar-ssl-en-vsftp/">FTPS o cómo habilitar SSL en vsftp</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/ftps-o-como-habilitar-ssl-en-vsftp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VSFTP instalar y configurar un servidor FTP en una Raspberry Pi con Ubuntu</title>
		<link>https://blog.ahierro.es/vsftp-instalar-y-configurar-un-servidor-ftp-en-raspberry-pi-con-ubuntu/</link>
					<comments>https://blog.ahierro.es/vsftp-instalar-y-configurar-un-servidor-ftp-en-raspberry-pi-con-ubuntu/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Tue, 07 May 2019 05:20:29 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[vsftp]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=437</guid>

					<description><![CDATA[<p>Históricamente los clientes y servidores FTP han formado parte del conjunto de herramientas más utilizadas por los desarrolladores web. Con la sofisticación de los entornos de desarrollo y la adopción cada vez mayor de los sistemas de control de versiones su uso ha disminuido ligeramente, pero sigue conservando su estatus de herramienta esencial. Esta entrada &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/vsftp-instalar-y-configurar-un-servidor-ftp-en-raspberry-pi-con-ubuntu/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "VSFTP instalar y configurar un servidor FTP en una Raspberry Pi con Ubuntu"</span></a></p>
La entrada <a href="https://blog.ahierro.es/vsftp-instalar-y-configurar-un-servidor-ftp-en-raspberry-pi-con-ubuntu/">VSFTP instalar y configurar un servidor FTP en una Raspberry Pi con Ubuntu</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Históricamente los clientes y servidores FTP han formado parte del conjunto de herramientas más utilizadas por los desarrolladores web. Con la sofisticación de los entornos de desarrollo y la adopción cada vez mayor de los sistemas de control de versiones su uso ha disminuido ligeramente, pero sigue conservando su estatus de herramienta esencial. </p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://blog.ahierro.es/wp-content/uploads/2019/05/vsftp.png" alt="servidor ftp raspberry pi y ubuntu" class="wp-image-849" srcset="https://blog.ahierro.es/wp-content/uploads/2019/05/vsftp.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/05/vsftp-300x168.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<span id="more-437"></span>



<p>Esta entrada pertenece a la serie de artículos sobre cómo utilizar una <a href="https://blog.ahierro.es/raspberry-pi-como-herramienta-de-apoyo-para-el-desarrollo-web/">Raspberry PI como herramienta de apoyo para el desarrollo web</a>,  y veremos como instalar y configurar vsftp en Ubuntu,  crear  usuarios virtuales y habilitar el acceso con el protocolo FTPS.</p>



<h2 class="wp-block-heading">vsftp</h2>



<p>Puestos a implementar una solución ftp el primer paso será elegir uno de las muchas posibilidades que existen en el mercado. Si ya hemos descartado el protocolo SFTP, y queremos un servidor FTP o FTPS que nos permita mantener la simplicidad pero ampliando la versatilidad, y que además esté disponible bajo licencia de software libre, vsftp (Very Secure FTP) es una buena opción. </p>



<p>Además otra de las ventajas de Vsftp es que su uso está muy extendido y es fácil resolver cualquier duda con alguna consulta en internet, y entre algunas de sus características podemos destacar: </p>



<ul class="wp-block-list"><li>  Usuarios virtuales</li><li> Configuración avanzada por usuario</li><li> Configuración por IP de origen</li><li> Límites por IP de origen</li><li> Limitación de ancho de banda</li><li> Encriptación sobre SSL </li></ul>



<p>Características más que suficientes para cubrir muchos de los casos que podemos necesitar. </p>





<p>Por otro lado, si leiste el articulo <a href="https://blog.ahierro.es/ftp-ftps-y-sftp-diferencias-ventajas-inconvenientes/">FTP, FTPS y SFTP: diferencias, ventajas e inconvenientes</a>, es interesante destacar que es totalmente compatible tener habilitado el acceso SFTP y el acceso FTP y FTPS con Vsftp. Esto nos permitiría por ejemplo utilizar SFTP para los usuarios del sistema y FTPS para una lista de usuarios específicos con unas necesidades distintas.</p>



<h2 class="wp-block-heading"> Instalar vsftp </h2>



<p>Como es habitual la instalación de cualquier programa incluido en los repositorios de una distro es algo muy sencillo.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
sudo apt-get update
sudo apt-get install vsftpd
</pre></div>


<p>Tras la instalación de vsftp el servidor es perfectamente funcional con los usuarios del sistema </p>



<h2 class="wp-block-heading">Configurar vsftp </h2>



<p>La configuración de vsftp ofrece muchas posibilidades y  se realiza en el archivo <em>/etc/vsftpd.conf</em>, puedes ver <a rel="noreferrer noopener" aria-label="opciones de configuración que tiene en este enlace (abre en una nueva pestaña)" href="https://security.appspot.com/vsftpd/vsftpd_conf.html" target="_blank">todas las opciones de configuración que tiene en este enlace</a>.</p>



<p>En cuanto a las configuraciones que vamos a aplicar lo haremos en entradas separadas para facilitar la organización y la lectura y evitar que esto se convierta en un artículo demasiado largo y aburrido. A continuación tienes los enlaces:</p>



<ul class="wp-block-list"><li><a href="https://blog.ahierro.es/usuarios-virtuales-en-vsftp/">Creación y configuración de usuarios virtuales</a></li><li><a href="https://blog.ahierro.es/ftps-o-como-habilitar-ssl-en-vsftp/">Habilitar el acceso por FTPS</a></li></ul>



<h2 class="wp-block-heading">Comprobamos que todo funciona</h2>



<p>Después de aplicar cualquier configuración deberemos probar que funciona correctamente, para ello el primer paso será reiniciar el servidor para aplicar la nueva configuración y acto seguido conectarnos con nuestro cliente ftp favorito.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
sudo service vsftpd restart
</pre></div>


<p>En caso de que tengamos algún tipo de problema podemos revisar los logs de vsftp en /var/log/vsftp.log y los logs de autentificación /var/log/auth.log. Ojo que podemos tener más de un archivo de log por servicio.</p>La entrada <a href="https://blog.ahierro.es/vsftp-instalar-y-configurar-un-servidor-ftp-en-raspberry-pi-con-ubuntu/">VSFTP instalar y configurar un servidor FTP en una Raspberry Pi con Ubuntu</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/vsftp-instalar-y-configurar-un-servidor-ftp-en-raspberry-pi-con-ubuntu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Acceder a Ubuntu por Hostname</title>
		<link>https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/</link>
					<comments>https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Wed, 06 Feb 2019 07:30:31 +0000</pubDate>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=260</guid>

					<description><![CDATA[<p>Para el que está acostumbrado a trabajar con redes de equipos Windows acceder a un equipo mediante hostname es algo habitual. Por el contrario, el que suele trabajar con sistemas basados en Linux en una red local sabe que por defecto suele ser un asunto algo más laborioso. Avahi La mala noticia es que para &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Acceder a Ubuntu por Hostname"</span></a></p>
La entrada <a href="https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/">Acceder a Ubuntu por Hostname</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Para el que está acostumbrado a trabajar con redes de equipos Windows acceder a un equipo mediante hostname es algo habitual. Por el contrario, el que suele trabajar con sistemas basados en Linux en una red local sabe que por defecto suele ser un asunto algo más laborioso.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://blog.ahierro.es/wp-content/uploads/2019/02/hostname_broadcast.png" alt="Hostname broadcast" class="wp-image-509" srcset="https://blog.ahierro.es/wp-content/uploads/2019/02/hostname_broadcast.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/02/hostname_broadcast-300x168.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<span id="more-260"></span>



<h3 class="wp-block-heading">Avahi</h3>



<p>La mala noticia es que para lograr acceder por nombre a máquinas Linux en una red local con garantías la mejor solución es disponer de un servidor DNS (Bind es la opción Open Source más extendida), y en esta entrada no hablaremos sobre servidores DNS.</p>



<p>En esta entrada utilizaremos Avahi, una implementación gratuita de Zero-Configuration Networking que permite difundir y descubrir servicios y equipos en una red local. Quizás a alguno le resulte más familiar si citamos a Bonjour, que es la implementación propietaria que tiene Apple de esta tecnología.</p>





<p>Y en función de nuestras necesidades es posible que Avahi nos sirva o no (lógico). El principal motivo es que no basta con instalarlo en la máquina a la que queremos acceder por nombre (llamémosla máquina Destino), sino que cada equipo que quiera acceder por nombre a la máquina Destino debe poder trabajar con la tecnología Zero-Configuration Networking para interpretar la información publicada por nuestra máquina Destino.</p>



<h3 class="wp-block-heading">Máquinas Destino y Clientes</h3>



<p>Pongámonos en situación, de un lado tenemos una máquina corriendo Ubuntu, en mi caso es una Raspberry Pi corriendo la versión 16.0.4.2 de Ubuntu Mate. El hostname de esta máquina es «maquina1», su ip 192.168.1.15 y para agilizar la lectura, como ya hemos dicho, la llamaremos máquina «Destino». En esta máquina hemos instalado un servidor web y queremos acceder a ella mediante hostname.</p>



<p>Del otro lado tenemos una serie de equipos con distintos SSOO que son los que quieren consumir el servicio web accediendo por nombre. A estas máquinas las llamaremos «Clientes» y vamos a suponer que tenemos:</p>



<ol class="wp-block-list"><li>Cliente Linux, corriendo Ubuntu 18.</li><li>Cliente Windows, corriendo Windows 10.</li><li>Cliente Android, corriendo Android Oreo 8.1.</li></ol>



<p>Lo siento por los amantes de Apple pero no tengo ningún dispositivo de la manzanita para probar, aún así si eres uno de ellos sigue leyendo porque estoy convencido que te será de utilidad.</p>



<h3 class="wp-block-heading">Instalar y configurar Avahi</h3>



<p>Comenzaremos realizando las instalaciones necesarias en la máquina Destino. En función de vuestra distro es posible que todos o algunos de estos paquetes ya estén instalados.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-get update
sudo apt-get install avahi-daemon
sudo apt-get install avahi-utils
sudo apt-get install libnss-mdns
</pre></div>


<p>Y acto seguido editaremos la configuración de Avahi. Es buena idea que antes de editar cualquier archivo de configuración guardéis una copia que os ayude a volver al punto inicial si fuera necesario, aunque vamos a tocar muy poca configuración.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
suco cp /ect/avahi/avahi-daemon.conf /etc/avahi/avahi-daemon.conf.bck
sudo vim /etc/avahi/avahi-daemon.conf
</pre></div>


<p>En el archivo de configuración nos centraremos primero en el nombre de la máquina y el dominio. Mi recomendación es que mantengáis la configuración por defecto, es decir ser coherentes y que el host-name coincida con el de la propia máquina y que el dominio sea «local». De esta forma accederemos a la máquina con maquina1.local.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
&#x5B;server]
host-name=maquina1
domain-name=local
</pre></div>


<p>Nos aseguraremos también de que las siguientes opciones se encuentren como mostramos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
&#x5B;publish]
disable-publishing=no
disable-user-service-publishing=no
publish-addresses=yes
</pre></div>


<p>Reiniciamos el servicio y lo agregamos al arranque de nuestra máquina:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo service avahi-daemon restart
sudo update-rc.d avahi-daemon defaults
</pre></div>


<p>Y con esto hemos terminado con la máquina Destino.</p>



<h3 class="wp-block-heading">Maquinas Clientes</h3>



<p>Como ya mencionamos cada máquina cliente debe ser capaz de trabajar con la tecnología Zero-Configuration Networking para poder alcanzar la máquina Destino por nombre, así que veamos caso a caso.</p>





<h4 class="wp-block-heading">Desde Linux</h4>



<p>En cada equipo con sistema operativo Linux con el que queramos acceder por nombre a la máquina Destino deberemos instalar Avahi. Así que no tenemos más que repetir las instrucciones definidas en el apartado «Instalar y Configurar Avahi».</p>



<h4 class="wp-block-heading">Desde Windows</h4>



<p>Por defecto Windows no nos dejará acceder por hostname y por ahora no existe implementación de Avahi para este sistema operativo. En su defecto podemos instalar el programa «Servicios de impresión Bonjour para Windows», de Apple, que aunque está pensado para otro uso nos permitirá cubrir nuestra necesidad y alcanzar la máquina Destino por nombre.</p>



<h4 class="wp-block-heading">Desde Android</h4>



<p>Lamentablemente no he encontrado ninguna aplicación o demonio para Android que permita que cualquier aplicación que corra en este sistema operativo sea capaz de acceder por nombre a nuestra máquina Destino, una lástima. Si conoces alguna solución para ello estaría muy agradecido de que la compartas en un comentario.</p>



<h4 class="wp-block-heading">IOS y MacOSX</h4>



<p>Como he dicho no tengo ningún dispositivo de Apple para realizar pruebas, pero conociendo que tienen su propia implementación de de Zero-Configuration Networking (Bonjour), me atrevería a decir que podremos acceder por nombre a nuestra máquina Destino sin necesidad de instalar ningún software adicional.</p>



<h3 class="wp-block-heading">Comprobar el funcionamiento</h3>



<p>Aunque es de primero de pre-escolar (creo que ahora lo llaman infantil), me gusta comprobar las cosas, y la forma más sencilla de hacerlo es utilizar el comando ping. Si lo hemos conseguido obtendremos algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
ping raspi.local
PING raspi.local (192.168..15) 56(84) bytes of data.
64 bytes from 192.168.1.15 (192.168.1.15): icmp_seq=1 ttl=64 time=6.68 ms
64 bytes from 192.168.1.15 (192.168.1.15): icmp_seq=2 ttl=64 time=4.61 ms

</pre></div>


<p>Y si algo no funciona como esperamos obtendremos algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
ping maquina1.local
ping: maquina1.local: Nombre o servicio desconocido
</pre></div>


<p>Y como dijimos que en la máquina Destino teníamos un servidor web, al escribir maquina1.local en la barra de direcciones del navegador, obviamente, accederemos al contenido publicado.</p>





<h3 class="wp-block-heading">Conclusión</h3>



<p>Con Avahi podemos acceder por nombre a máquinas con sistema operativo Linux en nuestra red local. Su mayor limitación es que nos veremos obligado a que tanto la máquina a la que queremos acceder, como las máquinas con las que queremos acceder deben tener instalada una implementación de Zero-Configuration Networking.</p>



<p>Así que si bien resuelve ciertas situaciones y necesidades, si pensamos en una red de varias decenas de equipos con distintos sistemas operativos existen otras alternativas más escalables.</p>



<p>Como siempre me gustaría saber cómo cual es tu experiencia, ¿has usado Avahi? ¿accedes por ip? ¿utilizas otra tecnología u otros programas? Deja un comentario y danos tu opinión.</p>La entrada <a href="https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/">Acceder a Ubuntu por Hostname</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>FTP, FTPS y SFTP: diferencias, ventajas e inconvenientes</title>
		<link>https://blog.ahierro.es/ftp-ftps-y-sftp-diferencias-ventajas-inconvenientes/</link>
					<comments>https://blog.ahierro.es/ftp-ftps-y-sftp-diferencias-ventajas-inconvenientes/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Fri, 01 Feb 2019 06:51:39 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftps]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[software]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=471</guid>

					<description><![CDATA[<p>La curiosidad y la predisposición a probar cosas nuevas suelen ser cualidades bastante habituales entre las personas relacionadas con la tecnología, pero existen ciertas situaciones en las que estamos tan acostumbrados a realizar algunas tareas de una determinada forma que no nos cuestionamos el por qué o si es posible hacerlo mejor con algunos cambios. &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/ftp-ftps-y-sftp-diferencias-ventajas-inconvenientes/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "FTP, FTPS y SFTP: diferencias, ventajas e inconvenientes"</span></a></p>
La entrada <a href="https://blog.ahierro.es/ftp-ftps-y-sftp-diferencias-ventajas-inconvenientes/">FTP, FTPS y SFTP: diferencias, ventajas e inconvenientes</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>La curiosidad y la predisposición a probar cosas nuevas suelen ser cualidades bastante habituales entre las personas relacionadas con la tecnología, pero existen ciertas situaciones en las que estamos tan acostumbrados a realizar algunas tareas de una determinada forma que no nos cuestionamos el por qué o si es posible hacerlo mejor con algunos cambios.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://blog.ahierro.es/wp-content/uploads/2019/01/ftt_sftp_ftps.png" alt="FTP, SFTP y FTPS" class="wp-image-477" srcset="https://blog.ahierro.es/wp-content/uploads/2019/01/ftt_sftp_ftps.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/01/ftt_sftp_ftps-300x168.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<span id="more-471"></span>



<p>El uso del FTP suponía para mi una de esas situaciones, lo utilizo con relativa frecuencia pero nunca me había cuestionado cual era la diferencia entre FTPS y SFTP. Si bien sabía que ambos añadían una capa de encriptación con respecto al protocolo FTP,&nbsp; desconocía por completo que era lo que les distinguía. Así que cuando configuraba una nueva conexión, seleccionaba la opciones que me permitía conectar sin darle mayor importancia.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="474" height="146" src="https://blog.ahierro.es/wp-content/uploads/2019/01/filizilla_ftp_protocol.png" alt="Filezilla, protocolos ftp, ftps y sftp" class="wp-image-475" srcset="https://blog.ahierro.es/wp-content/uploads/2019/01/filizilla_ftp_protocol.png 474w, https://blog.ahierro.es/wp-content/uploads/2019/01/filizilla_ftp_protocol-300x92.png 300w" sizes="auto, (max-width: 474px) 100vw, 474px" /></figure>



<p>El caso es que hace unas semanas instalé un servidor FTP en mi Raspberry. No es el primero que instalo, pero cuando lo he hecho siempre han estado destinados a ámbitos muy concretos, protegidos por una red local y su uso ha sido prácticamente unipersonal,&nbsp; por lo que nunca me preocupé demasiado por los detalles más allá de que me permitieran conectar y hacer mi trabajo.</p>



<p>La diferencia fue que en esta ocasión quise profundizar un poco más, conocer exactamente la diferencia entre los distintos protocolos y aplicar configuraciones más complejas y eso es lo que os cuento en esta y otras entradas que vendrán.</p>



<h3 class="wp-block-heading">FTP</h3>



<p>FTP son siglas de File Transfer Protocol, es un protocolo que lleva con nosotros desde la década de los 70 y fue diseñado para la transferencia de archivos a través de la red con&nbsp; una configuración de cliente-servidor.</p>





<p>Su principal defecto es que carece de capa alguna de seguridad, los datos viajan por la red en texto plano, sin encriptación, de modo que es muy sencillo interceptar no solo los archivos que se transmiten sino también los datos de autentificación. Por otro lado, esta ausencia de encriptación es la responsable de que sea el protocolo de transmisión más rápido de los que veremos en esta entrada, pues no existe consumo de recursos relacionados con la encriptación y el tamaño de los paquetes transmitidos es menor.</p>



<p>Por defecto hace uso del puerto 21 y es el precursor de los otros dos protocolos que vamos a ver en esta entrada.</p>



<h3 class="wp-block-heading">FTPS</h3>



<p>Las siglas FTPS provienen de FTP over SSL y no es más que el protocolo estándar FTP transmitido sobre una conexión segura. Inicialmente la conexión segura hacía referencia únicamente&nbsp; SSL (Secure Sockets Layer), pero con el&nbsp; paso del tiempo y la aparición del protocolo TLS (Transport Layer Security), también soporta este último. Este protocolo hace uso de dos canales diferentes: uno de control y otro de transferencia, y tiene dos variantes bien diferenciadas:</p>



<ul class="wp-block-list"><li><strong>FTP implicito sobre SSL</strong>. Recibe este nombre porque la conexión cifrada es implicita, es decir, ocurre desde un primer instante, sin necesidad de solicitarla, motivo por el cual además está desaconsejada (deprecated). Por defecto utiliza el puerto 990 para el canal de control y el 998 para el de datos, de forma que el puerto 21 permanece libre para poder ofrecer un servicio FTP estandar. En cualquier caso los dos canales viajan encriptados.</li><li><strong>FTP explicito sobre SSL</strong> o también conocido como FTPES. El cliente establece una conexión FTP estándar mediante el puerto 21 con el servidor y una vez conectado se solicita explícitamente la negociación SSL, de ahí el nombre. En función de la configuración del servidor, si el cliente no solicita la encriptación es posible que ocurran dos cosas: que se rechace la conexión o que se establezca una conexión FTP estándar (insegura). Esta variante permite decidir si queremos encriptar los canales de control y transferencia o si por el contrario solo queremos encriptar uno de ellos.</li></ul>



<p>Un aspecto que puede resultar negativo de este protocolo es que por el hecho de utilizar más de un canal puede resultar problemático con algunas configuraciones en los firewalls, así que es posible que si tenemos un firewall en funcionamiento e implementamos un servidor FTPS nos veremos obligados a revisar su configuración.</p>





<h3 class="wp-block-heading">STFP</h3>



<p>SFTP o SSH File Transfer Protocol es un protocolo que «simula» el comportamiento del protocolo FTP pero que realmente poco o nada tiene que ver con él, no es una extensión o una mejora como puede ser FTPS, si no que fue desarrollado desde cero.</p>



<p>Tanto los datos de control como de transferencia se transmiten siempre encriptados y por un único canal, utilizando para ello el puerto 22 al igual que el protocolo SSH (Secure SHell) sobre el que está construido. Posiblemente por este motivo muchos servidores FTP implementan los protocolos FTP Y FTPS pero no SFTP. En su lugar podemos ver implementaciones&nbsp; de servidores SFTP de la mano de los propios servidores de SSH, algunos ejemplos son OpenSSH o LSH.</p>



<p>SFTP ha sido el último protocolo en llegar y cabe destacar que su especificación nunca ha pasado de ser un borrador, es decir, no existe un documento RFC.</p>



<h3 class="wp-block-heading">Conclusión</h3>



<p>Es interesante conocer qué hay detrás de los distintos protocolos de transmisión de ficheros para poder decidir cual es el que mejor se adapta a las necesidades que tengamos en cada momento.</p>



<p>Mi recomendación dependerá del uso que le vayamos a dar, pero siempre que sea posible utilizaría un protocolo que implemente una capa de encriptación y no esté desaconsejado (deprecated), es decir: SFTP o FTPES.</p>



<p>¿Y tú qué opinas al respecto? ¿Qué protocolo prefieres y por qué? ¿Has tenido alguna mala experiencia por utilizar un FTP sin encriptación? Déjanos un comentario contándonos tu experiencia.</p>



<h2 class="wp-block-heading">Créditos, referencias y artículos relacionados</h2>



<ul class="wp-block-list"><li><a href="https://blog.ahierro.es/vsftp-instalar-y-configurar-un-servidor-ftp-en-raspberry-pi-con-ubuntu/">VSFTP instalar y configurar un servidor FTP en una Raspberry Pi con Ubuntu</a></li><li><a href="https://blog.ahierro.es/ftps-o-como-habilitar-ssl-en-vsftp/">FTPS o cómo habilitar SSL en vsftp</a></li><li><a href="https://blog.ahierro.es/usuarios-virtuales-en-vsftp/">Usuarios virtuales en vsftp</a></li></ul>





<p></p>La entrada <a href="https://blog.ahierro.es/ftp-ftps-y-sftp-diferencias-ventajas-inconvenientes/">FTP, FTPS y SFTP: diferencias, ventajas e inconvenientes</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/ftp-ftps-y-sftp-diferencias-ventajas-inconvenientes/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Como configurar Virtual Hosts en Apache 2 y Ubuntu</title>
		<link>https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/</link>
					<comments>https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 24 Dec 2018 06:30:33 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=288</guid>

					<description><![CDATA[<p>Los más habitual en un entorno de desarrollo, de pruebas o de pre-producción es que tengamos varios proyectos conviviendo en paralelo. Y como ser organizado no es solo una virtud, sino que es una cualidad imprescindible para evitar el caos de cara al futuro, los hosts virtuales de Apache 2 son una buena forma de &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Como configurar Virtual Hosts en Apache 2 y Ubuntu"</span></a></p>
La entrada <a href="https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/">Como configurar Virtual Hosts en Apache 2 y Ubuntu</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Los más habitual en un entorno de desarrollo, de pruebas o de pre-producción es que tengamos varios proyectos conviviendo en paralelo. Y como ser organizado no es solo una virtud, sino que es una cualidad imprescindible para evitar el caos de cara al futuro, los hosts virtuales de Apache 2 son una buena forma de lograrlo.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/12/apache_virtual_hosts.png" alt="Apache Virtual Hosts" class="wp-image-303" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/apache_virtual_hosts.png 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/apache_virtual_hosts-300x168.png 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/apache_virtual_hosts-267x150.png 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<span id="more-288"></span>



<p>Los ejemplos de este documento han sido probados tanto sobre Ubuntu Mate 16.0.4.2 y Apache 2.4.18 como sobre XUbuntu 18.04 con la versión 2.4.29 de Apache, aunque funcionarán sobre la mayoría de distribuciones Linux con la versión 2.4 de Apache.</p>



<p>Para el resto del artículo, asumiremos que la ip de la máquina dónde estamos configurando los host virtuales es 192.168.1.10.</p>



<h3 class="wp-block-heading">¿Qué es un virtual host en Apache 2?</h3>



<p>Virtual host es la herramienta que Apache pone a nuestra disposición para poder publicar más de una página web en un mismo servidor Apache, y que además,&nbsp; nos permite mantener configuraciones diferentes para cada host virtual.</p>





<p>Al realizar una petición al servidor web, Apache puede identificar a que site (host virtual) queremos acceden en función de tres variables relacionadas con la solicitud realuzada al servidor:</p>



<ol class="wp-block-list"><li>La IP</li><li>El Host Name</li><li>El puerto</li></ol>



<p>En este artículo distinguiremos los host virtuales por el puerto, pues es lo que utilizo habitualmente en mi entorno de desarrollo por una simple cuestión de comodidad.</p>



<h3 class="wp-block-heading">Nociones de configuración</h3>



<p>Toda la configuración de Apache 2 se encuentra bajo la carpeta <em>/var/apache2</em>. Los archivos de configuración para los virtual hosts se encuentran dentro de dos carpetas en particular:</p>



<ol class="wp-block-list"><li><em>/var/apache2/sites-available</em>. En esta carpeta se encuentran todos los archivos de configuración de los hosts virtuales, cada host se corresponde con un archivo.</li><li><em>/var/apache2/sites-enabled</em>. En esta carpeta se crearán enlaces simbólicos a los archivos de la carpeta sites-available para los host que queramos activar en cada momento.</li></ol>



<p>Con la instalación de Apache, se creará por defecto, el archivo <em>/etc/apache2/sites-available/000-default.conf</em> y su correspondiente enlace simbólico en la carpeta <em>sites-enabled</em> que se encarga de configurar el host virtual por defecto al que accedemos tras instalar Apache.</p>



<h3 class="wp-block-heading">Cómo crear un virtual host</h3>



<p>Crear host virtuales es una tarea relativamente habitual, así que los señores desarrolladores de Apache nos lo han puesto bastante sencillo.</p>



<p>A continuación crearemos un host virtual para alojar un entorno de pruebas de este blog. Para entender mejor el proceso, a pesar de que es sencillo, lo dividiremos en cuatro pasos:</p>



<h4 class="wp-block-heading">Paso 1: Creamos el directorio que alojará nuestra web</h4>



<p>Lo primero será crear el directorio dónde alojaremos los archivos que posteriormente serviremos.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cd /var/www
sudo mkdir ahierro.es
cd ahierro.es
sudo mkdir public
</pre></div>


<p>La carpeta que serviremos será <em>public</em>, es buena idea guardarse un nivel de directorio para archivos relacionados con el proyecto que no deben ser accesibles desde una url en el navegador. Esto es bastante habitual en muchas aplicaciones y frameworks.</p>



<p>En este paso del proceso es importante dejar correctamente configurados los permisos de acceso a los archivos y carpetas de nuestro host virtual. Para ello os dejo un enlace al artículo <a href="https://blog.ahierro.es/archivos-y-permisos-de-usuario-en-apache-y-linux/">Archivos y permisos de usuario en Apache 2 y Linux</a> por si queréis echarle un vistazo.</p>



<h4 class="wp-block-heading">Paso 2: Creamos el archivo de configuración del nuevo host virtual</h4>



<p>Ahora crearemos el archivo de configuración en <em>/etc/apache2/sites-available</em>, lo más sencillo es hacerlo desde otro que ya exista. Es muy importante que lleve la extensión .conf o el comando a2ensite no funcionará más adelante:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cd /etc/apache2/sites-available
sudo cp 000-default.conf ahierro.es.conf
</pre></div>


<p>Lo editamos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo vim ahierro.es.conf
</pre></div>


<p>Inicialmente tenemos algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
&lt;VirtualHost *:80&gt;
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request&#039;s Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with &quot;a2disconf&quot;.
#Include conf-available/serve-cgi-bin.conf
&lt;/VirtualHost&gt;
</pre></div>


<p>Y tras modificarlo debe quedar así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
&lt;VirtualHost *:80&gt;
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request&#039;s Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/ahierro.es/public

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with &quot;a2disconf&quot;.
#Include conf-available/serve-cgi-bin.conf

&lt;Directory /var/www/ahierro.es/public&gt;
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
&lt;/Directory&gt;

&lt;/VirtualHost&gt;
</pre></div>


<p>Como podemos ver en la línea 1 hemos cambiado :80 por :8085, con lo que estamos indicando que a este virtualhost accederemos mediante este puerto. Personalmente suelo comenzar con el puerto 8080, en este ejemplo he especificado el 8085 porque ya tengo otros cinco host virtuales.</p>





<p>En la línea 12 lo único que hemos hecho es actualizar la referencia al directorio raíz para asegurarnos que apunta al lugar adecuado.</p>



<p>Y por último hemos añadido una nueva sección a partir de la línea 30 con unas directrices básicas entre las que hemos habilitado el módulo mod_rewrite, necesario para la re-escritura de urls.</p>



<h4 class="wp-block-heading">Paso 3: Abrimos el puerto adecuado en Apache</h4>



<p>Por defecto Apache solo atiende solicitudes por el puerto 80. Para conseguir que también atienda las que llegan por el puerto 8085, que es el que hemos indicado en nuestro fichero de configuración del virtual host, debemos editar el archivo <em>/etc/apache2/ports.conf</em>.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo vim /etc/apache2/ports.conf
</pre></div>


<p>El contenido del fichero es algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80
Listen 8085

&lt;IfModule ssl_module&gt;
Listen 443
&lt;/IfModule&gt;

&lt;IfModule mod_gnutls&gt;
Listen 443
&lt;/IfModule&gt;
</pre></div>


<p>Vemos que la&nbsp; línea 5 hace referencia al puerto 80, nosotros hemos añadido una línea más, la 6, indicándole que escuche también el puerto 8085.</p>



<h4 class="wp-block-heading">Paso 4: Habilitamos el nuevo virtualhost</h4>



<p>Si os habéis fijado hablamos de los directorios <em>sites-available</em> y <em>sites-enabled</em>, pero solo hemos trabajado con el primero. Para crear el enlace simbólico lo haremos con el comando a2ensite:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo a2ensite ahierro.es.conf
</pre></div>


<p>Y por si te lo estás preguntando, si, un ln o un cp servirían de igual manera. Y ahora que el enlace simbólico ya se encuentra en el directorio <em>sites-enabled</em> solo nos queda reiniciar apache:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo service apache2 restart
</pre></div>


<h4 class="wp-block-heading">Paso 5: Comprobamos que todo funcione correctamente</h4>



<p>Podemos comprobar que todo ha salido bien con dos sencillos pasos</p>



<ol class="wp-block-list"><li>Creamos un archivo <em>index.html</em> y lo guardamos en el directorio público del host virtual que acabamos de crear, en este caso <em>/var/www/ahierro.es/public</em>.</li><li>Accedemos a la ip del servidor seguida de dos puntos y el puerto: <em>http://192.168.1.10:8085/index.html.</em></li></ol>



<p>Si vemos el contenido del archivo index.html es que todo ha salido bien, en caso contrario deberemos buscar el problema en función del mensaje de error obtenido.</p>



<h3 class="wp-block-heading">Conclusión</h3>



<p>Una forma sencilla de organizar nuestros proyectos siempre que no sean demasiados.</p>



<p>Personalmente, en el virtual host por defecto (puerto 80),&nbsp; creo un sencillo fichero con enlaces a todos los hosts virtuales y otros accesos directos que me interesa tener a mano como pueden ser phpmyadmin o phpinfo. Esto suele ahorrarme unos minutos preciados minutos cada día.</p>



<p>Y como siempre me gustaría saber tú opinión,&nbsp; ¿utilizas los virtual host? ¿los identificas por puerto? ¿organizas tus proyectos de otra forma? Deja un comentario y aprendamos juntos.</p>



<h2 class="wp-block-heading">Créditos, referencias y artículos relacionados</h2>



<ul class="wp-block-list"><li><a href="https://blog.ahierro.es/archivos-y-permisos-de-usuario-en-apache-y-linux/">Archivos y permisos de usuario en Apache 2 y Linux</a></li><li><a href="https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/">Ejecutar Linux en Windows 10 con WSL</a></li><li><a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">Servidor Web en Raspberry PI y Ubuntu Mate</a></li><li><a href="https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/">Clonar una web en un servidor local</a></li></ul>La entrada <a href="https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/">Como configurar Virtual Hosts en Apache 2 y Ubuntu</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor Web en Raspberry PI y Ubuntu Mate</title>
		<link>https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/</link>
					<comments>https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 10 Dec 2018 06:15:41 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=148</guid>

					<description><![CDATA[<p>Un servidor web Apache 2 corriendo sobre Linux no requiere muchos recursos de hardware. Así que si queremos disponer de un servidor casero dónde poder trastear y realizar pruebas o desarrollar ese pequeño proyecto que siempre nos ronda en la cabeza, una Raspberry Pi es una buena opción. Esta entrada forma parte de la serie &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Servidor Web en Raspberry PI y Ubuntu Mate"</span></a></p>
La entrada <a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">Servidor Web en Raspberry PI y Ubuntu Mate</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Un servidor web Apache 2 corriendo sobre Linux no requiere muchos recursos de hardware. Así que si queremos disponer de un servidor casero dónde poder trastear y realizar pruebas o desarrollar ese pequeño proyecto que siempre nos ronda en la cabeza, una Raspberry Pi es una buena opción.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/12/servidor_web.jpg" alt="Servidor web" class="wp-image-251" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/servidor_web.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/servidor_web-300x168.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/servidor_web-267x150.jpg 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<span id="more-148"></span>



<p>Esta entrada forma parte de la serie <a href="https://www.ahierro.es/raspberry-pi-como-herramienta-de-apoyo-para-el-desarrollo-web/">Raspberry Pi como herramienta de apoyo al desarrollo web</a>, y está pensada para un servidor de uso personal. De cualquier manera, el contenido de esta guía es perfectamente aplicable a cualquier distribución de Linux basada en Ubuntu y a Raspbian.</p>





<p>Esta documento también puede utilizarse para la configuración de un servidor de una pequeña organización, en cuyo caso sería necesario tener en cuenta algunas consideraciones:</p>



<ol class="wp-block-list"><li>Una Rasperri Pi no es el hardware más adecuado. Debería instalarse sobre un hardware fiable y acordemente dimensionado a las necesidades del uso que se le dará.</li><li>Además del contenido de este artículo, deberían realizarse una serie de configuraciones extra enfocadas en la seguridad que no entran en el ámbito ni el alcance de este documento.</li><li>Este artículo esta pensado para la instalación y configuración de un servidor web en una red local, en caso de que el servidor sea accesible directamente desde internet, el punto anterior cobra mayor importancia, además de requerir algunos ajustes más.</li></ol>



<p>Una vez que todos tenemos claro el ámbito y el alcance, vamos al lío.</p>



<h3 class="wp-block-heading">Instalamos Apache 2</h3>



<p>Este paso será muy sencillo, actualizamos los repositorios e instalamos Apache 2:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-get update
sudo apt-get install apache2
</pre></div>


<p>Si todo ha ido bien ya podremos acceder al al servidor web desde cualquier pc conectado a la red local con tan solo introducir la ip en el navegador.</p>



<p>Para el resto de la entrada asumiremos que nuestra Raspberry está configurada con la IP estática 192.168.1.10.</p>



<p>Así que si introducimos en el navegador la dirección http://192.168.1.10&nbsp; veremos la página por defecto de Apache 2:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/12/apache2_default_page.jpg" alt="Apache 2 página por defecto" class="wp-image-256" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/apache2_default_page.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/apache2_default_page-300x168.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/apache2_default_page-267x150.jpg 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<p>Un aspecto muy importante en la configuración de Apache es asignar los permisos adecuados a la carpeta del servidor. Podemos pasar sin hacerlo pero más pronto que tarde nos encontraremos con problemas relacionados con permisos.</p>





<p>Comenzaremos asegurándonos de que /var/www/html pertenezca al grupo www-data y que tiene los permisos adecuados:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo chgrp www-data /var/www/html
sudo chmod 775 /var/www/html
sudo chmod g+s /var/www/html
</pre></div>


<p>Agregamos nuestro usuario al grupo www-data:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo usermod -a -G www-data usuario
</pre></div>


<p>Y por último nos aseguramos de ser los propietarios del directorio</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo chown usuario /var/www/html
</pre></div>


<p>Con esto hemos concluido la instalación de Apache.</p>



<h3 class="wp-block-heading">Instalamos PHP</h3>



<p>Instalamos PHP:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-get install php7.0
</pre></div>


<p>Es posible que en función de la distribución que utilicemos en lugar del paquete php7.0 encontremos otra versión. Podemos comprobarlo fácilmente con la siguiente orden:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-cache search php
</pre></div>


<p>Y si por cualquier motivo necesitamos una versión específica de php, deberemos incluir el repositorio ondrej/php como hacemos a continuación:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update
</pre></div>


<p>En este caso he incluido la opción -y porque al intentar agregar el repositorio me mostraba un warning relacionado con la codificación de caracteres de los repositorios.</p>



<p>Acto seguido instalar la versión de php que necesitemos, en mi caso voy a instalar la versión 7.3:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-get install php7.3
</pre></div>


<p>Tras reiniciar Apache ya habremos acabado:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo service apache2 restart
</pre></div>


<p>Para comprobar que php está correctamente instalado crearemos el archivo&nbsp; /var/www/html/phpinfo.php con el siguiente contenido:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: php; title: ; notranslate">
&lt;?php php phpinfo(); ?&gt;
</pre></div>


<p>Si todo es correcto al acceder a http://192.168.1.10/phpinfo.php veremos algo así:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/12/php_info_php73.jpg" alt="phpinfo php 7.3" class="wp-image-279" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/php_info_php73.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/php_info_php73-300x168.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/php_info_php73-267x150.jpg 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<h3 class="wp-block-heading">Instalamos y configuramos MariaDB</h3>



<p>Una vez que php está instalado, continuamos con la base de datos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-get install mariadb-server
</pre></div>


<p>Durante el proceso de instalación deberemos responder responder a algunas preguntas que sin complicación alguna.</p>



<p>El primer paso tras la instalación será configurar MariaDB para que podamos acceder remotamente, pues por defecto solo acepta conexiones desde el propio host:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
</pre></div>


<p>Esfe archivo puede cambiar en función de tu distribución y de la versión de MariaDB. En ocasiones puedes encontrarlo en /etc/mysql/my.cnf, en /etc/mysql/mysql.conf.d/mysqld.cnf, etc.</p>



<p>Localizamos la siguiente línea:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
bind-address  = 127.0.0.1
</pre></div>


<p>La sustituimos por:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
bind-address  = 0.0.0.0
</pre></div>


<p>Y reiniciamos la base de datos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo service mysql restart
</pre></div>


<p>Con esto hemos habilitado el acceso remoto a MariaDB. Ahora crearemos un nuevo usuario para evitar trabajar con root. Para ello accedemos a la consola de MariaDB:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo mysql -u root -p
</pre></div>


<p>Una vez en la consola de MariaDB creamos nuestro usuario:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
CREATE USER &#039;usuario&#039; IDENTIFIED BY &#039;contraseña&#039;;
</pre></div>


<p>Y concedemos acceso remoto y a todas las bases de datos al usuario que acabamos de crear:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
GRANT USAGE ON *.* TO &#039;usuario&#039;@&#039;%&#039; IDENTIFIED BY &#039;contraseña&#039;;
</pre></div>


<p>En este punto es buena idea comprobar que todo ha salido bien. Podemos hacerlo abriendo una conexión al servidor de bases desde nuestro equipo de trabajo con alguna herramienta como MySQL Workbench.</p>



<h3 class="wp-block-heading">Instalamos phpMyAdmin</h3>



<p>Esta es una herramienta que siempre me gusta instalar a pesar de que en la mayoría de situaciones trabajo con MySql Workbenck. Para instalar basta con:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-get install phpmyadmin
</pre></div>


<p>Y una vez instalado podremos acceder a ella mediante <em>http://192.168.1.10/phpmyadmin</em>.</p>





<h3 class="wp-block-heading">Conclusión</h3>



<p>Ya tenemos un servidor web completamente funcional corriendo sobre nuestra Rasperri PI, sencillo, económico y funcional. Ahora solo hay que usarlo.</p>



<p>¿Y tú?, ¿Crees que necesitamos aplicar alguna otra configuración? ¿Haces algo distinto? ¿Echas en falta algún paso? o simplemente ¿te ha servido de ayuda? Comparte tu experiencia y aprendamos todos.</p>La entrada <a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">Servidor Web en Raspberry PI y Ubuntu Mate</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
