php+sap/r3 (parte i de iii)

5 de diciembre de 2008

-------------------------------------
php+sap/r3 (parte i de iii)
php+sap/r3 (parte ii de iii)
php+sap/r3 (parte iii de iii)
-------------------------------------

Existe una manera de hacer una aplicación Web que acceda a SAP/R3 sin tener que pagar un duro. Esto es utilizando PHP y un componente llamado saprfc. Este componente es un módulo de PHP que es capaz de hacer llamadas a funciones de SAP. Es decir, si eres programador de ABAP en SAP, puedes crear funciones que devuelvan o reciban datos vía RFC. Este módulo hace de enlace con tú aplicación web en PHP.

También es posible instalar saprfc sobre una plataforma PHP creada para Windows.

Básicamente necesitas dos cosas. Primero bajarte la última versión del saprfc y luego unas librerías llamadas "Non-unicode SAP RFCSDK for UNIX compilation" que sólo se puede bajar desde SAP. Sólo las puedes bajar de http://service.sap.com si tienes cuenta de usuario. Si eres un cliente de SAP debería tener usuario para entrar.

Empezamos la instalación en un CentOS 5.

+ Bajamos "Non-unicode SAP RFCSDK 6.20 for UNIX" que será un archivo comprimido con el nombre RFC_46-10001782.SAR. Los archivos SAR y CAR son unos archivos especiales de SAP que están comprimidos al estilo de un Zip.


Todo el soft que necesitemos se SAP esta en http://service.sap.com/swdc o "SAP software distribution center". + Ahora necesitamos el descompresor llamado SAPCAR (la última versión es la 7 para Linux IA32) que también esta disponible dentro de service.sap.com. Una vez copiado en tú servidor Linux tendrás que darle propiedades de ejecución ya que se trata de un ejecutable.


+ Creamos la carpeta /usr/sap y copiamos estos dos archivos. Ahora miramos lo que hay dentro del archivo .SAR y lo descomprimimos con la utilidad SAPCAR.

# ./SAPCAR -tvsf RFC_46-10001782.SAR
# ./SAPCAR -xvf RFC_46-10001782.SAR 

El resultado serán unas librerías compiladas dentro de una carpeta llamada rfcsdk. SAP proporciona las librerías ya compiladas, así que no tenemos el código para ver que es lo que hacen. Básicamente son las API de las llamadas RCF para SAP.

+ Antes de continuar tenemos que tener instalado las herramientas de desarrollo de C como gcc, make, libtools., etc. También tenemos que tener instalado php-devel. Si no fuera el caso las instalamos con un "yum install php-devel".

+ Descargamos la última versión del saprfc desde sourceforge en una carpeta temporal. La última versión que hay ahora es la 1.4.1. Descomprimiremos, compilaremos e instalaremos el módulo resultante dentro del la carpeta de modulos dinámicos PHP.
El hacer un módulo dinámico PHP me evita tener que recompilar todo el PHP y me mantiene apartado este módulo de todo PHP.

# tar –xzvf saprfc-1.4.1.tar.gz
# cd saprfc-1.4.1
# phpize
# ./configure
# make
# make install

Esto nos creará un nuevo módulo para PHP dentro de /usr/lib/php/modules/php_saprfc.so.

Este módulo tenemos que añadirlo al archivo de configuración de PHP en /etc/php.ini. Añadiremos la siguiente linea:

extension=php_saprfc.so

Ahora reiniciamos apache con un "service httpd restart" y comprobamos queen el archivo de log de Apache (normalmente será /var/log/httpd/error_log) no se produce ningún error al arrancar el módulo.

Si durante el arranca vemos que en log nos dice que no se encuentra la librería "libstdc++-libc6.1-1.so.2" tendremos que instalarlas con el RPM "compat-libstdc++-296-2.96-141.i386.rpm".

Nota: Existe una versión 6.40 de RFCSDK pero sólo esta para 64 bits y no para 32 bits que es lo que hemos instalado aquí.

Más informacion:
+ Master the five remote function call (RFC) types in ABAP
+ RFC en SAP/R3

nuevos juguetes

