Instalar soporte para BD Informix en Ubuntu Server 10.04 y XAMPP 1.7.4 como modulo de PHP

La instalación del PDO_INFORMIX funciono pero la experiencia con el PDO no es lo que esperaba (nunca lo había usado) así que como extraño mis connect, fetch_array y fetch_assoc, aqui les dejo como hechar a volar el modulo de Informix en PHP 5.2

Primero el ambiente:

Ubuntu Server 10.04

XAMPP for Linux 1.7.4 con su respectiva versión de desarrollo (xampp-linux-devel-1.7.4)

Despues asignamos la variable de entorno para el informix en el .profile

export INFORMIXDIR=/opt/IBM

PATH=$PATH:$INFORMIXDIR/bin

Esta debe estar seteada antes de instalar el cliente para compilar despues el modulo de informix para PHP

informix:~# export INFORMIXDIR=/opt/IBM

El cliente de informix requiere un usuario de sistema y un grupo antes de ser instalado

informix:~# addgroup –system informix

informix:~# adduser –system informix –ingroup informix

Los paquetes que debemos instalar son: default-jdk rpm make subversion

El cliente de Informix viene con una JVM pero a mi dio error al instalarlo, asi que instalar el ambiente de Java funciono bien para mi.

informix:~# apt-get install default-jdk rpm make subversion

Creamos las carpetas para instalar el cliente de Informix y php_infomix

informix:# mkdir informix_client

infomix:# mkdir php_informix

Descargamos el cliente de Informix en el directorio, hasta donde se no hay manera de realizar esto por consola, yo me registre en IBM y descargue un free trial, el paquete que use lo encontre en el serach del site de IBM como IBM Informix Client SDK V3.00.FC3 for Linux (x86) RHEL 4, 64bit

El archivo que descargue fue clientsdk.3.00.FC3DE.LINUX.tar, el cual despues pase por usb a mi Ubuntu server en el directorios de informix client.

Descomprimimos el cliente

informix:~/informix_client# tar -xvf clientsdk.3.00.FC3DE.LINUX.tar

Corremos el instaaldor del installclientsdk.

informix:~/informix_client# ./installclientsdk

Es necesario cambiar la ruta de instalacion yo utilice /opt/IBM/

De nuevo debemos aceptar un acuerdo de licencia y avanzar en el installer.

Una ves instaaldo el cliente nos movemos al directorio de php_informix.

informix:~/informix_client# cd ../php_informix

Aqui descragamos lso fuentes de php_informix desde svn.

informix:~/php_informix# svn checkout http://svn.php.net/repository/pecl/informix/trunk/

nos movemos al directorio trunk

informix:~/php_informix# cd trunk

Ahora demos configurar e instalar el modulo de Informix.

informix:~/php_informix/trunk# /opt/lampp/bin/phpize –with-php-config=/opt/lampp/bin/php-config

informix:~/php_informix/trunk# ./configure –with-php-config=/opt/lampp/bin/php-config

Antes de seguirnos de filo con el make del modulo, debemos editar el Makefile para asegurarnos que el modulo esta ligado con la libreria de Informix checkapi.o, de otra manera si usamos el modulo nos mandar error de undefined symbol: ifx_checkAPI.

Editamos el Makefile y reemplazamos el valor de la directiva INFORMIX_SHARED_LIBADD con:

-Wl,-rpath,/opt/IBM/informix/lib/esql -L/opt/IBM/informix/lib/esql -Wl,-rpath,/opt/IBM/informix/lib -L/opt/IBM/informix/lib -lifsql -lifasf -lifgen -lifos -lifgls -ldl -lcrypt /opt/IBM/lib/esql/checkapi.o -lifglx

Ahora si podemos construir e instalar el modulo Informix:

informix:~/php_informix/trunk# make && make install

Este debera de instalarse en /usr/lib/php5/20060613. Debemos verificar que este apunta correctamente a la libreria de Informix checkapi.o, parea esto usamos el comando nm , el resultado debe arrojarnos algo como:

informix:~/php_informix/trunk# nm /usr/lib/php5/20060613/informix.so | grep ifx_checkAPI

000000000000bef0 T ifx_checkAPI

Para agregar y habilitar el modulo debemos editar el archivo php.ini que se encuentra en /opt/lampp/etc/

informix:/# nano /opt/lampp/etc/php.ini

