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
# apt-get install rancid
<Ok
> y oprima ENTER para continuar.<YES
> y oprima ENTER para continuar.# editor /etc/aliases
Agregas las lineas:
rancid-all: sysadm
rancid-admin-all: sysadm
Grabe y salga. Luego ejeucute:
# newaliases
# 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.
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 ******
$ 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
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
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
$ editor /var/lib/rancid/all/router.db
Agregue esta línea:
rtrX.ws.nsrc.org:cisco:up
Grabe y salga
$ /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
$ 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".
$ 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.
$ /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
$ /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.
$ 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!
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)
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.
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.
$ /usr/lib/rancid/bin/rancid-run
Tomará un minuto o más, espere.
$ 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.
$ 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.
$ /usr/lib/rancid/bin/rancid-run
$ /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.
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
#
# apt-get install websvn
''' /var/lib/rancid/svn '''
/var/lib/rancid/svn
y no lo que se muestra por defecto.
# 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
# chgrp -R www-data /var/lib/rancid/svn
# chmod g+w -R /var/lib/rancid/svn
http://pcX.ws.nsrc.org/websvn
Vaya al directorio 'all/configs'. Puede ver todas las configuraciones de sus enrutadores ahí.
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.
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://
+---- Rev. 19 Nov 2015