3 de diciembre de 2008

Estas últimas semanas se me han dejado caer del cielo dos nuevos juguetitos de esos que hacen poner contento a cualquier informático. El primero es el nuevo portátil ultraligero de Medion. Va de maravilla para viajar y conectarse a internet desde cualquier sitio. Tenía mis dudas de si aquello tiraría con un word, una presentación en powerpoint, un photoshop, una conexión VPN contra el trabajo y para terminar un terminal server... pues sí... la cosa tira. No es para hacer diseño y retoques con photoshop, pero tira.
Incluso estamos pensando en comprar alguno para el trabajo para hacer las presentaciones en las convenciones ya que aunque sea pequeño tiene su salida de video para conectarlo al proyector. Además con lo poco que ocupa se lleva en el equipaje de mano dentro de una fundita de neopreno.

El niño pequeño tiene: un Intel Atom de 1,6Ghz, 1Gb de RAM, 160Gb de SATA, 1,04Kg de peso con su batería, LCD de 10 pulgadas (le falta que sea crystal), webcam y wifi. La única pega que tiene es la batería de 3 celdas que se queda un poco corta. Dicen por Internet que ya está disponible una de 6 celdas por 99€. Un poco cara para los 399€ que vale el portátil en MediaMark Barcelona.


El otro juguetito el la nueva BlackBerry Storm, famosa porque ya la anuncian por la tele y deseada porque hay pocas y Vodafone las proporcionan a cuenta gotas. Es la primera Blackberry con touchpad que quiere parecerse a iPhone pero que no lo ha conseguido. La primera impresión al utilizarla es que está rota. Cuando mueves el cristal, parece que está desencajado. Lo que han hecho es que el cristal del touchpad esta flotando y cuando pulsas en el tochpad da la sensación que pulsas una techa... es decir que el cristal hace el click-click. Para lo que queremos hacer en mi empresa no va por buen camino. El teclado al ser táctil no acaba de ir fino y se equivoca muchas veces. Se nota que Blackberry no está acostumbrada hacer esta clase de dispositivos. Además parece que RIM se está poniendo las pilas porque están sacando firmwares nuevos para este cacharro.




Más información:
+ Otro con suerte que lo tiene
+ La storm es una porquería
+ La storm por dentro

los ccna no sabemos nada

2 de diciembre de 2008

Hace unas semanas enlacé un concurso tipo test de preguntas sobre CCNA en el cual se regalaban unos libros de "mis libros de networking". Se esperaba que como mínimo hubieran 5 personas que acertaran todo el cuestionario.

Pues bien, de los 538 participantes, nadie ha acertado. Así que se volverá hacer el concurso.

De puta pena para todos los que hemos participado :(... y más puta pena para los que aun no son CCNAs y se estan preparando :)

creando un floppy virtual

Hoy he encontrado uno de esos programas que me han salvado la vida. Resulta que tenia que instalar un Windows y este no reconocía los discos porque eran SATA y el CD de Windows no tenía los drivers para reconocer los discos. Existen dos soluciones. La primera es crearse el floppy con los drivers y cuando arranca la instalación pulsar F6 para cargar previamente los drives de tú unidad SATA, RAID o lo que sea. La segunda opción es crearte tú propio CD de instalación de Windows que ya incluya estos drivers. Cualquiera de las dos soluciones pasa por bajarse del fabricante los drivers. En mi caso me tenía que bajar los drivers SATA de un TravelMate 5720. Además tenía otro problema, el portátil Acer no tiene floppy. Así que tendré que crear un CD de instalación que incluya estos drivers.

Una vez me bajo los drivers de SATA, lo descomprimo y lanzo el ejecutable. Maldita sea!!! Me pide que meta un floppy para formatearlo y dejar allí los drivers. ¡Pero si no tengo ninguna disquetera en toda la oficina!. ¿No pueden darnos simplemente los drivers en un zip?.
Total que he descubierto Virtual Floppy Disk for Windows. Se trata de un driver que te genera una unidad virtual, más conocida como A:\. Se trata de una aplicación libre y que no necesita ni instalación.

