Technorati Tags: windows xp
martes, abril 29, 2008
Windows XP SP3
Generación automática de exploits aprovechando los parches
Regulando el tráfico P2P con ayuda de Linux
domingo, abril 27, 2008
Curva de Koch
Curva de Koch
El primer fractal con el que he estado intentando es la curva de Koch. Esta curva se generar tomando un segmento de recta, dividiéndola en tres trozos, y sustituyendo el segmento central por otros dos segmentos rotado el primero 60º respecto al primero y el segundo 120º respecto al primero. Este proceso se repite de manera recursiva, hasta la profundidad que deseemos. El código python que genera la curva es el siguiente:El programa anterior nos genera la siguiente figura:#!/usr/bin/python import turtle def genera_koch(level,l): if level==0: turtle.forward(l) else: genera_koch(level-1,l/3) turtle.left(60) genera_koch(level-1,l/3) turtle.left(-120) genera_koch(level-1,l/3) turtle.left(60) genera_koch(level-1,l/3) turtle.setup(width=800,height=600,startx=400,starty=300) turtle.up() turtle.backward(125) turtle.down() turtle.degrees() turtle.tracer(0) genera_koch(5,250) raw_input()
El copo de nieve
Para generar el copo de nieve, lo que se debe hacer es partir de un triángulo equilátero, donde sustituimos cada uno de los lados del mismo con una curva de Koch. El código es el siguiente:Este código genera el siguient gráfico: Copo de Nieve#!/usr/bin/python import turtle def genera_koch(level,l): if level==0: turtle.forward(l) else: genera_koch(level-1,l/3) turtle.left(60) genera_koch(level-1,l/3) turtle.left(-120) genera_koch(level-1,l/3) turtle.left(60) genera_koch(level-1,l/3) turtle.setup(width=800,height=600,startx=400,starty=300) turtle.up() turtle.degrees() turtle.tracer(0) turtle.goto(-100,200) turtle.down() for i in range(0,3): genera_koch(4,250) turtle.right(120) raw_input()
Referencias
sábado, abril 26, 2008
Interfaz FastCGI en Web Servers
Para superar estas limitaciones surgieron una serie API - interfaces de programación - ligadas a distintos servidores web que permitían introducir módulos con código propio en el servidor web. Por ejemplo, NSAPI para el servidor http de Netscape, ISAPI para el servidor IIS de Microsoft o la programación de módulos de Apache. De esta manera se integra la funcionalidad que se desee en el propio servidor web, remediando los principales defectos que tenía el uso de la interfaz CGI para ejecutar programas externos. Eso si, a cambio, es mucho más difícil aislar diferentes aplicaciones que se ejecutan en el mismo servidor web, y siendo mucho más complicado establecer quotas de uso de recursos.
Hace bastante tiempo surgió otro modelo de programación que es fastcgi, con la idea de juntar lo mejor de ambos mundos:
- Rendimiento: Al no estar creando un proceso por cada petición, se ahorra los problemas de rendimiento de la interfaz antigua de CGI.
- Simplicidad: Es muy fácil migrar los programas CGI escritos.
- Independencia del lenguaje usado para programar el CGI.
- Aislamiento de procesos: Una aplicación que utilice esta interfaz no puede corromper a otras.
- Independencia del servidor: La especificación no está atada a ninguna arquitectura de servidor.
- Soporte para aplicaciones distribuidas: permite distribuir carga entre máquinas remotas.
Esta manera de ejecutar aplicaciones es similar a la usada en los servidores de aplicaciones Java, donde hay un sistema que recibe las peticiones y sirve los ficheros estáticos y una serie de servidores de aplicaciones que reciben las peticiones vía un módulo (por ejemplo, en el caso de Apache, el mod_jk).
He encontrado esta interfaz para la ejecución de procesos leyendo sobre la implementación de php sobre IIS, que ha sido certificada por Zend para la ejecución en Windows 2008 (básicamente la versión basada en CGI tenía problemas de rendimiento mientras que la basada en ISAPI tenía problemas de estabilidad).
Instalando FastCGI en Apache
Instalar el módulo FastCGI en Apache es muy sencillo, en este caso como un módulo DSO:- Bajarse las fuentes del FastCGI
- Descomprimir las fuentes y entrar en el directorio:
tar zxvf mod_fastcgi-2.4.6.tar.gz
cd mod_fastcgi-2.4.6
- Generar el módulo del Apache con apxs e instalarlo (como un usuario administrador):
apxs -o mod_fastcgi.so -c *.c apxs -i -a -n fastcgi mod_fastcgi.so
- Comprobar que se han añadido al fichero de configuración la entrada necesaria para que el sistema cargue el módulo fastcgi. Debe de aparecer una línea de este tipo:
...
LoadModule fastcgi_module ruta/mod_fastcgi.so
...
Referencias
Technorati Tags: cgi, web server
martes, abril 22, 2008
Usar vbscript para obtener información del directorio activo en Windows
- Obtener el dn (distinguised-named) que identifica a una máquina determinada dentro del directorio activo.
- Obtener la raíz del directorio LDAP.
- Poder hacer consultas directas al directorio activo usando LDAP y filtrando el contenido que interese.
Información básica de un usuario y máquina
Lo malo de trabajar en entornos de Microsoft, es que a veces, hay varias maneras de realizar lo misma operación, muchas veces, a través API distintas. Para realizar la primera operación recurro a ADSI y concretamente a la interfaz IADsADSystemInfo. Gracias a ella somos capaces de obtener una serie de información básica sobre el ordenador y el usuario que está actualmente conectado. Del ejemplo de Microsoft:Set objSysInfo = CreateObject("ADSystemInfo")
Wscript.Echo "Usuario: " & objSysInfo.UserName
Wscript.Echo "Nombre de máquina: " & objSysInfo.ComputerName
Wscript.Echo "Sitio: " & objSysInfo.SiteName
Wscript.Echo "Nombre de dominio corto: " & objSysInfo.DomainShortName
Wscript.Echo "Nombre de DNS: " & objSysInfo.DomainDNSName
Wscript.Echo "Nombre de DNS del árbol: " & objSysInfo.ForestDNSName
Wscript.Echo "Máquina con el rol de PDC: " & objSysInfo.PDCRoleOwner
Wscript.Echo "Máquina con el rol de schema owner: " & objSysInfo.SchemaRoleOwner
Wscript.Echo "¿Está en modo nativo?: " & objSysInfo.IsNativeMode
set objSysInfo = nothing
La información más útil es concer los dn del usuario y nombre máquina, para poder usarlos en otras operaciones de ADSI (por ejemplo las contraseñas, averiguar cual es la unidad organizativa a la cual pertenece la máquina o el usuario)
Para que esta interfaz pueda funcionar correctamente, el usuario que ejecuta dicho script, debe de tener permisos de consulta en el directorio activo.
La raíz del directorio LDAP
En LDAP, rootDSE es la raíz del directorio y tiene una serie de información sobre el servidor de directorio. Entre otra información tenemos el distinguished name (dn) para el dominio del cual el servidor de directorio es miembro, y esta información es útil para realizar consultas al LDAP. Obtenerla es muy sencillo:Set objRootDSE = GetObject("LDAP://RootDSE")Si seguimos la documentación de los enlaces puede obtenerse de este contexto mucha más información como puede ser el tipo de controlador de dominio, el modo en el que se encuentra, el tiempo actual que tiene el controlador, si el controlador está sincronizado,...
strDomain = objRootDSE.Get("DefaultNamingContext")
Consultas LDAP
A la hora de realizar una query LDAP la herramienta más adecuada en Microsoft Windows es Microsoft ActiveX Data Objects, usando el proveedor de Microsoft OLE DB Provider for Microsoft Active Directory Service, permite realizar consultas al LDAP que implementa el directorio activo.El lenguaje de consultas que permite este proveedor ADO puede ser bien un dialecto de SQL o bien un filtro LDAP:
Fitro LDAP
"<LDAP://DC=ArcadiaBay,DC=COM>;(objectClass=*);sn, givenName; subtree"Filtro SQL
"SELECT title, telephoneNumber From 'LDAP://DC=Microsoft, DC=COM' WHERE objectClass='user' AND objectCategory='Person'"Para crear una consulta contra el directorio activo, lo que hacemos es crear un objeto ADODB.Connection, que usará como proveedor ADsDSOObject, que es el proveedor para ADO que conecta con el directorio activo. Luego, crearemos un objeto ADODB.Command al cual asignaremos la conexión que hemos creado, estableceremos la consulta que deseemos, y la ejecutaremos, lo que nos devolverá un objeto ADODB.RecordSet que nos permitirá iterar por las distintas filas de datos que haya generado la consulta.
Para ver las cosas un poco más claras, un ejemplo que nos va a devolver todas las cuentas de máquinas que existan en el dominio de directorio activo al cual está conectado la máquina:
' Obtener cual es el dominio Set objRootDSE = GetObject("LDAP://RootDSE")El script anterior listaría todos las máquinas presentes en el directorio activo. La parte más interesante es la consulta que ejecuta el proveedor para obtener la información. Esta consulta tiene la forma:
strDomain = objRootDSE.Get("DefaultNamingContext")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
strCmdText =<"<LDAP://"&strDomain&">" _
+";(&(objectCategory=Computer)(objectClass=Computer));ADsPath,name,cn;Subtree"
'WScript.Echo strCmdText
objCommand.CommandText = strCmdText
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
WScript.Echo objRecordSet.Fields("name").Value
objRecordSet.MoveNext
Loop
Base de la búsqueda | <LDAP://dc=dominio,dc=com> |
Filtro LDAP | (&(objectCategory=Computer)(objectClass=Computer) |
Campos a devolver | ADsPath,name,cn |
Ámbito de búsqueda | subtree |
Una cosa importante en el caso del directorio activo es tener en cuenta que por defecto, el AD está configurado para que devuelva como mucho 1000 objetos (ver el artículo KB 315071, concretamente el parámetro MaxPageSize).
Utilidad
Pues todo esto lo he tenido que buscar para ejecutar ciertas operaciones en función la unidad organizativa esté situada una máquina en el directorio activo, dado las condiciones de contorno del problema - hay una solución un poco más fácil a través d GPO, pero otros ejempos que se me ocurren son:- Modificar propiedades de un conjunto de usuarios o máquinas.
- Ver desde cuando no utilizan la cuenta algunos usuarios.
¿Qué faltaría?
- Las referencias y explicación de como hacer filtros LDAP
- Aclarar el alcance de las búsquedas (base,onelavel y subtree)
- Explicar las propiedades de la conexión ADO
Referencias
lunes, abril 21, 2008
OpenBSD gana soporte de WPA/WPA2
Y es una lástima porque el equipo de OpenBSD ha hecho una serie de programas que merece muchísimo la pena y que son ampliamente usados dentro de la comunidad Unix como es el OpenSSH o los daemons de OpenBGPD
El anonimato de los militares españoles en el acceso a Internet
Technorati Tags: anonimato
jueves, abril 17, 2008
El administrador local y las políticas de seguridad de Windows (GPO)
Por un lado al usuario, y dicha información se guarda bajo la rama de registro HKCU\Software\Microsoft\CurrentVersion\Policies. Dicha rama se almacena en el fichero ntuser.dat que está situado en el directorio home de la cuenta de Windows. Este fichero es propiedad del usuario, y las ramas de registro que se cargan de él también. Eso significa que cualquiera puede establacer permisos sobre las ramas que les interese y evitar que se aplique una política de seguridad (por ejemplo, que no podamos modificar los propiedades de conexión del Internet Explorer). Las políticas se aplican con el usuario SYSTEM: si bloqueamos el acceso del registro de escritura a dicho usuario, borrando las entradas que existan.
Pero sin embargo esta misma técnica, evidentemente, no puede aplicarse a las políticas de dominio que se despliegan para la máquina. Pero se da el caso, que, hay gente que tiene este tipo de permisos en las empresas (desarrollos, pruebas, etc). Una vez que tienes el administrador local en Windows, realmente da igual lo que te desplieguen por políticas, porque puedes bloquear el despliegue de las mismas retirando de nuevo los permisos en las ramas adecuedas, en el caso de las políticas de máquina HKLM\Software\Microsoft\CurrentVersion\Policies, quiando los permisos a la misma bloquaremos todo lo que nos venga del dominio.
¿Para qué puede ser útil este tipo de técnicas?. Pues básicamente cuando estamos en una red de dominio y se quieren probar algunas configuraciones que implementamos a través de la política de grupo local (local group policy), puesto qu es ta política es la primera que se aplica siempre cuando se arranca una máquina y lo que se establezca en ella es sobreescrito por la política de dominio. De esta manera podemos usar la consola de gestión de políticas locales gpedit.msc para poder configurar como se desee la máquina.
Como es lógico, es totalmente absurdo dar permisos de administrador local y luego utilizar las GPO como medida de seguridad.
Al aplicar esta técnica nos encontraremos en el registro eventos con origen Userenv e identificador 1020, que indica aquellas claves de registro que el proceso de encargado de aplicar las políticas en Windows (realmente lo que ocurre es que escribe una serie de claves en el registro y es luego el programa el encargado de configurarse en función de los valores de dichas claves).
Referencias
- La lista de entradas de registro y a qué corresponde cada política puede encontrtarse en el documento Policy Settings
Securizando MacOS X
- Protege el acceso al OpenFirmware o EFI a través de una contraseña.
- Usar contraseñas en los salvapantallas.
- Usar listas de accesos sobre el sistema de ficheros (ACLs) - por defecto sólo activadas en la versión server -.
- Usar FileVault para proteger datos importantes - encriptación del sistema -, aunque ojo, si se pierde la clave, se pierden los datos.
- Configurar el firewall de manera adecuada.
- No usar un usuario con privilegios de administrador para el trabajo diario
- Mira los registros (logs) que ha generado las aplicaciones.
- Usar un antivirus.
- Mirar las conexiones salientes.
Como antivirus, no suelo usarlo por sistema, a menos que tenga que analizar alguna imagen, para lo cual suelo usar ClamXav, el port del antivirus de fuentes abiertas clamav. Un programa interesante que mencionan es, Litte Snitch que permite ver a donde se conectan los diversos daemons que están corriendo (para los más acostumbrados a la línea de comandos como yo, pueden usar lsof que viene incluido en el sistema.
Para los que necesiten tener su Mac fetén, pueden mirar las guías que ha publicado la NSA para protegerlos, tanto para la versión 10.3 Panther como 10.4 Tiger.
Por último, no estaría de más un poco más de velocidad a la hora de reconocer y corregir los fallos por parte de Apple, porque su tiempo de respuesta en cuestiones de seguridad no suele ser el mejor del mercado.
Referencias
miércoles, abril 16, 2008
¿Cuanto dura el CAPTCHA de Windows Live?
Referencias de seguridad
La lista de consejos que da el autor del artículo es la siguiente:
- Ejecutar los procesos con el mínimo privilegio posible.
- Establecer controles de acceso entre las diferentes capas de la aplicación.
- No confíes en lo que te manda el usuario.
- Usa configuraciones por defecto seguras.
- No confíes en la seguridad a través de la oscuridad.
- Autoriza en la entrada y establece a qué puede acceder el usuario.
- Asume que todo sistema externo es inseguro.
- Reduce la información no necesaria que se muestra a los usuarios.
- Si la aplicación falla elimina toda información sensible y no de a los usuarios información detallada del error.
- La seguridad debe mantenerse en todas las capas de la aplicación: una cadena es tan segura como el más débil de sus eslabones.
- Si no usas una funcionalidad, desactivala.
Google Apps Engine adaptado para ejecutarse fuera del entorno de Google y sobre Amazon EC2
martes, abril 15, 2008
The Return of ADA (si es que alguna vez se fue en ciertos sitios ...)
En primer lugar, el sistema Route Automation Modernization System, la actualización del sistema de control de tráfico aéreo de EEUU o London Area Control Center, el sistema de control de tráfico aéreo de la zona de Londres utilizan ADA para implementar sus funciones.
En el artículo hacen una breve entrevista a Robert Dewar uno de los los autores de GNAT, GNU Ada y da unas breves pinceladas como el uso de este lenguaje, que puede ser farragoso al principio, permite reducir posteriormente el tiempo de depuración y que lo implementado se ajuste a especificaciones (cosa especialmente importante cuando hablamos de sistemas de control de tráfico aéreo o de software que corren los sistemas empotrados de los aviones)
Technorati Tags: ada
lunes, abril 14, 2008
Limitaciones de Google Apps Engine
- Imposibilidad de ejecutar procesos en background. Todos los scripts se ejecutan cuando se accede a cierta URL. Aunque esto es una ventaja a la hora de la escalabilidad, hay aplicaciones reales que necesitan este tipo de procesos.
- Al no existir conexiones permanentes no se puede usar la técnica de programación Comet, es decir, que el servidor mande de manera asíncrona datos al navegador.
- Todo el tratamiento de datos se hace a través de scripts que hay que programar, en vez de algún tipo de frontend de base de datos. Hay que subir script para tratar los datos.
- Lentitud al recorrer las tablas de datos.
- Las operaciones de grandes cantidades de datos es lento.
- No se puede hacer queries arbitrarias.
- No tiene soporte para hacer peticiones https ni para recibirlas .
Actualización
Mientras leía otro artículo sobre el sistema he dado con las quotas del mismo que se resumen en:
Quotas fijas | |
---|---|
Quota | Límite |
Aplicaciones por desarrollador | 3 |
Almacenamiento por aplicación | 500MB |
Límites de uso diario | |
Quota | Límite |
Correos electrónicos por día | 2000 |
Ancho de banda de entrada | 10 Gigabytes |
Ancho de banda de salida | 10 Gigabyttes |
CPU Megaciclos | 200000000 |
Peticiones HTTP por día | 650000 |
LLamadas al API de base de datos | 2500000 |
Llamadas al API URLFetch | 160000 |
Technorati Tags: google
domingo, abril 13, 2008
El firewall de Windows XP: Un pequeño tutorial
Para conectar el firewall en esas versiones de Windows anteriores al SP2 había que configurarlo a través de las propiedades avanzadas de la conexión de red, y como suele ser normal, no solían activarlo. Con el SP2 se presentó un nuevo componente del panel de control firewall.cpl a través del cual podemos acceder a configurar el firewall:
Configuración del Firewall de Windows XP
Desde la pestaña General, activamos o desactivamos el firewall de una manera sencilla. Por otro lado, se puede permitir las excepciones. Si se marca esta casilla, el firewall no permitirá las excepciones que se definan en la pestaña Excepciones, pero tampoco se permitirán las configuraciones establecidas en la pestaña Opciones avanzadas. Esto, que no aparece documentado por ninguna parte, me ha dado bastante dolores de cabezas al intentar activar el firewall sólo en determinadas interfaces sin excepciones.
Las excepciones del firewall de Windows
Se controlan a través de la pestaña Excepciones:Se pueden añadir dos tipos de excepciones: las de programa o las excepciones de puerto. En las primeras se añaden la ruta completa a un programa al cual se la autoriza a abrir puertos. El firewall deja pasar conexiones entrantes en función del ámbito que se le autorice la conexión. En el segundo tipo de excepciones se abre un puerto determinado, ya sea TCP o UDP y cualquier programa puede escuchar en esos puertos.
Con la primera opción es sencillo que cualquier programa abra un puerto de escucha según se desee. Esto puede ser útil en el caso de programas que usen puertos dinámicos. Un caso sencillo es un servidor ftp que utilice el modo pasivo para las conexiones. En el caso, con introducir la ruta al servidor de ftp, hará que el programa si abre un puerto, pueda recibir las conexiones. Agregar programa excepción
Si lo que se quiere abrir es un puerto de manera permanente, con independencia del programa que pueda escuchar en él, lo que se utilizamos es la opción de añadir un puerto:
En ambos tipo de excepciones se puede controlar el ámbito del cual se permitirán las excepciones:
Cada uno de los ámbitos son los siguientes:
- Cualquier equipo. En este ámbito permite la conexión desde cualquier equipo a nuestro ordenador.
- Sólo mi red. Permite la conexión sólo desde aquellas direcciones IP que pertenezcan a la subred en la cual el ordenador tiene conectado interfaces.
- Lista Personalizadas. Nos permite introducir la lista de direcciones IP que deseemos autorizar para conectad.
Opciones avanzadas
Desde esta pantalla se permite configurar varias opciones:
- De esta pestaña quizás lo más importante es la posibilidad de activar la conexión por interfaz (por ejemplo puede desearse que todas las conexiones PPP o VPN estén protegidas por el firewall por defecto, mientras que la conexión de LAN que sólo utilizamos en la oficina no).
- El registro de seguridad nos permite especificar un archivo donde se registrarán los eventos que produzca el firewall (paquetes descartados, conexiones recibidas, etc) y limitar el tamaño del mismos.
- Bajo la opción ICMP permite permitir la entrada de ciertos paquetes ICMP. Convendría dejar pasar aquellos que permiten el cálculo de MTU, concretamente el que se envía cuando un router no puede fragmentar los paquetes, porque en caso contrario pueden presentarse problemas de conectividad
- La opción Configuración predeterminada permite restaurar los valores por defecto.
El firewall en un dominio de directorio activo
El firewall se puede configurar a través de una GPO o bien a través de las políticas locales. Existen dos perfiles cuando se configura de esta manera:- Perfil estándar: Este el perfil que aplica el sistema cuando no puede determinar que está en una red administrada a través de diretorio activo (dominio)
- Perfil de dominio: Este perfil se activa cuando el sistema detecta que está conectado a una red de de directorio activo.
- Si el sistema no está conectado a una red de dominio, de existir un perfil, usaría el estándar - se puede aplicar un perfil estándar a través del de las políticas locales gpedit.msc.
- Si coincide la información de DNS de la conexión de red (que no sea una conexión PPP o SLIP) con la que está almacenada en el registro tras la última actualización de políticas, el sistema considera que está conectado a una red manejada a través de directorio activo, y si está definido, empleará el perfil de dominio. En caso de que no coincididan, el sistema considerará que está conectado a una red no manejada, y por tanto, de estar definido, usaría el perfil estándar.
Pueden controlarse varios parámetros a través de la política de dominio. Para acceder a las mismas hay que ir a Plantillas Administrativas, Red, Conexiones de Red, Firewall de Windows.
¿Qué falta en el post?
Hay varios puntos que me faltan por tratar en el post, y que espero ir poco a poco actualizando:- Como manejar el firewall a través del API que ofrece Windows.
- Como manejar el firewall a través del comando netsh.
- Una explicación más técnica de donde está el firewall,de que servicios depende y cómo se implementan las políticas.
- Las políticas que se pueden configurar a través de una GPO.
- La relación del firewall de Windows con los diferentes sistemas.
Referencias
- Using Windows Firewall
- Understanding Windows Firewall
- Descripción del Servidor de seguridad de conexión a Internet de Windows XP
- Deploying Windows Firewall Settings for Microsoft Windows XP with Service Pack 2
- Deploying Windows Firewall Settings With Group Policy
- How Windows Firewall Works
- Customozing Windows Firewall
- Manually Configuring Windows Firewall in Windows XP Service Pack 2
jueves, abril 10, 2008
Tecnología Intel vPro: Mejor virtualización pero también más DRM y control de contenidos
No longer will a device under the control of one VM be able to access another VM's memory space because the IOMMU knows which regions of physical memory correspond to which VM, and it can block or grant access to those regions based on the source of the I/O request.
DRM: El control de lo que puedes ejecutar en tu propia plataforma
¿Y que tiene que ver todo esta tecnología con el control de lo que puedes ejecutar en el PC?. Pues supongamos que tengamos un hypervisor que sólo se arranca si puede comprobarse que no ha sido modificado. El chip TPM puede hacer que toda la cadena de programas que se ejecuten, desde la BIOS hasta el reproductor de vídeo esté protegido por una firma criptográfica, ejecutándose todo el sistema en un entorno en el que se pueda confiar.Ahora, si le añadimos las extensiones virtuales, pueden protegerse estas zonas de memoria de cualquier otro tipo de acceso, ya sea por otras máquinas virtuales, ya sea por binarios modificados del sistema.La IOMMU puede proteger el acceso a nivel de página de esta información y de borrar la información de la memoria usada una vez que ha sido liberada. Aunque se vende como un sistema de gestión ideal para la empresa, hay que tener esta cara oculta que presenta la tecnología.
Por cierto, ya hay IDS implementados como hypervisores como el Virtual Security Solution de Syamantec.
Por último este párrafo del artículo:
the NSA and the U.S. Army now rely on technology from the Trusted Computing Group, with the Army mandating the same TPM v1.2 modules that form the basis of vPro in all of its computers for network security reasons. This being the case, many folks, myself included, look at "trusted computing" technologies and wonder how the federal government allows them to proceed to market absent the export controls that are typical of strong encryption and so-called "dual-use" technologies that could have potential military applications. But that's a topic for another day.A lo mejor, hay alguna puerta trasera que desconocemos ....
Referencias
IBM Power 959 y CMT SPARC Enterprise
Para empezar en OSNews hablan de la presentación del IBM Power 595 con la CPU Power6 hasta 5 Ghz. Las especificaciones del Power 595 son de las que quitan el hipo: hasta 64 cores Power6 a 5 Ghz, con 4 TeraBytes de RAM máximo, hasta 30 cajones para entrada y salida, 20 PCI-X slots adaptadores por armario, con un máximo de 600 por sistemas. Curiosamente, necesita una instalación especial para el sistema de refrigeración y pesa más de una tonelada.. Sun por otra parte ha presentado el CMT SPARC Enterprise T5140 y T5240, que tienen dos CPU UltraSparc T2+ con 64 hilos de ejecución cada uno de ellos.
Es interesante la visión de las aplicaciones que pueden ejecutarse en estos sistemas. El IBM recuerda a las aplicaciones clásicas de host, aunque supongo que a día de hoy lo que apuestan es por la virtualización (como la iniciativa PHANTOM en la que está trabajando).He tenido la impresión - no sé si equivocada o no -, que en IBM hay una cierta esquizofrenia: por un lado hay divisiones que siguen desarrollando los sistemas parecidos a los antiguos hosts y minis, a los cuales se le han añadido con calzador la posibilidad de ejecutar entornos POSIX (aunque el Power 959 lo que ejecuta es AIX).Y sobre todo, es interesante comparar estos ordenadores diseñados y pensados para consolidar con respecto a la técnica que ha usado Google para crear su cluster de aplicaciones que le permite usar hardware barato frente a estos bichos, aunque son usados en dominios de solución de problemas diferentes.
miércoles, abril 09, 2008
Google App Engine
Python
El SDK actualmente publicado usa el lenguaje Python, en su versión 2.5, y viene acompañado de una serie de librerías que proporcionan API para acceder a varios de los servicios de Google. En el runtime de Python que proporciona Google no están activados todos los módulos estándar de Python (ver lista de módulos que están disponibles en el entorno. También está limitado el uso de aquellas clases y funciones que acceden directamente a disco.En un futuro el SDK parece ser que estará disponible para otros lenguajes de programación.
API que aporta
Google aporta una serie de API que permite acceder a las facilidades de almacenamiento que tiene implementadado Google (BitTable, GFS), acceso a los servicios de autentificación o a servicios que permiten comunicarse por http con otros sistemas.Lo más interesante es poder acceder a las ingentes cantidades de almacenamiento de Google implementados a través de Google Filesystem y bigtable. Google se encargará de todo el trabajo de replicación, backup, alta disponibilidad, etc.
Arquitectura
He estado leyendo por encima las secciones de Getting Started para informarme del entorno de ejecución de las aplicaciones. Éstas se ejecutan usando la interfaz CGI y el SDK trae un servidor web que emula el entorno de ejecución que se va encontrar cuando esté en los servidores de Google. Una vez desarrollada la aplicación en local, con un comando se sube la aplicación a las granjas de servidores de Google.Esta estructura de aplicaciones permite implementar fácilmente la escalabilidad y redundancia que hace a Google puntero, usando servidores baratos y gestionándolos con un pequeño equipo de personas, sin pérdidas de servicio en caso de averías. El desarrollador se olvida de todo tipo de efectos colaterales que puede tener una aplicación corriendo en entorno compartido y de la necesidad de implementar mecanismos de contención y sincronización entre nodos de clustes: todo lo provee Google, y esta es la gran ventaja que actualmente tiene frente a los competidores y lo que le ha permitido crecer.
Tiene un sistema de plantillas muy influenciado por otros frameworks Pythone xistentes, en especial django y un sistema para poder almacenar ficheros estáticos y poder servirlos obteniendo sus contenidos desde los sistemas de almacenamiento de base de datos.
Por último hablar del sistema de acceso a base de datos muy influenciado también por el framework de Django, el cual usa un sistema de consulta similar a SQL que denominan GQL, puesto que el sistema de base de datos no es relacional.
Términos de servicios
Las aplicaciones aparecerán como aplicacion-id.appspot.com, y en principio tiene 500MB de almacenamiento, acceso a una determinada cantidad de ciclos de CPU para usar y de momento de manera gratuito - o lo que es probable, tendrá una versión gratuita y otra de pago con acceso a muchos más recursos de almacenamiento y ciclos de CPU (ver los términos de servicio) y no olvidar este detalle:4.1. Subject to Section 12 of the Terms, the Service is provided to you without charge for up to 500MB of disk storage, 10GB incoming bandwidth per day, 10GB outgoing bandwidth per day, 200 million megacycles of CPU per day and 2,000 emails per day. These quotas will be know as the “Fee Threshold”. Google reserves the right to change this quota at its discretion.
Comentarios
Siempre he estado trabajando en la zona de sistemas de los desarrollos web, y un framework de este tipo presente una serie de ventajas tanto para desarrolladores como para administradores de sistemas:- No tienes que preocuparte que tus aplicaciones están desarrolladas en cluster: Cuando se tiene una aplicación web que se diseño y pensó para correr en un solo servidor web, cuando se salta a una granja de servidores y se usa balanceadores puede surgir toda una serie de problemáticas debido a que las aplicaciones no fueron pensadas para ejecutarse en cluster.
- Tienes una escalabilidad bestial. Google pensó todo este sistema pare disponer cantidades ingentes de fuerza de proceso y almacenamiento que fuera fácilmente ampliable añadiendo servidores baratos, y que además pudiesen ser mantenidos y monitorizados por un número reducido de técnicos. Ahora se pone a disposición de un público más general esta arquitectura.
- No tienes problemas de aplicaciones compartidas - y quien se las haya visto con el IIS 5.0 y los nivels de aislamiento medio sabe a qué me refiero -. Si una aplicación casca, el resto del sistema no tiene porqué irse por delante. Es más, al ser todo distribuido se tiene sistemas de migración automática de las aplicaciones por los servidores de la granja.
- Entre las cosas malas habrá que decir que estás poniendo todos los huevos de tu aplicación en una cesta, y por supuesto, Google cobrará por aquellas aplicaciones que tengan éxito. Aparte Amazon Web Services no hay ahora mismo nada en el mercado que se le parezca.
Referencia
- Google App Engine Articles
- AppGallery
- App Engine: Host Your Apps with Google
- Batteries sold separately
Technorati Tags: google
Una cambio de comportamiento del gcc elimina chequeos de seguridad
char *buf; int len; len = 1 << 30; if (buf+len < buf){ Overflow }La verificación anterior el gcc la optimiza y desaparece del código generado. La construcción anterior es correcta en C, pero hay que decir que esto es un cambio de comportamiento que se ha producido en el gcc. Puede encontrarse más información en este enlace
Microsoft publica los protocolos que utiliza Office 20007
Microsoft ha publicado un pliego sobre las patentes y los desarrollos de fuentes abiertas. Según se desprende de la lectura del pliego, Microsoft en principio no va a pedir royalties a los desarrolladores opensource siempre que no lo distribuyas comercialmente
If You engage in the commercial distribution or importation of software derived from an open source project or if You make or use such software outside the scope of creating such software code, You do not benefit from this promise for such distribution or for these other activitiesLos protocolos incluidos en estas publicaciones son varios Microsoft Office Protocols, SharePoint Products and Technologies Protocols y Exchange Server Protocols.
martes, abril 08, 2008
Librerias en Objetive-C para acceder a los servicios de datos de Google
Technorati Tags: macosx
lunes, abril 07, 2008
¿Gmail cortado en algunas soluciones antispam?
El tema de las medidas antispam es algo delicado, puesto que hay empresas donde los porcentajes de SPAM recibidos suponen un altísimo tanto por ciento del correo recibido, y que causa una pérdida de tiempo en intervención manual a la hora de limpiar el correo de los buzones de entrada.
Los spammer siempre han buscado la manera de romper los accesos a los sitios que ofrecen cuentas de correo gratuita para poder usar una dirección legítima desde donde puedan enviar sus anuncios. Si existe alguna manera automática de generar direcciones de correos legítimas con ayuda de un script, la labor de los spammers se ve facilita enormemente. Para eso se usan los sistemas basados en CAPTCHAS: aquellos que intentan comprobar que la persona que está accediendo a un servicio es una persona y no un script. Cuando el sistema que funciona correctamente, es muy fácil localizar que la cuenta de correo responsable del envío, pero sin embargo, roto el sistema de captchas, pueden usarse scripts de creación de cuentas para mandar
El problema es que cuando empiezan a caer estos sistemas de aquellos sitios que tienen cierta reputación como Gmail o Yahoo, porque si los servidores de correo salientes de los mismos empiezan a ser bloqueados o ralentizados por los sistemas antispam, mucha gente que usa estos sistemas de correo de manera legítima empiezan a verse afectados.
Technorati Tags: google
viernes, abril 04, 2008
Encriptación de particiones en Linux
El sistema mapea una partición protegida y encriptada de manera transparente como un dispositivo de bloques sobre el cual se puede usar las herramientas habituales de manejo de particiones (mkfs, mount, etc). El mapeo aparece bajo el directorio /dev/mapper/nombre, donde nombre es una etiqueta que se va a asociar a dicho mapeo.
Por poner un ejemplo. Supongamos que /dev/hda3 es una partición encriptada con el algoritmo AES.Se quiere montar la partición a la que supongo que está ya encriptada y formateada:
cryptsetup -c aes -y create /dev/hda3 homeLa etiqueta que hemos usado en este caso es home. La partición desencriptada aparecerá en /dev/mapper/home y la podremos usar como una partición normal, excepto que todo el acceso a la misma encriptará para escribir o desencriptará los datos de manera transparente al usuario.
mount -t ext3 /dev/mapper/home /media/homecrypt
Para desmontar la partición y borrar el mapping los pasos a dar serían:
umount /media/mapper/homeSi se quiere preparar una partición de disco para poder ser usada por la infraesrtructura de cifrado, y formatearla con el uso de ext3 los pasos a dar son los serían los siguientes (ojo, las siguientes órdenes borrarán todos los datos de la partición).
cryptsetup remove home
cryptsetup -y -c aes luksFormat /dev/hda3
cryptsetup -c aes -y create /dev/hda3 home
mkfs -t ext3 /dev/mapper/home
mount -t ext3 /dev/mapper/home /media/homecrypt
Usando ficheros de imágenes encriptadas
A veces lo ideal no es usar una partición física de disco, sino poder usar un fichero de imagen, que queremos que esté encriptado y que nos aparezca en el sistema como otro disco más. Para ello aprovechamos el soporte de dispositivos loop que ofrece Linux, para montar un fichero y que aparezca en el sistema como si fuese un dispositivo de bloques. Si queremos crear un fichero de 100MB encriptado:dd if=/dev/zero of=filesystem.crypt count=512MNo olvidar desmontar la partición y desactivar el mapeo del sistema de criptografía una vez dejado de usar.
losetup /dev/loop0 filesystem.crypt
cryptsetup -y -c aes luskFormat /dev/loop0 cryptsetup -c aes -y create /dev/loop0 home mkfs -t ext3 /dev/mapper/home mount -t ext3 /dev/mapper/home /media/homecrypt
Problemas de la solución
El primer problema claro que le veo a esta solución es que necesitas permisos de administrador para poder ejecutar el conjunto de órdenes anteriores. Para mi gusto cfs que permitía sin ningún problema usar directorios encriptados por cada usuario. Tengo que mirar como se integran con KDE o GNOME este tipo de herramientas para que permitan un uso transparente del dispositivo, y en especial si es posible usar el automounter para que lo haga de manera autimática (por ejemplo el directorio ~/almacen de mi $HOME, automáticamente se monte un fichero encriptado)Referencias
miércoles, abril 02, 2008
Proxies, Proxies, Proxies o túneles para todos los gustos
En rojo está pintado las peticiones del cliente, en verde las respuestas del proxy y en azul el tráfico que genera el proxy con el exterior.
El PC del sufrido usuario suele estar detrás de un firewall que evita su conexión a Internet, y los navegadores se comunican con el exterior a través de un proxy, habitualmente este proxy permite la navegación sólo en conexiones http al puerto 80 y en conexiones https al puerto 443.
En el esquema anterior, si se tiene suerte, puede haber usuarios que puedan acceder a ciertas direcciones exteriores a través de técnicas de NAT implantadas en el firewall.
¿Y si queremos acceder a algún sitio, por el motivo que sea?. La solición más fácil suele ser usar un salto a través de una máquina que esté corriendo un servidore ssh.A día de hoy, es algo muy sencillo de montar en casa con una distribución Linux, y usar un cliente ssh como putty. Putty permite el uso de servidores proxy http, y por tanto permitirá la conexión contra una máquina situada en el exterior.
Sin embargo, aquí empiezan algunos problemas: no solemos disponer de direcciones IP públicas, normalmentem, si los proxy está bien configurados sólo dejarán conectar al puerto 443 usando el método CONNECT, y el servidor ssh suele estar escuchando en el puerto 22, y por último es posible que el proxy esté utilizando autentificación NTLM, con lo cual, el putty no podrá usarlo. Veamos como resolver cada uno de esos problemas.
Solucionar los problemas de IP dinámica
Lo más sencillo en este caso es usar algún proveedor de DNS dinámicos. Suelo usar sin ningún problema DynDNS, el cual tiene clientes para todas las plataformas. Se configurará para que averigüe la dirección IP conectándose a una página web. De esta manera, como es probable qu en casa tengamos un ADSL con los ordenadores colocados detrás NATeados, será capaz de averiguar cual es la IP pública que tiene asignada el ADSL.En el caso de que la dirección IP pública sea fija, es tan sencillo como crear las correspondientes entradas en el registro de DynDNS, sin necesidad de usar ningún cliente.
Escuchar en el puerto 443
Como medida de seguridad, la mayoría de los proxies que están configurarados en las empresas no permiten usar el métido CONNECT a un puerto distinto del 443 (que equivale al https). Por eso, es mucho mejor poner el servidor ssh a escuchar en ese puerto (aparte del 22 si se quiere) y en el esquema que se está usando para implantar esta solución, traducir la conexión hacía el puerto 443. De esta manera, saltaremos la restricción de puerto que suele estar activada en el proxy.Configuración del Proxy en el Putty
Ya se use con el proxy ntlmaps o bien con el proxy de la empresa, hay que configurar el tipo de proxy que se va usar. Si arrancamos Putty y nos vamos a Connection->Proxy, se nos mostrará la siguiente pantalla. Es raro que nos encontremos en una empresa un proxy socks4 (porque suele significar acceso libre free for all sin necesidad de autentificación por parte de un usuario). Un proxy socks5, si podrá usar autentificación. Sin embargo, lo más normal que nos encontremos sea un proxy http, y será el que se use normalmente.Lo único que habrá que hacer en este caso es marcar el Proxy type como HTTP, introducir en el cuadro de texto Proxy hostname la dirección o nombre DNS de la máquina donde está el proxy que se va a usar, en Port el puerto donde está escuchando el proxy, y si este necesita usuario y password se introduce en los campos Username y Password.
Autentificación NTLM
Esta es la parte más problemática que suele encontrarse un usuario en entornos Microsoft. Si se ha desplegado un servidor ISA server, lo más normal es que utilice el sistema no estándar de autentificación NTLM, para evitar tener que introducir las credenciales del usuario al navegar por Internet. Aunque la mayoría de los navegadores actuales como Firefox o Safari pueden usarlo sin ningún problema, no ocurre lo mismo de otras herramientas que pueden usar un proxy http, pero que no entienden dicho esquema de autenficación no estándar.La idea es usar un proxy local, que será el encargado de recibir las peticiones del programa que lo necesite, se autentifique contra el ISA server usando el esquema NTLM y posteriormente le pase la petición que ha recibido (proxy chaining, o encadenamiento de proxies). Un programa ideal para esta función es ntlmaps (NTLM Authorization Proxy Server), escrito en Python, y por tanto con un alto grado de portabilidad - sólo es necesario instalar el intérprete Python en la máquina.
La configuración del programa es sencilla. Se descomprime el fichero y en el directorio donde se descomprime está el fichero server.cfg donde se introducen los parámetros de configuración. Lo más relevante son:
LISTEN_PORT: 8500 # Puerto local donde escuchará el servidio. En este ejemplo 8500.Dejando el resto de los parámetros por defecto.
PAREN_PROXY: proxy.padre.empresa.int # Dirección o nombre DNS del proxy al que le mandaremos las peticiones
PARENT_PROXY_PORT: 80 # Puerto del proxy padre, aquí por ejemplo 80
NT_DOMAIN: DOMINIONT # Nombre del dominio NT en el que nos encontramos.
USER: usuario # Nombre del usuario que se va a usar
PASSWORD: password # Contraseña del usuario especificado en USER
Referencias
martes, abril 01, 2008
¿Quién está usando ADA actualmente?
Technorati Tags: ada
SR-71 Blackbird
Este avión de reconocimiento nació de Skuns Works la sección de Lockheed Martin dedicada a proyectos secretos. El padre de muchos de sus conceptos de diseño fue Clarence Jonhson, el lider de la sección, implicado entre otros diseños del avión espía U2 o del F-117. El diseño del SR-71 evolucionó desde los diseños del YF-12A y A-12, siendo un avión de reconocimiento diseñado para volar a Mach 3.2 y a unos 85000 pies de altura. Algunos hechos interesantes de este avión son:
- El fuselaje está hecho de titanio, comprado a la Unión Soviética, precisamente el país que se tuvo en mente espiar cuando se diseño.
- El motor J-58 que utiliza un combustible especial, JP-7, que tiene que encenderse con ayuda de de una reacción química, puesto que el combustible es muy poco volátil y diseñado para trabajar a las altas temperaturas que se producen al volar a Mach 3.2
- El fuselaje es corrugado y las piezas a temperatura ambiente no encajan completamente, esto sólo se produce cuando el avión alcanza las velocidades de servicio. Como consecuencia de esto, pierde combustible hasta que el calor producido en el fuselaje por el rozamiento del aire a alta velocidad lo dilata y sella las piezas.
- Los pilotos llevan trajes espaciales debido a la altura que vuela.
- Nunca ha sido derribado.