cómo puedo configurar parcialmente el sitio con ssl

15
¿Cómo puedo configurar parcialmente el sitio con SSL? [Parte I] Visión General Las instalaciones estandar de Joomla!, anteriores a la versión 1.0.13, no soportan del todo bien las conexiones SSL por carpetas individuales, como por ejemplo pueda pasar con la carpeta administrator. Es decir, o tenemos todo el sitio funcionando con SSL, o, tenemos que toquetear por aquí y por allá partes del código y recurrir a otros trucos, para lograr sitios parcialmente configurados con conexión segura (navegación https) A partir de la versión 1.0.13, el asunto ha mejorado bastante y sin tener que modificar archivos de Joomla!, se pueden lograr resultados más que aceptables. Con la versión de Joomla! 1.5, de la cual no disponemos aún de versión estable, la integración total o parcial con HTTPS, aún es mucho más pausible. Si bien ha de haber muchos modos de abarcar y cubrir este tema, partiremos de la permisa que uno tiene un mismo dominio configurado tanto para funcionar con HTTP como con HTTPS (atendiendo a un mismo espacio web por distintos puertos, como puedan ser el 80 y el 443 respectivamente), y, lo que desde aquí va a aplicarse sobre la carpeta administrator, luego, tras adaptarlo, ha de poder aplicarse sobre otras carpetas en particular. Una vez tenemos acceso https por toda la web, vamos a poder automatizar (o no, si lo forzamos), el cambio de http a https o viceversa según nos interese. Así mismo, vamos a revisar como precisar, redirigir y automatizar el acceso https por el sitio, por ejemplo, para habilitar automáticamente https para registrarse o enviar un correo, y, habilitar automáticamente http para leer artículos, FAQs, etc. A partir de estas bases, sobre una configuración simple pero efectiva, se podrán inferir otras combinaciones.

Upload: jaime-arvizu

Post on 01-Dec-2015

35 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Cómo puedo configurar parcialmente el sitio con SSL

¿Cómo puedo configurar parcialmente el sitio con SSL? [Parte I]

Visión GeneralLas instalaciones estandar de Joomla!, anteriores a la versión 1.0.13, no soportan del todo bien las conexiones SSL por carpetas individuales, como por ejemplo pueda pasar con la carpeta administrator. Es decir, o tenemos todo el sitio funcionando con SSL, o, tenemos que toquetear por aquí y por allá partes del código y recurrir a otros trucos, para lograr sitios parcialmente configurados con conexión segura (navegación https)

A partir de la versión 1.0.13, el asunto ha mejorado bastante y sin tener que modificar archivos de Joomla!, se pueden lograr resultados más que aceptables. Con la versión de Joomla! 1.5, de la cual no disponemos aún de versión estable, la integración total o parcial con HTTPS, aún es mucho más pausible.

Si bien ha de haber muchos modos de abarcar y cubrir este tema, partiremos de la permisa que uno tiene un mismo dominio configurado tanto para funcionar con HTTP como con HTTPS (atendiendo a un mismo espacio web por distintos puertos, como puedan ser el 80 y el 443 respectivamente), y, lo que desde aquí va a aplicarse sobre la carpeta administrator, luego, tras adaptarlo, ha de poder aplicarse sobre otras carpetas en particular.

Una vez tenemos acceso https por toda la web, vamos a poder automatizar (o no, si lo forzamos), el cambio de http a https o viceversa según nos interese. Así mismo, vamos a revisar como precisar, redirigir y automatizar el acceso https por el sitio, por ejemplo, para habilitar automáticamente https para registrarse o enviar un correo, y, habilitar automáticamente http para leer artículos, FAQs, etc. A partir de estas bases, sobre una configuración simple pero efectiva, se podrán inferir otras combinaciones.

Requisitos Joomla! 1.0.13 o posterior Tener tambien habilitado todo el espacio web dedicado a HTTP de Joomla!, para

poder funcionar con SSL y disponer de un certificado. Poder usar archivos .htaccess junto con el mod_rewrite. (también podría llevarse

a cabo desde el archivo de configuración principal/virtual de Apache)

Restricciones Las conexiones seguras, no protegen contra las intrusiones no deseadas, en todo

