martes, 30 de abril de 2013

Install SpaceWalk in CentOS


Red Hat Enterprise Linux 6, Scientific Linux 6, CentOS 6


rpm -Uvh http://yum.spacewalkproject.org/1.9/RHEL/6/x86_64/spacewalk-repo-1.9-1.el6.noarch.rpm

Red Hat Optional Server 6

When using RHEL 6, make sure you are subscribed to following RHN channel:
Red Hat Optional Server 6

Jpackage repository RHEL 6, SL 6, CentOS 6 and Fedora

For Spacewalk on EL 6 and Fedora, a couple of additional dependencies are needed from jpackage. If repo is broken, mirror list here: ​http://www.jpackage.org/mirroring.php

Please configure the following yum repository before beginning your Spacewalk installation:

cat > /etc/yum.repos.d/jpackage-generic.repo << EOF [jpackage-generic] name=JPackage generic #baseurl=http://mirrors.dotsrc.org/pub/jpackage/5.0/generic/free/ mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=free&release=5.0 enabled=1 gpgcheck=1 gpgkey=http://www.jpackage.org/jpackage.asc EOF


We specifically want 5.0 generic directory in the above URL. Make sure, you do not use the jpackage-generic repository on RHEL 5.


EPEL 6 (use for RHEL 6)

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm


PostgreSQL server, set up by Spacewalk (embedded)

You can let Spacewalk setup the PostgreSQL server on your machine without any manual intervention. Run:

yum install spacewalk-setup-embedded-postgresql
Installing Spacewalk

Just ask yum to install the necessary packages. This will pull down and install the set of RPMs required to get Spacewalk to run.

If you prefer the PostgreSQL backend, including the embedded version mentioned above: yum install spacewalk-postgresql

Configuring the firewall

Spacewalk needs various inbound ports to be connectible. Use system-config-firewall or edit /etc/sysconfig/iptables, adding the ports needed -- 80 and 443. On system with firewalld use firewall-cmd --add-service=http ; firewall-cmd --add-service=https. Add port 5222 if you want to push actions to client machines and 5269 for push actions to a Spacewalk Proxy, 69 udp if you want to use tftp.

Space needed in hard disk 15G for embebded database.

spacewalk-setup --disconnected

/usr/sbin/spacewalk-service [stop|start|restart].

Saludos!!


lunes, 29 de abril de 2013

Actualizar Ubuntu de 12.10 a 13.04

Hola,

hace unos días ha sido liberada la versión 13.04 de Ubuntu. Aproveche el fin de semana para actualizar mi 12.10 a 13.04. Aquí los pasos realizados.

Primero actualizamos el sistema:

# apt-get update
# apt-get upgrade

Hacemos una copia de seguridad de nuestras fuentes de repositorios.

# cp /etc/apt/sources.list /etc/apt/sources.list.bak

Reemplazamos en los repositorios quantal (12.10) por raring (13.04)

# sed -i 's/quantal/raring/' /etc/apt/sources.list

Actualizamos el sistemas y reiniciamos.

# apt-get update
# apt-get upgrade
# reboot


Saludos!!

jueves, 25 de abril de 2013

Buscar binarios en los repositorios

Hoy estaba buscando un ejecutable en RHEL6 semanage,  para la administración de SELinux. Parece que no está instalado por defecto. Para buscar un binario en los repositorios:

 [root@server1 ~]# yum whatprovides *semanage
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
libsemanage-2.0.43-4.2.el6.x86_64 : SELinux binary policy manipulation library
Repo        : www-repo
Matched from:
Other       : libsemanage = 2.0.43-4.2.el6

policycoreutils-python-2.0.83-19.30.el6.x86_64 : SELinux policy core python
                                               : utilities
Repo        : www-repo
Matched from:
Filename    : /usr/sbin/semanage


libsemanage-2.0.43-4.2.el6.i686 : SELinux binary policy manipulation library
Repo        : www-repo
Matched from:
Other       : libsemanage = 2.0.43-4.2.el6

libsemanage-2.0.43-4.2.el6.x86_64 : SELinux binary policy manipulation library
Repo        : installed
Matched from:


En este caso el que busco es /usr/sbin/semanage que lo proporciona el paquete policycoreutils-python, lo instalamos.

[root@server1 ~]# yum install policycoreutils-python
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package policycoreutils-python.x86_64 0:2.0.83-19.30.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================
 Package                     Arch        Version                Repository     Size