# configuration for php INFORMIX module
extension=informix.so

El valor puede ser informix.so o si les manda error traten con “informix.so”

Por supuesto para lograr una conexión aun debemos editar /opt/IBM/etc/sqlhosts, /etc/hosts, y /etc/services todos estos deben tener la configuración para apuntar al server de informix. Además es necesario setear la variable de ambiente para apache INFORMIXDIR en /etc/apache2/apache2.conf.

Configurar un hotspot con portal captivo CHILLISPOT en DEBIAN.

Para configurar este hotspot he decidido usar chillispot por su sencillez en la instalación y por lo pocos requisitos de software y configuración de la red.

Si disponemos de un Access Point y queremos que los clientes que accedan a él sean recibidos por una Web de presentación en la que ofrezcamos los servicios de nuestro NODO o información variada, podemos utilizar este software sin mayor problema, si necesitamos mas opciones podemos optar por alguno mas completo como nocat.

Cualquier petición http es redirigida por el firewall contra un script que presenta una Web de bienvenida y toda la información que queramos.

Una de las principales opciones de este software es el acceso a la red.

Se le puede configurar para permitir libre acceso a ciertos servicios y a ciertas ips. Así como no permitir accesos no deseados a otras ips.  De esta forma, podemos dejar libre acceso a desconocidos a la Web de nuestro grupo  o al servidor local pero no al resto de servicios (internet, ftp, etc.) El sistema controla en todo momento los accesos y presenta una pantalla con el estado del cliente logeado o no logeado.

Chillispot se encuentra en chillispot.org es open source y se mantiene bajo licencia GPL.

Tal y como informa en su Web, es un portal captivo para control de accesos wireless a una red LAN. Soportando WPA. Tiene binarios creados para Redhat, Febora, Debian y OpenWRT (AP). Su configuración es sencilla y permite la instalación de todo el sistema sin problemas en un mismo equipo.

A continuación explicare su instalación sobre una maquina con Debian .Para mas info,la web oficial donde aparece la documentación completa y detallada. ……….

REQUISITOS

Tal y como aparece en su Web principal, estos son los requisitos:
# Internet connection
# Wireless LAN access point
# ChilliSpot software for your PC
# Radius Server

# Web server

La conexión a Internet la vamos a limitar solo para nosotros, los propietarios del nodo y demás familia. Por lo tanto, vamos captar los equipos que acceden a nuestro NODO y presentarles una Web informativa.

– Necesitamos un S.O. Linux, en este caso, se ha instalado sobre Debian GNU/LINUX.

– Un servidor radius, en este caso, sobre freeradius, tal y como aparece en al documentación (es GPL y aparece en las sources debian)

– Un servidor web. Claramente APACHE. Necesita soporte para SSL para autenticación con el servidor radius. Podemos bien instalar el modulo ssl al apache o instalar el apache-ssl. (haremos lo segundo)

– Un punto de acceso wireless. (en este caso, el nodo funciona con un DLINK900AP+ a la intemperie)

En este caso, todos los servidores se encuentran sobre la misma maquina, pudiendo estar separados (seria lo mejor por temas de seguridad, pero no le pidamos peras al olmo )

CONFIGURACIÓN DEL OS

Deberemos tener un Debian instalado. (mas info)
descargamos el .deb de chillispot en la siguiente dirección http://www.chillispot.org/download.html –(el .deb).

Ejecutamos “apt-get install freeradius apache-ssl” configurando el apache con la configuración mínima contestando todo lo bien que queramos a las preguntas necesarias para las ssl (lugar, nombre, mail….) que aparecerán posteriormente en la info del certificado al acceder al nodo.

Instalamos también el chillispot con “dpkg -i chillispot_VERSION.deb” los archivos de chillispot se van a localizar en /etc/chilli.conf y en /usr/share/doc/chillispot/

Después copiamos hotspotlogin.cgi a nuestro sitio de cgi, /usr/lib/cgi.bin/

Podemos también editar el firewall.iptables a nuestro gusto con reglas propias (en este caso no lo tocaremos). Lo que si debemos hacer es procurar que las reglas de firewall.iptables se carguen al arranque

editamos el /etc/network/options con ip_forward=yes
reiniciamos la red con “/etc/init.d/networking restart”

y de esta parte, una cosa importante, tener configurado en el kernel el soporte para tun/tap para levantar la interface tun0 en este caso. p-t-p.