caso y tras aceptarse el certificado, "encriptarían un ataque". Lo que sí que hacen es garantizar con mayor seguridad que, la información, viajará del cliente al servidor o viveversa de manera cifrada, con lo cual, obtener nuestra información por "interceptación del paquete", se puede tornar muy complicado.

Observaciones Las pruebas, se han realizado sobre Apache/2.0.55 (apache2handler), PHP/5.1.2,

mod_ssl/2.0.55, OpenSSL/0.9.8.a. Sobre todo, cuando se trate de Apache 1, las instrucciones a introducir y modo de configurarlo todo, podrían variar (en esos

Page 2: Cómo puedo configurar parcialmente el sitio con SSL

casos, se debería averigurar cuales son las intrucciones a usar para las distintas ocasiones que pudieran surgir, tanto para otras condiciones de Apache1 como de Apache 2 y su compilación)

Si ya había un archivo .htaccess en alguna ruta donde quieras implementar SSL, no olvides el hacerte una copia de seguridad de ese archivo antes de editarlo (por seguridad, no dejes copias de archivos dentro del espacio web. Mueve las copias de los archivos fuera de tu espacio web y proteje este tipo de archivos contra el acceso)

SugerenciasDentro de la carpeta administrator, creamos o editamos un archivo .htaccess y colocamos las siguientes líneas de código en su interior:

Cita:

# Activamos el modulo rewrite. Si esto ya esta activado en un mismo archivo .htaccess, debes dejar solo una linea (la ubicada mas arriba en el archivo) y borrar la otra, o te pude provocar errores internos del servidor por intentar activar lo mismo por dos vecesRewriteEngine on# Si no es un acceso por el puerto 443..RewriteCond %{SERVER_PORT} !443$# ...automaticamente, cambiamos de http a https esa misma URL ejecutando la linea de mas abajo. Si ya era una URL https, no se ejecuta la linea de mas abajo.RewriteRule ^(.*)$ https:// www.tudominio.com /administrator/$1 [L,R]

Si el puerto para atender SSL es otro distinto al 443, se deberá sustituir donde corresponda, y el nombre de dominio "www.tudominio.com" también.

Dentro del directorio raíz (donde el archivo configuration.php de Joomla!), procedemos también a crear o editar un archivo .htaccess, para introducirle estas líneas:

Cita:

# Activamos el modulo rewrite. Si esto ya esta activado en un mismo archivo .htaccess, debes dejar solo una linea (la ubicada mas arriba en el archivo) y borrar la otra, o te pude provocar errores internos del servidor por intentar activar lo mismo por dos vecesRewriteEngine on# Si no es un acceso por el puerto 80..RewriteCond %{SERVER_PORT} !80$# ...automaticamente, cambiamos de https a http esa misma URL ejecutando la linea de mas abajo. Si ya era una URL http, no se ejecuta la linea de mas abajo.RewriteRule ^(.*)$ http:// www.tudominio.com /$1 [L,R]

Si el puerto para atender HTTP es otro distinto al 80, se deberá sustituir donde corresponda, y el nombre de dominio "www.tudominio.com" también.

De este modo, cada vez que entremos en la carpeta administrator sin SSL, automáticamente, se reescribira la URL con "https" (aunque lo modifiquemos manualmente desde el navegador). Y lo mismo sucederá cuando salgamos de la

Page 3: Cómo puedo configurar parcialmente el sitio con SSL

administración de joomla, o bien al pulsar "logout" que se nos reescribirá la URL a la página de inicio con "http", o bien cuando, manualmente, modifiquemos la URL desde la administración a una ubicación que esté fuera de la misma. Es decir, como tanto podemos acceder a la web por via HTTP como HTTPS, porque no estamos "forzando SSL" propiamente dicho, lo que hacemos desde cada uno de estos archivos .htaccess es controlar que el tipo de conexión se establezca de un modo o del otro, en unas u otras partes del sitio.

Bueno, llegados hasta aquí y como se ha comentado anteriormente, la conexión SSL no frusta los intentos de intrusión a la web. En lugar de automatizar el acceso a la carpeta administrator, tal vez, convendría más "forzar SSL sin redireccionamiento automático" para que, aquellos que intenten acceder a la web con conexión HTTP, reciban siempre un "forbidden" (que no redirección automática con conexión SSL)

