Blog de Ubuntu en Español Blog [no oficial] de Ubuntu en Español

1Sep/090

10 tips para blindar a wordpress

wordpress Como ya habia platicado al inicio de este nuevo blog, por culpa de malas practicas de seguridad en mi sitio, el wordpress que tenia instalado sufrió varios ataques.. que como resultado de los mismos, fue la eliminación casi completa de toda la información contenida en el :(
Ahora bien les dejo 10 tips muy importantes a tomar en cuenta a la hora de administrar un sitio basado en nuestro bondadoso pero vulnerable wordpress. Nota aclaratoria: este post tiene la intención de dar algunos tips de seguridad esencial y basica, mas no cerrar bugs o problemas de código que wordpress (cms) tiene en su en su estructura original.

Aclarando esto: vamos a lo que nos interesa.

1 .- Cuidado con los roles dentro del wordpress:
uno de los mayores errores a veces es el manejo de varios usuarios que son “admin” en el CMS, y a veces al ser creado en forma “test” los hacemos con passwords débiles, derivado a su carácter temporal, pero como es de esperarse a veces se nos olvida borrarlos.

2 .- Renombrar el user admin, una de las cosas que wordpress no permite es cambiar el usuario “admin” (equivalente de root en linux) a otro nombre menos genérico ejem: “root”. Con este script lo podremos hacer.
Recuerden siempre antes de cualquier cambio en la DB hacer una copia de seguridad

$ mysql -u USERDB -p
Password: CLAVE
mysql> use DB_BLOG;
mysql> update wp_users set user_login='root' where user_login='admin';
mysql> exit;

3.- No permitir que los usuarios en la web puedan navegar por nuestras carpetas del blog, lease wp-content/plugins, wp-content/themes, wp-content/uploads, wp-admin …, muchos de los problemas ataque de exploids, bugs y demas bichos, son porque permitimos que nuestros “visitantes” sepan que plugins estamos usando y que versión de ellos tenemos instalados, como saben no todo es totalmente seguro y a diario surgen parches para todo, y wordpress no es la excepción así que entre mas oculto tengamos que plugs y que versiones usamos sera mucho mejor, además que nos sirve para que no nos copien el theme :D

he aqui el codigo que hay que agregar al .htaccess que se encuentra el root del website, para evitar todos estos problemas:

Options All -Indexes

4 .- Permisos en las carpetas y/o archivos (si esta hosteado en sistemas linux)
muchas veces hacemos nuestra instalación de wordpress tan vanilla (flat, OOB) que nos saltamos la verificación de permisos, y en nuestro afan de tener el sitio “up and running” tan pronto nos sea posible, o en el calor de la emoción de nuestro nuevo theme nos olvidamos de este paso tan importante.

Este es un posible esquema de seguridad según el árbol de archivos/carpetas de wordpress

/ — La raiz del directorio Wordpress: Todos los archivos ubicados aqui deben ser legibles y escribiles únicamente por el usuario master de la cuenta de hosting a Excepcion de .htaccess si se desea que Wordpress genere reglas de rewrite por su propia cuenta
/wp-admin/ — El area de administración de WordPress: aqui todos los archivos deben de ser escribiles únicamente por la usuario master.
/wp-includes/ — aqui se guarda el grueso de código que mueve a Wordpress: nuevamente todos los archivos únicamente deben de ser escribiles por el usuario master.
/wp-images/ — Archivos de imágenes usadas por WordPress: escribibles por el usuario master, aunque legible por casi todos
/wp-content/ — directorio de contenido para los usuarios y el motor de wordpress: Diseñado por los Desarrolladores para ser accesado por completo por todos por (owner/user, group y public).
/wp-content/themes/ — Directorio de las pieles o temas. Si deseas usar el editor incluido en wordpress todos los archivos deben de ser escribibles por el grupo de usuarios de lo contrario únicamente debe de poder ser modificados por el usuario master
/wp-content/plugins/ — plugins: estos archivos deben de ser escritos únicamente por la cuenta master de hosting
otros directorios dentro de /wp-content/ debe de investigarse según los requerimientos de los plugins específicos en este caso los permisos pueden variar

Vamos a arreglar nuestros permisos desde SSH

Para Directorios

find [path] -type d -exec chmod 755 {} \;

Para Archivos

find [path] -type f -exec chmod 644 {} \;

el único directorio que se tiene que omitir cuando corremos estas lineas es /wp-includes/.

5 .- Ocultemos información que a simple vista parece inofensiva: muchas veces en el código generado por wordpress hay muchas pistas que podrían delatar nuestras vulnerabilidades, como por ejemplo en el código podemos ver que versión de wordpress estamos corriendo para evitar esto..
borremos del header.php de nuestro theme la siguiente linea:

<meta name=”generator”
content=”WordPress <?php bloginfo(’version’); ?>” />

6 .- Seguridad en la base de datos I: aunque sonara bastante obvio, si manejamos varios sitios en un mismo hosting tratemos de mantener en lo posible las bases de datos independientes para cada sitio, muchas veces por falta de recursos en el plan de hosting usamos 1 sola db para mas de 1 sitio, esto no es nada recomendable.

7 .- Seguridad en la base de datos II: cambiemos el esquema de nuestra base de datos con respecto a los prefix “wp_” si personalizamos esto le hara mucho mas difícil la intrusión a cualquier hacker. Ejem: miblog_wp_tabla…

8 .- Aseguremos el acceso a nuestro wp-admin: vamos a ponernos un poco mas paranoicos y vamos a permitir únicamente accesso a wp-admin desde 1 o varias ips conocidas.

Coloquemos esto en nuestro .htaccess en el / de nuestro website

Order Deny,Allow
Allow from ww.xx.yy.zz #reemplazar con la/las iPs
Deny from all

9 .- Eliminar archivos innecesarios: borrar lo siguientes archivos /wp-admin/install.php y /wp-admin/upgrade.php puesto que son otro foco de vulnerabilidad

y….

10 .- Aunque la ultima pero no menos importante: Siempre mantengamos un backup de nuestra DB al día, así también actualicemos todos los plugins a la ultima versión así como el Wordpress.

Como un plus les dejo un par de artículos y un video que me gustaría que vieran

Plugin de deteccion y bloqueo de intrusos | WPIDS es un port de PHPIDS a WordPress.

20 Plugins y tips de seguridad | 20 Wordpress Security Plug-ins And Tips To keep Hackers Away

10 Tips To Make WordPress Hack-Proof from guvnrDOTcom on Vimeo.

Les recuerdo mucha de esta información puede parecer obvia a algunos y nueva para otros, pero la razón de este post es tan solo dar algunos tips para no caer por confiados.

Post to Twitter Tweet This Post Post to Delicious Delicious

21Aug/090

Migrar Mysql a otro Mysql via bash remotamente

Este es un pequeño script que hice para poder sincronizar 2 servidores mysql en el interim de una migracion, para poder usar este script el mysql de nuestro server destino tiene que estar limpia (recien instalada) porque el script va a generar todas las bases de datos segun el listado que encuentre en el servidor origen, y luego de eso a llenar con la data existente. Se recomienda que se pausen toda transaccion en el servidor origen para que pueda copiar exactamente igual la informacion.

El unico detalle de este script es que

#!/bin/sh
# System + MySQL backup script remoto
# Copyright (c) 2009 Paulo Alvarado
# This script is licensed under GNU GPL version 2.0 or above
# ---------------------------------------------------------------------

#########################
######CONFIGURACION#####

### MySQL Setup ###
MUSER="USER"
MPASS="PASSWORD"
MHOST="IPLOCAL"

NUSER="USER"
NPASS="PASSWORD"
NHOST="IPREMOTA"

######DECLARACION DE BINARIOS NO MODIFICAR#####
###############################################

### Binaries ###
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"

### Get all databases name ###
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
	### CREA LAS BASES DE DATOS EN EL SERVER REMOTO NOMBRES IDENTICOS ###
	echo 'create database' $db ';'|$MYSQL -u $MUSER -h $NHOST -p$MPASS

	### SINCRONIZA TODA LA DATA DE LAS DBs AL SERVER REMOTO ###
	echo $db; $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | mysql -h $NHOST -u $NUSER  -p$NPASS $db 

done

Post to Twitter Tweet This Post Post to Delicious Delicious

29Jul/090

VNC sobre SSH – tunneling

vnc-ssh-tunnel

otro truquito bien bien facil, que no debe de faltar dentro de nuestro respositorio de informacion. Todo esto esta pensando para administrar nuestro Linux desde un Winbugs.
Porque les doy tips sobre esta plataforma (win)?, bueno, porque no todo es perfecto en esta vida y muchos admin trabajan desde win :D

ahora vamos a saber el porque?: muchas veces nuestros firewalls no nos permiten sesiones graficas a nuestro server, claro a veces quien las necesita?, pero muchas otras veces se dara el caso de necesidad de ellas.

Cuando somos muy paranoicos, (como es mi caso), el firewall preferido es aquel en donde no entra nada mas que ssh, ahora bien eso no quiere decir que no tengamos la opcion de hacer mas tareas, sin exponernos mucho,

instalemos el vnc-server, e iniciemos su servicio (no lo colocare porque eso es otro tema un poco mas extenso), ahora que nuestro servicio esta arriba verifiquemos su estado:
netstat -pant

[root@srv-portalapp palvarado]# netstat -pant

Active Internet connections (servers and established)
<strong>
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   </strong>
tcp        0      0 0.0.0.0:2144                0.0.0.0:*                   LISTEN      32309/java
tcp        0      0 127.0.0.1:32000             0.0.0.0:*                   LISTEN      32309/java
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      2166/hpiod
tcp        0      0 0.0.0.0:870                 0.0.0.0:*                   LISTEN      1960/rpc.statd
<strong>tcp        0      0 0.0.0.0:5801                0.0.0.0:*                   LISTEN      15165/Xvnc
tcp        0      0 0.0.0.0:5802                0.0.0.0:*                   LISTEN      3219/Xvnc </strong>

En la anterior lista vemos que el VNC esta escuchando en los puertos 5801 y 5802, ahora vamos a hacer pequeño truco utilizando putty, vamos a utilizar la opcion de tunneling de putty.
putty2

al terminar eso nos conectaremos con nuestro cliente favorito de VNC, a nuestro localhost y al puerto designado.

vncviewer

Post to Twitter Tweet This Post Post to Delicious Delicious

28Jul/090

telnet en RHES 5.1

Configuracion super rapida :D

aseguremonos de que contamos con los servicios telnet instalados

[palvarado@srv-portalapp ~]$ rpm -aq | grep telnet
telnet-0.17-38.el5
telnet-server-0.17-31.EL4.5
[palvarado@srv-portalapp ~]$

ademas de el paquete xinetd

[palvarado@srv-portalapp ~]$ rpm -aq | grep xinetd
xinetd-2.3.13-4.5.el4

# chkconfig telnet on
# service xinetd reload
Reloading configuration: [ OK ]

antes de conectarnos verifiquemos si nuestro server cuenta con firewall y si es asi necesitamos modificar para que el servicio sea accesible.

Listo ahora a conectarnos….

Post to Twitter Tweet This Post Post to Delicious Delicious

21Jul/090

Linux | Quick tip | ethtools

root@gentoo:~# ethtool
ethtool version 6
Usage:
ethtool DEVNAME Display standard information about device

Un comando mucho muy util, tanto para la informacion de nuestros dispositivos de red asi tambien para manipular las propiedades de los mismo:

<strong>root@gentoo:~# ethtool eth0</strong>
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000007 (7)
        Link detected: yes

Dentro de este mismo paquete encontramos el mii-tools.- Cambiando los settings de velocidad y el duplex
de la velocidad negociada de eth0 con mii-tool, este es un ejemplo en donde deshabilitemos la auto negociacion y hagamos que el MII utilize 100baseTx-FD, 100baseTx-HD, 10baseT-FD, or 10baseT-HD:


root@gentoo:~# mii-tool -F 100baseTx-HD
root@gentoo:~# mii-tool -F 10baseT-HD

Ahora con ethtool vamos a configurar la velocidad negociada del dispositivo eth0, tecleando;


root@gentoo:~# ethtool -s eth0 speed 100 duplex full
root@gentoo:~# ethtool -s eth0 speed 10 duplex half

Post to Twitter Tweet This Post Post to Delicious Delicious

24May/064

Como – Resolver problema con estadisticas de Dreamhost con WordPress 2.0.2

Ok esta no tiene mucho q ver con Ubuntu, sin embargo Dreamhost es mi proveedor de hosting y sobre el cual corre este blog… ya lo habia publicado en otro blog pero igual se los comparto aqui…

de hecho creo q el problema es con todas las versiones 2.X…

la situacion es esta…

viene uno muy contento tiene su blogcito en wordpress 1.5 hechando punta y activa las stats de Dreamhost para contarnos las costillas con mil estadisticas y consumos de cpu… derrepente te das cuenta q te estas quedando atras con la tecnologia y haces upgrade a wp 2.X, activamos los permalinks para q se miren bien chulos (ya q ahora es mas sencillo q con wp 1.5) y aparentemente todo bien… PERO NO ES CIERTO JEJEJE

a los dias cuando ya te toca ver cuantos usuarios q visitan tu blog utilizan todavia Windows :p te das cuenta q al ingresar a tu direccion de stats htt://www.tublogonperez.com/stats/ te devuelve la fatidica pagina de error 404 y empieza tu calvario por no saber cuantos amigos vieron tu pagina entre las 2 y 3 de la tarde de ayer o cuantos ya se mudaron para Firefox… noooooooooo AAAAAAAAAAAAAA MATENME PORQUE ME MUERO!!! NAAAAAAAAAAAAA!

jajaja bueno la historia de horror de arriba creo aparte de ser un poquiiiiiiiiiiito exagerada ya nos a pasado a varios y no es gran cosa arreglarlo (si alguien ya lo habia solucionado y no nos paso el chivo q le caiga un troyano en el blog jajaja :-D ) revisando el Wiki de Dreamhost encontre la solucion al problemo…

en la carpeta donde esta instalado WordPress hay un archivo .htaccess q instala el mismo wordpress y q es el q se pasea en todas las estadisticas… va este archivto es modificable y de hecho hay q modificarlo para q nuestras valiosas estadisticas vuelvan a salir a la luz (para modificarlo hay q tener acceso via ssh al dominio en cuestion, deade el panel de dreamhost se le da acceso fia ssh al usuario de ftp q ya tenemos :-D)

bueno entonces hacemos la coneccion ssh a nuestro server desde ubuntu (para hacerlo desde windows pueden usar Putty)

:~$ ssh user@servidor.com
:~$ Password: tupassword
servidor$ cd www.tublogonperez.com
servidor$ cp .htacces .htacces.bak (esto es un backup por si las dudas)
servidor$ nano .htaccess

esto nos saca esta pantalla o algo por el estilo dentro del editor de texto nano

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php

# END WordPress 

luego borramos todo el texto anterior (a menos q nosotros hayamos hecho alguna modificacion previa al mismo) y colocamos el contenido de este archivo (lo pongo asi porque el wp me lo colocaba todo el codigo en una sola linea y se desarmaba el theme)

salvamos el archivo (Ctrl + o), salimos del editor nano (Ctrl + x), salimos de ssh (exit) y listo la proxima vez q pongamos la direccion http://www.tublogonperez.com/stats/ ya nos pedira la clave para lograr ver nuestras preciadas y amadas estadisticas

ojala les sirva pue!

saludos!

Via -> Wiki.dreamhost.com y horas de busqueda en Google