Ejercicio práctico con RANCID

Metas

Notas

Ingrese en su PC con ssh como el usuraio sysadm

Conviértase en root, e instale el sistema de control de versiones Subversion:

Además de Subversion, instalaremos telnet y el cliente de correo Mutt. Puede que ambos paquetes ya hayan sido instalados en un ejercicio previo. En tal caso, no se preocupe. El comando apt-get simplemente no los instalará.

$ sudo -s
# apt-get install subversion telnet mutt

Instalar Rancid

# apt-get install rancid

Agregue un "alias" para el usuario rancid en el archivo de /etc/aliases:

# editor /etc/aliases

Agregas las lineas:

        rancid-all:     sysadm
        rancid-admin-all:   sysadm

Grabe y salga. Luego ejeucute:

# newaliases

Edite la configuración de Rancid

# editor /etc/rancid/rancid.conf

Busque esta línea:

    #LIST_OF_GROUPS="sl joebobisp"

Y debajo de ésta, agregue:

    LIST_OF_GROUPS="all"

Sin el carácter "#" al comienzo de la línea, y alineada hacia la izquierda.

Vamos a usar Subversion con nuestro sistema de control de versiones, y no CVS, así que busque la línea con el parámetro RCSSYS:

        RCSSYS=cvs; export RCSSYS

Y cámbiela a:

        RCSSYS=svn; export RCSSYS

también busque la línea con CVSROOT:

        CVSROOT=$BASEDIR/CVS; export CVSROOT

y cámbiela a:

        CVSROOT=$BASEDIR/svn; export CVSROOT

Asegúrese de que "svn" esté en minúscula. Grabe y salga del editor.

Cambie al usuario rancid

CRITICO! CRITICO! CRITICO!

CRITICO! CRITICO! CRITICO!

CRITICO! CRITICO! CRITICO!

Ponga mucha atención a cuál ID de usuario (userid) está usando durante el resto de los ejercicios. Si no está seguro, simplemente ejecute "id" en la línea de comandos en cualquier momento.

Desde una línea de comandos de root ("#"), cambie su identidad para convertirse en el usuario 'rancid':

# su -s /bin/bash rancid

Confirme que es el usuario rancid ahora:

$ id

Debería ver algo similar a esto (puede que los números no concuerden):

        uid=104(rancid) gid=109(rancid) groups=109(rancid)

***** SI NO ES RANCID AHORA, NO SIGA ******

**************** OTRA VEZ! ****************

***** SI NO ES RANCID AHORA, NO SIGA ******

Configure el script para iniciar sesiones (logins) automáticas:

$ editor /var/lib/rancid/.cloginrc

Agregue las siguientes dos líneas:

        add user *.ws.nsrc.org cisco
        add password *.ws.nsrc.org nsrc+ws nsrc+ws

La primera línea indica que debe usarse el nombre de usuario "cisco". En la segunda línea, el primer y segundo "cisco" son los passwords de acceso y modo privilegiado (enable) para para el enrutador. El asterisco "*" en los nombres es un comodín, lo cual indica que Rancid deberá usar estas credenciales para todos los dispositivos cuyos nombres terminen en .ws.nsrc.org

Grabe y salga.

Ahora proteja este archivo para que no pueda ser leído por otros usuarios:

$ chmod 600 /var/lib/rancid/.cloginrc

Compruebe que puede iniciar sesiones hacia el enrutador de su grupo

Ingrese a su enrutador con clogin. La primera vez probablemente recibirá una advertencia de SSH sobre la clave pública. Confirme con "y". Pero no debería tener que escribir la contraseña del enrutador. Debería ser automático.

$ /var/lib/rancid/bin/clogin rtrX.ws.nsrc.org

(reemplace X con su número de grupo. Por ejemplo, si usted es grupo 1, el nombre sería rtr1.ws.nsrc.org)

Debería ver algo como esto:

       spawn ssh -c 3des -x -l cisco rtr2.ws.nsrc.org
       The authenticity of host 'rtr2.ws.nsrc.org (10.10.2.254)' can't be established.
       RSA key fingerprint is 73:f3:f0:e8:78:ab:49:1c:d9:5d:49:01:a4:e1:2a:83.
       Are you sure you want to continue connecting (yes/no)? 
       Host rtr1.ws.nsrc.org added to the list of known hosts.
       yes
       Warning: Permanently added 'rtr1.ws.nsrc.org' (RSA) to the list of known hosts.
       Password: 

       rtrX>enable
       Password: 
       rtrX#

