27 abr. 2016

PARTE II: Quitar mensaje Security Alert de OCS Inventory

Una vez que instalamos OCS Inventory Server, al ingresar por vez primera en la consola de Administración, nos encontraremos con un mensaje bastante molesto.

Para quitarlo, debemos realizar dos tareas muy sencillas.

1) Eliminar el archivo install.php

Para ello, en tu servidor, ejecuta...

sudo rm -f /usr/share/ocsinventory-reports/ocsreports/install.php

Despreocupate que no dañarás ningún componente o configuración de tu servidor.

2) Cambiar la contraseña por defecto del usuario ocs en la Base de Datos

Por defecto, OCS genera una Base de Datos llamada ocsweb con un usuario ocs, que lleva como contraseña su homónimo (ocs). Para cambiar la contraseña, debemos hacerlo por una personal y privada, ya que de lo contrario el mensaje seguirá apareciendo.

Nos conectaremos a nuestro Motor MySQL:

mysql -u root -p
(ingresamos la contraseña de nuestro usuario root de MySQL)

Y ejecutamos las siguientes líneas...

set password for 'ocs'@'localhost' = PASSWORD('UnTuxSuelto');
flush privileges;

quit

Luego, editaremos dos archivos donde deberemos ingresar la nueva contraseña para el usuario ocs.

Archivo dbconfig.inc.php


sudo vim /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php

Buscaremos la siguiente línea y reemplazaremos la contraseña por defecto por la nueva:

define("PSWD_BASE","UnTuxSuelto");

Guardamos y salimos.

Archivo z-ocsinventory-server.conf


sudo vim /etc/apache2/sites-enabled/z-ocsinventory-server.conf

Buscaremos la siguiente línea y reemplazaremos la contraseña por defecto por la nueva:

# Password for user
  PerlSetVar OCS_DB_PWD UnTuxSuelto


Guardamos y salimos del editor.

Al finalizar los cambios, debes reiniciar los servicios apache2 y mysql.

Regresa a la consola, y habrás quitado el mensaje de Security Alert!

IMPORTANTE: recuerda también cambiar la contraseña por defecto del usuario admin, para incrementar aún más la seguridad (recuerda que la contraseña por defecto es homónima -admin-).

18 abr. 2016

Disminuir los accesos a Disco en MySQL con ramdisk (tmpfs) con Linux

El uso de particiones montadas directamente en RAM trae consigo innumerables beneficios a la hora de disminuir el acceso a disco (no solo lo disminuye, ¡lo hace desaparecer!).

El uso de ramdisk (utilizando particiones del tipo tmpfs) en Linux es uno de esos tips que ningún Administrador de Sistemas debería desconocer.

Hoy les mostraré lo fácil que es crear una partición en RAM (tmpfs) y utilizarla en MySQL, haciendo desaparecer los accesos a nuestro Disco.

Crea un directorio donde se montará la partición tmpfs

Como primer paso, crearemos un directorio donde montaremos la partición tmpfs, la cual se utilizará como una partición tradicional, con el plus de escribir directamente en RAM, aumentando al máximo el rendimiento de lo que allí se escriba.

#mkdir /tmp/tmpmysql

Detener demonio mysql y declarar partición creada en la configuración de MySQL

Antes de continuar, debemos detener el demonio mysql. Luego, editaremos el archivo de configuración de MySQL y declararemos el directorio que se utilizará como temporal para nuestro motor de Base de Datos.

#vim /etc/mysql/my.cnf

En la línea...

tmpdir       = /tmp/tmpmysql

...agregaremos nuestro nuevo directorio tmpmysql (agregado en rojo).

Guardamos los cambios y salimos del my.cnf.

Conocer los id de nuestro usuario mysql

Para conocer el ID de nuestro usuario mysql, ejecutaremos el siempre indispensable comando id:

id mysql

Lo que nos devolverá:

uid=105(mysql) gid=112(mysql) groups=112(mysql)

