Guía Completa para SysAdmins
Guía Completa para SysAdmins
com
1
La Biblia del SysAdmin – [Link]
Introducción
A lo largo de una serie de artículos voy a publicar los principios básicos que todo SysAdmin debe
respetar, practicar y predicar a sus pares. Estos principios los he tomado (y orgullosamente puedo decir
que he respetado casi en su totalidad) del artículo General SysAdmin Principles & Guidelines
publicado por el Dr. Joe Chung.
Los Administradores de Sistemas, más conocidos como SysAdmins, somos a menudo los superhéroes
del departamento de sistemas, aquellos destinados a "salvar el día" (muy a menudo, generalmente).
2
La Biblia del SysAdmin – [Link]
Índice
Introducción...........................................................................................................................................2
Índice.....................................................................................................................................................3
Capítulo 1: Documentación...................................................................................................................4
Documentación.................................................................................................................................4
Referencias.......................................................................................................................................5
Capítulo 2: Lo difícil (seguridad y backups).........................................................................................6
Lo difícil (seguridad y backups).......................................................................................................6
Referencias.......................................................................................................................................8
Capítulo 3: La eficiencia importa..........................................................................................................9
La eficiencia importa........................................................................................................................9
Referencias.....................................................................................................................................10
Capítulo 4: Administración y acceso remoto.......................................................................................11
Administración y acceso remoto.....................................................................................................11
Referencias.....................................................................................................................................12
Capítulo 5: Reinicios y uptime............................................................................................................13
Reinicios y uptime..........................................................................................................................13
Referencias.....................................................................................................................................15
Capítulo 6: Automatización y scripting...............................................................................................16
Automatización y scripting.............................................................................................................16
Referencias.....................................................................................................................................18
Capítulo 7: Gestión de software y mantenimiento del sistema...........................................................19
Gestión de software y mantenimiento del sistema.........................................................................19
Referencias.....................................................................................................................................23
Capítulo 8: Usuarios y soporte............................................................................................................24
Usuarios y soporte..........................................................................................................................24
Referencias.....................................................................................................................................28
Capítulo 9: Estandarización vs. diversidad.........................................................................................30
Estandarización vs. diversidad........................................................................................................30
Referencias.....................................................................................................................................32
Capítulo 10: Promoción, ética y aprendizaje.......................................................................................33
Promoción, ética y aprendizaje.......................................................................................................33
Promoción de GNU/Linux.........................................................................................................33
Aprendiendo Administración..........................................................................................................33
Estar en contacto con nuestros colegas...........................................................................................33
Ética laboral y licencias.............................................................................................................34
Referencias.....................................................................................................................................36
Licencia...............................................................................................................................................37
3
La Biblia del SysAdmin – [Link]
Capítulo 1: Documentación
Este primer capítulo trata el tema más importante en el trabajo de un Administrador de Sistemas la
documentación.
Documentación
• Documentar absolutamente todo el trabajo realizado.
• Mantener un registro diario de las actividades.
• Utilizar al menos un archivo de texto plano.
• Guardar la fecha para cada entrada.
• Cuidar la ortografía aunque ningún colega o superior tenga acceso a la
documentación. Tener una buena ortografía es una característica
destacable en toda persona, especialmente en un profesional.
• Este registro está principalmente destinado a uno mismo:
• Es nuestra propia FAQ.
• Es nuestra colección de tutoriales para ayudarnos y ayudar a otros
a reproducir un trabajo en el futuro sobre otro sistema.
• Al momento de documentar una tarea es necesario
preguntarse si es suficiente información para que otros
puedan reproducirla.
• Este documento puede crecer mucho al pasar el tiempo, por lo que
se debe considerar rápidamente utilizar un mejor sistema de
documentación, preferentemente una wiki (mejor escalable
considerando que nuestro equipo puede crecer y se puede necesitar
una herramienta de edición colaborativa), un blog, o ambos.
• Este documento tiene que ser resguardado periódicamente de forma
segura.
• Algunos administradores guardan notas en papel, algo totalmente
arcaico y opuesto a la tecnología con la que trabajan.
• Si el registro/log/documentación se encuentra en un servidor
corporativo dentro de una red privada y se necesita información
vital estando a kilómetros de distancia, estaremos en problemas.
De ser posible (siempre que no incluya información
sensible/confidencial) debe ser accesible desde cualquier
ubicación.
• Utilizar comentarios en archivos de configuración para documentar los cambios.
4
La Biblia del SysAdmin – [Link]
Referencias
• Joe Chung - General SysAdmin Principles & Guidelines
5
La Biblia del SysAdmin – [Link]
6
La Biblia del SysAdmin – [Link]
7
La Biblia del SysAdmin – [Link]
Referencias
• Joe Chung - General SysAdmin Principles & Guidelines
• Cómo instalar y configurar Bacula en Debian
8
La Biblia del SysAdmin – [Link]
La eficiencia importa
• Las tecnologías de proxies, cachés o mirrors pueden reducir el uso de ancho de banda en
instalaciones a través de Internet y en general.
• Evitar instalaciones manuales a gran escala.
• Utilizar el clonado de sistemas siempre que sea posible.
• Crear y mantener plantillas de sistemas y aplicaciones.
• Optimizar el uso de recursos: memoria, CPU, discos, procesos, etc.
• Esto es de vital importancia cuando se utilizan tecnologías cloud en modo de pago por
uso.
• Aunque se cuente con exceso de recursos, se debe optimizar el uso de los mismos para
contemplar todos los aspectos y escenarios posibles: picos de carga, tiempos de
respuesta, espacio para backups, crecimiento y escalabilidad de los datos a lo largo del
tiempo.
• Automatizar absolutamente todas las tareas que sean rutinarias o repetitivas (este punto abarca
todo un capítulo en sí mismo).
• Pensar en grande (tener la escalabilidad en mente en todo momento).
• La eficiencia es la madre de la escalabilidad: ningún sistema ineficiente puede escalar
bien.
• Optimizar el uso del tiempo.
• Saber distinguir cuándo una tarea tiene el potencial de ser rutinaria o repetitiva para
invertir tiempo en su automatización.
• Fallar en este aspecto puede provocar que se pierda tiempo automatizando una
tarea que no es rutinaria ni repetitiva.
• Documentar es ganar tiempo.
• Dejar de lado el primer mandamiento es garantía de desperdiciar considerables
cantidades de tiempo a corto, mediano y largo plazo.
• Planificar el uso del tiempo.
• Crear TODO lists.
• Asignar prioridades (y recalcular siempre que sea necesario).
• Aprender a postergar solicitudes que tengan baja o nula prioridad (un ejemplo es el
típico escenario en el cual un usuario pide ayuda por un ratón defectuoso, en el preciso
momento en el que estamos migrando a una nueva versión de una aplicación crítica en
producción).
9
La Biblia del SysAdmin – [Link]
Referencias
• Joe Chung - General SysAdmin Principles & Guidelines
10
La Biblia del SysAdmin – [Link]
11
La Biblia del SysAdmin – [Link]
del equipo). Esto es de vital importancia al momento de realizar tareas críticas como
migraciones en producción.
• Para los sistemas en la nube (IaaS, ¿ofrece el proveedor más de un acceso a dichos
sistemas (consolas Web, VPNs, etc.)? Nuevamente, en caso de tener incidencia en los
procesos de compras, asegurarse que estos accesos estén incluídos dentro del soporte de
la infraestructura cloud.
• Aprender a utilizar la línea de comandos.
• Incluso en Windows (cmd/PowerShell).
• La administración remota es mejor (prácticamente exclusiva en sistemas operativos de la
familia Unix) desde línea de comandos.
• Familiarizarse con las herramientas de networking básicas: telnet, netcat, nmap,
tcpdump, ssh, scp, sftp, dig, ping, traceroute, etc.
• Aprender a interactuar con los protocolos de red más utilizados: HTTP, FTP, SMTP,
POP3, etc.
• Aprender a implementar port forwarding y túneles SSH.
• Comprender el concepto de port forwarding para implementar conexiones seguras entre
sistemas remotos y redirigir tráfico a través de SSH.
• Conocer el uso de túneles SSH para encriptar tráfico de protocolos planos (por ejemplo
VNC).
Referencias
• Joe Chung - General SysAdmin Principles & Guidelines
12
La Biblia del SysAdmin – [Link]
Reinicios y uptime
Reinicios, también conocidos como power cycles, son algo trivial en un sistema personal o de
escritorio. Sin embargo cuando se trata de cualquier sistema que presta servicios a terceros, ya sean
usuarios u otros servicios o sistemas (por ejemplo, un servidor de bases de datos que da soporte a un
sitio Web y sólo es accedido por el servidor en cuestión), un reinicio se torna en algo muy delicado.
¿Qué es el bendito "uptime"? El uptime es el tiempo que un sistema estuvo corriendo de manera
ininterrumpida. Generalmente se cuenta como la cantidad de tiempo transcurrido desde el último inicio,
pero también es común verlo en forma porcentual (especialmente en servicios de hosting, soluciones
cloud, enlaces, etc.) como el porcentaje de tiempo que el sistema estuvo disponible en el transcurso de
un mes. Incluso existen servicios gratuitos para monitorear el uptime de diferentes tipos de servicios.
Es necesario realizar ciertos chequeos antes de apagar o reiniciar un sistema.
• ¿Hay algún usuario logueado en el sistema?
• En caso de servicios HTTP, ¿hay actividad en el servidor Web?. Determinar si hay
usuarios y sesiones activas, y conexiones establecidas.
• Si se trata de sistemas que proveen servicios a otros servidores, ¿hay conexiones
establecidas?
• Si se debe realizar una tarea de mantenimiento crítica, como actualizaciones, migraciones o
conversiones ¿durante cuánto tiempo es posible mantener el sistema apagado o el servicio
inaccesible?
13
La Biblia del SysAdmin – [Link]
14
La Biblia del SysAdmin – [Link]
Referencias
• Joe Chung - General SysAdmin Principles & Guidelines
15
La Biblia del SysAdmin – [Link]
Automatización y scripting
Más allá del brillante cómic de xkcd, la metodología de trabajo de un SysAdmin debería ser algo más o
menos como lo siguiente. La primera vez que se ejecuta una tarea, se documenta con precisión. La
segunda vez, se resuelve a partir de la documentación generada anteriormente y al mismo tiempo se
automatiza de la manera más eficiente posible. La tercera vez, se delega a un robot, es decir, se deja
todo en manos de la automatización.
• Aprender y utilizar de manera consistente al menos un lenguaje de scripting (Bash, Perl,
Python).
• Utilizarlo de manera consistente ayuda a perfeccionarnos y sacarle el máximo provecho.
16
La Biblia del SysAdmin – [Link]
17
La Biblia del SysAdmin – [Link]
Referencias
• Joe Chung - General SysAdmin Principles & Guidelines
18
La Biblia del SysAdmin – [Link]
19
La Biblia del SysAdmin – [Link]
20
La Biblia del SysAdmin – [Link]
• La instalación y actualización de paquetes debe ser una tarea interactiva. Muchas veces
una actualización de paquetes dispara el reinicio de servicios, lo cual puede afectar el
uptime de un servicio.
• Peor aún, uno debe conocer con exactitud hacia qué versión de cada paquete se
está migrando con exactitud para no romper la compatibilidad con todo software
de terceros y aplicaciones a medida corriendo en el servidor.
• Esto aplica principalmente (pero no únicamente) a las versiones de sistemas de
gestión de bases de datos, lenguajes de scripting (PHP, Perl, Python), intérpretes
y entornos de tiempo de ejecución (Java), servicios (Apache, Nginx), librerías del
sistema (libc) y utilitarios (OpenSSL/LibreSSL).
• Cabe destacar que esto aplica generalmente para las migraciones de versión de
sistema operativo (dist-upgrade) más que para las actualizaciones de
paquetes (upgrade). Al menos en Debian y derivados, donde al momento de
liberar un versión estable se "congelan" las versiones de paquetes, y las
subsecuentes actualizaciones sólo corrigen bugs y proveen parches de seguridad
sin alterar la funcionalidad. Pero por supuesto, depende de cómo gestione el
versionado de paquetes cada distribución en particular (por esta razón no se ven
distribuciones rolling-release corriendo en servidores).
• Actualizar el sistema operativo, kernel y todo software cuidadosamente.
• (Aplicar parches de seguridad, service packs, hotfixes, etc.)
• Pensar siempre si es el momento correcto para hacerlo.
• El sistema, servicio o aplicación corriendo en el servidor ¿está siendo utilizada?
¿Hay usuarios logueados?
• La actualización ¿puede esperar o es un parche de seguridad crítico?
• Antes de comenzar, ¿se ha realizado un backup o snapshot del sistema previamente?
• ¿Es posible recuperar el sistema rápidamente en caso de que la actualización falle?
• ¿Se ha testeado la actualización en un entorno de prueba antes?
• ¿Se ha testeado el funcionamiento del sistema luego de actualizar?
• En muchos sistemas es posible actualizar sólo los parches de seguridad o hotfixes
críticos en lugar de todas las actualizaciones disponibles.
• Y como regla general: jamás actualizar un sistema un viernes. Preferentemente no hacer
nada un viernes.
21
La Biblia del SysAdmin – [Link]
22
La Biblia del SysAdmin – [Link]
Referencias
• Joe Chung - General SysAdmin Principles & Guidelines
23
La Biblia del SysAdmin – [Link]
Usuarios y soporte
• Los usuarios difícilmente describan sus problemas con el nivel de detalle necesario para poder
resolverlo o que nos permita ayudarlos. Frecuentemente se deben mantener conversaciones del
siguiente estilo:
• "Problemas con el sistema":
Usuario: Tengo problemas con el sistema.
Admin: ¿Con cuál sistema?
Usuario: EL SISTEMA!!!
• "Anda lento":
Usuario: Anda lento
Admin: ¿Qué es lo que funciona lento? ¿La aplicación, la red, su
computadora?
Usuario: TODO.
• Pero el más simpático es el caso típico en el que un usuario lee literalmente una
bluescreen of death:
Usuario: Tengo un problema con el sistema.
Admin: Dígame, ¿qué le sucede?
Usuario: "A fatal exception 0E has occurred at 0028:C562F1B7 in VXD..."
Admin: Ok, está bien, deténgase, por favor.
Usuario: " ctpci9x(05) + 00001853. The current application will be..."
24
La Biblia del SysAdmin – [Link]
• En el sentido inverso, se debe evitar dar detalles técnicos innecesarios o incomprensibles para el
usuario al momento de resolver un problema.
• No "aburrir" al usuario con detalles de bajo nivel que no comprende.
• Muchas veces no es conveniente que el usuario conozca detalles de la implementación
de un sistema o aplicación.
• No sólo desde el punto de vista de la seguridad...
• A veces la tarea de un SysAdmin es mucho más dura cuando tiene que lidiar con usuarios
impacientes y lamentablemente a veces irrespetuosos.
• Sin embargo la vocación de servicio de un Admin debe ser preponderante.
• De lo contrario deberá considerar una carrera en la rama del desarrollo (u otra similar)
donde sólo deba lidiar con sistemas informáticos y a los sumo pares. Por esta razón los
desarrolladores son más felices (?)
• Un SysAdmin debe contar con grandes dotaciones de paciencia y jamás de los jamases deberá
faltar el respeto a ningún usuario (esto más bien debería ser una cualidad genérica de todo ser
humano supongo).
• Para el caso de los DevOps la tarea suele ser mucho más sencilla, pues en general
interactúan con desarrolladores más que con usuarios finales.
• Es mucho más fácil relacionarse con profesionales o usuarios con elevados
conocimientos técnicos, como lo son los desarrolladores.
• Resulta difícil "bajar a tierra" conceptos técnicos abstractos, y viceversa, al momento de
comunicarse con usuarios finales.
• Sin embargo esta habilidad se puede entrenar y practicar en seminarios o charlas,
y por qué no también dictando cursos.
• Mesa de ayuda
• Todos estos problemas se observan más frecuentemente en lo que yo llamo "la
trinchera": el equipo de mesa de ayuda (helpdesk).
25
La Biblia del SysAdmin – [Link]
26
La Biblia del SysAdmin – [Link]
27
La Biblia del SysAdmin – [Link]
Referencias
• Joe Chung - General SysAdmin Principles & Guidelines
28
La Biblia del SysAdmin – [Link]
29
La Biblia del SysAdmin – [Link]
30
La Biblia del SysAdmin – [Link]
31
La Biblia del SysAdmin – [Link]
Referencias
• Joe Chung - General SysAdmin Principles & Guidelines
32
La Biblia del SysAdmin – [Link]
Aprendiendo Administración
• La mejor forma de aprender administración es haciendo administración.
• Es más probable que se aprenda más cuando algo falla.
• Escuchar y consultar (bombardear a preguntas) al viejo SysAdmin.
• Generalmente los viejos SysAdmins son ávidos para compartir conocimiento. Sólo hace
falta interrogarlos e interesarse por su trabajo.
33
La Biblia del SysAdmin – [Link]
• Soluciones híbridas.
• ¿Existen nuevas alternativas de software para proveer servicios?
• LDAP en lugar de NIS.
• Samba en lugar de CIFS.
• Nginx en lugar de Apache.
• Cualquier cosa (?) en lugar de PHP.
• ¿Qué tecnologías usan en otras empresas o instituciones?
• ¿Estamos atrasados en algún aspecto? ¿Qué se puede cambiar o mejorar?
• Ya sea para dar un mejor servicio como para simplificar la administración.
• ¿Existen nuevas metodologías de trabajo?
• Software de backup vs. mis propios scripts.
• Software de automatización vs. mis propios scripts.
• Contenedores vs. máquinas virtuales.
34
La Biblia del SysAdmin – [Link]
• Un usuario adquiere una licencia para un equipo pero desea utilizarla en varios,
violando los términos de la misma.
• Un usuario posee copias de software pirata (ya sea instalado o copias de los instaladores)
en sistemas bajo nuestra órbita.
• Por otro lado se debe garantizar que los datos alojados en nuestro servidores no estén sujetos a
copyright.
• Un usuario tiene cientos de archivos MP3 o películas pirata en uno de nuestros
servidores de archivos (Samba, NFS) o soluciones de almacenamiento en la nube
(Nextcloud).
• Lo mismo ocurre para archivos PDF o EPUB (copias de libros pirata).
• Desde el punto de vista de la ética profesional, siempre se deberá mantener dentro de la ley.
• Un Jefe o Gerente desea acceder a la casilla de correo de un usuario.
• Más allá de lo que puedan decir los términos de uso de los sistemas de la
compañía, acceder a una cuenta de correo electrónico es ilegal en la mayoría de
los países.
• Lo mismo podría ocurrir para otro tipo de solicitudes similares.
• Siempre estar al tanto de las cuestiones legales que afectan nuestro trabajo.
• Como SysAdmin uno tiene naturalmente acceso a todas las cuentas de correo, mensajes,
archivos y bases de datos de la compañía.
• Tener acceso como root/Administrator nos permite (valga la redundancia)
acceder a absolutamente todos los datos de la compañía.
• Jamás utilizar esto a nuestro favor, en perjuicio de otros, o simplemente para
curiosear.
• Más allá de ser poco ético, en la mayoría de los casos se nos puede acusar de
espionaje.
• Un SysAdmin jamás debe cruzar esa barrera, bajo ninguna circunstancia, ya sea
para beneficio propio o por una solicitud "de más arriba".
• En tal caso siempre es mejor renunciar que tener una mala reputación y
convertirse en un mal profesional y persona. O peor aún "quedar pegado"
en un proceso judicial.
• Un SysAdmin debe ser absolutamente responsable con las credenciales y roles que
genera y/o le son otorgados.
De esta forma concluye esta Biblia del SysAdmin (con el perdón de la blasfemia para los creyentes) sin
descartar la posibilidad de agregar anexos en un futuro (en el caso de que sea necesario). Próximamente
publicaré una versión en PDF de la misma, para imprimir y guardar en la mesa de luz de todo
SysAdmin que se precie :)
Y por qué no también una versión en formato EPUB para los E-Readers...
35
La Biblia del SysAdmin – [Link]
Esta Biblia del SysAdmin queda disponible públicamente en GitHub y abierta a sugerencias, cambios y
correcciones. Al mismo tiempo es liberada bajo la licencia MIT.
Referencias
• Joe Chung - General SysAdmin Principles & Guidelines
36
La Biblia del SysAdmin – [Link]
Licencia
The MIT License (MIT)
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37