Para "forzar SSL", es decir, que solo se pueda acceder a ese espacio web con "https", bastará con añadir a las líneas que ya teníamos en el ".htaccess de la administración" un SSLRequireSSL, tras lo cual, el archivo quedaría de este modo:Cita:

SSLRequireSSLRewriteEngine onRewriteCond %{SERVER_PORT} !443$RewriteRule ^(.*)$ https:// www.tudominio.com /administrator/$1 [L,R]

Vale, todo lo anterior, está muy bien.. tenemos acceso http a todo el sitio y https a toda la administración (incluso podemos "automatizar" los cambios de http a https, o forzarlo); pero:

¿Y si queremos, en el sitio, acceder a según que partes por medio de http y a según que otras con https?"No problemo", así como lo tenemos (sin forzar el sitio a SSL y atendiendo a la web por puertos distintos e independientes), solo será cuestión de precisar y redirigir a las cosas que quedarán con http o con https. Lo "no precisado y no redirigido" sería accesible de ambos modos, porque no tenemos el sitio "forzado"(el que solo la administración esté forzada a SSL, no interfiere con el sitio, el cual, queda "mixto por defecto"). Para ello, nuestros archivos .htaccess de la administración y del sitio, van a necesitar incrementarse o modificarse en algunas líneas.

En el .htaccess de la administración (a ubicar dentro de la carpeta administrator) agregamos a lo que ya teníamos lo destacado en verde:

Cita:

# Opcional. Si no queremos forzar la conexin SSL en la administracion, la linea de mas abajo, se tiene que comentar o borrar.SSLRequireSSL

Page 4: Cómo puedo configurar parcialmente el sitio con SSL

# Activamos el modulo rewrite. Si esto ya esta activado en un mismo archivo .htaccess, debes dejar solo una linea (la ubicada mas arriba en el archivo) y borrar la otra, o te pude provocar errores internos del servidor por intentar activar lo mismo por dos vecesRewriteEngine on# Si no es un acceso por el puerto 443..RewriteCond %{SERVER_PORT} !443$# ...automaticamente, cambiamos de http a https esa misma URL ejecutando la linea de mas abajo. Si ya era una URL https, no se ejecuta la linea de mas abajo.RewriteRule ^(.*)$ https:// www.tudominio.com /administrator/$1 [L,R]

# Si no es un acceso por el puerto 80..RewriteCond %{SERVER_PORT} !80$# ...cuando la URL contenga a la cadena option=logout..RewriteCond %{QUERY_STRING} (option=logout)+# ...automaticamente, cambiamos de https a http y salimos de la administracion. Si la URL, no contiene a la cadena option=logout, o, el puerto por el que atendiamos ya era el 80 la linea de abajo, no se ejecuta. RewriteRule ^(.*)$ http:// www.tusitio.com /$1 [L,R]

(¡¡acuérdate de adaptar a tus circunstancias lo destacado en rojo!!)

En el .htaccess del sitio (a ubicar dentro de la carpeta raíz). En este caso y para liarla lo menos posible, vamos a quitar lo que anteriormente pusimos y lo reescribimos todo de nuevo.

Quitamos en el .htaccess del sitio

Cita:

# Activamos el modulo rewrite. Si esto ya esta activado en un mismo archivo .htaccess, debes dejar solo una linea (la ubicada mas arriba en el archivo) y borrar la otra, o te pude provocar errores internos del servidor por intentar activar lo mismo por dos vecesRewriteEngine on# Si no es un acceso por el puerto 80..RewriteCond %{SERVER_PORT} !80$# ...automaticamente, cambiamos de https a http esa misma URL ejecutando la linea de mas abajo. Si ya era una URL http, no se ejecuta la linea de mas abajo.RewriteRule ^(.*)$ http://www.tudominio.com/$1 [L,R]

Agregamos en el .htaccess del sitioCita:

#Bloque para redirigir URLs del sitio a HTTPS# Activamos el modulo rewrite. Si esto ya esta activado en un mismo archivo .htaccess, debes dejar solo una linea (la ubicada mas arriba en el archivo) y borrar la otra, o te pude provocar errores internos del servidor por intentar activar lo mismo por dos vecesRewriteEngine on

Page 5: Cómo puedo configurar parcialmente el sitio con SSL