Recordemos los datos uid y gid, pues los utilizaremos en el próximo paso.

Montar partición ramdisk como tmpfs sólo con privilegios para mysql

Editaremos el file /etc/fstab y declararemos la partición, tipo, punto de montaje y permisos específicos (entre tantas otras opciones que se podrían declarar -ver man mount-).

#vim /etc/fstab

Agregaremos la siguiente línea (siempre teniendo en cuenta que mis ID de usuario mysql pueden siempre diferir de los tuyos):

tmpfs /tmp/tmpmysql tmpfs rw,uid=105,gid=112,size=128m 0 0

De izquierda a derecha y en rojo: File System, ubicación del punto de montaje, tipo de File System, y las opciones (nótese los uid y gid) junto con el tamaño asignado a dicha partición. Guardaremos los cambios y saldremos.

Es importante tener en cuenta que el tamaño que le asignemos a dicha partición tmpfs será "decrementado" directamente de nuestra RAM.

Antes de terminar, montaremos las particiones declaradas en nuestro /etc/fstab mediante el comando mount -a.

Por último, iniciaremos nuevamente el demonio mysql y si todo marchó bien, MySQL utilizará para sus transacciones y otras acciones su nuevo temporal, ahora una partición en RAM que hará desaparecer los accesos a nuestro Disco Duro, simplemente "traficando" datos entre la RAM y la CPU.

Para corroborar que todo marche bien, puedes ejecutar df -h para observar la partición tmpfs montada en el directorio creado.

TIPS
  • Mediante el comando watch podremos ver de forma recursiva cómo se escriben datos en dicho directorio (watch -n 0.5 ls -lh /tmp/tmpmysql). 
  • Si usas servicios como munin, puedes hacer "un antes y un después" de utilizar ramdisk (tmpfs) para notar como descansarán las I/O a Disco.
ACTUALIZACIÓN: si utilizas Ubuntu 16.04 LTS, el archivo por defecto de configuración de MySQL donde puedes realizar el cambio de la carpeta temporal por defecto está ubicado en /etc/mysql/mysql.conf.d/mysqld.cnf.

16 abr. 2016

PARTE I: Instalar OCS Inventory NG (Server) en Ubuntu Linux 14.04 LTS



Muchos conocerán los beneficios y funcionalidades que nos provee OCS Inventory. Es por eso que si has llegado hasta aquí, daré por sentado que ya conoces qué se puede hacer con este increíble Software.

Tomé la decisión de hacer un pequeño tutorial de instalación de OCS Inventory NG en su versión Server sobre Ubuntu Linux 14.04 LTS originado por varios motivos: mi exitosa experiencia utilizado e implementando ésta solución, la Wiki del proyecto no está actualizada "al día", y (lo más importante) porque existe mucha documentación fragmentada en la Web, en idioma francés, italiano, y con mucha información algo incompleta.

Nota 1: Asumo que dispones de conocimientos básicos de Ubuntu, Apache y Mysql. Ante una duda, deja un comentario, o bien indaga en la Web. No duele ;D

Nota 2: Este instructivo esta basado en la versión de OCS Inventory NG version 2.2 al día de la fecha de publicación.

Nota 3: configura tu Ubuntu con una IP estática/fija.

Requisitos de paquetería

Actualiza Ubuntu a las últimas versiones de componentes del Sistema. Una vez actualizado, instalaremos los siguientes paquetes en Ubuntu, aceptando también la instalación de todas sus dependencias:

openssl apache2 php5 make perl mysql-server libxml-simple-perl libxml-perl libarchive-zip-perl libio-compress-perl libapache-dbi-perl libnet-ip-perl libsoap-lite-perl libphp-pclzip php5-gd php5-mysql


Recuerda siempre la contraseña ingresada en tu usuario root del mysql-server.

Descarga del Instalador de OCS Inventory Server


Desde su página de descargas http://www.ocsinventory-ng.org/en/#download-en, descarga el paquete instalador para su versión Server.

