Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. http://www.apartamentoenfamilia.es. Número registro HUTT-005768

viernes, 13 de noviembre de 2015

ifdown: interface ethX not configured

ifconfig («interfaz de configuración») es un programa disponible en varias versiones del sistema operativo UNIX, que permite configurar o desplegar numerosos parámetros de las interfaces de red residentes en el núcleo, como la dirección IP (dinámica o estática), o la máscara de red. Si se llama sin argumentos suele mostrar la configuración vigente de las interfaces de red activas, con detalles como la dirección MAC o el tráfico que ha circulado por las mismas hasta el momento. Las interfaces de red en Linux se suelen denominar eth (eth0, eth1, etc.).

(Fuente Wikipedia)

ifup y ifdown son scripts de control de interfaz que controlan la activación y desactivación de las interfaces del sistema. Son equivalentes a decir ifconfig up o ifconfig down .

Como archivos relacionados con estos comandos podemos encontrar:

       /etc/network/interfaces
              definitions of network interfaces See interfaces(5) for more information.

       /var/run/network/ifstate
              current state of network interfaces


En ocasiones nos puede pasar que queramos desactivar una interficie de red (eth1 por ejemplo) y nos da el siguiente error:

ifdown: interface eth1 not configured

Bien, cuando esto pase tenemos dos opciones. Una es ir al archivo /etc/network/interfaces, comentar la linea auto eth1 y reiniciar. Otra es usar el comando ifdown, pero con el parámetro --force

       --force
              Force configuration or deconfiguration of the interface.

Así pues, seria así: ifdown --force eth1

Con este parámetro, forzamos la desconfiguración de la interficie pese a que por alguna razón no sea 100% aconsejable (por ejemplo, pq tengamos servicios con puertos abiertos en escucha sobre esa interficie). 









lunes, 2 de noviembre de 2015

LSC Project. Sincronizando OpenLDAP con otras bases de datos, etc


LSC es un conector Software Libre para sincronizar identidades entre un directorio LDAP y cualquier otra fuente de datos, incluyendo cualquier base de datos con un conector JDBC (Java Database Connectivity), otro servidor LDAP, etc..  
Esto nos puede ser util para infinidad de cosas, como la de sincronizar un directorio Active Directory con OpenLDAP (en cualquier dirección). De esta manera, podríamos tener un escenario de autenticación híbrido en el cual programas que necesiten AD o OpenLDAP puedan habitar alimentándose de una sóla base de datos. 





Así pues, vamos a proceder a instalar el programa obteniéndolo de la web oficial: http://lsc-project.org/

Tenemos dos maneras de hacerlo:

La más gráfica, mediante un paquete deb:

Lo descargamos

Doble click en el archivo .deb
 

Comprobamos que todo ha ido correctamente

Localización de los archivos:

  • /usr/bin/lsc: wrapper to launch LSC
  • /etc/lsc/: configuration
  • /var/log/lsc/: logs
  • /etc/init.d/lsc: init script (for asynchronous connectors)
  • /etc/default/lsc: init script configuration
  • /etc/cron.d/lsc: cron configuration
  • /usr/lib/lsc/: LSC libraries
  • /var/lib/lsc/nagios/: monitoring scripts
  • /usr/share/doc/lsc: sample scripts


Tambien podemos descargarnos tar.gz y descomprimirlo. Ya viene compilado y listo para usarse. En este caso, pese a que soy defensor de usar los paquetes deb y los repositorios (sobretodo los oficiales) en este caso creo que lo mejor es esta opción. Además, los ejemplos vienen pensados justamente para hacerlo de esta manera (rutas, etc). 

Así que.. queda probarlo:

 ./lsc-sample

 One option from available options is:
   --import []    Import data from CSV file
   --show    Show data from database
   --drop    Drop the table csvdata from database
   --start-ldap-server    Launch an embedded OpenDJ LDAP server
   --stop-ldap-server     Halt an embedded OpenDJ LDAP server
   --run     Run the synchronization task
   --clean   Remove all files from disk
   --help    Print informations

Vamos a probar una sincronización a modo de ejemplo con las herramientas incrustadas que lleva el propio programa. 

Miraremos de cargar los registros que queremos sincronizar en la base de datos:

bin/lsc-sample --import sample.csv

Podemos comprobar el contenido mediante la siguiente linea:

bin/lsc-sample --show

Arrancaremos el servidor LDAP incorporado de pruebas:

#lsc-2.1.3/sample/hsqldb$ bin/lsc-sample --start-ldap-server
Starting LDAP server on ldap://localhost:33389/ ... segons /home/ediaz/Escritorio/lsc-2.1.3/sample/hsqldb/bin/../etc
nov 02 15:36:05 - INFO  - Logging configuration successfully loaded from /home/eithel/Escritorio/lsc-2.1.3/sample/hsqldb/bin/../etc/logback.xml 
nov 02 15:36:05 - INFO  - LSC configuration successfully loaded from /home/eithel/Escritorio/lsc-2.1.3/sample/hsqldb/bin/../etc/

Como el ejemplo lo hace sobre 127.0.0.1 y puede ser que no dispongamos de una herramienta gráfica, podemos mirar de probarlo mediante ldapsearch:


ldapsearch -D "cn=Directory Manager" -w secret -p 33389 -h localhost -b "dc=lsc-project,dc=org" -s sub "(objectclass=*)"
# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# lsc-project.org
dn: dc=lsc-project,dc=org
dc: lsc-project
objectClass: domain
objectClass: top

# Sample, lsc-project.org
dn: ou=Sample,dc=lsc-project,dc=org
description: Sample subtree
ou: Sample
objectClass: organizationalUnit
objectClass: top

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

Con la base de datos cargada y un servidor LDAP en donde migrar esos datos, nos dispondremos a hacer la migración:

#bin/lsc-sample --run

y vemos el resultado de nuevo con la busqueda ldapsearch:
ldapsearch -D "cn=Directory Manager" -w secret -p 33389 -h localhost -b "dc=lsc-project,dc=org" -s sub "(objectclass=*)"
# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# lsc-project.org
dn: dc=lsc-project,dc=org
dc: lsc-project
objectClass: domain
objectClass: top

# Sample, lsc-project.org
dn: ou=Sample,dc=lsc-project,dc=org
description: Sample subtree
ou: Sample
objectClass: organizationalUnit
objectClass: top

# clem.oudot@gmail.com, Sample, lsc-project.org
dn: mail=clem.oudot@gmail.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9Z3Y5ZGlzaFhaZlNQeGR6ekZ0SU1xMlN1WHp5NU5NTDVSdGJlNXc9PQ=
 =
mail: clem.oudot@gmail.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: c.oudot
cn: Oudot, Clement
sn: Oudot

# jonathan@philipoux.net, Sample, lsc-project.org
dn: mail=jonathan@philipoux.net,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9QUlOd0RoWDROTG5aSE9TUDVpKzRtZUJSTzRkMmF2eFNTaDUwWVE9PQ=
 =
mail: jonathan@philipoux.net
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
carLicense: BHU772
carLicense: DED899
uid: j.clarke
cn: Clarke, Jonathan
sn: Clarke

# thomas@aepik.net, Sample, lsc-project.org
dn: mail=thomas@aepik.net,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9Ynh0Y2FWb1g1cmpRcHZSU29PSEd5ME94VGtGSWZGRnlOK3h1SHc9PQ=
 =
mail: thomas@aepik.net
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: t.chemineau
cn: Chemineau, Thomas
sn: Chemineau

# sebastien.bahloul@gmail.com, Sample, lsc-project.org
dn: mail=sebastien.bahloul@gmail.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9dzRUbDhPOEU5dW9mc2tFZDBqR0JYNW1yTzVPMWZmakFJOUdMdkE9PQ=
 =
mail: sebastien.bahloul@gmail.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: s.bahloul
cn: Bahloul, Sebastien
sn: Bahloul

# remy@schermesser.com, Sample, lsc-project.org
dn: mail=remy@schermesser.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9eE9odElwcENEN3RLRlZONSt4Ris1WkNpRlp5Wmx4NlBYV3M5bUE9PQ=
 =
mail: remy@schermesser.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: r.schermesser
cn: Schermesser, Remy-Christophe
sn: Schermesser

# epereira@linagora.com, Sample, lsc-project.org
dn: mail=epereira@linagora.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9YzUwaFEra2RPLzRLQjI4WG9tMmREQm83KzFFOWo4Wi9GbktaZkE9PQ=
 =
mail: epereira@linagora.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: e.pereira
cn: Pereira, Esteban
sn: Pereira

# dcoutadeur@linagora.com, Sample, lsc-project.org
dn: mail=dcoutadeur@linagora.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9Z2VKUkpFa012dE9wNGZvWDB1anVxeEVHMXZZaE1Ob3cvUmp6T0E9PQ=
 =