# Si no es un acceso por el puerto 443RewriteCond %{SERVER_PORT} !443$...cuando la URL contenga a la cadena option=com_contact, o, option=com_user, o, option=com_login, o, option=com_registration..RewriteCond %{QUERY_STRING} (option=com_contact)+ [OR]RewriteCond %{QUERY_STRING} (option=com_user)+ [OR]RewriteCond %{QUERY_STRING} (option=com_login)+ [OR]RewriteCond %{QUERY_STRING} (option=com_registration)+...automaticamente, cambiamos de http a https a esa misma URL Si la URL, no contiene a ninguna de las cadenas de mas arriba, o, el puerto por el que atendiamos ya era el 443, la linea de abajo, no se ejecuta. RewriteRule ^(.*)$ https:// www.tudominio.com /$1 [L,R]

#Bloque para redirigir URLs del sitio a HTTP# Si no es un acceso por el puerto 80RewriteCond %{SERVER_PORT} !80$...cuando la URL contenga a la cadena option=com_content, o, option=com_weblink, o, option=com_wrapper, o, option=com_newsfeeds, o, option=com_search, o, option=com_frontpage..RewriteCond %{QUERY_STRING} (option=com_content)+ [OR]RewriteCond %{QUERY_STRING} (option=com_weblink)+ [OR]RewriteCond %{QUERY_STRING} (option=com_wrapper)+ [OR]RewriteCond %{QUERY_STRING} (option=com_newsfeeds)+ [OR]RewriteCond %{QUERY_STRING} (option=com_search)+ [OR]RewriteCond %{QUERY_STRING} (option=com_frontpage)+ ...automaticamente, cambiamos de https a http a esa misma URL Si la URL, no contiene a ninguna de las cadenas de mas arriba, o, el puerto por el que atendiamos ya era el 80, la linea de abajo, no se ejecuta. RewriteRule ^(.*)$ http:// www.tudominio.com /$1 [L,R]

¿Puedo redirigir más URLs de http a https o viceversa?Sí, se puede. Lo que no se deben usar son "términos comunes", porque se generarían incoherencias que desenvocarían en "error interno del servidor"Por ejemplo, la cadena "/index.php", es un término común que aparece tanto en las URLs que te redirigen al "com_frontpage" como "com_login".Por lo tanto, ubicar en uno u otro bloque de redirección de URLs a http o a https un:

Cita:

RewriteCond %{QUERY_STRING} (/index.php)+ [OR]

Provocaría un "internal server error", por no poder atender a esa solicitud (la tendria que reescribir al mismo tiempo como "http" y como "https", lo cual, no es posible)

Ahora bien, si se dan otros términos no comunes a las URL "http<->https", se pueden agregar, en su correspondiente bloque, tantas como vayamos a necesitar.

Si, por ejemplo, tenemos el componente de terceros llamado por medio de la URL como

Page 6: Cómo puedo configurar parcialmente el sitio con SSL

"com_micomponente", se puede agregar al bloque para redirigir URLs correspondiente (siguiendo el patrón, al inicio de las sentencias "QUERY_STRING") un:

Cita:

RewriteCond %{QUERY_STRING} (option=com_micomponent)+ [OR]

Lograríamos un mismo objetivo.

También puedes mover "QUERY_STRINGs" de un bloque al otro, tal vez, no te interese que, para enviar un correo, se tenga que establecer conexión SSL.. bien, mueve la línea del "com_contact" al otro bloque y listos.

Las opciones que ofrece SSL y la reescritura de URLs son bastante más amplias. El tema se ha tratado de un modo básico.

¿Lo vemos funcionado con un video?

ADICIONALMENTE Puedes proteger tu carpeta administrator( o cualquier otra) por contraseña. Siendo que el control de acceso + cifrado SSL nos ofrecería, en la administración, doble protección por contraseña + SSL.. se aplicaría un buen incremento a la seguridad de tu sitio. Un ejemplo de protección por contraseña + SSL, a complementar al .htaccess que tenemos en la administración, sería:

Cita:

SSLRequireSSLAuthUserFile /home/usuario/privado/.htpasswdAuthGroupFile /dev/nullAuthType BasicAuthName "Privado"Require valid-userRewriteEngine onRewriteCond %{SERVER_PORT} !443$RewriteRule ^(.*)$ https:// www.tudominio.com /administrator/$1 [L,R]