Tal como aparece en la configuración realizaremos lo siguiente:

mkdir /dev/net
mknod /dev/net/tun c 10 200 para crear el dispositivo

y ahora: añadir la siguiente linea a /etc/modules.conf  “alias char-major-10-200 tun”

luego “depmod -a ” para actualizar cambios.

Ahora, ya tenemos configurado el equipo.

FREERADIUS

Vamos a modificar la configuración del freeradius en /etc/freeradius/ :
modificamos clients.conf y cambiamos la clave de secret= …123 por una propia como por ejemplo “linuxpower”:)(no está de mas aunque sea en local)

Modificamos users para añadir los usuarios, para no dar muchas vueltas, copiemos y modifiquemos el usuario que sugiere chillispot , el usuario steve. En el pondremos nuestro propio nombre de usuario, quedando algo asi como :

clipse Auth-Type := Local, User-Password == “atitelovoyadecir”
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 172.16.3.33,
Framed-IP-Netmask = 255.255.255.0,
Framed-Routing = Broadcast-Listen,
Framed-Filter-Id = “std.ppp”,
Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP

Como se puede observar, basta con modificar user y password, para mas usuarios, copiamos lo mismo y cambiamos la IP-address

CHILLISPOT

Debemos modificar también el archivo /usr/lib/cgi-bin/hotspotlogin.cgi para personalizarlo, observaremos partes de código como las siguientes :
if (!($ENV{HTTPS} =~ /^on$/)) { print “Content-type: text/htmlnn meta http-equiv=””Pragma”” content=””no-cache””>
h1 style=”” center=””>Acceso a hotspot erroneo. , pirate zaragatas /h1> p>
NO ACEPTA ACCESOS NO AUTORIZADOS. NODO SANTOÑA/p> center> Se debe usar encriptación. /center> “; exit(0); }

Es html puro, así que podemos modificarlo a nuestro gusto con la Web que queramos, bien pegándolo en este archivo o incluyéndolo desde otro archivo, en este caso, que es poco, lo dejamos

Ahora, lo que nos queda, editar /etc/chilli.conf para que case con la clave que hemos cambiado en el servidor radius, este archivo se encuentra en el apartado de la configuración del servidor radius “radiussecret ” donde pondremos la clave del freeradius “radiussecret linuxpower”, reiniciamos /etc/init.d/freeradius restart (debemos estar atentos a los mensaje igual hace falta añadirle un -x para reiniciarlo)
/etc/init.d/chilli restart
y el apache también

(en mi caso)

/etc/init.d/apache2 restart

Si asociamos cualquier cliente al AP y le decimos que obtenga la ip automáticamente mediante dhcp, las peticiones a cualquier web nos llevarían a la Web de presentación que hemos metido en hotspotlogin.cgi (hotspotlogin almacena varias webs y solo una es la de presentación, el resto es para mensajes de error y aceptación) por defecto, las dns serán las configuradas en el servidor. Y una de las cosas que tiene de bueno (que tambien lo tiene el resto de portales captivos como el nocat ) es el poder dejar acceso a ciertas paginas sin necesidad de estar logeado, para el resto de cosas, se puede editar la configuración del firewall.iptables.

Si modificamos /etc/chilli.conf , al final del archivo :
TAG: uamallowed
# Comma separated list of domain names, IP addresses or network segments
# the client can access without first authenticating.
# Normally you do not need to uncomment this tag.
#uamallowed www.chillispot.org,10.11.12.0/24 uamallowed www.postech.com.mx,www.jpdiaz.com

Dejamos acceso libre a estas Web. Y dejaríamos a grandes rasgos configurado el sistema para cualquier petición.

FINALIZANDO

Uno de los grandes problemas del wifi, es la seguridad. Este sistema solo nos cubre de accesos no deseados, no de ser escaneados ni evitar el snifing. Tampoco de un man-in-the-middle y que nos vuelvan locos y consigan los passwords (aunque el login y pass de acceso si viaja encriptado). Deberemos entonces estar revisando periódicamente el certificado por si aparecen nuevos certificados de alguien que quiera entrar o controlar el portal. Para asegurarlo mejor, se podría configurar un proxy seguro con un squid y ssl de forma que todas las peticiones al web estén encriptadas y procurar utilizar puertos seguros para el resto… pero eso es para otro post.