Una vez bajada y descomprimida, ejecutamos “vfdwin.exe”. En la pestaña “Driver”, seleccionamos “Start” y nos arranca el driver. En unos segundos nos aparece un nuevo harware que corresponde a la unidad A:\. Si miramos en el Windows Explorer veremos una nueva unidad. En esta unidad no hay ningún floppy metido. Vamos pues a meter un floppy. Lógicamente será un floppy virtual.


Seleccionamos la pestaña “Driver 0” y pulsamos “Open/Create”. Se nos abre una nueva ventana donde seleccionamos el tipo de unidad (por defecto 3’5 pulgadas) y el nombre que le queremos dar al floppy (por ejemplo floppy_drivers.bin).
Ahora ya tenemos un floppy metido en A:\. Solo nos queda formatear nuestro floppy pulsado sobre el botón “Format”.


Ya tenemos el floppy listo para utilizar con cualquier aplicación. Si arrancamos la aplicación que he comentado antes de Acer, esta me buscará la A:\ la formateará y escribirá los archivos de los drivers que necesito. Podemos ir al Explorardor de Windows y ver los archivos que hay dentro.

Para finalizar podemos pulsar “Save…” para guardar los datos en el floppy. O lo que es lo mismo guardar el floppy virtual dentro del archivo floppy_drivers.bin que hemos creado anteriormente.

el correo llega a su hora

30 de noviembre de 2008

La mejor manera de no encontrar discrepancias entre las cabeceras de los correos y los logs de los servidores por donde pasa, es tener el servidor correctamente sincronizado. Cuando tú servidor procesa un correo le añade su cabecera junto con su marca de tiempo.

Received: from mail.amperisblog.com (LHLO mail.amperisblog.com)
 (192.168.1.6) by mail.amperisblog.com with LMTP; Sun, 19 Oct 2008 19:31:11
 +0200 (CEST)
Received: by mail.amperisblog.com (Postfix, from userid 500)
 id 208951B74EE; Sun, 19 Oct 2008 19:31:11 +0200 (CEST)

En Linux la manera de sincronizar el reloj es utilizando uno de los protocolos más antiguos de Internet (se creo en 1985): el ntp. Este protocolo se basa en paquetes udp, y aun utilizando paquetes udp está especialmente diseñado para resistir el retardo entre el servidor que proporcionan la hora y el cliente que la recibe.

El ntp utiliza una variación de un algoritmo llamado “algoritmo de Marzullo” el cual intenta encontrar un intervalo de tiempo que tenga un número máximo de solapamientos con las diferentes respuestas de los servidores de tiempo. Para entendernos mejor, lo que hace es hacer una especie de “media matemática” de entre todas las respuestas de tiempo que recibe. Siempre teniendo en cuenta las latencias de la red. Aquí tenéis unas transparencias interesantes sobre la problemática de la sincronización de los sistemas informáticos.

Si un reloj de un sistema (en nuestro caso el servidor de correo) es incorrecto, lo que hace ntp es desacelerarlo o acelerarlo hasta llegar a la hora correcta. El reloj nunca se atrasa en un sistema informático, en todo caso se desacelera. No esperes que tú reloj tenga la hora correcta nada más arrancar el cliente de ntp.

Todos los sistemas tienen implementado ntp y este es el caso de Linux. En mi caso el servidor de correo está en Fedora.

Lo primero que vamos hacer es asegurarnos de tener todo lo necesario. Normalmente ya lo tendremos instalado. Si no es así hacemos un “yum install ntp”:
# rpm –q –a | grep ntp
ntp-4.2.4p0-2.fc7

Ahora haremos una configuración manual de nuestro reloj. Cuando decimos reloj me refiero tanto a la fecha como a la hora.
Lo primero que haremos es seleccionar correctamente nuestra zona horaria basada en una escala de UTC. Como en España somos más chulos que nadie tenemos dos alternativas: la UTC+1 (o CET Central European Time) y UTC+2 en verano (CEST Central European Summer Time).

En sistemas basados en redhat podemos utilizar el comando "system-config-date" para seleccionar nuestra zona horaria. En mi caso “European/Madrid” con UTC.