mail: dcoutadeur@linagora.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: d.coutadeur
cn: Coutadeur, David
sn: Coutadeur

# rouazana@linagora.com, Sample, lsc-project.org
dn: mail=rouazana@linagora.com,ou=Sample,dc=lsc-project,dc=org
userPassword:: e1NTSEF9YjJKUWQ3NUtTaDlCWnJnUTIrd2E1NWNzNVdNSFIreFpXeG5lbkE9PQ=
 =
mail: rouazana@linagora.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
uid: r.ouazana
cn: Ouazana, Raphael
sn: Ouazana

# search result
search: 2
result: 0 Success

# numResponses: 11
# numEntries: 10

Efectivamente, ha realizado la sincronización perfectamente.

En resumen, lo que hemos hecho es, dado un csv, cargar una base de datos intermedia. Luego, con los datos cargados en esa base de datos, los migramos a otro servidor LDAP (OpenLDAP, AD, etc).







miércoles, 21 de octubre de 2015

Restablecer contraseña olvidada mediante LiveCD y chroot

chroot en los sistemas operativos derivados de Unix, es una operación que invoca un proceso, cambiando para este y sus hijos el directorio raíz del sistema. "chroot" puede referirse a la llamada de sistema chroot(2) o al programa ejecutable chroot(8). Comúnmente, el entorno virtual creado por chroot a partir de la nueva raíz del sistema se conoce como "jaula chroot".
El sistema chroot fue introducido por Bill Joy el 18 de marzo de 1982 (17 meses antes de que BSD 4.2 fuera publicado) para probar su sistema de instalación y construcción.
Al usar "chroot" para invocar un proceso, se impedirá al mismo y a sus procesos hijos acceder por su nombre a ningún fichero que esté por encima del nuevo directorio raíz. Esto es entendido a menudo como un dispositivo de seguridad, ya que en teoría crea una zona segura para ejecutar un programa que provoca desconfianza, no está probado, o de alguna forma puede presentar un comportamiento peligroso para la integridad del sistema. Sin embargo, cabe señalar que las jaulas chroot no son tan seguras como otro tipo de jaulas o la virtualización.
(Fuente Wikipedia)

Y ahora la pregunta sería... ¿y en qué nos podría ayudar chroot para restablecer nuestra contraseña?. Pues bien, de lo que se trata es primero ser root de nuestro PC. Una vez somos root, evidentemente ya tenemos acceso a las herramientas para cambiar contraseñas. Cuando cambiamos contraseñas, lo hacemos mediante el comando passwd, que lo que hace es leerlas y grabarlas en disco. Así pues, si arrancamos la máquina con un LiveCD ya tendremos root en esa máquina. Lo malo es que el sistema de archivos con el que arranca, evidentemente, está en memoria y no es donde realmente están las contraseñas, sino que están en el disco duro. Así pues, chroot nos ofrece la posibilidad de "cambiar" nuestra raíz del sistema de archivos (la del LiveCD) por otro sistema de archivos (la de la partición en donde se encuentran las contraseñas). Si miramos el esquema de arriba puede que entendamos mejor el cambio de sistema de archivos. Arriba de todo tenemos / (root) pero luego de hacer el chroot convertimos /mnt en nuestro nuevo / root. 

De acuerdo, ahora que vemos todas las herramientas que usaremos (LiveCD, passwd, mount, chroot) hagamos el procedimiento paso a paso (cada uno que lo adecue a su escenario):

Insertamos en LiveCD de 32 o 64bits. No hace falta que sea la misma distribución, pero si que si el sistema en donde estan las contraseñas es 32bits o 64bits, el LiveCD sea de los mismos bits. 

Una vez arrancado el sistema LiveCD, abrimos un terminal y escribimos

sudo -s

Con esto seremos ya root de la maquina. Crearemos una carpeta en donde montaremos la partición de nuestro disco duro en donde se encuentran las contraseñas (no montes la /boot o la swap!). Imaginemos que la partición que buscamos es la /dev/sda2 . 

mkdir /mnt/recuperar
mount /dev/sda2 /mnt/recuperar

Pues bien, ahora ya tenemos el sistema de archivos del PC montando como una carpeta del sistema de archivos del LiveCD. Ahora toca hacer el cambiazo:

chroot /mnt/recuperar

Ya lo tenemos cambiado. Ahora nuestro / (root), es el de la partición de nuestro disco duro. Ahora toca cambiar la contraseña, que lo hacemos como se hace habitualmente. 