RewriteCond %{SERVER_PORT} !80$RewriteCond %{QUERY_STRING} (option=logout)+RewriteRule ^(.*)$ http:// www.tusitio.com /$1 [L,R]

¿Cómo puedo proteger directorios por contraseña usando .htaccess?

Visión GeneralLa seguridad del servidor, es un tema bastante amplio. Si bien esta información surge a

Page 7: Cómo puedo configurar parcialmente el sitio con SSL

modo de referencia para intentar cubrir con una parte, cada cual, debe buscar la combinación de posibilidades que mejor se adapte a sus necesidades.

Si no estais familiarizados con este tipo de configuraciones, es muy recomendasble leer esta información y mirar el tema de encriptación (o cualquiera que os pueda ayudar a salir de una duda)

Téngase en cuenta que, la "Autentificación Básica" solo sirve para proteger contra el acceso; pero, al no cifrarse los datos, una vez se ha accedido, éstos, no quedan protegidos debido a que circulan por internet sin cifrar. Aún así, a la autentificación básica, se la puede considerar como a un gran bloqueador de intentos de intrusión no deseados por parte de ataques automatizados que no contemplan el toparse de por medio con este tipo de protección.

Lo suyo, es disponer de autentificación y control de acceso + encriptación de la información que navega por internet, en cuyo caso, se le podrá dar un sentido más riguroso al concepto de seguridad por esta via.

Como podemos encontrar a Apache configurado de varios modos (o configurarlo nosotros si somos propietarios), vamos a revisar dos métodos:

Método Basic: Cuando introducimos un nombre de usuario y contraseña en la página de acceso, esa información viaja hacia el servidor sin cifrar. En ese trayecto, la información que viaja sin cifrar puede ser capturada por terceros con intenciones maliciosas.

Método Digest: El usuario y la contraseña se envian cifrados desde el cliente hasta el servidor.

Cuando protegemos una carpeta por contraseña, salvo que se indique lo contrario, todas sus subcarpetas quedan también protegidas.

Requisitos Debemos contar con los siguientes módulos cargados en el servidor: mod_auth.c

