Conectese a su PC con ssh y el usuraio sysadm y convertimos en root:
$ sudo -s
#
Ahora instalamos el sistema de control de versiones Subversion:
Además de Subversion, instalaremos telnet y el cliente de correo Mutt. Puede ser que ambos paquetes ya hayan sido instalados en un ejercicio previo. En tal caso, no se preocupe, el comando apt simplemente no los instalará.
# apt install subversion telnet mutt
Instalar Rancid mismo:
# apt install rancid
Agregue un alias para el usuario rancid en el archivo /etc/aliases.
Por defecto, RANCID envía correos electrónicos a los usuarios rancid-<GRUPO> y rancid-admin-<GRUPO>. Como queremos que los mensajes sean enviados al usuario sysadmin, vamos a crear un alias:
# editor /etc/aliases
Agregue las lineas:
rancid-routers: sysadm
rancid-admin-routers: sysadm
Grabe el archivo, salga del editor y ejecute:
# newaliases
# nano /etc/rancid/rancid.conf
Busque esta línea:
# list of rancid groups
#LIST_OF_GROUPS="sl joebobisp"; export LIST_OF_GROUPS
Y debajo de ésta, agregue:
LIST_OF_GROUPS="routers"
(sin el carácter “#” al comienzo de la línea, y alineada hacia la izquierda)
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.
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
Graba el archivo y salga.
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 - rancid
Confirme que es el usuario rancid ahora:
$ id
Debería ver algo similar a esto (puede que los números no concuerden):
uid=118(rancid) gid=124(rancid) groups=124(rancid)
SI UD NO ES EL USUARIO RANCID AHORA, NO SIGA
$ editor /var/lib/rancid/.cloginrc
Agregue las siguientes líneas:
add method * {ssh}
add cyphertype *.ws.nsrc.org {aes128-ctr,3des-cbc}
add user *.ws.nsrc.org campusY
add password *.ws.nsrc.org lab-PW lab-EN
(La primera línea indica que el método de conexión hacia todos los dispositivos (*) es “ssh”. La segunda línea indica que debe usarse el nombre de usuario “campusY”. En la tercera línea, el primer “Lab-PW” es el password de acceso y el segundo “lab-EN” es el password de modo privilegiado (enable) 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
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 bdr1-campusY.ws.nsrc.org
(reemplace Y con su número de campus. Por ejemplo, si usted es el campus 1, el nombre sería bdr1-campus1.ws.nsrc.org)
Debería ver algo como esto:
bdr1-campus6.ws.nsrc.org
spawn ssh -c aes128-ctr,3des-cbc -x -l campus6 bdr1-campus6.ws.nsrc.org
<BANDERA DE ENTRADA CISCO>
Password:
bdr1-campus6>enable
Password:
bdr1-campus6#
Termine la conexión al enrutador:
bdrX-campusX# exit
Asegúrese de ser el usuario rancid antes de continuar:
$ id
Si no ve algo como
uid=118(rancid) gid=124(rancid) groups=124(rancid)
NO CONTINUE hasta haberse convertido en el usuario rancid. Vea la sección anterior para más detalles.
Ahora inicialize el repositorio SVN:
$ /usr/lib/rancid/bin/rancid-cvs
Deberias ver algo como:
Committing transaction...
Committed revision 1.
Checked out revision 1.
Updating '.':
At revision 1.
A configs
Adding configs
Committing transaction...
Committed revision 2.
A router.db
Adding router.db
Transmitting file data .done
Committing transaction...
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 routers $ rm -rf svn ~~~ |
| > Ahora intente de nuevo: |
| ~~~ $ /usr/lib/rancid/bin/rancid-cvs ~~~ |
$ editor /var/lib/rancid/routers/router.db
Agregue estas líneas (SIN espacios al inicio de la linea):
bdr1-campusY.ws.nsrc.org;cisco;up
core1-campusY.ws.nsrc.org;cisco;up
(recuerde reemplazar Y con su número de grupo, según corresponda)
Grabe y salga.
Todavia como el usuario rancid:
$ rancid-run
Esto tardará unos momentos, sea paciente.
Corralo de nuevo porque la primera vez puede que no registre correctamente:
$ rancid-run
$ cd /var/lib/rancid/logs
$ ls -l
… Inspeccione el contenido de los archivos:
$ less routers.*
NOTA: Cuando usa “less” - para ver el siguiente archivo presione “:n”. Para ver el archivo anterior, presione “:p”. Para salir, presione “q”.
$ cd /var/lib/rancid/routers/configs
$ less bdr1-campusY.ws.nsrc.org
NOTA: Re-emplace “Y” con el numero de su grupo.
Si todo salió bien, debería ver la configuración del enrutador.
Vamos a cambiar la descripción de una interfaz en el enrutador
$ /usr/lib/rancid/bin/clogin bdr1-campusY.ws.nsrc.org
Donde debe reemplazar “Y” con su número de grupo.
En la línea de comandos “bdr1-campusY#” escriba:
bdr1-campusY# conf term
Verá algo similar a:
Enter configuration commands, one per line. End with CNTL/Z.
bdr1-campusY(config)#
Ingrese:
bdr1-campusY(config)# interface LoopbackXX (sustitya XX con el No. de su Servidor)
Verá lo siguiente:
bdr1-campusN(config-if)#
Ingrese:
bdr1-campusN(config-if)# description <put your name here>
bdr1-campusN(config-if)# end
Ahora debería tener este mensaje:
bdr1-campusY#
Para guardar la configuración en la memoria:
bdr1-campusY# write memory
Ustede debería ver:
Building configuration...
[OK]
Para salir escriba:
bdr1-campusY# exit
Ahora debería estar de vuelta en el indicador de usuario rancid en su sistema:
$ 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.
$ cd /var/lib/rancid/routers/configs
$ ls -l
Debería ver el archivo de configuración del enrutador de su grupo:
$ svn log bdr1-campusY.ws.nsrc.org
(Donde “Y” es el numero de su grupo)
Fíjese en las revisiones. Debería ver diferentes números de revisión como r6, r9 y r8. Elija el más bajo y el más alto.
------------------------------------------------------------------------
r8 | rancid | 2019-11-15 14:49:02 +0000 (Fri, 15 Nov 2019) | 1 line
updates
------------------------------------------------------------------------
r7 | rancid | 2019-11-15 14:47:11 +0000 (Fri, 15 Nov 2019) | 1 line
updates
------------------------------------------------------------------------
r5 | rancid | 2019-11-15 14:47:06 +0000 (Fri, 15 Nov 2019) | 1 line
new router
------------------------------------------------------------------------
Veamos la diferencia entre dos versiones. En este caso entre los “diffs” 5 y 8 y los “diffs” 7 y 8. Los numerous pueden ser diferente. Y, reemplace el “Y” con el número de su campus:
$ svn diff -r5:8 bdr1-campusY.ws.nsrc.org | less
$ svn diff -r7:8 bdr1-campusY.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:
$ cd /var/lib/rancid/routers
$ ls -lah
Verá un directorio escondido llamado “.svn” - este contiene toda la información sobre los cambios entre las configuraciones de los enrutadores, capturada cada vez que se ejecuta rancid.
Nunca, nunca toque o edite el directorio `.svn# directamente!
Ahora saldremos del shell de rancid para volver al shell de root, y de ahí saldremos al 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@hostX-campusY.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:
# editor /etc/cron.d/rancid
Encuentra esta linea:
#1 * * * * /usr/lib/rancid/bin/rancid-run
and change it to the following, replacing “X” with your group number: y cambiarla a lo siguiente, reemplazando “X” con el numero de su grupo:
X-3X/30 * * * * rancid /usr/bin/rancid-run
(e.j. grupo 2 empezaría la linea con 2-32/30, remueve el “#”, también)
Graba y salga del archivo.
That’s it. The command “rancid-run” will execute automatically from now on every 30 minutes all the time (every day, week and month). Each group will start at a slightly different time to avoid overloading the training platform.
Ya está. El comando “rancid-run” se ejecutará automáticamente cada 30 minutos a partir de ahora (todos los días, semanas y meses). Cada grupo va a correr el comando en un tiempo un poquito diferente que lo demás para evitar que sobrecargar la plataforma del curso.
Conviértase en el usuario rancid y actualice el archivo router.db:
# su - rancid
$ editor /var/lib/rancid/routers/router.db
Agregue los dos dispositivos restantes en su campus para que el archivo termine luciendo así, donde “Y” es su número de campus.
bdr1-campusY.ws.nsrc.org;cisco;up
core1-campusY.ws.nsrc.org;cisco;up
dist1-b1-campusY.ws.nsrc.org;cisco;up
dist1-b2-campusY.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 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 (todavia como el usuario ‘rancid’):
$ rancid-run
Tomará un minuto o más, sea paciente.
Revise los registros:
$ cd /var/lib/rancid/logs
$ ls -l
… Busque el último archivo y mírelo
$ less routers.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.
$ cd /var/lib/rancid/routers/configs
$ 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.
$ rancid-run
Esto podría tomar unos momentos, así que tenga paciencia …
$ /usr/lib/rancid/bin/clogin -c "show clock" bdr1-campusY.ws.nsrc.org
Donde Y es su número de grupo.
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 los siguientes comandos (o COPIE Y PEGUE):
configure terminal
username pc<número_de_PC> secret 0 NewPassword
exit
write
Guarde, salga y ejecute lo siguiente:
$ for device in bdr1 core1 dist1-b1 dist1-b2
Su línea de comandos cambiará a “>”. Continue escribiendo:
> do
> /var/lib/rancid/bin/clogin -x /tmp/newuser $device-campusY.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 dispositivos. Esto es programa sencillo en el shell de Linux, pero es muy poderoso.
Q. Cómo verificaría que esto se ha ejecutado correctamente? Pista: “show run | inc
A. Conéctese al bdr1 y core1. Escriba “enable” y luego “show run | inc username” para verificar que el nuevo usuario “pc
Ahora agregaremos el repositorio de RANCID SVN (Subversion) a ViewVC para que pueda ver las configuraciones a través de la web.
Si todavía está conectado como usuario rancid, regrese a la raíz. Recuerde que puede escribir “id” para verificar qué ID de usuario es usted.
$ exit
#
Instalar ViewVC:
# apt install viewvc
Agregue el informe Rancid SVN al archivo de configuración de ViewVC. Edite el archivo
# editor /etc/viewvc/viewvc.conf
Busque esta línea en el archivo de configuración y configúrela así:
svn_roots = rancid: /var/lib/rancid/svn
Nota: Si utiliza una linea existente, recuerde remover el signo de # del principio de la línea.
Guardar y Salir.
A continuación, debemos agregar el usuario del servidor web de apache (www-data) al grupo rancid para otorgar acceso al servidor web apache y ver el repositorio SVN de rancid.
# usermod -a -G rancid www-data
Reinicializar el servidor apache
# systemctl restart apache2
¡Explore los archivos rancid desde su navegador web!
(reemplace el ‘X’ y el ‘Y’ con su host y su campus)
Revisa los archivos debajo el directorio ‘routers/configs’. Puede ver todo los archivos de configuración de su enrutador aquí.
Usted no querrá que cualquier persona pueda ver sus archivos de configuración. A continuación hay algunos pasos que puede seguir para proteger el acceso a ViewVC. Un paso no incluido en este laboratorio es habilitar el uso de https (ssl). Recomendamos esto para todos sus sitios web siempre que sea posible.
Crea el archivo de configuración de Apache para ViewVC
# cd /etc/apache2/conf-available
# editor viewvc.conf
En este archivo ponga:
<DirectoryMatch "^/usr/lib/cgi-bin/viewvc">
AuthName "viewvc RANCID Repository Access"
AuthType Basic
AuthUserFile /etc/viewvc/htpasswd
require valid-user
</DirectoryMatch>
Graba y salir del archivo. Habilitar esta configuración y reinicializa Apache para activarlo:
# a2enconf viewvc
# systemctl reload apache2
A continuación, tenemos que crear un archivo htpasswd en el directorio /etc/viewvc:
# cd /etc/viewvc
# htpasswd -c htpasswd sysadm
(Solamente usa la opción -c la primera vez para crear este archivo. Si la usa otra vez la opción boraría todas las contraseñas que ya estan en el archivo.)
Proporcione una contraseña para el usuario sysadm (¿tal vez la contraseña de la clase?). Debería ver lo siguiente:
New password:
Re-type new password:
Adding password for user sysadm
Asegura el archivo:
# chgrp www-data htpasswd
# chmod 640 htpasswd
Intente navegar a la página de WebSVN en http://hostX-campusY.ws.nsrc.org/cgi-bin/viewvc.cgi y le debe pedir un nombre de usuario y contraseña para poder ver las páginas.
Ahora debería poder hacer un login usando su usuario y contraseña que acaba de poner en el archivo de htpasswd.
ViewVC le permite ver fácilmente los cambios entre versiones.
routers/ luego a `configs/Esto le mostrará las diferencias entre las dos configuraciones de enrutador.
ViewVC es una forma conveniente de ver rápidamente las diferencias entre múltiples archivos de configuración a través de una GUI. Tenga en cuenta que esto es un posible riesgo de seguridad, por lo que debe limitar el acceso a la URL http://hostX/viewvc utilizando contraseñas (y SSL) o listas de control de acceso apropiadas.
rancid no privilegiadoEn un entorno de producción, probablemente querríamos agregar un usuario “rancid” en los dispositivos, sin privilegios de configuración, pero capaz de hacer un show running-config.
Una forma de hacerlo es agregar un usuario en el modo de configuración:
bdr1-campusY# conf term
Enter configuration commands, one per line. End with CNTL/Z.
bdr1-campusY(config)# username rancid privilege 4 secret password
bdr1-campusY(config)# privilege exec level 4 show running-config view full
Esto crea un usuario rancid con nivel de privilegio 4. En la línea siguiente, permitimos que el usuario ejecute show running-config
También necesita agregar el nombre de usuario y la contraseña a su /var/lib/rancid/.cloginrc
add method * {ssh}
add cyphertype *.ws.nsrc.org {aes128-ctr,3des-cbc}
add user *.ws.nsrc.org rancid
add password *.ws.nsrc.org password
add autoenable *.ws.nsrc.org 1
El autoenable significa que el usuario estará en el nivel de privilegio correcto inmediatamente después del inicio de sesión y no se necesita enable para ejecutar show running-config.
Nota: consulte la página de manual de clogin para ver cómo puede especificar otro usuario (por ejemplo: campusY) cuando use clogin de forma interactiva, para realizar cambios con -c o -x (como se muestra arriba).
Ver más en http://www.toms-blog.com/backup-cisco-config-with-rancid-and-an-un-priviledged-user/
Nota: también se permite el uso de direcciones IP, y también se puede escribir:
add user 100.68.* campusY
add password 100.68.* lab-PW lab-EN
add user bdr1.ws.nsrc.org campusY
add password bdr1.ws.nsrc.org lab-PW lab-EN