jueves, 26 de junio de 2008

Free Software: Modelos de seguridad

Aún no hace mucho tiempo que estuve discutiendo con unos compañeros sobre los modelos de publicación del código fuente de los programas creados, desde el punto de vista de la seguridad.

Básicamente, la discusión venía porque algunos no terminaban de ver seguro la publicación pública del código. Aparentemente esto presenta varios problemas:

  1. Cualquiera puede auditar el código, y aprovecharse de las vulnerabilidades encontradas.
  2. ¿Como sacar negocio de un software que cualquiera puede compilar y utilizar?¿Quien va a pagar por lo que puede obtener gratis?
Primeramente veamos cuales son las diferentes alternativas en publicación de código fuente:

  1. Security Throw Obscurity: No publicar nada.
  2. Responsible Disclousure: Publicar tanto el código como las vulnerabilidades, pero dentro de circulos donde se le pueda sacar un provecho "positivo". Digamos que una publicación pública, pero limitada.
  3. Full Disclousure: Publicarlo a los cuatro vientos.
Mediante el método de Security Throw Obsurity, en principio, parece que el nivel de seguridad es mayor. Es el método utilizado, por ejemplo, por Micro$oft. Pero... ¿es realmente seguro?. La respuesta la sabeis ya casi todos: no. El que no publiques el código ni las vulnerabilidades no te libra ni de que los demás usen tus programas sin permiso ni de que estas vulnerabilidades sean publicadas. Está visto, a lo demás, que el hecho de que se publiquen las vulnerabilidades, acelera el proceso de corrección de estas. A lo demás, la no publicación del código puede llevar a que haya vulnerabilidades no encontradas, que algún hacker avispado pueda estar utilizando si que lo sepas. Decididamente no es el mejor método.

Responsible Disclosure: Es, sin duda, el método que ofrece más confianza. Puedes controlar, hasta cierto punto, quien accede a tu código, y evitas que individuos no deseables accedan a él sin control ninguno. Es el método de moda, por decirlo de alguna manera. Empresas como Sun Microsystems, Oracle, HP o IBM lo utilizan, ya desde hace algún tiempo, en todos sus proyectos Open Source (que cada día son más). Incluso la todo poderosa Micro$oft se está subiendo al carro.

Full disclousure: el que acceda todo el mundo es el método en el que se basaron inicialmente al crear el software libre. Linux, Open Office, Firefox o MySQL se han basado desde sus inicios en este modelo. Evidentemente han funcionado bien, sobre todo gracias a una trabajadora comunidad que ha hecho grandes progresos. Es un método que, disponiendo de grandes comunidades va bien, pero en caso de no ser un software de amplio espectro puede dar problemas. Tenedlo en cuenta.

Con respecto al modelo de negocio, habría que mirar el modelo económico de recursos gratuitos. Llevamos ya años utilizandolo con éxito, y desde luego a las empresas que lo utilizan no les va nada mal. Se basa, sobre todo en hacer bien el trabajo, y ofrecer servicios en torno al producto que se ofrece. Empresas como Red Hat, Suse, Google o incluso ahora Oracle, sacan pingües beneficios de estas prácticas. Esta claro que dinero se puede obtener. De hecho es el modelo que está triunfando a nivel mundial. El secreto del éxito se basa en poder ofrecer los mismos servicios que la competencia, a un menor coste, lo cual es evidentemente muy ventajoso.

Cada uno que saque sus conclusiones. Evidentemente cada modelo ha de usarse según las circunstancias, y no debería elegirse a la ligera. Yo, aquí dejo las opciones.

Oracle XE en Oracle Interprise Linux

Primeramente, es muy importante prestar mucha atención a los prerequisitos de instalación de Oracle XE. Hay que tener en cuenta tener libre, al menos, 1,5Gb en disco duro, y una partición Swap de, al menos, 1024Mb. Si no se cumplen estos requisitos, no se instalará.

La instalación de Oracle Interprise Linux es igual que la de cualquier distribución Red Hat.

Una vez instalado, nos bajamos de la página oficial de Oracle el fichero de instalación en rpm (Red hat Package Management): http://www.oracle.com/technology/software/products/database/xe/index.html.

En otras versiones de linux deberíamos comprobar que están instaladas algunas librerias(Agregar el repositorio (http://oss.oracle.com/), pero como nosotros disponemos del propio linux de Oracle, no nos hará falta. Vienen instaladas de serie.

Una vez descargado el rpm es hora de instalar el producto lo cual no es cosa del otro mundo porque basta con el siguiente comando:

rpm -ivh oracle-xe-10.2.0.1-0.1.i386.rpm

Entonces, si no se ha hecho caso a los prerequisitos, y no has dejado la suficiente swap, dará el siguiente error:

Preparing… ########################################### [100%]
This system does not meet the minimum requirements for swap space. Based on he amount of physical memory available on the system, Oracle Database 10g Express Edition requires 988 MB of swap space. This system has 800 MB of swap space. Configure more swap space on the system and retry the installation.
error: %pre(oracle-xe-10.2.0.1-0.1.i386) scriptlet failed, exit status 1
error: install: %pre scriptlet failed (2), skipping oracle-xe-10.2.0.1-0.1

Pues toca incrementar temporalmente el swap de Linux:

su - root
dd if=/dev/zero of=extraswap bs=1k count=900000
chmod 600 extraswap
mkswap extraswap
swapon extraswap

Para verificar que el swap se haya asignado se puede digitar el siguiente comando:

grep SwapTotal /proc/meminfo

Si luego deseas desabilitar este swap temporal :

su - root
swapoff extraswap
rm extraswap

Ahora si:

rpm -ivh oracle-xe-10.2.0.1-1.0.i386.rpm
Preparing… ########################################### [100%]
1:oracle-xe warning: /etc/init.d/oracle-xe saved as /etc/init.d/oracle-xe.rpmorig ########################################### [100%]

Executing Post-install steps…

oracle-xe 0:off 1:off 2:off 3:on 4:off 5:on 6:off
You must run ‘/etc/init.d/oracle-xe configure’ as the root user to configure the database.

Y luego ejecutamos el script de configuración:

/etc/init.d/oracle-xe configure

Oracle Database 10g Express Edition Configuration
————————————————-
This will configure on-boot properties of Oracle Database 10g Express Edition. The following questions will determine whether the database should be starting upon system boot, the ports it will use, and the passwords that will be used for database accounts. Press to accept the defaults. Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:

Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts. Note that the same password will be used for SYS and SYSTEM.
Oracle recommends the use of different passwords for each database account. This can be done after initial
configuration:

Confirm the password:

Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:n

Starting Oracle Net Listener…Done

Configuring Database…Done

Starting Oracle Database 10g Express Edition Instance…Done

Installation Completed Successfully.

To access the Database Home Page go to “http://127.0.0.1:8080/apex”

Y listo con estos pasos ya tenemos el Oracle XE y APEX en nuestro equipo.