====================================================================================
Installing:
 policycoreutils-python      x86_64      2.0.83-19.30.el6       www-repo      342 k

Transaction Summary
====================================================================================
Install       1 Package(s)

Total download size: 342 k
Installed size: 920 k
Is this ok [y/N]: y
Downloading Packages:
policycoreutils-python-2.0.83-19.30.el6.x86_64.rpm           | 342 kB     00:00    
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : policycoreutils-python-2.0.83-19.30.el6.x86_64                   1/1
  Verifying  : policycoreutils-python-2.0.83-19.30.el6.x86_64                   1/1

Installed:
  policycoreutils-python.x86_64 0:2.0.83-19.30.el6                                 

Complete!

Ya tenemos el binario:

[root@server1 ~]# semanage
/usr/sbin/semanage:
semanage [ -S store ] -i [ input_file | - ]
semanage [ -S store ] -o [ output_file | - ]

semanage login -{a|d|m|l|D|E} [-nrs] login_name | %groupname
semanage user -{a|d|m|l|D|E} [-LnrRP] selinux_name
semanage port -{a|d|m|l|D|E} [-nrt] [ -p proto ] port | port_range
semanage interface -{a|d|m|l|D|E} [-nrt] interface_spec
semanage module -{a|d|m} [--enable|--disable] module
semanage node -{a|d|m|l|D|E} [-nrt] [ -p protocol ] [-M netmask] addr
semanage fcontext -{a|d|m|l|D|E} [-efnrst] file_spec
semanage boolean -{d|m} [--on|--off|-1|-0] -F boolean | boolean_file
semanage permissive -{d|a|l} [-n] type
semanage dontaudit [ on | off ]

Primary Options:

        -a, --add        Add a OBJECT record NAME
        -d, --delete     Delete a OBJECT record NAME
        -m, --modify     Modify a OBJECT record NAME
        -i, --input      Input multiple semange commands in a transaction
        -o, --output     Output current customizations as semange commands
        -l, --list       List the OBJECTS
        -E, --extract    extract customizable commands
        -C, --locallist  List OBJECTS local customizations
        -D, --deleteall  Remove all OBJECTS local customizations

        -h, --help       Display this message
        -n, --noheading  Do not print heading when listing OBJECTS
        -S, --store      Select and alternate SELinux store to manage

Object-specific Options (see above):

        -f, --ftype      File Type of OBJECT
                "" (all files)
                -- (regular file)
                -d (directory)
                -c (character device)
                -b (block device)
                -s (socket)
                -l (symbolic link)
                -p (named pipe)

        -F, --file       Treat target as an input file for command, change multiple settings
        -p, --proto      Port protocol (tcp or udp) or internet protocol version of node (ipv4 or ipv6)
        -M, --mask       Netmask
        -e, --equal      Substitue source path for dest path when labeling
        -P, --prefix     Prefix for home directory labeling
        -L, --level      Default SELinux Level (MLS/MCS Systems only)
        -R, --roles      SELinux Roles (ex: "sysadm_r staff_r")
        -s, --seuser     SELinux User Name
        -t, --type       SELinux Type for the object
        -r, --range      MLS/MCS Security Range (MLS/MCS Systems only)
        --enable         Enable a module
        --disable        Disable a module

Requires 2 or more arguments

Saludos.


miércoles, 24 de abril de 2013

Crear Repositorios HTTP para RHEL

Una forma fácil y rápida de tener repositorios estaticos para nuestros sistemas es tener un servidor con la ISO de Redhat montada y compartida por http o ftp. NFS se desaconseja ya que en las instalaciones desatendidas con kickstart da algunos problemas.

Un ejemplo practico, en nuestro servidor repositorio, copiaremos la ISO de la última versión de redhat:

#ls -ltrha /home/ricard/isos/rhel-server-6.4-x86_64-dvd.iso
-rw-rw-r-- 1 ricard ricard 3.5G Mar 26 13:39 /home/ricard/isos/rhel-server-6.4-x86_64-dvd.iso

La montamos en algún directorio:

#mount -o loop /home/ricard/isos/rhel-server-6.4-x86_64-dvd.iso /home/apache/rhel6
mount: warning: /home/apache/rhel6 seems to be mounted read-only.

Para que se automonte en el arranque del servidor la añadiremos al /etc/fstab.

#echo "/home/ricard/isos/rhel-server-6.4-x86_64-dvd.iso        /home/apache/rhel6 udf,iso9660 user,loop 0 0" >> /etc/fstab
Suponiendo que tenemos apache instalado y configurado por defecto, podemos hacer un link de este directorio a /var/www/html/. También se puede cambiar el Document root.

 DocumentRoot /home/apache/
        <Directory />
                Order deny,allow
                Allow from all
        </Directory>

