Instalación de servidor puppet sobre Centos

puppet labs

Objetivos

Puppet server y puppet-dashboard.

Sistemas base

Centos 7

Instalación de puppet master:

Hemos seguido el tutorial de sotoca.es

yum install -y puppet-server
puppet resource service puppetmaster ensure=running enable=true

Para ver que el servicio estaba verdaderamente ejecutando:

systemctl list-unit-files

Instalando puppet dashboard

En el momento de hacer este tutorial, no están aún disponibles los paquetes de puppet-dashboard para centos7. Tampoco están disponibles los paquetes de ruby-mysql para Centos 7, lo que nos deja en este punto, atentos a su salida.

La idea sería añadir el nuevo repositorio de paquetes de puppet labs e instalar con yum

rpm -ivh puppetlabs-release-7-11.noarch.rpm
 yum install -y puppet-dashboard

Conociendo Centos 7

Configuración de red

Desaparece system-config-network y aparece nmtui como forma de configurar la red.

Los interfaces pasan de llamarse eth0, eth1… a tener unos nombres horrorosos como eno230032.

Para que coja la ruta, debe estar sin marcar la casilla ”Never use this network for deault route”

Después de cambios en interfaces:

systemctl network restart

Si no tenemos ips por dhcp, hay que verificar que en el fichero /etc/sysconfig/network-scripts/ifcfg-eno230032 esté bootproto a none y no a dhcp:

BOOTPROTO=none

Si seguimos teniendo problemas de red, hay que verificar la conexión

ifconfig; route

 

Configuración del proxy para yum:

En el fichero  /etc/yum.conf se añade la línea:

proxy=http://proxy.organizacion.com:80

Instalación de emacs

Por que sí, yo uso emacs:

yum install -y emacs

Permitir acceso a root por ssh:

[root@template ~]# grep -i root /etc/ssh/sshd_config
PermitRootLogin yes

Instalar repositorio EPEL para paquetes extras:

rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm

 

Instalar vmware tools desde repositorio:

Mucho más cómodo que montando una ISO desde la plataforma de virtualización:

yum install open-vm-tools

Monitorización

yum install facter snmp-net

Añadir rpm remi

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7*.rpm 

Instalar fusion inventory agent

Necesitamos añadir el repositorio de guillomovitch para poder instalar estos paquetes

wget http://download.opensuse.org/repositories/home:/guillomovitch/CentOS_7/home:guillomovitch.repo

yum -y install fusioninventory-agent

 

 

The power of puppet. Curso introductorio de puppet labs

puppetlabts

Hemos comenzado con el curso que dan desde Puppet Labs para comprender mejor y sacarle todo el partido posible a puppet.

El curso es gratuito, y la máquina virtual tiene una función de quests que va midiendo tu aprendizaje. Así es mucho más motivador y más fácil de seguir.

Problema con la máquina virtual para vmware

Al desplegar la máquina virtual sobre vmware, hemos encontrado un primer problema, ya que nos decía que no había host capaz de ejecutar el sistema operativo.

Sustituir en el fichero learn_puppet_centos-6.5-pe-3.3.2-disk1.vmx

guestOS = "redhat"

por

guestOS = "centos-64"

Otra particularidad que hemos visto en la máquina es que hacer un snapshot la rompe. Por ello, hemos tenido que dejarla en una carpeta de la que no se hace backup nunca.

Antes de empezar

Teclas en castellano:

loadkeys es
echo "loadkeys es >> .bashrc"

Configuración de red

system-config-network
services network restart

Configuración ssh

grep /etc/ssh/sshd_config
PermitRootLogin yes
services sshd restart

Configuración de proxy en bash, puppet y wget

  grep proxy ~/.bashrc
export http_proxy =http://192.128.2.2:80

grep proxy /etc/wgetrc
https_proxy = http://192.128.2.2:80
http_proxy =http://192.128.2.2:80
ftp_proxy =http://192.128.2.2:80

 grep proxy   /etc/puppetlabs/puppet/puppet.confgrep proxy /etc/puppetlabs/puppet/puppet.conf
 http_proxy_host = 192.128.2.2
 http_proxy_port = 80



Forzar la configuración de puppet en un momento dado

puppet agent –test

Validar un archivo de puppet

puppet parser validate FILENAME.pp

Encontrar la ruta para los módulos de puppet

puppet agent --configprint modulepath

Simular un manifiesto en local, sin aplicarlo

puppet apply --noop byte.pp

 Aplicar verdaderamente un manifierto en máquina local:

puppet apply byte.pp

Emacs: Configuración para colorear puppet

