msgbartop
msgbarbottom

29 ene 12 Cómo instalar y actualizar s3cmd en ubuntu o debian

s3cmd es una pequeña aplicación que sirve para interactuar con el servicio de almacenamiento de Amazon, S3. Hace un tiempo ya os había contado cómo realizar backups con s3cmd.

Si utilizas ubuntu o debian, s3cmd está en los repositorios oficiales, pero una versión bastante antigua con muchos fallos. En mi caso el fallo que más me estaba afectando es cuando se se producía timeout hacía que la aplicación se cerrara sin finalizar las tareas, cosa que últimamente se estaba convirtiendo un algo demasiado habitual.

Por suerte el desarrollador de la aplicación ha creado un repositorio donde mantiene actualizadas las versiones estables para debian 5 y 6 y ubuntu 10.04 LTS y superiores. Para actualizar sólo hay que ejecutar los siguientes comandos.

wget -O- -q http://s3tools.org/repo/deb-all/stable/s3tools.key | sudo apt-key add -
sudo wget -O/etc/apt/sources.list.d/s3tools.list http://s3tools.org/repo/deb-all/stable/s3tools.list
sudo apt-get update && sudo apt-get install s3cmd

Fuente: s3tools.org

13 ene 12 Cómo bloquear el tráfico de un país

Si por cualquier razón necesitáis bloquear el tráfico de un servidor desde algún país en concreto en http://www.countryipblocks.net/ mantienen una lista actualizada de los rangos de ips de cada país.

Puedes descargar varios formatos, incluso uno preparado para insertar directamente en un fichero .htaccess, aunque a mi no me parece el mejor formato ya que obligas a que el servidor web revise una lista de ips que puede llegar a ser muy grande antes de que muestre la página y eso podría hacer que la navegación se enlenteciera demasiado, además un servidor web no es el más adecuado para realizar esa función.

Os pongo varios ejemplo de como realizar el bloqueo desde la línea de comandos. Para los ejemplos he utilizado korea, no se os ocurra utilizar rangos de ips de el país en el que estáis por que os podéis bloquear el acceso. Como diría un amiguete, “no seáis gañanes

Con iptables:

.
/usr/bin/wget -O /tmp/pais.txt https://www.countryipblocks.net/e_country_data/KR_cidr.txt; for i in $(/bin/cat /tmp/pais.txt | /bin/grep -v '#'); do sbin/iptables -A INPUT -s $i -j DROP; done; /bin/rm /tmp/pais.txt

Con apf:

.
/usr/bin/wget -O /tmp/pais.txt https://www.countryipblocks.net/e_country_data/KR_cidr.txt; for i in $(/bin/cat /tmp/pais.txt | /bin/grep -v '#'); do /etc/apf/apf -d $i; done; /bin/rm /tmp/pais.txt

23 nov 11 Cómo cambiar el grupo de seguridad de una instancia de amazon EC2

Amazon Web Services

Antes de empezar 2 conceptos sobre Amazon Web Sevices (aws):
Instancia: es el equivalente a un servidor
Grupo de seguridad: reglas predeterminadas de un firewall

Durante el proceso de creación de una instancia en Amazon EC2 uno de los pasos es asignarle un grupo de seguridad.
Lo normal es dejar abiertos sólo aquellos puertos que realmente necesitas para minimizar los riesgos de accesos y ataques no deseados.

Yo tengo predefinidos tres grupos, uno super básico con sólo el puerto 80, 443 (los usados por las páginas web) y el 22 (ssh), otro más abierto con mas puertos para otro tipo de servidor y el “vivalavirgen” con todo abierto, que en principio no debería de utilizarse para nada excepto algunas pruebas.

En mi caso el problema surgió al crear una nueva instancia para un servidor que tiene servicios en puertos que hasta ahora no había utilizado y sin darme cuenta le asigné un grupo de seguridad que no tenía esos puertos contemplados.

Evidentemente al intentar acceder a esos servicios no podía,así que intenté cambiar el grupo de seguridad de esa instancia pero me llevé una buena sorpresa al comprobar que no era posible por el tipo de servidor que había seleccionado.

La única solución que encontré fue ir al menú de la instancia y seleccionar la opción “Launch more like this” y en el proceso de creación de la nueva instancia asignarle el grupo correcto. Es una forma de hacer esto un poco “de andar por casa” pero funciona y soluciona la papeleta al que lo necesite.

24 ago 11 Error en Apache: (28)No space left on device: Couldn’t create accept lock

Ayer detecté un error poco frecuente en un servidor web con apache.
Después de una caida del servidor, cuando intentaba iniciar el apache este no arrancaba y en el log aparecía el error.
(28)No space left on device: Couldn’t create accept lock (/var/lock/apache2/accept.lock.xxxxx) (5)

Espacio en disco duro no falta, así que el problema era otro por lo que revolviendo por internet vi que, por suerte, no era el primero que le pasaba algo así y que ese error se achacaba a un problema con el array de semáforos.

Al hacer un

ipcs -s

se veía que tenía un montón de semáforos abiertos por el usuario del apache cuando este no está funcionando.
La solución pasa por eliminar todos los semáforos abiertos por el usuario del apache y ya se puede reiniciar sin problemas.

Si los liberas a mano puedes utilizar:

ipcrm -s proceso

O si lo prefieres automatizar un poco:

.
for i in `/usr/bin/ipcs -s | /bin/grep www-data | /usr/bin/awk '{print $2}'` ; do /usr/bin/ipcrm -s $i; done

Ahora sólo me queda averiguar por que se llena el array de semáforos y no se libera.