Una vez descargado, si estás utilizando Windows, copia el instalador comprimido .tar.gz vía WinSCP a tu /home/usuario de tu Ubuntu Server.

Descomprime el instalador en una carpeta


tar -xvf OCSNG_UNIX_SERVER-2.2.tar.gz
cd OCSNG_UNIX_SERVER-2.2


Instala OCS Inventory Server

sudo sh ./setup.sh


Por defecto, al presionar ENTER, se aplicará la configuración por defecto indicada entre [corchetes], pero ATENCIÓN en los siguientes pasos (ingresa manualmente la cadena en rojo):

Where is Apache main configuration file [] ? /etc/apache2/apache2.conf

Setup will put OCS Inventory NG Apache configuration in this directory.
Where is Apache Include configuration directory [] ? /etc/apache2/sites-available


Habilita el módulo SSL y los sitios Apache de OCS Inventory

sudo a2enmod ssl ; sudo a2ensite default-ssl.conf ; sudo a2ensite ocsinventory-reports.conf ; sudo a2ensite z-ocsinventory-server.conf


Reinicia el demonio de Apache2.
 

Crear un Certificado SSL para utilizar el Deploy de Software

En esta versión del Servidor OCS, debemos utilizar un Certificado SSL para poder distribuir Software desde OCS Inventory a los Agentes. Si pretendes utilizar esta característica, es importante que sigas paso a paso las siguientes instrucciones. Si sólo quieres utilizar OCS Inventory como Inventario de Software y Hardware (ya que posiblemente dispones de otra herramienta para la distribución de Software en tu parque de PC/Servidores), dirígete al paso
"Configuración final vía Consola".

Nota: no apliques los pasos como Superusuario, sólo cuando indique la línea con sudo:

openssl genrsa -des3 -out ocsng.key 2048
(Ingresa dos veces y recuerda una clave para el certificado).

mv ocsng.key ocsng-old.key


openssl rsa -in ocsng-old.key -out ocsng.key

(Ingresa nuevamente tu clave).

openssl req -new -key ocsng.key -out ocsng.csr

(Ingresa datos de tu certificado, como país, ciudad, empresa, etc., PERO...)

Cuando te consulte por...

Common Name (e.g. server FQDN or YOUR name) []:
 

...es recomendable ingresar la IP estática/fija de tu servidor Ubuntu.

Cuando te consulte por...

A challenge password []:
 

...ingresa la misma contraseña de los pasos anteriores.

openssl x509 -req -days 3650 -in ocsng.csr -signkey ocsng.key -out ocsng.pem
(-days 3650 es el tiempo de "vida" del certificado. Aquí, configurado para 10 años).

Copia el certificado en las rutas por defecto, para ello:

sudo cp ocsng.pem /etc/ssl/certs/ ; sudo cp ocsng.key /etc/ssl/private/


Realiza un backup de la configuración de tus Sitios Apache (siempre recomendado)

sudo cp /etc/apache2/sites-enabled/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf.bak ; sudo cp /etc/apache2/sites-enabled/ocsinventory-reports.conf /etc/apache2/sites-enabled/ocsinventory-reports.conf.bak ; sudo cp /etc/apache2/sites-enabled/z-ocsinventory-server.conf /etc/apache2/sites-enabled/z-ocsinventory-server.conf.bak


Cambia la ruta de los certificados en default-ssl.conf

sudo vim /etc/apache2/sites-enabled/default-ssl.conf

SSLCertificateFile /etc/ssl/certs/ocsng.pem
SSLCertificateKeyFile /etc/ssl/private/ocsng.key

 

Generar un auto-login al certificado en Apache

Generaremos un file con la contraseña provista para el certificado.

sudo vim /usr/share/apache2/pass

Ingresa el siguiente texto:

#!/bin/sh
echo "TU-CONTRASEÑA"
sudo chmod +x /usr/share/apache2/pass