cat ~/.emacs
(add-to-list 'load-path "/root/.emacs.d")
(autoload 'puppet-mode "puppet-mode.el" "Major mode for editing puppet manifests")
(add-to-list 'auto-mode-alist '("\\.pp$" . puppet-mode))

;; Enable font lock mode globally, because we love our users.
(require 'font-lock)
(global-font-lock-mode 1)

Instalar, actualizar y desinstalar módulos desde puppet forge

puppet module install puppetlabs-mysql --version 2.2.2 --ignore-requirements
puppet module upgrade puppetlabs-mysql
puppet module uninstall puppetlabs-mysql

 

Ver los módulos ya instalados

puppet module list --tree
Configurar el proxy
root@puppet:/etc/puppet/manifests# grep proxy  /etc/puppet/puppet.conf
http_proxy_host=proxy.myorg.org
http_proxy_port = 80

Puppet: Instalación de servidor en debian

Captura

Es la segunda vez que nos enfretamos al reto de construir un servidor puppet, esta vez sobre un servidor Debian.

Recomendamos leer how puppet works

Consideraciones iniciales

No vamos a usar una configuración asociada a un git. Vamos a usar un puppet master.

Nuestro objetivo será mantener igual en todos los equipos de nuestra infraestructura los siguientes elementos:

  • Configuración de usuarios de apache
  • Configuración GLPI
  • Certificados SSH de cliente
  • Configuración snmp

Instalación base de servidor

Debian Versión 7.7

/etc /apt/sources.list

deb http://ftp.es.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.es.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

deb http://ftp.es.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.es.debian.org/debian/ wheezy-updates main contrib non-free
deb http://backports.debian.org/debian-backports squeeze-backports main


Instalación puppet en servidor

apt-get install puppetmaster puppetmaster-passenger

Al instalar passenger, hemos tenido un problema con apache y sus logs.

no listening sockets available, shutting down
 Unable to open logs

Hemos cambiado los permisos del directorio de apache, para que ya pueda iniciar.

chown www-data:www-data /var/log/apache2

Y hemos reiniciado, por que no había nada en el puerto 80.

Instalación de puppet-dashboard en servidor

Hemos seguido al pie de la letra el tutorial de wiki.debian.org, pero hemos tenido algún problemilla más:

:~# tail /var/log/apache2/dashboard.example.com_error.log
 (...) Directory index forbidden by Options directive: /usr/share/puppet-dashboard/public/
 

Para resolverlo hemos tenido que cambiar la configuración de apache para el servidor de puppet-dashboard.

Una consideración inicial, es que hemos optado por que la configuración de este servidor, sea, por defecto el puppet dashboard. Es decir, al entrar en el raíz del servidor, por el puerto 80, saldrá directamente puppet dashboard.

# /etc/apache2/sites-enabled/puppet-dashboard

<VirtualHost *:80>
        ServerName miservidor.com
        DocumentRoot /usr/share/puppet-dashboard/public/
        <Directory /usr/share/puppet-dashboard/public/>
                Options -Indexes +FollowSymLinks MultiViews
                Order allow,deny
                allow from all
        </Directory>

        PassengerHighPerformance on
        PassengerMaxPoolSize 12
        PassengerPoolIdleTime 1500
        PassengerStatThrottleRate 120
        RailsAutoDetect On
  ErrorLog /var/log/apache2/dashboard.example.com_error.log
  LogLevel warn
  CustomLog /var/log/apache2/dashboard.example.com_access.log combined
  ServerSignature On
</VirtualHost>

Configuramos también settings.yml:

[root@server~]# grep ca_server /etc/puppet-dashboard/settings.yml
ca_server: 'server.org'

En el fichero de configuración de puppet, especificamos la url donde queremos que queden los reports

[master]
    report=true
    reports = store, http
    reporturl = http://servers/reports/reports/upload

Al poner puppet dashboard en el puerto 80, y no en el 3000 que es lo normal, hemos tenigo qeu cambiar /opt/puppet-dashboard/bin/external_node

DASHBOARD_URL = http://localhost

Esta es la vista del servidor web

 

puppet-dashboard-01

Ejecutar puppetmaster:

 /etc/init.d/puppetmaster start

Si nos da este error:

 service puppet-dashboard start
[warn] Starting Puppet Dashboard:[....] Not starting Puppet Dashboard, disabled via /etc/default/puppet-dashboard ... (warning).
. ok

Editar /etc/default/puppet-dashboard-workers:

###START=no
START=yes

Colorear en emacs puppet

[root@server puppet]# apt-get install puppet-el

Instalación de agentes puppet en cliente: Facter y puppet

Facter es el componente de cliente encargado de mostrar la información de cada máquina. Se debe instalar en cada máquina que vayamos a gestionar con puppet.

apt-get install -y puppet facter

Prueba de comunicación con el servidor:

root@client:~# puppet agent --server puppet.server.com --no-daemonize --verbose

En la primera ejecución, se crea un certificado que tenemos que firmar en el servidor. Podéis revisar slashdot.in para más información.

[root@server~]#  puppet cert  --list
 "client.org" (...)
 [root@server~]# puppet cert--sign client.org

 

Servidor Radius en windows 2008 NPS

Configuración de Radius Rol NPS en windows 2008 y 2012.

Si el radius va a autenticar contra un dominio, debe formar parte del dominio activo antes de comenzar la instalación.

Se debe comenzar con la instalación del rol de servidor:

rad01

Se crean los nuevos clientes, con su secreto y su IP:

rad02

Se crea la directiva de red, que especifica qué usuarios del dominio van a poder acceder a la red

rad03

En la directiva de red, se especifican también los servidores DNS si procede.

rad04

Verificamos la directiva de solicitud de conexión para asegurar que siempre se permita el acceso de conexión

rad05

 

Los logs de conexiones se guardan en

C:\Windows\System32\LogFiles

Recomendamos el uso de log parser / log lizard para acceder a ellos.

Monitorización desde Nagios:

Probando el paquete freeradius-utils, hemos conseguido hacer un script que se ocupe de la monitorización en tiempo real del radius.

https://github.com/esterniclos/nagios_radius

Se basa en un cliente check_radius.sh que se debe instalar en la carpeta de nagios para plugins, y llamar a través de un servicio.

Para hacer pruebas en bash, se puede usar la siguiente línea:

echo "User-Name=$USER,User-Password=$PASSWORD" | radclient -4 $HOST auth $SECRET

 

Nueva versión vcenter vsca version 5.5.0 Update 2a

Ya ha salido la nueva versión (update2) de vsca vmware vcenter.

Para actualizar, simplemente se puede hacer a través del interfaz web, en la pestaña Update.

Vendor:
VMware Inc.
Appliance Name:
VMware vCenter Server Appliance
Appliance Version:
5.5.0.20100 Build 2170515
VMware vCenter Server Appliance
Update to version 5.5.0 Update 2a

Redhat: Explicación de licencias linux server standard

Una licenciaRed Hat Enterprise Linux Server Standard (1-2 Sockets) up to 4 guests, se puede instalar sobre un servidor, y cubre también hasta 4 máquinas virtuales que ejecuten sobre ese servidor.

Una buena noticia para los que virtualizamos, aunque últimamente Microsoft está mucho más generoso con las licencias de hiperV que cubren el SSOO de las máquinas del host.

Redhat pone a nuestra disposición un pdf con la comparativa de licencias.

Y en su portal de usuario, podemos siempre ver qué licencias tenemos disponibles en cada momento.

 

Snort: Consultas a la base de datos

Abrimos conexión con la base de datos

mysql -u root -p

En la base de datos de snort,

use snort;

Para ver el diagrama entidad relación de la base de datos:

Buscamos el identificador del evento que necesitamos:

select sig_id,sig_name from signature;

En mi caso, es

223 | COMMUNITY WEB-MISC mod_jrun overflow attempt

Seleccionamos los eventos de mi  signature:

select * from event where signature = 223;

En la tabla de eventos, tenemos las alertas con origen y destino

SELECT timestamp, inet_ntoa(ip_dest), inet_ntoa(ip_src) FROM iphdr WHERE  inet_ntoa(ip_src)="192.168.5.125";

 

Finalmente, hacemos el join entre ambas tablas, y ya podemos sacar el resultado a un fichero de texto:

select inet_ntoa(ip_src), inet_ntoa(ip_dst) from event,iphdr  where iphdr.cid=event.cid and event.sid=iphdr.sid and event.signature = 223  and inet_ntoa(ip_dst)="195.23.2.123" GROUP BY ip_src ORDER BY ip_src  INTO OUTFILE '/tmp/res.txt';

Sobre el acceso a snort a través de la base de datos, tienen un post estupendo en everything about nothing.

cntlm. Proxy con autenticación para herramientas que no admiten la autenticación windows

cntlm funciona como un servicio de windows, y se ocupa de la autenticación con el proxy de todas esas herramientas que no lo soportan.

 

En mi caso, tenemos, por ejemplo f5editor, owncloud, tortoise git… Aceptan parámetros de proxy, pero con autenticación no funciona.

La instalación de cntlm es sencilla, y su configuración se basa en un archivo de texto. Eso sí, usuario y contraseña del dominio quedan en claro.

C:\Program Files (x86)\Cntlm

En cntlm.in configuramos:

Username    myuser
Domain        mydomain
Password    mypass
...
Proxy       192.168.1.10:8080
Proxy       192.168.1.11:8080
...
NoProxy        localhost, 127.0.0.*, 10.*, 192.168.*

Probamos la conexión:

$ cntlm -I -M http://test.com

Espero que os sea muy útil

Activación de licencias en F5

Activación de licencias en modo consola

En este punto, es necesario introducir la licencia. Se recomienda seguir esta guía : http://support.f5.com/kb/en-us/solutions/public/2000/500/sol2595.html?sr=27505445

get_dossier -b KEY_HEXADECIMAL > f1.dossier.txt

Una vez activadas las licencias en la web de F5, se colocan en el sistema de archivos y se carga la licencia:

mv f1.txt /config/bigip.license
reloadlic