Archivo de la etiqueta: HOW-TO

Configurar VPN con doble autenticación mediante certificados en Checkpoint R80.10

En este post resumo los pasos a seguir para configurar la autenticación de usuarios, mediante certificado y/o doble autenticacióm con certificado y usuario y contraseña para VPN de acceso remoto; ya sea para usuarios internos o de Active Directory (con pequeños cambios sirve para LDAP).

Sigue leyendo

Convertir una máquina GNU/Linux en un «appliance»

Un cliente me pidió que le crease unas máquinas GNU/Linux con varios programas para la monitorización y el análisis del tráfico de red. La idea era repartir varias máquinas por distintos puntos de su extensa red y vigilar durante un tiempo ese segmento.

El cliente tan solo quería varias máquinas con GNU/Linux y algunos programas instalados, que se administrasen remotamente por SSH y enviaran a un servidor splunk central las alertas de Snort. Pero a mí me pareció una ocasión ideal para explotar la flexibilidad de GNU/Linux y las cosas chulas que se pueden hacer de una forma sencilla, así que me planteé los siguientes puntos que debería cubrir la solución:

  • Los usuarios no deben conocer la contraseña de administrador
  • Debe ser factible la gestión de los programas que se instalen (esto requiere privilegios de administrador)
  • Permitir su uso por usuarios con conocimiento cero de GNU/Linux (esto quiere decir que hay que evitar la SHELL)
  • Si llega a manos de un usuario con conocimientos, no quiero que desmonte el chiringuito. Hay que limitar el acceso
  • Los datos deben estar cifrados en el disco, ya que pueden contener datos sensibles y se van a mover por la geografía estatal
  • Se deben poder configurar las tarjetas de red

Para cubrir estos requisitos hay que:

  • Proteger la BIOS y el gestor de aranque (Grub) por contraseña
  • Cifrar la mayor parte del disco duro
  • Modificar el inicio para que init no lance el proceso login
  • Crear una interfaz de uso sencillo y que no permita el acceso a la SHELL

Esto en la práctica implica transformar un GNU/Linux en una caja «tonta» que muestre un menú con las distintas acciones que se le permite realizar al usuario al arrancar la máquina, es decir en el TTy1. Además decidí mostrar el log de Snort en el TTy2.

A continuación muestro la documentación entregada al cliente en la que se explica con detalle la arquitectura. La documentación incluye, en el Anexo, un script que automatiza el proceso de configuración una vez instalado GNU/Linux.

Sigue leyendo

Recovering openvas: sql_x: sqlite3_step failed: database disk image is malformed on Ubuntu 11.10 oneiric

Last weeks I was using openvas at work, and at reporting time, it stops to work dumping the error

sql_x: sqlite3_step failed: database disk image is malformed

To the log file «/var/log/openvas/openvasmd.log» I was very concerned because there was all the data needed to write the report of 2 weeks of work and it was not possible to go to the customer’s and launch the tests again. Fortunately openvas is working with a sqlite db so these are the steps I’d follow to recover this annoying situation, as sudo run:

cd /var/lib/openvas/mgr

cp tasks.db tasks.db.back

sqlite3 tasks.db

sqlite> pragma integrity_check;

*** in database main ***
Page 46364 is never used
rowid 433 missing from index results_by_type
rowid 446 missing from index results_by_type
rowid 626 missing from index results_by_type
rowid 640 missing from index results_by_type
….

….

wrong # of entries in index report_results_by_result
wrong # of entries in index report_results_by_report

So there is a problem in the database, lets follow the sqlite db recovering procedure, that is dumping to sql file an create a new db

sqlite> .output tasks.sql

sqlite> .dump

sqlite> .exit

rm tasks.db

sqlite3 -init tasks.sql tasks2.db
— Loading resources from tasks.sql
SQLite version 3.7.7 2011-06-23 19:49:22
Enter «.help» for instructions
Enter SQL statements terminated with a «;»
sqlite> .exit

And now start openvas as usual 😉

Instalar Funambol sync client en BlackBerry

[English Below]

Estoy instalando funambol en mi android, pero no consigo que funcione por ssl aún teniendo un certificado válido, así que para descartar problemas con mi proveedor o con la combinación de Android+terminal he decidido instalar el cliente en la BB del curro. Las instrucciones son descargar el cliente de la web oficial, descomprimirlo e instalarlo con el BlackBerry Desktop Manager, todo correcto hasta el momento de instalar el cliente desde el BDM, que busca archivos alx y no hay ninguno en el directorio descargado… vaya!! ¿que diablos es un archivo alx? bueno por suerte es fácil de solucionar, el archivo alx define las propiedades y los archivos del programa que se va a instalar así que es muy fácil crearlo, con un editor de texto crear el archivo Funambol.alx con este contenido