Guarda y sale del archivo.

Agregar dicho file en default-ssl.conf

sudo vim /etc/apache2/sites-enabled/default-ssl.conf

(ingresa la cadena en una nueva línea entre /VirtualHost
y /IfModule )

SSLPassPhraseDialog exec:/usr/share/apache2/pass

Guarda y sale del archivo.

Habilitar SSL en la carpeta /download en default-ssl.conf

La carpeta /download es donde se alojarán los paquetes para hacer Deploy de Software. Para ello, deberemos SI O SI habilitar SSL sobre la misma.

sudo vim /etc/apache2/sites-enabled/default-ssl.conf

(ingresa la cadena en una nueva línea entre ServerAdmin webmaster@localhost y DocumentRoot /var/www/html)

Alias /download /var/lib/ocsinventory-reports/download
<Directory /var/lib/ocsinventory-reports/download>
#Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>


Guarda y sale del archivo.

Deshabilitar HTTP en la carpeta /download en ocsinventory-reports.conf


Para asegurarnos de que nadie sin el certificado SSL generado pueda descargar Paquetes, desactivaremos SSL en el file ocsinventory-reports.conf.

sudo vim /etc/apache2/sites-enabled/ocsinventory-reports.conf

(ingresa la cadena en una nueva línea entre Directory /var/lib/ocsinventory-reports/download y IfModule mod_authz_core.c):

Require all granted

Guarda y sale del archivo.

Reinicia el demonio de Apache2.

Nota: ante un error en el reinicio de Apache, restaura los Backups realizados de los sitios anteriormente y comienza los pasos nuevamente.

Copia el certificado generado a tu /home/usuario:

sudo cp /etc/ssl/certs/ocsng.pem /home/usuario

Renombralo a "cacert.pem" (el nombre admitido por defecto en los Agentes de OCS Inventory)

mv ocsng.pem cacert.pem

Extrae el certificado generado a un lugar "seguro"

Copia utilizando WinSCP el certificado "cacert.pem" a un lugar "seguro" accesible para implementarlo en tus Agentes Windows, por ejemplo dentro de tu carpeta Download en tu Windows.

Configuración final vía Consola

Accede ahora mediante tu navegador a la URL http://tuipestatica/ocsreports




En la siguiente pantalla, ingresa:

MySQL login: root
MySQL password: TU-CONTRASEÑA-DE-ROOT-MYSQL
Name of Database: ocsweb
MySQL hostname: localhost

Luego, clic en "Send", "Click here to enter OCS-NG GUI" y en "Perform the update".

Luego, clic en "Click here to enter OCS-NG GUI".

Esto te redireccionará al login de la Consola de OCS Inventory. Utiliza las credenciales por defecto (usuario: admin, contraseña: admin).

¡Listo! Ya has instalado y configurado tu OCS Inventory.

Si te encuentras con el siguiente mensaje de error al acceder...






...en las próximas semanas escribiré PARTE II: quitar SECURITY ALERT! de Consola OCS Inventory. Luego, en PARTE III: configuraciones básicas de Consola OCS Inventory y en PARTE IV: Instalación de Agentes Windows OCS Inventory.

Mantente alerta que (probablemente) publique vídeos en mi Canal de Youtube mostrando entre otras cosas el funcionamiento de Deploy de Software mediante OCS Inventory, ya que últimamente se me hace arduo escribir :).

Puedes dejarme tus comentarios y opiniones. ;)


Fuentes:
http://wiki.ocsinventory-ng.org/index.php/Main_Page
http://www.fastfire.org/2014/06/06/ocs-inventory-ng-on-ubuntu-14-04/
http://www.miloszengel.com/ocs-ng-2-2rc1-server-enable-ssl-for-management-and-deployment/

5 mar. 2016

Monitoriza comandos en Linux con watch



Estaba tratando de recuperar archivos de una partición con problemas de error de lectura en un disco, por lo que tuve que crear una imagen .dd usando la increíble herramienta Testdisk.