04 jul 11 Cómo modificar permisos de ficheros y directorios con python

Muchas veces cuando instalas en un servidor algún plugin o algún cms, como prestashop, te crean permisos de lectura, escritura y ejecución que no son los más adecuados para la seguridad del servidor. Personalmente me molesta especialmente encontrarme con directorios y ficheros con 777.

Modificar a mano una cantidad muy grande de ficheros y directorios puede requerir mucho tiempo así que he preparado un pequeño script en python que hace esas modificaciones por mi. Sólo hay que cambiar el string ruta_a_explorar por el path y el sólo modifica los ficheros y directorios dejando los permisos 644 para los ficheros y 755 para los directorios.

Espero que os sea útil.

#! /usr/bin/env python
# -*- coding: utf-8-*-
import os, sys, stat

ruta_a_explorar="/ruta/a/explorar/"

for root,dirs,files in os.walk(ruta_a_explorar):
        for file in [f for f in files]:
                pp=os.path.join(root, file).replace("""\\""",'/')
                if stat.S_ISDIR(os.stat(pp)[stat.ST_MODE]):
                        os.chmod(pp,stat.S_IRWXU|stat.S_IWUSR|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH|stat.S_IXOTH)
                elif stat.S_ISREG(os.stat(pp)[stat.ST_MODE]):
                        os.chmod(pp,stat.S_IRUSR|stat.S_IWUSR|stat.S_IRGRP|stat.S_IROTH)

        for dir in [f for f in dirs]:
                pp=os.path.join(root, dir).replace("""\\""",'/')
                print pp
                if stat.S_ISDIR(os.stat(pp)[stat.ST_MODE]):
                        os.chmod(pp,stat.S_IRWXU|stat.S_IWUSR|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH|stat.S_IXOTH)
                elif stat.S_ISREG(os.stat(pp)[stat.ST_MODE]):
                        os.chmod(pp,stat.S_IRUSR|stat.S_IWUSR|stat.S_IRGRP|stat.S_IROTH)

01 jul 11 Comprobar si está caído un servicio con python

Una forma sencilla de comprobar si un servicio del servidor está caído y hacer que se vuelva a levantar con Python.

En este caso es para comprobar si el apache está funcionando y si no lo está iniciar el servicio.

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import socket, subprocess

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip="127.0.0.1"
port="80"
try:
	s.connect((ip, int(port)))
	s.shutdown(2)
except:
	subprocess.call(['/etc/init.d/apache2', 'start'])

Lo ideal sería tener este script ejecutándose en el cron cada poco tiempo.

21 jun 11 Backups en Amazon S3 con s3cmd

Amazon S3 es un servicio de almacenamiento masivo de información con unos costes bastante aceptables. Para poder manejarlo hay varias herramientas pero para mi la más cómoda es s3cmd, un sencillo programa en línea de comandos que nos permite manejar nuestra cuenta en S3.

Lo primero es instalarlo, desde debian o ubuntu con un simple

apt-get install s3cmd

lo tenemos listo y si no podéis ir a http://s3tools.org/download y descargarlo desde allí.

Inmediatamente deberíamos configurarlo, para ello hay que ejecutarlo con el parámetro –configure
s3cmd –configure
Lo primero que nos va a pedir el “Access Key” y el “Secret Key” de nuestra cuenta de Amazon. Para obtenerlos debemos ir a la página de Amazon, menú “cuenta” -> “Credenciales de Seguridad”
Después nos pedirá una clave que se utilizará para cifrar todo lo que se suba a Amazon y algunos datos más como la ruta del gpg y datos si estuvieramos detrás de un firewall. Al final del proceso nos crea un fichero .s3cfg en nuestro directorio de usuario.

Los comandos de s3cmd son:

  • Make bucket
    s3cmd mb s3://BUCKET
  • Remove bucket
    s3cmd rb s3://BUCKET
  • List objects or buckets
    s3cmd ls [s3://BUCKET[/PREFIX]]
  • List all object in all buckets
    s3cmd la
  • Put file into bucket
    s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX]
  • Get file from bucket
    s3cmd get s3://BUCKET/OBJECT LOCAL_FILE
  • Delete file from bucket
    s3cmd del s3://BUCKET/OBJECT
  • Synchronize a directory tree to S3
    s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX] or s3://BUCKET[/PREFIX] LOCAL_DIR
  • Disk usage by buckets
    s3cmd du [s3://BUCKET[/PREFIX]]
  • Get various information about Buckets or Files
    s3cmd info s3://BUCKET[/OBJECT]
  • Copy object
    s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
  • Move object
    s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
  • Modify Access control list for Bucket or Files
    s3cmd setacl s3://BUCKET[/OBJECT]
  • Sign arbitrary string using the secret key
    s3cmd sign STRING-TO-SIGN
  • Fix invalid file names in a bucket
    s3cmd fixbucket s3://BUCKET[/PREFIX]
  • List CloudFront distribution points
    s3cmd cflist
  • Display CloudFront distribution point parameters
    s3cmd cfinfo 1[/cf]
  • Create CloudFront distribution point
    s3cmd cfcreate s3://BUCKET
  • Delete CloudFront distribution point
    s3cmd cfdelete cf://DIST_ID
  • Change CloudFront distribution point parameters
    s3cmd cfmodify cf://DIST_ID

Los comandos básicos con ficheros son put para subir todo el contenido al bucket, get para descargarlo y sync para sincronizar los contenidos.
P.E.:

s3cmd sync --delete-remove --recursive /mi-directorio/datos/ s3://BUCKET/datos-de-mi-directorio/
Get Adobe Flash playerPlugin by wpburn.com wordpress themes