Comprobaremos que desde nuestro navegador podemos acceder, http://localhost/rhel6



En el servidor cliente que ha de acceder al repositorio se ha de incluir en /etc/yum.repo.d un nuevo fichero con el repositorio. Yo le he llamado www.repo

[www-repo]
enabled=1
gpgcheck=0
name=Red Hat Linux $releasever - $basearch - HTTP
baseurl=http://192.168.122.1/rhel6

Y ya lo podemos empezar ha usar:

# yum search nmap
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
www-repo                                                                                                                                            | 3.9 kB     00:00   
www-repo/primary_db                                                                                                                                 | 3.1 MB     00:00   
============================================================================ N/S Matched: nmap ============================================================================
nmap.x86_64 : Network exploration tool and security scanner

  Name and summary matches only, use "search all" for everything.

Si tenemos un servidor sin salida a Internet o aislado. Podemos copiar la ISO, montarla en un file system y añadir un repositorio local. En este caso el fichero de configuración del repositorio sería el siguiente:

[local-repo]
enabled=1
gpgcheck=0
name=Red Hat Linux $releasever - $basearch - LOCAL
baseurl=file:///home/apache/rhel6

Saludos!!


lunes, 22 de abril de 2013

Instalación de phpmyadmin


Hoy vamos a ver una herramienta llamada "phpmyadmin" que nos servira para administrar nuestras bases de datos mysql desde un entorno web. Es útil si no tenemos acceso por ssh a nuestros servidores y también para dar acceso a desarrolladores sin comprometer la seguridad de nuestros servidores.

Es una aplicación de software libre programada en PHP. La página principal de su comunidad donde podéis encontrar el software, documentación y soporte es la siguiente:

http://www.phpmyadmin.net

También podéis ver el entorno web y hacer pruebas on-line sin tener que instalar nada desde la siguiente demo:

http://demo.phpmyadmin.net

Nosotros después de  probarlo nos ha convencido y vamos a instalarlo en nuestro servidor. Nos descargaremos el software:

http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/3.5.7/phpMyAdmin-3.5.7-all-languages.tar.gz

Seguiremos la siguiente documentación para una instalación rápida:

http://wiki.phpmyadmin.net/pma/Quick_Install

# cd /var/www
# wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/3.5.7/phpMyAdmin-3.5.7-all-languages.tar.gz
# tar -xvf  phpMyAdmin-3.5.7-all-languages.tar.gz
# ln -s phpMyAdmin-3.5.7-all-languages phpMyAdmin


Descomprimimos el tar en el directorio donde tenemos el resto de aplicaciones web, por ejemplo en /var/www/.

Configuraremos apache para poder acceder a la aplicación.

Hay dos formas de configurar phpMyAdmin de forma manual o mediante un Wizard. Usaremos está ultima. Para habilitar el Wizard.

# cd phpMyAdmin
#mkdir config
#chmod o+rw config

#cp config.inc.php config/
#chmod o+w config/config.inc.php

Si se accede a la url http://localhost/phpMyAdmin cuando existe el fichero de configuración automáticamente saldrá el Wizard para configurar el enlace con Mysql. Una vez hecho hay que mover el fichero fuera para que el Wizard quede deshabilitado.

#mv config/config.inc.php .
#chmod o-rw config.inc.php


Una vez hecho ya podemos entrar con nuestros usuarios de Mysql y administrar las bases de datos, tablas, etc.

Saludos!!





viernes, 19 de abril de 2013

Filtrar lineas útiles en archivos de configuración

Hola,

 muchas veces los archivos de configuración de Apache, Mysql, etc, etc. Son el mismo fichero de ejemplo que viene con los paquetes, de modo que a parte de las lineas descomentadas y en uso, hay muchas otras comentadas que entorpecen la lectura de los parámetros de configuración.

Una forma para poder filtrar solamente las lineas habiles del fichero de configuración y eliminar las lineas en blanco es la siguiente :

# cat apache2.conf |grep -v \# |grep -v '^$'
 Saludos

jueves, 18 de abril de 2013

Actualización Firmware System Controller SUN E6900

Buenas,

 no hace mucho me tuve que documentar la actualizanción de firmware de las "System Controller" de un servidor Sun Fire E6900. Decir que el servidor Sun Sunfire E6900 es un servidor particionable de gama media, salió al mercado antes del auge de la virtualización. 