Termine la conexión al enrutador:

rtrX#exit

Inicialize el repositorio SVN para Rancid:

Asegúrese de ser rancid antes de continuar:

$ id

Si no ve algo como

         "uid=108(rancid) gid=113(rancid) groups=113(rancid)"

NO CONTINUE hasta haberse convertido en el usuario rancid. Vea el paso 6 para más detalles.

Ahora inicialize el repositorio SVN:

$ /usr/lib/rancid/bin/rancid-cvs

Deberias ver algo como:

    Committed revision 1.
    Checked out revision 1.
    At revision 1.
    A         configs
    Adding         configs

    Committed revision 2.
    A         router.db
    Adding         router.db
    Transmitting file data .
    Committed revision 3.

******** Sólo haga lo siguiente si tiene problemas *******

Si esto no funciona, entonces puede que le falte el paquete subversion, o que algo no se configuró apropiadamente durante los pasos anteriores. Debe verificar que Subversion está instalado, así que antes de ejecutar rancid-cvs, haga lo siguiente:

$ exit
# apt-get install subversion
# su -s /bin/bash rancid
$ cd /var/lib/rancid
$ rm -rf all
$ rm -rf svn

Ahora intente de nuevo:

$ /usr/lib/rancid/bin/rancid-cvs

Cree el archivo que contendrá la lista de dispositivos

$ editor /var/lib/rancid/all/router.db

Agregue esta línea:

        rtrX.ws.nsrc.org:cisco:up

Grabe y salga

Vamos a probar rancid!

$ /usr/lib/rancid/bin/rancid-run

Esto tardará unos momentos.

Pruébelo de nuevo porque la primera vez puede que no registre correctamente:

$ /usr/lib/rancid/bin/rancid-run

Revise los registros de eventos (logs) de Rancid:

$ cd /var/lib/rancid/logs
$ ls -l

... Inspeccione el contenido de los archivos:

$ less all.*

NOTA! Al usar "less" - para ver el siguiente archivo presione ":n". Para ver el archivo anterior, presione ":p". Salga con "q".

Mire las configuraciones

$ cd /var/lib/rancid/all/configs
$ less rtrX.ws.nsrc.org

Si todo salió bien, debería ver la configuración del enrutador. NOTA! Re-emplaza "X" con el numero de su grupo.

Vamos a cambiar la descripción de una interfaz en el enrutador

$ /usr/lib/rancid/bin/clogin rtrX.ws.nsrc.org

En la línea de comandos "rtrX#" escriba:

rtrX# conf term

Verá:

Enter configuration commands, one per line.  End with CNTL/Z.
rtrX(config)#

Ingrese:

rtrX(config)# interface LoopbackXX  (sustituya XX con el # de su PC)

Verá lo siguiente:

rtrX(config-if)#

Ingrese:

rtr2(config-if)# description <escriba su nombre aquí>
rtr2(config-if)# end
rtrX# write memory
rtrX# exit

Ejecutemos Rancid de nuevo:

$ /usr/lib/rancid/bin/rancid-run

Mire los registros de eventos

$ ls /var/lib/rancid/logs/

Debería ver un nuevo archivo de eventos indicando la última ejecución de Rancid con la fecha y hora como parte del nombre.

Veamos las diferencias

$ cd /var/lib/rancid/all/configs
$ ls -l

Debería ver el archivo del enrutador de su grupo:

$ svn log rtrX.ws.nsrc.org

(Donde "X" es el numero de su grupo)

Fíjese en las revisiones. Veamos las diferencias entre las dos versiones:

$ svn diff -r 5:7 rtrX.ws.nsrc.org | less

... ¿Puede ver los cambios?

Note que svn es el comando del sistema de control de versiones para manejar repositorios de información. Si escribe:

$ ls -lah

Verá un directorio escondido llamado ".svn" - este contiene toda la información sobre los cambios entre las configuraciones de los enrutadores recogidos cada vez que se ejecuta rancid.

Nunca, nunca toque o edite el directorio .svn a mano!

Revise su correo

Ahora saldremos del shell de rancid para volver a el shell de root, y de ahí saldremos a el shell de "sysadmin". Vamos a usar el programa "mutt" para ver si rancid nos ha estado enviando correos:

$ exit                  (salir del shell de rancid)
# exit                  (salir del shell de root)
$ id

... comprobar que somos sysadmin de nuevo;

... si no, salga e ingrese de nuevo a su PC como sysadmin.

$ mutt

(Cuando se le pregunte sobre crear el directorio "Mail", diga Yes)

Si todo sale como está planificado, debería poder leer los e-mails enviados por Rancid. Puede seleccionar el e-mail enviado por "rancid@pcX.ws.nsrc.org" y ver qué tiene dentro.

Note que será la descripción de su enrutador y cualquier diferencia que se haya registrado desde la última vez que se ejecutó rancid-run.

Salga de mutt.

(use 'q' para salir al índice, y 'q' de nuevo para salir de mutt)

Hagamos que Rancid se ejecute cada 30 minutos por medio de Cron

Cron es un sistema disponible en Linux para automatizar la ejecución de tareas. Primero debemos convertirnos de nuevo en root:

$ sudo -s

Ahora crearemos una nueva tarea para el usuario rancid:

# crontab -e -u rancid

Le preguntará por su opción de editor. Indique el editor que haya estado usando hasta ahora en clase

Agregue esta línea al final del archivo (COPIE Y PEGUE):

*/30  *  *  *  *  /usr/lib/rancid/bin/rancid-run

Graba y salga del archivo.

Ya está. El comando "rancid-run" se ejecutará automáticamente cada 30 minutos a partir de ahora, todos los días.

Ahora agregue todos los enrutadores

Conviértase en el usuario rancid y edite el archivo siguiente:

# su -s /bin/bash rancid
$ editor /var/lib/rancid/all/router.db

Agregue los otros enrutadores de la clase en el archivo.

Si hay más o menos enrutadores en clase, incluya el número correcto (esto es sólo un ejemplo):

COPIE Y PEGUE:

rtr1.ws.nsrc.org:cisco:up 
rtr2.ws.nsrc.org:cisco:up 
rtr3.ws.nsrc.org:cisco:up 
rtr4.ws.nsrc.org:cisco:up 
rtr5.ws.nsrc.org:cisco:up 
rtr6.ws.nsrc.org:cisco:up 
rtr7.ws.nsrc.org:cisco:up 
rtr8.ws.nsrc.org:cisco:up
rtr9.ws.nsrc.org:cisco:up

Note que "cisco" significa que estos son equipos Cisco. Esta información ayuda a Rancid a identificar cómo debe comunicarse con el equipo. Rancid también soporta muchos otros fabricantes, tales como Juniper, HP, etc.

Asegúrese de que las entradas están alineadas hacia la izquierda del archivo.

Ejecute rancid otra vez:

$ /usr/lib/rancid/bin/rancid-run

Tomará un minuto o más, espere.

Revise los registros:

$ cd /var/lib/rancid/logs
$ ls -l

... Busque el último archivo y mírelo

$ less all.YYYYMMDD.HHMMSS

Este debería ser el último archivo en la lista producida por "ls -l"

Debería haber un número de entradas indicando que los enrutadores se han agregado a Subversion, y otras informaciones.

Revise las configuraciones

$ cd /var/lib/rancid/all/configs
$ more *.ws.nsrc.org

Use la barra espaciadora para continuar a los demás archivos, o también:

$ less *.ws.nsrc.org

Y oprima la barra espaciadora para desplazarse hacia abajo en la página y luego presione ":n" para ver el próximo archivo. Recuerde que en ambos casos puede salir con "q".

Si todo salió bien, debería ver las configuraciones de todos los enrutadores.

Ejecute Rancid de nuevo para ver si alguien ha cambiado la configuración de su enrutador.

$ /usr/lib/rancid/bin/rancid-run

Juegue con clogin:

$  /usr/lib/rancid/bin/clogin -c "show clock" rtrX.ws.nsrc.org

Qué puede observar?

Y lo que es mas interesante es que podemos sacar provecho de esta herramienta y escribir un script sencillo para hacer cambios en múltiples dispositivos rápidamente:

$ editor /tmp/newuser

... en este archivo escriba (o COPIE Y PEGUE):

configure terminal
username pc<número_de_PC> secret 0 NewPassword
exit
write

Guarde, salga y ejecute lo siguiente:

$ for r in 1 2 3 4

Su línea de comandos cambiará a ">". Continue escribiendo:

> do
> /var/lib/rancid/bin/clogin -x /tmp/newuser rtr$r.ws.nsrc.org
> done

Ahora su línea de comandos volverá a ser "$" y el comando clogin de Rancid se ejecutará y enviará los comandos que acaba de escribir a los enrutadores rtr1, rtr2, rtr3 y rtr4. Esto es programación en shell sencilla en Linux, pero es muy poderosa.

Q. Cómo verificaría que esto se ha ejecutado correctamente ?

Pista: "show run | inc "

A. Conéctese a rtr1, rtr2, rtr3 y rtr4. Escriba "enable" y luego "show run | inc username" para verificar que el nuevo usuario NewUser existe. Salga con "exit". Naturalmente esto lo podríamos automatizar de la misma manera.

Agregar el repositorio Subversion de Rancid a WebSVN

Si todavía está como usuario rancid, salga para volver a ser root. Recuerde que puede ejecutar "id" para comprobar qué usuario es efectivamente.

$ exit
# 

Instale WebSVN:

# apt-get install websvn

''' /var/lib/rancid/svn '''

    /var/lib/rancid/svn

y no lo que se muestra por defecto. y luego ENTER. * Diga a la pregunta de permisos y luego ENTER.

Permite que WebSVN Corre Debajo Ubuntu version 14.04.N

 # ln -s /etc/websvn/apache.conf /etc/apache2/conf-available/websvn.conf
 # mkdir /etc/apache2/conf.d
 # ln -s /etc/websvn/apache.conf /etc/apache2/conf.d/websvn
 # a2enconf websvn.conf
 # service apache2 reload

Repare los permisos. El servidor web debe poder leer la carpeta svn (Subversion)

# chgrp -R www-data /var/lib/rancid/svn
# chmod g+w -R /var/lib/rancid/svn

Ahora puede ver los archivos de Rancid desde su navegador!

http://pcX.ws.nsrc.org/websvn

Vaya al directorio 'all/configs'. Puede ver todas las configuraciones de sus enrutadores ahí.

Haciendo más Seguro WebSVN

Ud. no quería que todo el Internet podría revisar sus archivos de configuraciòn, no? Debajo son algunos pasos para hacer más seguro WebSVN. Un paso es no incluido es no permiter que alguien conecta a través http en vez de https (ssl). Recomendamos https por todo sus sitios de web siempre cuando sea posible.

Primero tiene que actualizar el codigo de configuración de Apache por WebSVN:

# cd /etc/apache2/conf.d/
# vi websvn

Debajo la línea que dice:

#Options FollowSymLinks MultiViews

Inserta una línea que dice:

AllowOverride All

Y, ahora, reemplaza la línea que diga:

Allow from all

por una línea que diga:

Allow from 10.10.0.0/16

Ahora graba y salga del archivo. Proxímo necesitamos crear un archivo de .htaccess en el directorio "/usr/share/websvn":

# cd /usr/share/websvn
# editor .htaccess

En este archivo incluye:

AuthUserFile /usr/local/websvn/.htpasswd
AuthName "Authorized Users Only Past This Point!"
AuthType Basic
Require valid-user

Graba y salga del archivo. Ahora necesitamos crear el archivo .htpasswd que se usa htaccess

''' > Test text > test text > test text '''

# mkdir /usr/local/websvn
# cd /usr/local/websvn
# htpasswd -c .htpasswd sysadm

Provee una contraseña por tu usuario sysadm (tal vez la contraseña del curso?). Deberías ver esto:

New password:
Re-type new password:
Adding password for user sysadm

Ahora re-incializamos el servidor web Apache para que los cambios surtan afecto:

# service apache2 restart

Prueba a navegar a las páginas de WebSVN a http://pcN.ws.nsrc.org/websvn/ y debería recibir las preguntas por un usuario y clave para ver las páginas de WebSVN ahora.

Compruebe las revisiones

WebSVN le permite ver con facilidad las diferencias entre versiones.

Oprima "REPOS 1" para volver a la página principal:

Esto le mostrará las diferencias entre dos configuraciones de enrutadores distintos.

WebSVN es una manera conveniente de ver las diferencias rápidamente en una interfaz gráfica entre múltiples archivos de configuración. Note que esto es un potencial problema de seguridad, así que debería restringir el acceso al URL http:///websvn usando contraseñas (y SSL), y listas de control de acceso.

+---- Rev. 19 Nov 2015