Seguridad y .htaccess en WordPress

12 ago 2010, 17:28:13
Vistas: 2.96K
Votos: 8

Hace aproximadamente un mes comencé un blog de WordPress en un servidor alojado relacionado con un hobby. Así que actualmente soy nuevo en esto.

Como estoy preocupado por la seguridad, una de las cosas que hice fue instalar el plugin WP Security Scan. Según los resultados del plugin, mi sitio está bien excepto por esto que aparece como bandera roja:

El archivo .htaccess no existe en wp-admin/ (verifiqué mediante ssh y efectivamente no existe)

Bien, entonces investigué considerablemente sobre el tema y encontré demasiada información sobre .htaccess. He revisado "Hardening WordPress" en el sitio WordPress.org, etc. Y también encontré este artículo: http://digwp.com/2010/07/wordpress-security-lockdown/

De cualquier forma, básicamente me he confundido con la abundante información disponible.

¿Qué debería contener el archivo .htaccess en wp-admin? He leído que este archivo .htaccess debería proteger con contraseña el directorio wp-admin y también he leído que esto puede causar problemas de funcionalidad.

Agradecería mucho ayuda con esto.

Gracias. -wdypdx22

Actualización Bien, ahora no estoy logueado en mi blog y estoy usando una computadora diferente a la habitual. Ingreso la url www.misitio.com/wordpress/wp-admin/ y hay un redireccionamiento al login. Si eso es lo que sucede, ¿entonces siquiera se necesita un archivo htaccess en el directorio wp-admin?

2
Comentarios

¿Has intentado preguntarle al desarrollador de WP Security Scan?

Doug Doug
12 ago 2010 18:42:57

@Doug - Sí, el desarrollador tiene un foro donde al menos otras 2 personas han hecho exactamente la misma pregunta y no hay respuesta. Además, publiqué en wordpress.org y tampoco hubo respuesta. Entonces, ¿quizás esto ni siquiera importa?

wdypdx22 wdypdx22
12 ago 2010 19:52:28
Todas las respuestas a la pregunta 4
5

ACTUALIZACIÓN: Cuando publiqué mi respuesta por primera vez, no capté el meollo de la pregunta; mi respuesta era sobre seguridad general de .htaccess y ahora se encuentra debajo de la doble línea (mira abajo si te interesa). Lamentablemente no tengo experiencia específica con la protección de /wp-admin/ usando .htaccess, así que simplemente enumeraré los dos recursos que consultaré cuando lo necesite:

El primero recomienda lo siguiente (y aquí hay alguna discusión al respecto).

<Files ~ "\.(php)$">
AuthUserFile /etc/httpd/htpasswd
AuthType Basic
AuthName "restricted"
Order Deny,Allow
Deny from all
Require valid-user
Satisfy any
</Files>

El segundo tiene mucha información, especialmente en los comentarios, pero admito que proporcionarte una lista para leer no es la respuesta que buscabas.

Lamento no haber podido ser más útil en este caso.

========================================

Normalmente WordPress solo tiene lo siguiente, que maneja el procesamiento de enlaces permanentes y no está relacionado con la seguridad:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Recientemente encontré el plugin WP htacess Control que gestiona mucho del .htaccess por ti y me gusta bastante. Después de ajustar sus configuraciones, añadió las siguientes opciones:

# WPhtC: Desactivar ServerSignature en páginas de error generadas
ServerSignature Off

# WPhtC: Desactivar navegación de directorios
Options All -Indexes

# WPhtC: Proteger WP-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>

# WPhtC: Proteger archivo .htaccess
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
</files>

También añadió estas opciones que son sobre rendimiento en lugar de seguridad:

# WPhtC: Configurar mod_gzip
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

# WPhtC: Configurar mod_deflate
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent env=!dont-vary
</IfModule>

Además de este, hay algunos plugins que no he probado pero que están enfocados en seguridad y que interactúan con .htaccess - podrías probarlos cada uno solo para ver qué hacen con el archivo .htaccess:

Además, si quieres conocer el que (en mi opinión) es el recurso experto número 1 sobre seguridad de Apache relacionada con WordPress, puedes encontrarlo en AskApache.com; ¡el tipo es hardcore! Su blog no resolverá tu problema de "demasiada información" pero al menos puedes verlo como un recurso autoritativo.

Aquí hay algunos ejemplos (aunque no todos están directamente relacionados con WordPress, todos son aplicables):

De cualquier manera, espero que esto ayude.

12 ago 2010 18:27:52
Comentarios

Excelente información sobre seguridad en general, pero no responde acerca de la carpeta /wp-admin/

Ryan Gibbons Ryan Gibbons
12 ago 2010 18:36:49

Aunque toda esta información puede ser útil, ninguna tiene relación con la pregunta. Todo esto se refiere al .htaccess en el directorio raíz. La pregunta original era sobre el .htaccess en el subdirectorio wp-admin.

Doug Doug
12 ago 2010 18:45:07

@Insanity5902 @Doug: Mi error. Simplemente no lo vi cuando lo estaba leyendo.

MikeSchinkel MikeSchinkel
12 ago 2010 18:59:31

Acepté tu respuesta básicamente porque, en resumen, mi objetivo principal es la seguridad general. Mi blog es muy nuevo, pero mi tráfico está creciendo. Básicamente, solo quiero tener medidas de seguridad implementadas por si acaso y cuando realmente empiece a recibir mucho tráfico. -Gracias

wdypdx22 wdypdx22
12 ago 2010 20:28:03

@wdypdx - Muchas gracias. Me sentí realmente avergonzado cuando me di cuenta de que había pasado por alto tu pregunta principal en negrita. Me alegro de que haya tenido un resultado positivo.

MikeSchinkel MikeSchinkel
12 ago 2010 20:29:52
0

La idea detrás de esto es que si tienes archivos residuales de actualizaciones anteriores o por ataques de día cero, tu sistema podría ser hackeado. Además, asegurar el wp-admin mediante otro método ayudará contra ataques de fuerza bruta.

Una idea) Si solo eres tú quien edita el sitio, puedes limitar el acceso a la carpeta por IP haciendo algo como:

<Files *>
Order deny,allow
Deny from All
Allow from 1.2.3.4
</Files>

Para hacerlo un poco más tolerable para sistemas con IP dinámica; deberías poder permitir desde un subbloque, así que si tu grupo de IP siempre es de 1.2.3.128 - 1.2.3.255, entonces podrías hacer algo como 1.2.3.128/25

Otra idea) Requerir HTTPS, denegar el permiso si intentan acceder mediante HTTP. Pero no redirigirlos al HTTPS. Puedes usar un certificado autofirmado o uno de CA Cert para evitarte comprar uno.

12 ago 2010 18:32:56
3

Siempre incluyo un archivo .htaccess en wp-admin, incluso si nunca pongo nada en él, ya que anula el archivo del directorio raíz. Algunas personas usan el archivo .htaccess de wp-admin para ocultar todo el directorio de todas las IP excepto una, otras lo usan para proteger con contraseña el directorio.

Sin embargo, proteger la sección de administración con contraseña usando .htaccess deshabilitará las comunicaciones ajax, ya que interactúan con wp-admin/admin-ajax.php.

En general, no veo mucha razón para agregar algo al archivo .htaccess de administración a menos que seas extremadamente paranoico. Los ataques generalmente apuntan a wp-content de todos modos.

12 ago 2010 18:21:09
Comentarios

Un archivo .htaccess en un subdirectorio puede anular las directivas del directorio raíz, pero un .htaccess en blanco no anula nada.

Doug Doug
12 ago 2010 18:48:10

Entonces me han informado mal. Hmmm...

John P Bloch John P Bloch
12 ago 2010 18:50:04

Lo que necesitas hacer es revertir lo que hay en la raíz, si es que hay algo. Sin embargo, la respuesta de Insanity es mejor que la marcada como la mejor, aunque sería ideal si incluyera la información de Insanity.

Arlen Beiler Arlen Beiler
13 ago 2010 15:25:42
0

También utilizo la biblioteca sseqlib para mayor seguridad y diferentes hacks en el .htaccess; consulta los enlaces

13 ago 2010 14:14:37