Sus principales cualidades son un sistema operativo propietario tipo Unix Solaris, se montan con procesadores SPARC de 64Bits y se pueden unir varias particiones físicas para conseguir un servidor lógico que tiene la potencia de la suma de ellas.

Logotipo de Solaris.

Aunque son servidores muy potentes, las mejoras en los procesadores de Intel, la madurez de Linux, el auge de la virtualización y sus altos costes de compra y mantenimiento han hecho que poco a poco se vayan desplazando del mercado. Por otra parte Sun fue comprada por Oracle. Está última está focalizando la venta de su hardware como una solución completa de Hardware & Software para sus bases de datos.

Antecedentes

Practicamente todos nuestros dispositivos BIOS, UEFI, tarjetas de red, tarjetas de fibra, placas base, etc, etc, disponen de un software que controla el funcionamiento del hardware llamado firmware.

La actualización del firmware de nuestro servidores, debería ser un proceso planificado a ejecutar de forma periódica. Se recomienda por parte de los fabricantes de hardware tener siempre las ultimas versiones, estás solucionan problemas y bugs con el software que controla nuestro hardware.

En este caso debido a un mal funcionamiento de las System Controller, Oracle recomienda instalar la última versión del firmware. Se puede abrir caso con Oracle directamente desde Oracle Metalink, también desde allí se puede bajar el paquete con la última versión del firmware.


Logotipo de Oracle.

El Sunfire E6900 dispone de dos System Controller que nos permiten conectarnos al servidor para crear particiones, servidores y conectar a las consolas locales de los mismos. Una es la main (activa) y a otra es la de slave (o backup). Se puede configurar ssh/telnet para conectarnos a ellas por red.

Procedimiento

El procedimiento en tres pasos es el siguiente:
  1. Actualizar la SC Slave.
  2. Actualizar la SC Main.
  3. Reiniciar las particiones del Servidor. En este caso solo una.
Después de bajarnos el paquete lo descomprimimos y dejamos los ficheros en un servidor web para poder acceder a ellos desde las consolas. La versión actual es la 5.20.12 y actualizaremos a las 5.20.17.

La documentación nos dice:

1. If you have a redundant SC configuration, connect to the spare SC console using the serial port.
2. Upgrade the firmware on the spare SC by running the flashupdate command on the spare SC.
Use the command syntax appropriate to the URL protocol:
schostname:SC> flashupdate -f http://192.168.121.2:5080/sun/114527-18/ scapp rtos
where <URL> is the URL to the directory containing the new flash images.
The flashupdate command updates ScApp and RTOS on the spare SC.
Annex B
1. Upgrade the firmware on the main SC by running the flashupdate command on the main SC in the platform shell.
CAUTION: When performing this step, do NOT:
o Power down any part of the system
o Reset any part of the system
o Perform any DR operation
Use the command syntax appropriate to the URL protocol:
schostname:SC> flashupdate -f http://192.168.121.2:5080/sun/114527-18/ all rtos
where <URL> is the URL to the directory containing the new flash images. The flashupdate command upgrades the CPU/Memory boards and I/O assemblies, then it reboots the SC. ScApp and RTOS are upgraded during the reboot.
NOTE: The first SC reboot after a successful update from 5.11.x or 5.12.x firmware may take up to 20 minutes to complete due in part to updating of internal system records. Other factors include POST level setting and configuration. While these factors may affect the speed of subsequent reboots, the updating of system records occurs only once.
2. Verify that the firmware has been upgraded:
o Run the showsc command on the main and spare SCs to verify that ScApp and RTOS have been upgraded.
For 5.20.17, the output should indicate that the ScApp version is 5.20.17 and the RTOS version is 49.
o Run the showboards -p version command to verify that the CPU/Memory boards and I/O assemblies have been upgraded.
3. If you have main and spare SCs, synchronize their date and time settings. The date and time must be the same on both SCs for failover purposes. For more information, see Section 8.0, Synchronizing Date and Time on SCs, then proceed to the next step in this procedure.
After you have verified the firmware upgrade and synchronized the SCs, connect to each domain console and, one at a time, execute the following steps on all of them.
NOTE: The following steps involve domain setkeyswitch operations that can be performed later, at your convenience. However, note that the new firmware does not take full effect until they are completed, so execute the remaining steps as soon as possible after the flashupdate. Also, do not reboot the Solaris operating environment until the remaining steps are completed.
4. Shut down all the domains by halting the Solaris operating environment on each domain.
5. Power off all CPU/Memory boards and I/O assemblies by setting the keyswitch position to off:
schostname:A> setkeyswitch off
6. Verify that all the CPU/Memory boards and I/O assemblies are powered off by running the showboards command on the SC in the platform shell:
schostname:SC> showboards
7. (En caso necesario) If any CPU/Memory boards or I/O assemblies are not Powered off, run the poweroff command on the SC in the platform shell to power off those components:
schostname:SC> poweroff <component_names>
8. Bring up each domain by setting the keyswitch position to on:
schostname:A> setkeyswitch on