Ahora ponemos manualmente nuestra fecha y hora. Son las 18:12 del 30 de noviembre del 2008:
# date -s "30 nov 2008 18:12:00"
Sun Nov 30 18:12:00 CET 2008

Le llega el turno al ntp. Lo primero que voy hacer es ver si soy capaz desde mi servidor de correo conectarme a un servidor de tiempo. Por ejemplo “clock.redhat.com”.
# ntpq –p clock.redhat.com
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*HOPF_S(0)       .CDMA.           0 l    -   16  377    0.000    0.003   0.015

Si por cualquier motivo nos diera un error del tipo “request timeout” tendríamos que asegurarnos de tener abierto hacia afuera el puerto UDP 123 pues es donde debe conectarse el cliente ntp.

Ahora que parece que todo está correcto podemos lanzar la primera sincronización contra un servidor de tiempo. Utilizamos ntpdate para forzar una sincronización:
# ntpdate clock.redhat.com
30 Nov 18:34:45 ntpdate[534]: adjust time server 66.187.233.4 offset 0.038592 sec

Como último paso podemos lazar el demonio ntp para que nuestro servidor de correo se sincronice automáticamente el solito:
# service ntpd start
Starting ntpd:                                             [  OK  ]

El archivo de configuración de ntp se encuentra dentro de /etc/ntpd.conf. Si lo editamos veremos que el parámetro más importante es “server”. En el se especifican los servidores a los que se les preguntará el tiempo.
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.fedora.pool.ntp.org dynamic
server 1.fedora.pool.ntp.org dynamic
server 2.fedora.pool.ntp.org dynamic

Como veis, se utiliza una lista de servidores pertenecientes al “NPT pool project” el cual recopila servidores de tiempo repartidos por el mundo. A estos servidores se les conoce como servidores de estrato 1. En el estrato 0 se encuentran directamente los relojes GPS o WWV.

Como yo soy de España, hago honor a mi tierra y utilizo mis servidores más cercanos. Para ello editamos /etc/ntpd.conf, borramos todos los servers que encontremos y ponemos estos otros tal como nos indica el “NTP pool Project”:
server 3.es.pool.ntp.org
server 3.europe.pool.ntp.org
server 2.europe.pool.ntp.org

Más información:
+ NTP en Wikipedia
+ El padre del NTP
+ Procolo oficial: NTP
+ The Tuxgraphics AVR NTP clock

SEAT (Search Engine Assessment Tool)

25 de noviembre de 2008

Acabo de conocer una aplicación de seguridad que se llama SEAT (de Peter Kacherginsky) y que permite buscar vulnerabilidades web según unas bases de datos establecidas. Estas son: GHDB, NIKTO, GSDB, etc. La más conocida es la GHDB o Google Hacking Data Base. En esta recopilación de problemas podemos encontrar desde paginas de administración mal protegidas de impresoras, gateways o webcams, hasta archivos con contraseñas accesibles desde una url.

Su funcionamiento se basa en la búsqueda por diferentes motores (Google, MSN, Yahoo...) y en la comparación de la url cacheada con la base de datos con las vulnerabilidades.

El programa tiene tres pestañas. En la pestaña "Preparation" le ponemos el dominio que queremos inspeccionar y cargamos también la batería de vulnerabilidades, por ejemplo GHDB. La siguiente pestaña llamada "Execution" le decimos en que buscadores queremos buscar, por ejemplo Google. Finalmente pulsamos el botón "Execute" y en la pestaña "Analysis" encontramos todas las coincidencias que ha encontrado.
La verdad es que es muy fácil de manejar y puede hacer mucho daño a un programador o administrador descuidado.

También es posible crear tú propios filtros de búsquedas de vulnerabilidades o simplemente olvidarse de un dominio en concreto y buscar directamente por todo Internet con solo buscar con el parámetros _GLOBAL.

Aquí tenéis un pantallazo de varias búsquedas que he realizado utilizando un filtro hecho a mano:


En el ejemplo anterior intento buscar primero en el dominio upc.es todos los subdominios que tiene (_BLANK) y luego tres posibles vulnerabilidades. Como seguramente no encuentre nada podemos pasar del dominio y buscar directamente por todo Internet con el parámetro _GLOBAL (consultar la documentación del programa).