passwd

Como somos root, no nos preguntará por nuestra anterior contraseña. Si por el contrario queremos cambiar la contraseña de otro usuario que no sea el root deberemos mandarlo por parámetro:

passwd user

Con esto ya habremos cambiado la contraseña. Ahora salimos del chroot mediante exit y desmontamos la partición:

exit
umount /mnt/recuperar

Ahora ya podemos apagar el sistema y arrancar con normalidad y con la contraseña restablecida. 


martes, 20 de octubre de 2015

Evitar bdb_equality_candidates en OpenLDAP creando índices

El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, por medio de identificador único de cada fila de una tabla, permitiendo un rápido acceso a los registros de una tabla en una base de datos. Al aumentar drásticamente la velocidad de acceso, se suelen usar, sobre aquellos campos sobre los cuales se hacen frecuentes búsquedas.
El índice tiene un funcionamiento similar al índice de un libro, guardando parejas de elementos: el elemento que se desea indexar y su posición en la base de datos. Para buscar un elemento que esté indexado, sólo hay que buscar en el índice dicho elemento para, una vez encontrado, devolver el registro que se encuentre en la posición marcada por el índice.
Los índices pueden ser creados usando una o más columnas, proporcionando la base tanto para búsquedas rápidas al azar como de un ordenado acceso a registros eficiente.
Los índices son construidos sobre árboles BB+B* o sobre una mezcla de ellos, funciones de cálculo u otros métodos.
El espacio en disco requerido para almacenar el índice es típicamente menor que el espacio de almacenamiento de la tabla (puesto que los índices generalmente contienen solamente los campos clave de acuerdo con los que la tabla será ordenada, y excluyen el resto de los detalles de la tabla), lo que da la posibilidad de almacenar en memoria los índices de tablas que no cabrían en ella. En una base de datos relacional un índice es una copia de una parte de la tabla.
(Fuente Wikipedia)

Cuando en nuestro log aparece algo como :

Oct 20 10:22:01 server slapd[16752]: <= bdb_equality_candidates: (memberUid) not indexed

quiere decir que se ha realizado una búsqueda por un campo el cual no esta indexado y ha sido consultado mediante equal (ya veremos más adelante que significa). De haber estado indexado, la búsqueda sería más rápida. Así pues, una vez creada nuestra base de datos deberíamos indexarla por aquellos campos que sabemos que van a ser consultados.

Creamos un archivo LDIF llamado, por ejemplo,  olcDbIndex.ldif con este contenido (puedes variarlo según tus necesidades):
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: cn pres,sub,eq
-
add: olcDbIndex
olcDbIndex: sn pres,sub,eq
-
add: olcDbIndex
olcDbIndex: uid pres,sub,eq
-
add: olcDbIndex
olcDbIndex: displayName pres,sub,eq
-
add: olcDbIndex
olcDbIndex: default sub
-
add: olcDbIndex
olcDbIndex: uidNumber eq
-
add: olcDbIndex
olcDbIndex: gidNumber eq
-
add: olcDbIndex
olcDbIndex: mail,givenName eq,subinitial
-
add: olcDbIndex
olcDbIndex: dc eq
Para saber exactamente que significa pres, sub y eq sería conveniente saber estas definiciones:
  • pres (presence) debe usarse si buscamos mediante un atributo especifico.
  • approx (Approximate) se debe usar si buscamos por resultados que sean similares a nuestra busqueda "sn~=person". Es decir, que el resultado se aproxime. 
  • sub (substring) debe utilizar en las búsquedas del timpo “sn=sm*”. Es decir, con comodines. 
  • eq (equality) se debe usar en comparaciones directas. Es decir, en comparaciones de igualdad.
Una vez entendido y generado el archivo LDIF, ahora tenemos que inyectarlo en la base de datos mediante el comando ldapmodify :

ldapmodify -Y EXTERNAL -H ldapi:/// -f ./olcDbIndex.ldif

Importante crear siempre una copia de seguridad antes de manipular la base de datos.


viernes, 16 de octubre de 2015

Reescanear manualmente el sistema de archivos de owncloud


En una entrada anterior explicaba como instalar un servidor owncloud:




En ocasiones podemos necesitar reescanear el sistema de archivos de owncloud. ¿Por qué podemos necesitarlo? Imaginemos el escenario en el cual usemos el sistema de archivos de owncloud de manera compartida con otros servicios como ftp o ssh. En esos casos, subir un archivo directamente al espacio de directorios de owncloud haría que hubiera una incongruencia entre lo que realmente está en el sistema de archivos y lo que la base de datos de owncloud cree que tiene. Este uso no corresponde con las buenas prácticas de uso de owncloud (Debugging Sync-Issues) , pero a la práctica es algo que se puede hacer y se hace. Un ejemplo claro es cuando un usuario pierde un archivo y quiere que se lo restauremos desde una copia de seguridad. Se lo hacemos y luego.. toca reescanear su directorio manualmente. Así pues.. vamos a ver como se hace:

Para escanear manualmente el sistema de archivos tenemos ejecutable php en el directorio del owncloud llamado console.php. Con este archivo podemos hacer diversas operaciones. La que nos interesa de escanear el directorio lo haremos mediante el parámetro files:scan . Para poder ejecutar dicho archivo, deberemos hacerlo desde el usuario al cual pertenece dicho archivo. Lo normal es que pertenezca a www-data o root. Así pues, si pertenece a www-data, como seguramente no tendrá una shell declarada y no tendrá password, lo haremos ejecutaremos mediante sudo. Primero entramos en la carpeta en donde tengamos en owncloud instalado y luego ejecutamos el console.php:

cd /var/www/owncloud

sudo -u www-data php console.php files:scan usuario


En donde usuario lo sustituiremos por el nombre de usuario al cual queramos reescanear su directorio. Si queremos reescanear TODO el sistema de archivos de owncloud:


sudo -u www-data php console.php files:scan --all


Si esta práctica de reescaneo es muy común, es posible que queramos definir trabajos en segundo plano









viernes, 9 de octubre de 2015

Un proceso de Apache me consume el 100% de CPU. ¿Quien? ¿Por qué?

El servidor HTTP Apache es un servidor web HTTP de código abierto, para plataformas Unix (BSDGNU/Linux, etc.), Microsoft WindowsMacintosh y otras, que implementa el protocolo HTTP/1.12 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se debe a que alguien quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de internet. Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. En inglés, a patchy server (un servidor "parcheado") suena igual que Apache Server.

(Fuente Wikipedia)

En ocasiones vemos que tenemos las CPUs de nuestro servidor al 100%. Algo parecido a esto:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www-data 21882 99.3  3.2 560668 130204 ?       R    12:44   9:35  \_ /usr/sbin/apache2 -k start

En estos casos, parece fundamental averiguar quién se está conectando al servidor y como está haciendo para provocar un uso de la CPU del 100% . Para ello podemos hacerlo facilmente mediante el PID del proceso (en el ejemplo el 21882). Una vez tenemos el PID, usando la herramienta netstat con el parámetro -p podemos localizar el origen del problema.

Netstat (network statistics) es una herramienta de línea de comandos que muestra un listado de las conexiones activas de una computadora, tanto entrantes como salientes. Existen versiones de este comando en varios sistemas como Unix,GNU/LinuxMac OS XWindows y BeOS.
La información que resulta del uso del comando incluye el protocolo en uso, las tablas de ruteo, las estadísticas de las interfaces y el estado de la conexión. Existen, además de la versión para línea de comandos, herramientas con interfaz gráfica (GUI) en casi todos los sistemas operativos desarrollados por terceros.
(Fuente Wikipedia)

Así pues, siguiendo con el ejemplo:

netstat -p | grep 21882

Con esto obtendremos todas las conexiones, listadas junto a su PID/program y mediante la tuberia se lo pasamos al comando grep para que filtre y nos muestre solo lo que coincida con 21882 (el PID de nuestro ejemplo). Veremos algo similar a esto:

tcp        0      0 localhost:55933         localhost:ldap          ESTABLECIDO 21882/apache2


Interpretando la lectura (en el ejemplo) sería que el proceso 21882 pertenece a una conexión del apache2 al servidor ldap que esta instalado en local. Bueno.. es una buena pista ¿no?

jueves, 1 de octubre de 2015

Solucionar en Linux "Aplicación bloqueada por la seguridad de Java"

Java es un lenguaje de programación de propósito generalconcurrenteorientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el códigoque es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados

(Fuente Wikipedia)

En ocasiones miramos de ejecutar una aplicación escrita en java, usualmente web, en la que el archivo es un jnlp que debe ser lanzado por nuestra consola de java. Al hacerlo, según la política de seguridad configurada, nos saldrá un error "Aplicación bloqueada por la seguridad de Java". Para solucionar el problema tenemos que:

Abrir el Panel de Control de Java:


Seleccionamos Seguridad (Security) y lo configuramos en un modo menos restrictivo. Por ejemplo, si lo ponemos en seguridad Media (Medium) tendremos menos mensajes de advertencia.



Para finalizar, podemos añadir a la lista de excepciones la URL desde donde nos daba el error. 
Con estos cambios (o alguno de ellos al menos) podemos evitar el error de bloqueo.

En la página web de Oracle explica detalladamente como hacerlo, pero se centran en MacOS y Microsoft : https://www.java.com/es/download/help/appsecuritydialogs.xml

Este video muestra paso a paso lo anteriormente explicado:



viernes, 28 de agosto de 2015

Reescanear bus SCSI en Linux (Rescan SCSI bus)

Small Computer System Interface, más conocida por el acrónimo inglés SCSI (interfaz de sistema para pequeñas computadoras), es una interfaz estándar para la transferencia de datos entre distintos dispositivos del bus de lacomputadora.
Tras dedicar un día entero a discutir el nombre, se llegó al acuerdo de que fuera el nombre actual, que Larry Boucher pretendía que se pronunciara "sexy". Sin embargo, Dal Allan de ENDL1 pronunció el nuevo acrónimo como "scuzzy", y se ha perpetuado2 .
Algunos profesionales lo castellanizan o españolinzan como "escasi" o "escosi".
(Fuente Wikipedia)
En ocasiones necesitamos añadir un disco a nuestra máquina 'en caliente'. Es decir, sin apagarla. Esto es mucho más habitual desde que tenemos nuestros servidores virtualizados. Así pues, vamos a nuestro sistema de virtualización y le damos a 'añadir disco' y ya esta.. el disco queda añadido en caliente a nuestra máquina virtual. Ahora bien... ¿Porqué nuestro sistema operativo aun no nos la muestra?. Es facil, el escaneo del bus SCSI se hace efectivamente durante el arranque del sistema. Es donde comprueba el hardware que tiene la máquina y actúa en consecuencia. Si le añadimos nuevo hardware después de arrancar, necesitamos decirle al sistema que se vuelva a mirar el bus SCSI para ver si hay algún disco nuevo. Es lo que vamos a aprender a hacer. Una vez añadamos el disco para escanear el bus haremos los siguientes pasos:

Averiguaremos el número del nuestro bus (host bus) :
grep mpt /sys/class/scsi_host/host?/proc_name

Este comando nos devolverá algo similar a esta linea:

/sys/class/scsi_host/host2/proc_name:mptspi

Nos tenemos que fijar en el host* . En el caso de este ejemplo, el bus encontrado es el host2 . Una vez averiguado el bus que tenemos que escanear, lo escanearemos con la siguiente linea:

echo "- - -" > /sys/class/scsi_host/host2/scan

Como vemos, lo que estamos haciendo es escanear el host2 que antes hemos encontrado. Cuando hacemos echo "- - -" cada - significa una cosa: controladores, canales y luns. Es decir, con el - no estamos especificando nada, y por tanto, lo que hará es escanear todos los controladores, canales y luns del host especificado (en el ejemplo el host2).

Ahora si miramos nuestro syslog veremos que hemos encontrado un nuevo disco.

 En resumen:

grep mpt /sys/class/scsi_host/host?/proc_name
echo "- - -"  > /sys/class/scsi_host/host2/scan








miércoles, 6 de mayo de 2015

Instalar ZenPhoto en Ubuntu

Zenphoto es una aplicación para publicar en Internet páginas web interactivas de galerías fotográficas en línea diseñado para ser "un simple álbum fotográfico web". Incluye procesamiento dinámico de imágenes, álbumes organizados por carpetas, títulos y descripciones editables con AJAX, comentarios, temas, subida en línea y sencilla administración de imágenes.
(Fuente Wikipedia)

Lo primero que tenemos que hacer es instalar un LAMP server en nuestro Ubuntu. Esto lo hemos explicado en muchos artículos anteriormente y no está ampliamente documentado en internet. Yo aconsejo hacerlo así:

apt-get install lamp-server^

No olvideis el ^ del final de la línea anterior, ya que indica que es un meta-paquete.

Lo siguiente que debemos hacer es descargarnos de la página oficial el paquete tar.gz que esté disponible. En el momento de redactar este artículo:


Una vez descargado lo descomprimimos y colocamos en el directorio /var/www. Le damos permisos al usuario www-data y en el archivo /etc/apache2/sites-enabled/000-default.conf ponemos DocumentRoot /var/www

