miércoles, 11 de abril de 2012

Codegear XE : Compilar sin librerías dinámicas

Hoy en un foro de C++ Builer que suelo visitar he encontrado una duda muy habitual de cualquier programador que empieza con este IDE.

Cuando genera una aplicación win32 el compilardor por defecto lo hace usando librerías dinámicas, de tal forma que ese ejecutable queda muy liviano pero no funcionará en ninguna máquina si no se adjuntan dichas librerías ( ningún Windows las trae de serie ).  El resultado es que la aplicación no se ejecuta y a cambio nos obsequia con una colección de molestos mensajes pidiendo nosecuantas librerías .bpl

Normalmente queremos generar ejecutables que funcionen de forma autónoma, por lo menos en producción. Para ello debemos modificar las siguientes opciones:

- Project > Options > C++ Linker > ( Desmarca la opción "Link with Dynamic RTL" )

- Project > Options > Packages > ( Desmarca la opción "Build with runtime packages" )


Así el ejecutable resultante aumentará de tamaño considerablemente, pero funcionará
en todas las plataformas windows sin necesidad de librerías especiales de builder.

martes, 10 de abril de 2012

Restringir puertos por ip en linux

Una de las principales cuestiones cuando administras un servidor web basado
en linux es discriminar accesos a puertos para establecer una política
de seguridad adecuada.

Muchas veces necesitamos discriminar accesos por ip. Por ejemplo, quiero
que el servicio MySQL (normalmente puerto 3306) sea accesible sólo por aplicaciones
locales pero también desde la ip de mi servidor de backups...

Hay muchas maneras de hacer esto en linux, la mas sencilla mediante iptables.
Aquí pongo un ejemplo de restricción de puerto sólo para ip local (127.0.0.1) y
para una supuesta ip de servidor de backups (sustituir con nuestra ip).

iptables -A INPUT -s {ip-servidor-backups} -p TCP --dport 3306 -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -p TCP --dport 3306 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p TCP --dport 3306 -j DROP