blog del equipo de tecnología de 11870.com

Buscamos sysadmin

Buscamos una persona para nuestro equipo de sistemas. Su principal responsabilidad será la administración de una red interna y el soporte a los usuarios, pero también colaborará en la administración de un entorno de producción web de alta disponibilidad.

Consideramos imprescindible lo siguiente:

  • Administración GNU/Linux, preferible Ubuntu o Debian.
  • DNS, DHCP, Samba y LDAP.
  • Administración básica de Windows.

Es deseable:

  • Enrutamiento y firewalls.
  • Asterisk.
  • Ebox-zentyal o similar.

El trabajo es presencial en nuestra oficina en el centro de Madrid.

Si crees que encajas envía tus datos a soyesapersona [arroba] 11870.com

Introducción a las API Tools de AWS

Aunque la interfaz web de AWS puede ser suficiente en muchos casos para administrar nuestros servicios, si tenemos entornos de desarrollo, preproducción y producción podemos necesitar una manera rápida, ágil y flexible para manejar las instancias EC2, Elastic ips etc.

Lo veo especialmente importante para poder realizar scripts y automatizar y programar acciones sobre los servidores de cara a no tener que realizar demasiadas operaciones manuales y repetitivas, y es una buena manera de poder controlar el tiempo que se mantienen encendidas máquinas que no pertenecen al entorno productivo.

Vamos a tomar como de costumbre la distribución Ubuntu en su versión Lucid.

Credenciales de seguridad