Opcionalmente podemos cambiar los permisos de la carpeta zp-data (chmod -R 0600 zp-data/) y instalar bibliotecas gráficas:

apt-get install php5-imagick php5-gd

Con esos pasos ya podremos acceder vía web para su configuración:

root@zenphoto:/var/www# ls -lath
total 72K
drwxr-xr-x  8 root     root     4,0K may  6 11:06 .
drwxr-xr-x 13 root     root     4,0K may  6 11:04 ..
drwxrwxr-x  2 www-data www-data 4,0K feb  8 20:56 albums
-rw-rw-r--  1 www-data www-data  252 feb  8 20:56 contributing.md
-rw-rw-r--  1 www-data www-data  599 feb  8 20:56 .gitattributes
-rw-rw-r--  1 www-data www-data  798 feb  8 20:56 .gitignore
-rw-rw-r--  1 www-data www-data  880 feb  8 20:56 index.php
-rw-rw-r--  1 www-data www-data  18K feb  8 20:56 LICENSE
drwxrwxr-x  5 www-data www-data 4,0K feb  8 20:56 plugins
-rw-rw-r--  1 www-data www-data 1,2K feb  8 20:56 README.md
drwxrwxr-x  7 www-data www-data 4,0K feb  8 20:56 themes
drwxrwxr-x  2 www-data www-data 4,0K feb  8 20:56 uploaded
drwxrwxr-x 12 www-data www-data 4,0K feb  8 20:56 zp-core
drwxrwxr-x  2 www-data www-data 4,0K feb  8 20:56 zp-data


Si hubiera algún requerimiento que aún no esté satisfecho, es cuestión de seguir las indicaciones del propio programa.

viernes, 13 de febrero de 2015

ownCloud + https + MySQL + openLDAP en Ubuntu 14.04 LTS

OwnCloud es una aplicación libre que permite el almacenamiento en línea y aplicaciones en línea (cloud computing). OwnCloud puede ser instalado dentro de un servidor que disponga de una versión reciente de PHP(mayor o igual a 5.3) y soporte de SQLite (base de datos por defecto), MySQL o PostgreSQL.
El proyecto fue lanzado en enero del 2010 por Frank Karlitschek, un desarrollador del proyecto KDE, con el objetivo de dar a los usuarios el control de sus datos en la nube.1 OwnCloud formó parte de la comunidad KDE pero luego se independizó.2
El 13 de diciembre del 2011 ha sido creada una entidad comercial fundada bajo el proyecto OwnCloud.3 Dicha sociedad es una alternativa a las soluciones propuestas por Dropbox o Box.net, poniendo mucho énfasis en la flexibilidad y la seguridad. OwnCloud es una alternativa libre a las soluciones privadas presentes en el mercado.
(Fuente Wikipedia)
Así pues, vamos a proceder a instalarlo en nuestro Ubuntu 14.04 LTS (también válido para 14.10). Primero haremos una instalación LAMP ,  securizaremos el MySQL y prepararemos el Apache para que ownCloud funcione correctamente. La instalación de todo esto es la habitual de cualquier aplicación web.

LAMP
Como haremos muchas cosas como administrador, vale la pena hacer:

sudo -s

Una vez con derechos de administrador, actualizamos repositorios:

apt-get update && apt-get upgrade

Ahora instalamos LAMP. 

apt-get install lamp-server^

Observar que pongo ^ para indicar que es un metapaquete. Es una alternativa fácil a usar tasksel.

Con el LAMP instalado, vamos a arreglarlo un poco para que sea algo más seguro. Vamos a securizarlo:

mysql_secure_installation

Si le decimos que Y a todo lo que nos pregunta, lo tendremos definitivamente más seguro. No obstante, leeros lo que os pregunta y configurarlo según os convenga.

Bien, ahora vamos a instalar algunos paquetes más que nos serán necesarios para que ownCloud funcione:

apt-get install php5-gd php-xml-parser php5-intl smbclient curl libcurl3 php5-curl php5-ldap

Ahora activamos algunos módulos de Apache necesarios:

a2enmod {rewrite,headers,ssl}

y editamos el archivo apache2.conf para cambiar el valor AllowOverride:

vim /etc/apache2/apache2.conf

AllowOverride None

lo cambiamos a

AllowOverride All