También es posible añadir nuevos buscadores o modificar los que ya existen. Utilizando técnicas de expresiones regulares y xpath podemos recorrer el html del buscador y encontrar el numero de resultados y todas las búsquedas.

Para finalizar os dejo unos enlaces a los videos oficiales que son más didácticos que esta introducción.

+ Simple single target scan
+ Mine domain names
+ Scan a range of IP addresses
+ Scan a target using a vulnerability database
+ Create a custom vulnerability database
+ Create new search engine signature

El programa aun es muy nuevo y le falta arreglar algunas cosillas con algunos buscadores que no van del todo bien.

PD: por muchas tools gráficas que hagan no hay nada mejor que utilizar la técnica original. Hay muchos programadores que utilizan sus editores de texto para modificar sus fuentes directamente en el server. Algunas veces estos editores generan un backup con extensión .bak y al hacer búsquedas del estilo inurl:login.php.bak podemos encontrar cosas "curiosas". Aquí tenéis un ejemplo real de un descuidado programador que nos deja ver todo el código de logeo de su aplicación y tambien este otro.

Más información:
+ SEAT 0.2.tar.bz2
+ La documentación de SEAT

por fín llegó el 19N

19 de noviembre de 2008

Me he pedido la mañana libre y la verdad es que no me lo hubiera perdido. Ha sido muy emocionante ver a un montón de informáticos gritando, pitando y haciendo una sentada en media de la Gran Vía de Barcelona, vamos que he disfrutado más que un niño. Aquí tenéis una recopilación de las mejores fotos y en el siguiente enlace todas las fotos que he hecho.

Todas las fotos del 19N.

Hemos estado en: La Vanguardia, El Mundo, Vilaweb, Tv3

Por una informática digna ya!!!



Para que luego digan que solo hay tíos feos en informática:



Y para terminar un remake que he encontrado en youtube:



cómo poner mi dirección de correo en una web y que no me la roben

18 de noviembre de 2008