<loader version=»1.0″>
<application id=»FunambolSync»>
<name>
Funambol Sync Client
</name>
<description>Funambol sync client</description>
<version>8.7.1</version>
<vendor>Funambol</vendor>
<fileset Java=»1.0″>
<files>Funambol_Sync_Plugin.cod</files>
<files>Funambol_Sync_Plugin_common-1.cod</files>
<files>Funambol_Sync_Plugin_common.cod</files>
<files>Funambol_Sync_Plugin_lib-1.cod</files>
<files>Funambol_Sync_Plugin_lib-2.cod</files>
<files>Funambol_Sync_Plugin_lib-3.cod</files>
<files>Funambol_Sync_Plugin_lib.cod</files>
<files>Funambol_Sync_Plugin_pim-1.cod</files>
<files>Funambol_Sync_Plugin_pim.cod</files>
<files>Funambol_Sync_Plugin_syncml-1.cod</files>
<files>Funambol_Sync_Plugin_syncml.cod</files>
</fileset>
</application>
</loader>

Tened en cuenta que los nombres de archivos y las versiones pueden variar según el desarrollo del cliente 😉

Install Funambol sync client into BlackBerry

I’m trying to install Funambol on my Android device but it fails to communicate by ssl, even with a trusted certificate, to discard problems with my provider or with the combination of Android+terminal i decide to install Funambol sync on my BB. The instructions are easy and clear, download from the official site, unzip the files and install using Blackberry Desktop Manager, but… when try to open the unzipped files from BDM it search for .alx files and there is not any wtf?… so what the hell is the .axl file?… luckily its simple, is the file that describe the files and properties of an application, so to solve te problem simply open a text editor and create a file called Funambol.alx with this content

<loader version=»1.0″>
<application id=»FunambolSync»>
<name>
Funambol Sync Client
</name>
<description>Funambol sync client</description>
<version>8.7.1</version>
<vendor>Funambol</vendor>
<fileset Java=»1.0″>
<files>Funambol_Sync_Plugin.cod</files>
<files>Funambol_Sync_Plugin_common-1.cod</files>
<files>Funambol_Sync_Plugin_common.cod</files>
<files>Funambol_Sync_Plugin_lib-1.cod</files>
<files>Funambol_Sync_Plugin_lib-2.cod</files>
<files>Funambol_Sync_Plugin_lib-3.cod</files>
<files>Funambol_Sync_Plugin_lib.cod</files>
<files>Funambol_Sync_Plugin_pim-1.cod</files>
<files>Funambol_Sync_Plugin_pim.cod</files>
<files>Funambol_Sync_Plugin_syncml-1.cod</files>
<files>Funambol_Sync_Plugin_syncml.cod</files>
</fileset>
</application>
</loader>

Take care about the names of files and the versions, it can change between versions of the client 😉

Convertir un certifacado pfx (Microsoft) al formato PEM con openssl

  1. openssl pkcs12 -in archivo.pfx -out resultado.pem
  2. openssl pkcs12 -nokeys -in archivo.pfx -out resultado.cert
  3. openssl pkcs12 -nocerts -in archivo.pfx -out resultado.key -nodes
  4. Si vas a usar el certificado en un Cisco CSS hay que eliminar todo el contenido delante de «—–BEGIN RSA PRIVATE KEY—–» en el archivo resultado.key

Como saber la versión de gcc usada para compilar el kernel de Linux

Quien no ha compilado un módulo X y al intentar cargarlo se ha encontrado con el desagradable mensaje de que no se puede cargar el módulo por que se ha compilado con una versión de gcc distinta a la utilizada para compilar el kernel. Cada vez que me pasa me encuentro con lo mismo…¿Cómo se que versión de gcc utilizaron para compilar el kernel? y es que es tan sencillo que siempre se me olvida, a ver si al escribirlo aquí se me queda también en la cabeza y si no pues aquí lo tengo… bueno es tan sencillo como ejecutar en un terminal:

shell#: cat /proc/version

¿fácil no?

byte byte 😉

Conectar Microsoft SCCM a ISA Server 2006