También será necesario cambiar el charset a UTF-8 (sinó una vez instalado podremos comprobar en la parte de Advertencias de Seguridad que nos lo pedirá). Para cambiarlo lo haremos editando /etc/apache2/conf-enabled/charset.conf y descomentamos la linea que hace referencia al UFT-8 :

AddDefaultCharset UTF-8

También lo cambiamos en el /etc/php5/apache2/php.ini :

default_charset = "utf-8"
mbstring.internal_encoding=utf-8
mbstring.http_output=UTF-8
mbstring.encoding_translation=On
mbstring.func_overload=6

Activamos https en nuestro Apache2:

a2ensite default-ssl.conf

Y redirigimos todo el tráfico http a https añadiendo estas lineas en el archivo /etc/apache2/sites-available/000-default.conf justo despues de la directiva VirtualHost *:80 

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Para que todo tenga efecto, reiniciamos el servidor Apache2:

service apache2 restart

Bien, ahora ya tenemos un Ubuntu con LAMP preparado para instalar nuestro ownCloud.

ownCloud

Se puede hacer desde un repositorio o bien con un paquete tar.gz. Aquí explicaré como hacerlo con un repositorio: (http://software.opensuse.org/download/package?project=isv:ownCloud:community&package=owncloud)

sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_14.04/ /' >> /etc/apt/sources.list.d/owncloud.list"

Añadimos la clave:
wget -O- http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_14.04/Release.key | sudo apt-key add -
Y una vez ya hemos añadido el repositorio y su clave, ya podemos instalarlo sin problemas como habitualmente hacemos con cualquier programa:

apt-get update
apt-get install owncloud

y luego mágicamente ya podremos acceder http://ip_servidor/owncloud



Aquí ahora escogeremos que nombre de usuario y contraseña queremos y además, una cosa importante: nuestra base de datos. Os aconsejo escoger MySQL/MariaDB o Postgres, pero no SQLite (a menos que sea para algo realmente pequeño, con lo cual SQLite nos puede servir).

Usuarios en openLDAP
Esto se hace mediante la activación de una aplicación propia del ownCloud. Para activar dicha aplicación, iremos al apartado Aplicaciones y en el subapartado de No habilitado veremos todas las aplicaciones que aun no estan activas. Entre ellas esta la LDAP user and group backend:


Le damos a Activar y entonces ya podremos ir a la página del administrador en donde podremos configurar los parámetros de nuestro servidor LDAP. 

Y bien... ahora para finalizar, también nos podemos instalar el cliente para Ubuntu:
apt-get install owncloud-client

Y al ejecutarlo veremos que nos pide los parámetros de conexión con nuestro servidor.




¡¡ Y a disfrutar de nuestro Cloud !!

jueves, 5 de febrero de 2015

Limitar el número máximo de procesos por usuario (forkbomb)



La bomba fork es una forma de ataque del tipo denegación de servicio sobre un computador que implementa la operación fork, o alguna funcionalidad equivalente mediante la cual un proceso es capaz de crear otro proceso. La bomba fork es considerado un wabbit ya que no se replica de la misma forma que los gusanos o los virus. Su efecto se basa en la suposición de que el número de programas y procesos que se ejecutan simultáneamente en un ordenador tiene un límite.
Una bomba fork funciona creando una gran cantidad de procesos muy rápidamente con el objetivo de saturar el espacio disponible en la lista de procesos mantenida por el sistema operativo del computador. Si la tabla de procesos se llega a saturar, entonces no se pueden iniciar nuevos programas hasta que no se cierre alguno. En el caso que esto suceda, es muy poco probable que se pueda iniciar un programa útil ya que los procesos de la bomba estarán esperando para poder crear nuevos procesos a la primera oportunidad que se les conceda.
(Fuente Wikipedia)

Observamos la linea de la viñeta:

:(){ :|:& };:
Si nos damos cuenta, : hace es el nombre de una función. Si sustituimos esta función por otro nombre, por ejemplo forkbomb y luego la sangramos, lo veremos más claro:

forkbomb () { 
   forkbomb | forkbomb & 

forkbomb

Lo que estamos es declarando una función que se llama recursivamente a si misma en segundo plano. De esa manera bloqueamos el sistema. Si queremos evitar este potencial fallo de seguridad, basta con configurar bien nuestro Linux editando el archivo /etc/security/limits.conf. Este archivo de configuración pertenece al Linux-PAM

Basta con poner en /etc/security/limits.conf una línea similar a ésta:
* hard nproc 4096



That u don't know what you've got 'til it's gone