bDesde siempre se sabe que los spammers rastrean las webs en busca de direcciones de correo ya sean visibles o ocultas dentro del código html. En mi empresa hay cinco direcciones de correo publicadas en la web y ninguna de ellas está protegida para que no sea robada… yo no me encargo de la web… :)… pero sí del correo :(

Estas son técnicas para evitar los robots y las búsquedas de direcciones de correos basadas en expresiones regulares.

+ El primer ejemplo es el más sencillo. Basta con añadir caracteres dentro de la dirección de correo para evitar que la expresión regular de búsqueda reconozca la dirección de correo.

Si nuestra dirección es pablito@miempresa.com la cambiaríamos por pablito[arroba]miempresa[punto]com

Variantes como esta es cambiar toda la dirección de correo por una imagen que contenga la dirección de correo o más simplemente poner una imagen con la letra @. En el primer caso tendríamos “<img src=micorreo.gif>” y con el segundo ejemplo tendríamos algo como “pablito<img src=letraarroba.gif>miempresa.com”.

+ Otra manera es convertir la dirección de correo en caracteres hexadecimales. Por ejemplo en vez de escribir pablito@miempresa.com escribiríamos estos cararacteres en hexadecimal

&#x70;&#x61;&#x62;&#x6C;&#x69;&#x74;&#x6F;&#x40;&#x6D;&#x69;&#x65;&#x6D;&#x70;&#x72;&#x65;&#x73;
&#x61;&#x2E;&#x63;&#x6F;&#x6D;

Ver el alfabeto ascii en hexadecimal.

+ El último método más laborioso es ocultar la dirección de correo dentro de código javascript:

<script> 
function micorreo (usurio, dominio){ 
   document.write("<a href='mailto:" + usurio+"@"+dominio + "'>" + usurio+
                  "@"+dominio + "</a>") 
} 
</script> 

<body>
<script>micorreo("pablito","miempresa.com");</script>
</body>


ver el contenido de los mensajes en un cola postfix

17 de noviembre de 2008


¿Una de colas?

Existen dos comandos de Postfix que nos permiten ver el contenido de los mensajes cuando estan en la cola. Estos dos comandos son: postqueue y postcat.

Con el primer comando y el parámetro "-p" podemos montrar un listado de los mensajes que hay en la cola junto con el ID de mensaje que necesitaremos para el siguiente comando. Por último por el comando postcat y el parámetro "-q" podemos ver el contenido de un mensaje identificado por su ID.

Veamos un ejemplo:

[root@zimbra sbin]# ./postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
487D468268  5690132 Mon Nov 17 09:26:52  xxx@miempresa.com
                 (connect to hotmeil.com[65.74.156.180]: Connection timed out)
                                         mprieto59@hotmeil.com

4F2E26826C     8846 Mon Nov 17 10:09:55  yyy@miempresa.com
(Host or domain name not found. Name service error for name=pgigrupbcn.com type=MX: 
Host not found, try again)
                                         rrr@pgigrupbcn.com

3D4BE6826B   145071 Mon Nov 17 09:56:57  zzz@miempresa.com
(Host or domain name not found. Name service error for name=pgigrupbcn.com type=MX:
 Host not found, try again)
                                         rrr@pgigrupbcn.com

-- 5710 Kbytes in 3 Requests.

[root@zimbra sbin]# ./postcat -q 487D468268 > mail.txt

Dentro del archivo de texto mail.txt tenemos el mensaje que buscamos junto con su cabecera y cuerpo.

¿Es legal ver estos correos?

bloquear ultrasurf

15 de noviembre de 2008

Llevo dos días dándole vueltas a ultrasurf y la manera de cómo bloquearlo. Para quien no lo sepa ultrasurf es una aplicación que te permite navegar anónimamente por Internet basándose en la conexión de múltiples proxys anónimos que corren por Internet. Grácias a Arturo Jara por hacerme llegar la aplicación.


El método de funcionamiento es el siguiente. Una vez arrancado el programa este se conecta por Internet (he contado más de 100 direcciones IPs diferentes) a diferentes proxys anónimos a través de una conexión SSL. El programa se queda residente en 127.0.0.1 y abre el puerto 9666. En este momento esta tool funciona como Proxy interno y modifica el Internet Explorer para que utilice el Proxy en 127.0.0.1:9666. Cuando la petición de URL llega a ultrasurf por 127.0.0.1:9666 esta la manda a uno de los muchísimos proxys anónimos que tiene bajo SSL.

De cara a la persona que utiliza esta aplicación le permite hacer bypass del firewall y de los filtros web que pueda tener tú squid en la red. Aunque tú squid sea o no transparente este programa es capaz de saltarse esta seguridad. Se salta principalmente por dos motivos el primero es porque utiliza proxys anónimos y el segundo es que el trafico hacia estos proxys esta bajo ssl y por tanto no podemos saber que URL se estan pidiendo.

Estas son todas las cosas que he pensado.

Si tenemos control sobre las maquinas clientes (normalmente una red Windows bajo un dominio) podemos crear una política de seguridad para que no pueda ser ejecutada esta aplicación. También podríamos crear una política para que nada pudiera cambiar la configuración de Internet Explorer.

El problema viene cuando no tenemos control sobre estos equipos. Por ejemplo un grupo de portátiles que se conectan por wifi dentro de un campus. En este caso lo que haría como primera medida es poder bajarse de Internet este programa. Bloquearía la pagina de descarga. Aunque esto no sirve de mucho es la primera medida que tomaría.

Una vez hecho esto la única solución posible si no tenemos ningún control es bloquear todos los proxys públicos a los que se conecta esta aplicación. Necesitamos la lista de proxys públicos a la que se conecta. Utilizando un debugger como ollydbg no es posible obtener la lista ya que si arrancamos un sniffer vemos que la lista de proxys es dinámica y va cambiando. Así que lo que se me ocurrió es dejar el sniffer un buen rato funcionando y conseguir una lista de todas las direcciones IP de los proxys públicos a los que se conecta. Basta con hacer un windump como este:

C:\>windump –n dst port 443 > captura.txt

Aquí teneis un ejemplo de captura:

21:01:40.537222 IP 192.168.1.5.55305 > 72.25.66.87.443: S 2980566470:2980566470(0) 
 win 8192 mss 1260,nop,wscale 2,nop,nop,sackOK>
21:01:40.537620 IP 192.168.1.5.55305 > 72.25.66.87.443: S 2980566470:2980566470(0) 
 win 8192 mss 1260,nop,wscale 2,nop,nop,sackOK>
21:01:40.538108 IP 192.168.1.5.55306 > 140.211.11.140.443: S 567062490:567062490(0) 
 win 8192 mss 1260,nop,wscale 2,nop,nop,sackOK>
21:01:40.538360 IP 192.168.1.5.55306 > 140.211.11.140.443: S 567062490:567062490(0) 
 win 8192 mss 1260,nop,wscale 2,nop,nop,sackOK>
21:01:40.539182 IP 192.168.1.5.55307 > 125.225.64.91.443: S 4177901685:4177901685(0) 
 win 8192 mss 1260,nop,wscale 2,nop,nop,sackOK>
21:01:40.539553 IP 192.168.1.5.55307 > 125.225.64.91.443: S 4177901685:4177901685(0) 
 win 8192 mss 1260,nop,wscale 2,nop,nop,sackOK>
21:01:40.540003 IP 192.168.1.5.55308 > 61.233.14.206.443: S 2492978371:2492978371(0) 
 win 8192 mss 1260,nop,wscale 2,nop,nop,sackOK>
21:01:40.540241 IP 192.168.1.5.55308 > 61.233.14.206.443: S 2492978371:2492978371(0) 
 win 8192 mss 1260,nop,wscale 2,nop,nop,sackOK>

Después utilizo esta captura para crearme unas reglas para iptables y bloquear las IPs. Conseguí más de 100 direcciones IP, pero no me funcionó. Sólo conseguía que arrancara un poco más lento, pero al final conseguía conectarse contra un nuevo Proxy anónimo.

Utilicé este programa para pasar de una captura de windump a las reglas del iptables.

Vista la imposibilidad de bloquear todos los proxys habidos y por haber la única solución es cerrar todo el trafico 443. De esta forma el ultrasurf no navega. El problema es que todas las páginas legítimas que utilizan 443 tampoco funcionan. Sólo me queda añadir a mi iptables bajo demanda las direcciones IP de las páginas que utilizan 443. Si alguien no entra en una pagina SSL que habrá incidencia y que sea el administrador que añada la dirección IP de esa página SSL.
¿alguien tiene la lista completa de direcciones IP a las que se conecta ultrasurf?

Este método puede resultar una chapucería pero tiene coste 0. Si queremos gastar unos euros tenemos URLfilterDB para Squid. Lo que hace es añadir una lista de url y proxys anónimos a squid para bloquearlos. Esta aplicación es gratuita y lo que pagas realmente es la base de datos con url e ip que el programa se descarga cada día con las nuevas actualizaciones. Lo tengo instalado pero aun no me han llegado las claves de usuario para bajar la trial de 60 días.

Otro método que he encontrado es el siguiente. Dado que se establece un túnel ssl entre ultrasurf y el Proxy anónimo, rompamos este túnel y miremos lo que hay dentro para ver si la pagina que se visita es legitima o no. Esto podrá hacerse a partir de la versión 3.1 de Squid que ahora esta en beta. Esta técnica se llama squid-in-the-middle y ya se puede utilizar.
La 3.1 beta con esta técnica no la he probado, pero aunque funcione el usuario debería verse afectado ya que el certificado que cargará al conectarse por SSL a su página legitima debería dar error en el IE o Firefox.

Aquí tenéis cómo se configura esta técnica.

Para finalizar decir lo peligroso que puede llegar a ser navegar por estos proxys anónimos. ¿Quien los controla?, ¿Por qué están allí?, ¿leerías tú correo por estos proxys sin saber quien los administra?.

Más informacion:
+ Lista de proxys publicos
+ Solucuón comercial para evitar los proxys publicos
+ Trucos para acceder a paginas bloqueadas