Al intentar conectar Microsoft Service Center Configuration Manager (SCCM) con Microsoft ISA server las conexiones RPC eran denegadas, al intentar conectar mediante wmi desde la administración del sistema tampoco se podía conectar. Buscando un poco se encuentran varias soluciones como: agregar el servidor SCCM al conjunto de equipos «Equipos de administración remota» o desactivar la comprobación estricta de RPC. Pero la única que me ha funcionado a mi ha sido añadir una excepción a la regla del sistema que gestiona la administración remota y crear una que la sustituya para el servidor SCCM añadiendole el rango de puertos 1024-6535 para las conexiones RPC. Los pasos son.

  1. Abrir la sección de Directiva de firewall
  2. Añadir un protocolo para los puertos de salida 1024 a 65535, lo llamaré «Puertos > 1024 salida», en el panel derecho: Herramientas>Protocolos>Nuevo>Protocolo. Añadir los puertos 1024 a 65535 TCP de salida. Si no se desea abrir todo el rango superior al 1024 hay que configurar el RPC en el sistema para que use unos puertos concretos en lugar de uno aleatorio por encima del 1024, seguir los pasos descritos en este articulo de la KB de Microsoft: http://support.microsoft.com/kb/154596/en-us/
  3. Añadir una regla nueva, la llamaremos sccm en el ejemplo
  4. La regla sccm debe permitir el tráfico de los protocolos: Control de Firewall de Microsoft, Datagrama NetBios, RPC (todas las interfaces), Servicio de nombre NetBios, Sesión NetBios y el protocolo creado en el punto anterior Puertos > 1024 salida
  5. La regla se debe aplicar al trafico que venga del servidor SCCM y la red Host local y enviado a los destinos Host local y al servidor SCCM, debe permitirse al conjunto de usuarios Todos los usuarios
  6. Una vez creada la regla pulsar el botón derecho sobre ella, seleccionar la opción Configurar protocolo RPC y deseleccionar el checkbox Hacer cumplir la comprobación RPC estricta
  7. Ahora tan solo queda añadir una excepción para el servidor SCCM en la directiva del sistema, seleccionar la pestaña Tareas del panel derecho y pulsar sobre la opción Mostrar reglas de directivas del sistema
  8. Doble click sobre la directiva Permitir la administración remota desde equipos seleccionados que usan MMC, seleccionar la pestaña «De» y añadir el servidor SCCM en el apartado excepciones, cerrar, aplicar los cambios y voila!! funciona
  9. Para finalizar recomiendo que se añada la regla al final de las permisivas para que no se solape con una regla ya existente, debido a que se aplica a todos los puertos.

Una vez comprobado que todo funciona como debe (se puede acceder los recursos compartidos, hacer peticiones WMI remotas) se puede restringir más el acceso de esta regla, ya sea por usuarios o por origenes de la petición.

Byte byte my nerds 😉

Configurar Linux como cliente web de Microsoft ISA Server o Forefront en 5 pasos

El otro día en el curro me iva fatal la conexión ADSL que utilizaba para funcionar con el único pc con Linux de la empresa (un laptop viejo que me cedieron en su día), por otro lado buscando un proxy en python para una idea que me ronda la cabeza encontré proxies que soportan la autenticación NTLM (NT Lan Manager) que es la usada por Windows y, por lo tanto, por el ISA server o Forefront, entonces se me encendió la bombilla, hice una busqueda rápida y efectivamente!! se puede validar un Linux contra un ISA server mediante un proxy que soporte NTLM, siempre y cuando el servidor de Microsoft tenga activada la opción de ser proxy web. En los repositorios de ubuntu hay varios, yo he elegido el cntlm. No es necesario añadir el pc Linux al dominio ya que conectaremos al proxy web pero ya que estamos ¿porqué no hacerlo?

Pasos a seguir

1-Añadir el pc al dominio mediante likewise-open

Como he dicho esto es OPCIONAL, y se puede obviar si no se dispone de una cuenta con suficientes privilegios para añadir elementos al Active Directory o simplemente no queremos que la máquina forme parte del mismo

  • shell#: sudo aptitude install likewise-open5
  • shell#: sudo domainjoin-cli dominio usuario_administrador_del_dominio
  • shell#: sudo /etc/init.d/likewise-open restart

Si se desea añadir el usuario del dominio a sudo hay que  editar /etc/sudoers y añadir una line del tipo DOMINIO\\usuario permisos

2- Instalar y configurar el proxy

Simplemente así

A- Instalar cntlm

shell#: sudo aptitude install cntlm