Dando por hecho que tenemos una cuenta ya creada seguimos los siguientes pasos

  1. Abre la EC2 console
    1. Crea una “key-pair” y descárgala
      1. Selecciona “Key pairs”  en el menú “Networking and Security” en el panel de navegación y haz click en “Create key pair”. Esta “Private key” es necesaria para conectarse por ssh a la máquina.
    2. Para usar las api-tools necesitarás un conjunto de credenciales de seguridad compuesto de un certificado x.509 con su “Private key”. Por lo tanto nos dirijimos al menú Account->Security Credentials
      1. Selecciona la pestaña X.509 Certificates
      2. Crea un nuevo certificado
      3. Descarga la “private key” y el certificado (recomendable guardarlo en la carpeta $HOME/.ec2).
      4. Cambia los permisos de ficheros a unos suficientemente restrictivos: chmod go-rwx ~/.ec2/*.pem
      5. Toma nota de tu account ID al final de la página (con la nomenclatura XXXX-XXXX-XXXX).

Instalando las ec2-api-tools

  1. Comprueba que estés usando el repositorio  multiverse y una vez que sea así instalalo  mediante la siguiente instrucción:
    sudo apt-get install ec2-api-tools

    También puedes usar el awstools ppa mediante las siguientes instrucciones:

    sudo apt-add-repository ppa:awstools-dev/awstools
    sudo apt-get update
    sudo apt-get install ec2-api-tools
  2. Indica los valores de las siguientes variables de entorno para que estén disponibles en tu sesión de usuario(.bashrc si tu shell es bash), necesarias para la correcta ejecución de las ec2-api-tools :
    export EC2_KEYPAIR=<your keypair name> # name only, not the file name
    export EC2_URL=https://ec2.<your ec2 region>.amazonaws.com
    export EC2_PRIVATE_KEY=$HOME/<where your private key is>/pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
    export EC2_CERT=$HOME/<where your certificate is>/cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
    export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

    Notas:

    1. La región EC2 debe ser una de las listadas a continuación:
Región URL
US-East (Northern Virginia) ec2.us-east-1.amazonaws.com
US-West (Northern California) ec2.us-west-1.amazonaws.com
EU (Ireland) ec2.eu-west-1.amazonaws.com
Asia Pacific (Singapore) ec2.ap-southeast-1.amazonaws.com
Asia Pacific (Tokyo) ec2.ap-northeast-1.amazonaws.com
  1. Carga las variables para no tener que salir de la sesión:
    source ~/.bashrc
  2. Comprueba que  se pueden ejecutar los comandos de manera correcta mediante el siguiente comando:
    ec2-describe-images -o self -o amazon

Si todo ha ido bien podemos manejar prácticamente cualquier parámetro de cualquier instancia, aspecto que veremos en el siguiente post, de manera que ahora podemos arrancar, parar, reiniciar, crear instancias y crear scripts que saquen provecho de estos comandos.

Como ejemplo podemos arrancar y parar cualquier instancia mediante la siguiente instrucción:

ec2-start-instances i-xxxxxxx

ec2-stop-instances i-xxxxxxx

Tags: , ,

Programador backend

Buscamos un programador con conocimientos avanzados de Java para trabajar con nosotros en nuestra oficina del centro de Madrid. Necesitamos una persona con profundos conocimientos y experiencia en Java en el lado servidor: Spring, Hibernate, Jboss, MySQL.

Valoramos conocimientos de python y que sea alguien con interés en la plataforma Java en toda su extensión, tanto en relación a frameworks y herramientas como en lo que respecta a otros lenguajes como groovy o scala.

Su responsabilidad no será el código frontend, pero le será de ayuda tener conocimientos en javascript, html y css.

Si crees que encajas, envía tu CV a soyesapersona arroba 11870.com.

Programador front end

Buscamos un programador front end para que se incorpore a nuestra oficina en el centro de Madrid.

Trabajará integrado en el equipo de tecnología pero en estrecha colaboración con el equipo de experiencia de usuario, por lo que es necesario un fuerte interés por las disciplinas que cubren la experiencia de usuario.

Es necesario un conocimiento extenso y profundo de HTML, CSS y javascript, en particular jquery y prototype.

Es deseable conocimiento y experiencia en aplicaciones web en entorno java.

Valoraremos trabajos y/o experimentos realizados visibles.

Si crees que encajas envíanos tu CV a soyesapersona arroba 11870 punto com.

Securización de la jmx-console

Es altamente conveniente tener unas mínimas medidas de seguridad para dificultar el acceso a la jmx-console y la web-console de Jboss, especialmente si tienes una versión antigua de Jboss(por debajo de la 6  y especialmente la rama 4.x), ya que se pueden realizar numerosas operaciones y obtener datos desde las mismas.

Además hace unos días que circula un gusano que aprovecha una vulnerabilidad(CVE-2010-0738) de hace un año aproximadamente y se aprovecha de la costumbre de proteger mediante security constraints las peticiones POST y GET pero no el resto de peticiones http. Para más detalles ver este comunicado.

El primer paso es activar la autenticación mediante usuario y password.

1. Editar el fichero $JBOSS_HOME/PROFILE/deploy/jmx-console.war/WEB-INF /web.xml

Y descomentar el siguiente bloque:

 <security-constraint>
     <web-resource-collection>
       <web-resource-name>HtmlAdaptor</web-resource-name>
       <description>An example security config that only allows users with the
         role JBossAdmin to access the HTML JMX console web application
       </description>
       <url-pattern>/*</url-pattern>

     </web-resource-collection>
     <auth-constraint>
       <role-name>JBossAdmin</role-name>
     </auth-constraint>
   </security-constraint>

   <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>jmx-console</realm-name>
   </login-config>

   <security-role>
      <role-name>JBossAdmin</role-name>
   </security-role>

El valor indicado en el parámetro <real-name> del apartado <login-config> debe coincidir con el indicado em el fichero  $JBOSS_HOME/server/PROFILE/conf/login-config.xml el cual define  la autenticación y autorización a realizar .El usuario y password se indica en un fichero de texto plano (especial cuidado con los permisos de acceso) $JBOSS_HOME/server/PROFILE/conf/props/jmx-console-users.properties. El usuario que especifiquemos debe tener rol JBossAdmin tal y como especificamos en el fichero web.xml .

2. Editar el fichero $JBOSS_HOME/PROFILE/deploy/jmx-console.war/WEB-INF/jboss-web.xml, para fijar el nombre del dominio de seguridad que usaremos más adelante:

  <security-domain>java:/jaas/web-console</security-domain>

3. Editar el fichero $JBOSS_HOME/server/default/conf/login-config.xml:

y asegurarnos de que tenemos este bloque de código

    <application-policy name = "jmx-console">
       <authentication>
          <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
             flag = "required">
           <module-option name="usersProperties">props/jmx-console-users.properties</module-option>
           <module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
          </login-module>
       </authentication>
    </application-policy>

    <!-- A template configuration for the web-console web application. This
      defaults to the UsersRolesLoginModule the same as other and should be
      changed to a stronger authentication mechanism as required.
    -->
    <application-policy name = "web-console">
       <authentication>
          <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
             flag = "required">
             <module-option name="usersProperties">web-console-users.properties</module-option>
             <module-option name="rolesProperties">web-console-roles.properties</module-option>
          </login-module>
       </authentication>
    </application-policy>

En las versiones anteriores o iguales a  JBoss AS 5.x, el fichero web.xml incluye una security-constraint  que bloquea las peticiones GET y POST :

    <http-method>GET</http-method>
    <http-method>POST</http-method>

Eliminar estas opciones para que la restricción de seguridad afecte a todos los tipos de peticiones http

La aplicación puede ser deplegada mediante touch jmx-console.war en caliente, sin reiniciar el servidor.

El proceso  para securizar la web-console  es parecido:

  • Editamos $JBOSS_HOME/PROFILE/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xml y $JBOSS_HOME/server/PROFILE/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml de la misma manera que con la jmx-console
  • Editamos $JBOSS_HOME/PROFILE/deploy/management/console-mgr.sar/web-console.war/WEB-INF/classes/web-console-users.properties  de la misma manera que con la jmx-console
Debemos comprobar que ambas aplicaciones se han redesplegado bien y que se pide la autenticación.

Tags: , , ,