para la autentificación básica, mod_auth_digest.c para la autentificación encriptada de usuarios y contraseñas, mod_ssl.c para poder activar SSL (navegación con https://)

Tienes que poder usar archivos .htaccess. Ante la duda, contacta o revisa las FAQs de tu hospedaje.

Necesitarás, si quiers acceder con conexión segura a las carpetas restringidas, de un certificado o estar habilitado por quien te sirve el hospedaje para poder establecer conexiones cifradas o navegación "https"

Restricciones Cuando se trate de utilizar el método Digest se debe tener en cuenta que, algunas

versiones antiguas de los navegadores, no lo van a soportar. Obviamente, cuando por nuestras circunstancias de hospedaje o de interacción

con las configuraciones, nos veamos privados de habilitar este método de

Page 8: Cómo puedo configurar parcialmente el sitio con SSL

protección, deberemos quitarnos de la cabeza el intentarlo, o, buscar un servicio de hospedaje que nos permita llevarlo a buen término.

ObservacionesSiempre será mejor poder configurar este tipo de cosas directamente desde el archivo configuración principal de Apache y por medio de la directiva Directory que, a través de archivos .htaccess, porque se puede obtener un mejor rendimiento web y una mayor protección contra el acceso a su configuración.

Directivas a combinarDominio y tipo de autentificaciónAuthName: Sirve para indicar el nombre del dominio de autentificación y también se corresponde con el texto que se muestra cuando se nos solicita introducir un nombre de usuario y contraseña válidos. Por ejemplo, AuthName "carpeta_restringida", o, AuthName "privado".

Este nombre asignado(carpeta_restringida, privado, etc), cuando creamos el archivo de usuarios/contraseñas para funcionar con el método Digest, deberá coincidir exactamente con el del parámetro requerido a la hora de añadir usuarios con la aplicación htdigest o htpasswd. Un ejemplo de uso para su creación:

htdigest -c /ruta_al_archivo/nombre_del_archivo_de_claves valor_de_AuthName nombre_de_usuario

Cuando se trate del método Basic, este nombre asignado, podrá ser cualquiera que os parezca orientativo.. porque al añadir usuarios, con la aplicación htpasswd y el método Basic, no es necesario introducir un parámetro coincidente con el valor de "AuthName". Por ejemplo:

htpasswd -c /ruta_al_archivo/nombre_del_archivo_de_claves nombre_de_usuario

(En ambos casos, la opcion "-c" solo se debe usar la primera vez, luego, para añadir mas usuarios, se tiene que omitir o se sobreescribirían a los existentes)

AuthType: Sirve para indicar el tipo de autentificación (Basic, Digest). Por ejemplo, AuthType Basic, o, AuthType Digest

Control de individuosAuthUserFile: Sirve para indicar donde se encuentra el archivo con los usuarios y las claves que tienen privilegio de acceso (/ruta/hacia/el/archivo/el_fichero).Require: Sirve para indicar que usuarios tienen acceso y hay varias posibilidades de combinarlo:

valid-user cualquier usuario que esté en el archivo de claves. user De los usuarios que pueda haber en el archivo de claves, solo pueden

acceder los usuarios que, separados por espacios, esten declarados explícitamente desde la directiva user, como por ejemplo, Require user pepepotamo espinete

Page 9: Cómo puedo configurar parcialmente el sitio con SSL

joomlafiera (que permitiría solo acceder a estos tres usuarios, por muchos que haya de autorizados en el archivo de claves.)

Control de gruposSi queremos trabajar con grupos, necesitamos de la directiva AuthGroupFile.

AuthGroupFile sirve para indicar donde se encuentra el archivo con la definición de los grupos.(/ruta/hacia/el/archivo/el_fichero)Ahora, la directiva Require, podría usarse también para autorizar por grupos; es decir, si los usuarios pepepotamo, espinete y joomlafiera pertenecieran al grupo administradores,

Require group administradores

, autorizaría el acceso a todos los usuarios pertenecientes al grupo administradores.

Si, aparte del grupo "administradores", tuviéramos al grupo "autores" con otros tantos usuarios definidos en su interior..

Require group administradores autores

(distintos grupos separados por espacios), tras validarse correctamente, se permitiría el acceso a todos los usuarios dentro del grupo "administradores" y a todos los usuarios dentro del grupo "autores".Si no queremos trabajar con grupos, podemos indicarlo explícitamente desde el archivo .htaccess con la siguiente línea:

Código:

AuthGroupFile /dev/null

SugerenciasDecide donde poner el archivo .htaccess dentro de tu espacio web. Recuerda que la protección actuará recursivamente. Si ya hay un archivo .htaccess en la ubicación elegida, recuerda el hacerte una copia de seguridad de ese archivo antes de modificarlo.

Tras crearlos, decide donde vas a poner tus archivos .htpasswd y/o .htgroups. Recuerda, esos archivos NUNCA deben estar ubicados dentro del espacio web. Debes ubicarlos por encima de tu espacio web. En un lugar al que tengas acceso. Por ejemplo, si tu espacio web, empieza en la carpeta "public_html", en ruta:

Código:

/home/usuario/public_html/

Ubica esos archivos, por encima de "public_html" (si fuera necesario, creando un nuevo directorio llamado "privado" o como prefieras llamarlo) en la ruta:

Page 10: Cómo puedo configurar parcialmente el sitio con SSL

/home/usuario/privado/.htpasswd

Si quieres autorizar grupos:

/home/usuario/privado/.htgroups

Agrega el siguiente código al archivo .htaccess file. Recuerda, debes ajustar las rutas u otros datos del ejemplo destacados en rojo a las que se correspondan con las de tu servidor/configuración.

Cita:

AuthUserFile /home/usuario/privado/.htpasswdAuthGroupFile /dev/nullAuthType BasicAuthName "Privado"require valid-user

Con esta combinación:Usamos la autentificación básica, permitiendo el acceso a cualquier usuario agregado dentro del archivo de claves ".htpasswd" y no usamos los grupos.

Si queremos forzar la conexión SSL, en el mismo archivo .htaccess, se pueden agregar estas líneas:

Cita:

RewriteEngine onRewriteCond %{SERVER_PORT} !443$RewriteRule ^(.*)$ https:// www.ejemplo.com /$1 [L,R]

(el puerto 443 es el que se usa normalmente para el servicio SSL, si usas el 444, u otro distinto, deberás sustituirlo donde se remarca en rojo. La URL de tu dominio, también)

Es muy importante que borres cualquier archivo de respaldo del archivo .htaccess de dentro del espacio público.