B -Editar/etc/cntlm.conf

shell#: sudo vi /etc/cntlm.conf

y establecer las variables: Username, Domain, Password, Proxy (Normalmete es ip_isa_server:8080)

C -Ejecutar

shell#: sudo cntlm -M http://abdulet.net (o cualquier url)

Default config file opened successfully
cntlm: Proxy listening on 127.0.0.1:3128
cntlm: Resolving proxy 192.168.50.37…
cntlm: Workstation name used: kubuntu
cntlm: Using proxy proxyserver:8080
Config profile  1/11… OK (HTTP code: 301)
—————————-[ Profile  0 ]——
Auth            NTLMv2
PassNTLMv2      XXXXXXXXXXXXXXXXXXXXXXX

————————————————
cntlm: Terminating with 0 active threads

D -Vomver a editar /etc/cntlm.conf, pegar el texto en rojo ¿Qué… en donde? pues donde más rabia te de 😉 y además borrar la linea del Password en texto plano

E -Reiniciar el proxy

shell#: sudo /etc/init.d/cntlm restart

F -Configurar las aplicaciones para usar el proxy 127.0.0.1 puerto 3128 (estas opciones se puede cambiar en el archivo /etc/cntlm.conf). Para configurar el proxy para las aplicaciones en general hay que editar el archivo .profile

shell#: vi .profile

, añadir estas lineas

http_proxy=»http://localhost:3128″

ftp_proxy=»ftp://localhost:3128″

y volver a iniciar sesión

Y a disfrutar la navegación!!

Como evitar las contraseñas al iniciar sesión en Gnome, también la de la wifi ;)

Aún que no sea lo más seguro, la verdad es que cansa tener que escribir la contraseña cada vez que enciendo el ordenador, sobre todo cuando no tengo nada que esconder en él y si alguien lo necesita se encuentre con este tipo de problemas, así que voy a explicar como hacer que Gnome no pida ningún tipo de contraseña, ni para iniciar sesión ni para conectarse a Internet o usar alguna de las contraseñas que están almacenadas en el anillo de claves. Sigue leyendo

Routerconfigs de cacti no se ejecuta automáticamente

Me he encontrado con este problema y ha resultado ser un fallo en la gestión de la base de datos, routerconfigs establece una opción global que indica si ya se está ejecutando un proceso en de backups. Por algún motivo (posiblemente alguna de mis pruebas mientras desarrollaba las modificaciones para soportar ssh) esta variable se quedó establecida a 1 y esto impide la ejecución automática de este plugin. La variable es «plugin_routerconfigs_running» y se encuentra en la tabla «settings» de la base de datos de cacti, para comprobar su valor ejecutar desde un terminal:

mysql -u cacti -p cacti -e «select * from settings where name=’plugin_routerconfigs_running’;»
Enter password:
+—————————————+——-+
| name                                                      | value |
+—————————————+——-+
| plugin_routerconfigs_running   | 1         |
+—————————————+——-+

Si la columna value está establecida a 1 routerconfigs no se ejecutará así que para solucionarlo tan solo hay que ejecutar:

mysql -u cacti -p cacti -e «REPLACE INTO settings (name, value) VALUES (‘plugin_routerconfigs_running’, 0);»
Enter password:

Y para asegurar que todo ha ido bien

mysql -u cacti -p cacti -e «select * from settings where name=’plugin_routerconfigs_running’;»
Enter password:
+—————————————+——-+
| name                                                      | value |
+—————————————+——-+
| plugin_routerconfigs_running   | 0         |
+—————————————+——-+

Con esto routerconfigs se debería ejecutar a la perfección ;)…

O al menos eso pensaba… jejeje tras un día de ejecución volvió a fallar con el mismo resultado así que algo en el código no funciona como debe… entro en modo debugging debugging debugging uuuups que me me sa metio un bug 😛 bueno pues eso tras unas horas de estudio del código y debuggings varios hay un caso en el que un include hace un return antes de hacer el replace pertinente en esta tabla. El archivo en cuestión es el router-download.php, en la línea 66 encontramos un return solito dentro de un else tal que así

if (!empty($devices)) {

.

.

.

} else {
return;
}

para solucionar el problema el else debe quedar de esta otra forma

} else {
db_execute(«REPLACE INTO settings (name, value) VALUES (‘plugin_routerconfigs_running’, 0)»);
return;
}

Y ahora sí con esto va como la seda os lo juro que ya lleva meses rulandooooo

byte byte my nerds 😛