Paralelamente, quería conocer el incremento del archivo de imagen que se estaba generando, con qué velocidad crecía o si se pausaba el proceso de generación. Para ello, acudí al venerable comando du que muestra el tamaño de un(los) archivo(s) en una carpeta de forma recursiva.

El problema: tenía que ejecutar el comando du manualmente cada vez que quería saber si el archivo había crecido o se había pausado. Entonces me pregunté si podría re-ejecutar cada X segundos el mismo comando para mantener en consola el crecimiento de forma "fluida" (entiendo que muchos me dirán "Hey, por shell script se podría hacer sin problemas", ergo la programación no es mi fuerte).

El comando watch cumple esa función perfectamente. Su uso es muy sencillo, y no por eso deja de ser potente (basta con ver su man). En la práctica:

watch du -sc /mnt/external/backup

Por defecto, watch ejecutará el mismo comando cada 2 segundos. Si queremos modificar el tiempo, usaremos el parámetro -n X (donde X son los segundos de "refresco"). Atención: tolera tiempos solamente mayores a 0.1 segundo.

watch -n 0.5 du -sc /mnt/external/backup

De esta forma, cada medio segundo se ejecutará el comando, manteniendo en pantalla completa el resultado de forma fluida, sin generar sucesivas líneas, manteniendo todo en un único resultado en la consola.

¡Excelente comando que me simplificó todo el trabajo!

23 feb. 2016

Cuida la batería de tu smartphone con Battery Charge Notifier

Todos los usuarios de smartphones conocemos el rol importantísimo que cumplen las baterías en nuestros teléfonos. Rogamos que duren todo el día, o al menos que no se descarguen demasiado rápido.

Debemos entender que en la duración de una batería influyen muchísimos factores, algunos técnicos, otros "humanos". Depende de configuraciones del smartphone, las Apps que utilicemos, de las características mismas de la batería, de factores ambientales como la temperatura o el calor, el brillo de la pantalla, el uso de Bluetooth, GPS, la calidad de la señal de los Datos Móviles, el uso del Wi-Fi, entre otros tantos factores.

Pero, ¿qué podemos hacer como usuarios para mantener la batería en óptimas condiciones? ¿Existen Apps que ayuden en cierta forma a que una batería dure no solo lo máximo posible entre cargas, si no en su vida útil a largo plazo, extendiéndolas el tiempo que deben y no menos años?

Battery Charge Notification es una buena alternativa para cuidar las cargas de nuestra batería de Litio. La App sirve para no sobrepasar las cargas de la batería, ni que tampoco decaigan muy por debajo del nivel mínimo recomendado.

Para instalarla, nos dirigimos al enlace en Google Play de Battery Charge Notifier.

La principal funcionalidad de Battery Charge Notifier es ayudarnos a no sobrecargar la batería al 100%, o que baje a un mínimo que la haga funcionar forzadamente. De forma sencilla, podremos configurar la App para que nos notifique mediante un ringtone cuando alcance un (por ejemplo) 85-90%, o cuando decaiga por debajo del 35-40%.



De esta forma, alargaremos la vida útil de la batería, siempre y cuando recordemos hacer ciclos cortos de carga, y evitar ir de un 10% a un 100%, teniendo en cuenta que la tecnología de Litio de las actuales baterías tienen un mejor desempeño final haciendo muchas cargas cortas en vez de pocas, continuas y extensas.

¿Porqué recomiendo Battery Charge Notifier? El resto de Apps "prometen" cuidar la batería, pero en realidad resultan pesadas, ocupando mucho espacio en nuestros móviles y no cumpliendo con las funcionalidades básicas, instalando más características innecesarias que las que necesitamos. Battery Charge Notifier es liviana, cumple perfectamente su función y no contiene publicidad de ningún tipo.

Con el paso del tiempo, tu batería durará los años que debe y tendrá un mejor rendimiento en el día a día.