Saludos!!

viernes, 5 de abril de 2013

Comprobar la integridad de ficheros descargados

Hola,

 hoy es Viernes, así que algo ligerito. Muchas veces nos bajamos ficheros grandes de internet, el proceso de descarga es lento y largo. En algunos casos es posible que el fichero descargado difiera del de origen. Algún bit malicioso se ha saltado los controles de integridad y el resultado es diferente. Como comprobarlo?? Fácil.

Normalmente si la página de descargas es seria realizan un checksum o suma de comprobación del fichero antes de colgado. Nosotros después de bajarlo hemos de revisar que coinciden. Ejemplo:

Nos bajamos la ISO de la última versión de RHEL. En la web de red hat, en la sección de descargas nos proporcionan:


Podemos ver el checksum de MD5 y SHA-256. Nos descargamos el fichero y ejecutamos el comando md5sum que hace la suma:
# md5sum rhel-server-6.4-i386-dvd.iso
2f1927af5bca9a34f2d9488655b4fdf4  rhel-server-6.4-i386-dvd.iso
  Como podemos ver el número de comprobación coincide con el de la web, esto nos asegura que tanto el fichero de origen como de destino es exactamente el mismo.

 Puede parecer una tonteria revisarlo, o una perdida de tiempo pero asegurarnos la descarga de ciertas ISO o ficheros de actualizaciones de BIOS, firmware puede evitarnos futuros quebraderos de cabeza.

Imaginar que descargamos el fichero de actualización de la BIOS de nuestro PC y no comprobamos ni el tamaño ni el checksum. Si el proceso de actualización no es muy estricto es posible que corrompamos la BIOS y el PC no arranque.

Saludos


miércoles, 3 de abril de 2013

Monitorizar Event Viewer de Windows con Nagios/Centreon

Hola,

para monitorizar nuestro sistemas tenemos varios clientes alternativos para comunicarse con Nagios/Centreon. El más extendido y seguro es NSClient++, un cliente (realmente el proceso es un servidor) hecho en C++ para Windows.


Su instalación por defecto es muy sencilla, siguiente, siguiente, siguiente. ;-)

Creará un servicio que podemos parar, arrancar, etc, etc. Este ejecuta el proceso nsclient++ en memoria y queda escuchando en el puerto 5666.

Podemos comprobar su correcto funcionamiento desde nuestro servidor nagios con el plug-in:

#./check_nrpe -H myserver -p 5666
I (0.3.8.75 2010-05-27) seem to be doing fine...

En su pila básica se pueden consultar los recursos más importantes de nuestro servidores windows, como puede ser CPU, MEMORY, DISK, NETWORK, etc.

En este caso vamos a chequear los eventos del EventViewer para capturar errores en concreto y mostrarlos en nuestro servidor de nagios.

Usamos el comando que viene en la pila "CheckEventLog" filtraremos por el event ID que queremos cazar, en este caso el "514" del Log de aplicaciones, y si hay tan solo hay uno salte con warning. 

Hay que tener en cuenta que la sintaxis del comando cambia en la nueva versión. Si se quiere consultar un servidores con una versión más antigua de NSClient ++ hay que seguir esta sintaxis.

Hacemos la prueba directamente con el comando:

./check_nrpe -H myserver -p 5666 -c CheckEventLog -a filter=new file=Application MaxWarn=1 MaxCrit=1 filter+generated=\<1h filter+eventID=="514" filter=in syntax=%count% unique

Eventlog check ok|'eventlog'=0;1;1;

Ahora tan solo hay que crear la alarma desde nagios y asociarle un comando que ejecute la linea anterior. 

Con esto hemos conseguido que cada cada hora compruebe la ultima hora del log de aplicaciones buscando eventos con el ID "514", si lo encuentra saltará un critical y lo corregiremos con las acciones manual necesarias.

 Saludos.