Posts Tagged ‘Sysadmin’

Spacewalk – Manejo de sistemas Linux

Jueves, enero 28th, 2010
Spacewalk Screenshot

Captura de pantalla de la página principal - Click para ver más grande

spacewalk logo Uno de los principales problemas al momento de iniciar una gran implementación de computadores de escritorios con GNU/Linux ( sin hablar de una gran migración desde algún otro sistema operativo ) es la de poder contar con una buena herramienta centralizada que permita mantener las actualizaciones de estás máquinas, ejecutar comandos remotos en ellas, desplegar archivos de configuración comunes a grupos de ellas y mantener las versiones de los mismos, mantener un inventario del hardware y del software, hacer rollback de software en caso de problemas ( revertir los cambios ), bueno todo eso y más es Spacewalk.

Normalmente implentaciones de este tipo se hacen montando repositorios espejo ( mirrors ) de los oficiales de la distribución usada, usando aplicaciones como puppet o cfengine para hacer despliegues masivos de configuraciones y ejecutar comandos remotos, ocs inventory para hacer inventario del hardware y software  y algunas otras más para realizar otras cosas, sin embargo todas son aplicaciones diferentes que no están integradas entre si.

Spacewalk viene  a ser una aplicación robusta o mejor dicho debemos decir que está conformado por alrededor de 250 paquetes o programas, su desarrollo es comunitario y tiene como antecedente el ser la versión comunitaria ( es decir sin soporte comercial )  de el producto de RedHat llamado “RedHat Satellite” ahora liberado y con licencia GPLv2 lo que da garantía de que es un software maduro.

¿Que puede hacer Spacewalk?

  • Hacer inventario de tus sistemas ( información de hardware y software).
  • Instalar y actualizar software en tus sistemas.
  • Agrupar y distribuir paquetes de software personalizados en grupos manejables de máquinas.
  • Aprovisionamiento de sistemas vía kickstart, es decir instalaciones desasistidas.
  • Manejar y deslpegar archivos de configuración en tus sistemas con control de versionamiento de los mismos.
  • Parada/Inicio/Configuración de clientes o máquinas virtuales.
  • Distribuir contenido a través de múltiples sitios geográficamente separados de forma eficiente.
  • Creación eficiente de roles de usuarios para atender grupos definidos de máquinas.
  • Soporte multi-lenguaje.
  • El proceso de gestión de máquinas no es intrusivo, no usa usuarios ni claves de sistema, usa tokens y la autenticación es segura.

Tal vez me quede corto en este post para enumerar todas las características de esta poderosa herramienta, llevo algunos meses usándola en mi trabajo y todo no es gloria, Spacewalk necesita un servidor casi exclusivo para el, usa tomcat para su parte web,  usa oracle XE como base de datos ( sin embargo el equipo de desarrollo de spacewalk esta desesperadamente tratando de implementar una versión con postgresql ), solo funciona actualmente con distribuciones basadas en Fedora, redhat, centOS y solaris ( sería ideal y bienvenido el soporte para debian/canaima ) el proceso de instalación y actualización es sencillo pero el proceso de gestión de la aplicación puede ser largo ya que la aplicación web es un monstruo por lo grande en si misma, pero vale la pena su implementación si tu entorno de red y sistemas es adecuado.

Spacewalk es un compendio de muchas tecnologías y lenguajes de programación, entre sus más de 250 paquetes podrás encontrar piezas escritas en perl, python, java, c y muchos otros lenguajes de programación.

Spacewalk no es para manejar pequeñas instalaciones de computadores, está orientado a grandes implementaciones como en datacenters, grandes despliegues de escritorios e ideal en grandes implementaciones de entornos virtualizados, en donde la gestión se hace ya muy difícil, permitiendo ahorrar tiempo, dinero y personal en la tarea de controlar y mantener ordenado todo lo referente a la gestión de los sistemas.

La documentación sobre spacewalk es extensa, sin embargo yo use el siguiente documento para fijarme en la instalación que hice, sin embargo está algo desactualizada ya que hoy en día ya existen otras versiones de spacewalk más nuevas pero puede ser usada como punto de partida:

http://wiki.woop.es/Instalacion_Spacewalk ( en castellano )

Acceso libre a una máquina con SELINUX

Miércoles, diciembre 16th, 2009

Normalmente hablar de SELINUX en un entorno de sysadmins es llegar a la conclusión de que es un dolor de cabeza, sin embargo mucha gente se queja de lo malo de SELINUX ( lo malo es una característica, no un mal funcionamiento ).

Para mostrar lo bueno que puede ser SELINUX en un entorno bien configurado alguien a decidido colocar una máquina con libre acceso a ssh y a facilitado la clave de su cuenta root para que cualquiera que desee probar el entorno SELINUX pueda hacerlo, si quieres tener más información al respecto puedes ir al siguiente enlace:

http://www.coker.com.au/selinux/play.html

Te recomiendo leer las faqs antes de intentar hacer login remoto:

http://www.coker.com.au/selinux/play-faq.html

SE Linux Play Machines

Redirección de dominio en Nginx

Domingo, noviembre 1st, 2009

nginx-logo Desde hace algún tiempo vengo usando el potente webserver Nginx como proxy reverso.

Una de las mejores características de Nginx es la facilidad de uso de expresiones regulares en su archivo de configuración, si alguna vez tienen Nginx corriendo como proxy reverso y tienen que hacer un cambio de dominio en un website de la manera menos traumática para sus usuarios, pueden usar la siguiente configuración:

server {
listen 80;
server_name www.old-domain.com old-domain.com;
# Descomente las líneas siguientes si desea tener logs de donde provienen las consultas de su dominio viejo
# access_log /var/log/nginx/access_old-domain.log;
# error_log /var/log/nginx/error_old-domain.log

location / {
rewrite ^/(.*)$ http://www.new-domain.com/$1 redirect;
}
}

Cualquier consulta desde el navegador del cliente hechas al dominio old-domain.com o a www.old-domain.com será redireccionada automáticamente a http://www.new-domain.com, incluso si el cliente coloca por ejemplo www.old-domain.com/galeria/index.php será redireccionado automáticamente a www.new-domain.com/galeria/index.php.

Cambie old-domain.com por su viejo dominio y new-domain por su nuevo dominio y coloque ese código en su archivo de configuración de nginx.

Nginx es un servidor web de alto rendimiento, extremadamente rápido , es usado por ejemplo por youtube.com para los servidores que alojan los vídeos.

10+8 Mandamientos del SysAdmin

Sábado, agosto 1st, 2009

Ayer, último viernes de Julio, día internacional del SysAdmin, Steve Stady y Seth Vidal (Yum/Fedora) ha escrito los 10+8 Mandamientos del Administrador de Sistemas, enjoy:

1. Harás lo mismo una y otra vez sin perder el tiempo en tareas mundanas
2. Santificaras los respaldos periódicos y completos
3. Honraras el número reducido de particiones grandes
4. No codiciarás otro sistema que no es necesario
5. No procrastinarás(Acción de postergar actividades qjue debe atender, por otras  situaciones más irrelevantes y agradables.)
6. Te documentarás y automatizaras tus tareas
7. No reiniciarás una máquina si no sabes que sucederá después
8. Honrarás los recursos que te brinda el Sistema Operativo
9. Documentarás políticas de acción completas y efectivas
10. Sabrás con certeza si un equipo/servidor es confiable
11. Conocerás lo suficiente para no dudar a la hora de presionar Enter
12. Serás el primero en enterarte cuando algo anda mal
13. Mantendrás logs de todo lo que ocurra en tus servidores
14. Conocerás tu entorno de trabajo como la palma de tu mano
15. Aprenderás de tus errores y evitarás que se repitan a costa de tu salario
16. No tendrás malos pensamientos de quienes hagan mal uso del sistema
17. Aceptarás que no eres nada semejante a Dios por tener privilegios de root
18. Guardarás un día de reposo para socializar y bendecir tu vida offline

Original: http://sethdot.org/~skvidal/misc/sysadmin-aphorisms.txt

Fijar Wallpaper en Gnome

Viernes, julio 31st, 2009

Una de las cosas que siempre andan buscando aquellas personas que se han dedicado a editar/modificar un perfil de usuario en gnome con la intención de restringir un poco las cosas que puede realizar determinado usuario, es la de poder fijar un wallpaper o fondo de escritorio en gnome y que este no pueda ser cambiado o modificado por el usuario, la solución no es tan difícil, por ejemplo:

Con esta instrucción le cambias el wallpaper que este usando:

gconftool-2 –direct –config-source=xml:readonly:/etc/gconf/gconf.xml.defaults -s -t string /desktop/gnome/background/picture_filename /usr/share/backgrounds/miwall/walpaper_personalizado.png >/dev/null

Con esta instrucción colocas ese mismo wallpaper anterior como fondo del gdm:

gconftool-2 –direct –config-source=xml:readonly:/etc/gconf/gconf.xml.system -s -t string /desktop/gnome/background/picture_filename /usr/share/backgrounds/miwall/walpaper_personalizado.png >/dev/null

Con esta instrucción evitas que pueda cambiar el fondo del escritorio:

gconftool-2 –direct –config-source=xml:readonly:/etc/gconf/gconf.xml.mandatory -s -t string /desktop/gnome/background/picture_filename /usr/share/backgrounds/miwall/walpaper_personalizado.png >/dev/null

gconftool es la herramienta que permite hacer modificaciones de parámetros en las preferencias de gnome en modo consolar.

Los comandos pueden ser usados perfectamente desde un archivo kickstart en la sección %post ( De hecho así es que los estoy usando ), de esta manera ya tiene configuradas las preferencias al momento de instalar un computador.

Agregar disco para aumentar espacio en partición con LVM

Jueves, mayo 28th, 2009

Por una u otra razón alguna vez tendremos que aumentar el tamaño de la partición de un disco duro y no disponemos de espacio libre en ningún lado, anteriormente lo que se hacia era comprar un disco nuevo, particionarlo de nuevo y pasar toda la información del disco viejo, eso era antes de tener LVM disponible en sistemas  GNU/Linux ( al menos en fedora viene por defecto ), bueno a mi me toco esta semana y este fue el procedimiento sencillo use:

Verificamos el espacio actual:

[root@pc1 ~]# df -h
S.ficheros          Tamaño Usado  Disp Uso% Montado en
/dev/mapper/VolGroup00-LogVol00
14G   13G  949M  93% /
/dev/mapper/VolGroup00-LogVol02
57G   54G     0 100% /home
/dev/mapper/VolGroup00-LogVol03
558M   17M  513M   4% /tmp
/dev/sda1             190M   26M  156M  14% /boot
tmpfs                 1,3G     0  1,3G   0% /dev/shm

El problema es con mi partición /home de 57 GB la cual está ya al 100% de uso y quiero aumentar el espacio, el detalle es que no queda espacio libre en ningún otro lado de ese disco, que es de 80 GB.

Para comprobarlo, reviso con el comando vgdisplay mis grupos de volumen, observe que el parámetro ” Free  PE / Size” indica que solo tengo 32 Mb libres:

[root@pc1 ~]# vgdisplay
— Volume group —
VG Name               VolGroup00
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  5
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                4
Open LV               4
Max PV                0
Cur PV                1
Act PV                1
VG Size               74,31 GB
PE Size               32,00 MB
Total PE              2378
Alloc PE / Size       2377 / 74,28 GB
Free  PE / Size       1 / 32,00 MB
VG UUID               dUQrta-Vk3D-e1Ek-ModS-2sua-0Xdf-uIWezG

Apagamos la computadora y agregamos el disco nuevo, en mi caso aparece como sdb1 ( ya estaba particionado ), así que agregamos el disco a nuestro Grupo de Volumen VolGroup00:

[root@pc1 ~]# vgextend  VolGroup00 /dev/sdb1

luego, revisamos de nuevo nuestros Grupos de Volumen, observe que el parámetro “Free  PE / Size” indica que tengo 74,53 GB libres:

[root@pc1 ~]# vgdisplay
— Volume group —
VG Name               VolGroup00
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  6
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                4
Open LV               4
Max PV                0
Cur PV                2
Act PV                2
VG Size               148,81 GB
PE Size               32,00 MB
Total PE              4762
Alloc PE / Size       2377 / 74,28 GB
Free  PE / Size       2385 / 74,53 GB
VG UUID               dUQrta-Vk3D-e1Ek-ModS-2sua-0Xdf-uIWezG

Ahora tenemos que extender el volumen lógico al tamaño libre que tenemos ahora:

[root@pc1 ~]# lvextend -L +74,53G /dev/VolGroup00/LogVol02
Rounding up size to full physical extent 74,53 GB
Extending logical volume LogVol02 to 133,16 GB

Ahora tenemos que redimensionar la partición que corresponde a /home, al máximo tamaño disponible:

[root@pc1 ~]# resize2fs /dev/mapper/VolGroup00-LogVol02
resize2fs 1.41.3 (12-Oct-2008)
Filesystem at /dev/mapper/VolGroup00-LogVol02 is mounted on /home; on-line resizing required
old desc_blocks = 4, new_desc_blocks = 9
Performing an on-line resize of /dev/mapper/VolGroup00-LogVol02 to 34897920 (4k) blocks.
El sistema de ficheros en /dev/mapper/VolGroup00-LogVol02 tiene ahora 34897920 bloques.

Por último comprobamos ahora cuanto espacio tenemos en total en nuestro sistema de ficheros:

[urt@pc1 ~]$ df -h
S.ficheros          Tamaño Usado  Disp Uso% Montado en
/dev/mapper/VolGroup00-LogVol00
14G   13G  949M  93% /
/dev/mapper/VolGroup00-LogVol02
129G   54G   69G  45% /home
/dev/mapper/VolGroup00-LogVol03
558M   17M  513M   4% /tmp
/dev/sda1             190M   26M  156M  14% /boot
tmpfs                 1,3G     0  1,3G   0% /dev/shm

Observe que ahora tengo 129 GB de los cuales tengo 69GB libres en mi partición /home, lo que da en total solo un 45% de uso  :-D

Oferta laboral en redes

Miércoles, marzo 25th, 2009

Se busca técnico en redes o afín que este dispuesto a etiquetar cada  2 metros cada hebra de cable que se ve en la siguiente imagen:

Cableado Estructurado

El trabajo debe ser realizado sin interrumpir el servicio para lo cual esta diseñado el cableado en cuestión.

Nota: Esto es una broma.

seniat.gob.ve considerado sitio de phishing

Miércoles, febrero 4th, 2009

Hoy acabo de llevarme una sorpresa, ayer actualice los archivos de blacklists del filtro de contenido del proxy y un usuario de la red de donde trabajo me envió un correo usando el formulario que se encuentra en en el filtro de contenido cuando un sitio le es bloqueado, el usuario reportaba que no podía acceder al sitio http://www.seniat.gob.ve y mi sorpresa cuando reviso:


grep -ER seniat.gob.ve ./
./blacklists/phishing/domains.processed:seniat.gob.ve
./blacklists/phishing/domains:seniat.gob.ve

OMFG el sitio del seniat se encuentra en el listado de sitios de phishing!!!!

el listado que uso, es el que se descarga desde:

http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist

Quien sabe por que se encuentra allí, pero sus buenas razones tendrán, el listado de ese blacklist es formado por gente seria y responsable, ahora le toca al webmaster del sitio verificar por que su sitio esta considerado como de phishing :-D

Solución: para dansguardian colocar la dirección del sitio en  exceptionsitelist.

Agregar discos SAN sin reiniciar

Jueves, julio 10th, 2008

Normalmente es necesario reiniciar un servidor para que pueda reconocer al inicio los discos que se le han presentado desde una SAN, claro al iniciar el sistema operativo reescanea los dispositivos ( en mi caso unas tarjetas fiber channel que usan el driver qlaxxx ), el problema radica cuando se tiene que hacer esto en un servidor en plena producción… para resolver el problema se hace:

  • Reescanear tus HBA’s qlogic:

#echo "scsi-qlascan" > /proc/scsi/driver-name/adapter-id

En donde “driver-name” es el nombre del driver de tu tarjeta, en mi caso qlaxxx, pero puede ser ” qla2100/qla2200/qla2300″ y “adapter-id” es el número de instancia de tu HBA, en mi caso 0,1,2,3 así que las mando a re-escanear todas.

  • Agregar el dispositivo:

Una vez hecho lo anterior, debemos obligar a que el sistema cree los dispositivos necesarios para poder montar el disco, para hacer esto usamos el siguiente comando:


# echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi

Debes reemplazar los números “0 1 2 3″ dependiendo de tu Host Channel Id Lun“, según un tutorial que estaba siguiendo, esto se consigue haciendo un dmesg | less” y buscando la información acerca de “Host Channel Id Lun”, yo no ví nada de esto en mi dmesg, así que probé usar un script que viene con el paquete fibreutils provisto por HP y que se debe conseguir con el cd que viene con tu servidor ( si tiene tarjetas de fibra ):

Dicho programa se llama lssd, así que lo ejecuto:


#/opt/hp/hp_fibreutils/lssd
sda  0,0,0,1         HP HSV210 5100
sdb  0,0,1,1         HP HSV210 5100
sdc  0,0,2,1         HP HSV210 5100
sdd  0,0,3,1         HP HSV210 5100
sde  2,0,0,1         HP HSV210 5100
sdf  2,0,1,1         HP HSV210 5100
sdg  2,0,2,1         HP HSV210 5100
sdh  2,0,3,1         HP HSV210 5100
sdi  0,0,0,2         HP HSV210 5100
sdj  0,0,1,2         HP HSV210 5100
sdk  0,0,2,2         HP HSV210 5100
sdl  0,0,3,2         HP HSV210 5100
sdm  2,0,0,2         HP HSV210 5100
sdn  2,0,1,2         HP HSV210 5100
sdo  2,0,2,2         HP HSV210 5100
sdp  2,0,3,2         HP HSV210 5100

Pruebo agregar el dispositivo para sdb, al cual le corresponde la númeración 0,0,1,1


# echo "scsi add-single-device 0 0 1 1" >/proc/scsi/scsi

Y aplico un fdisk -l y ya veo el nuevo disco ( tenía ya otro montado ), reviso el directorio /dev/mapper/ y veo un nuevo dispositivo creado ( mpath1p1 ) :-D

De ahora en adelande ya puedes usar el comando mount para montar dicho dispositivo en el punto de montaje que desees.

Ojo si el disco SAN fue creado recientemente, podrás verlo como dispositivo, pero es como tener un disco en blanco, por lo cual no podrás montarlo a menos que le crees una partición ( con fdisk o cfdisk ) y le crees un sistema de archivos ( mkfs ).

Espero les sirva de ayuda, pueden leer como referencia al igual que yo:

http://sysdigg.blogspot.com/2008/03/add-san-disks-on-rhel-without-reboot.html

Supongo que debe haber una alternativa mejor sin tener que usar el programa lssd ( propietario de hp ) si alguien la sabe, le agradezco hacermela saber ;-)

scp a múltiples máquinas de forma automática con password

Miércoles, junio 18th, 2008

Ayer tenía la tarea de hacer una modificación en un archivo de configuración ( con privilegios de root ) en una serie de máquinas clientes con GNU/Linux, al preguntar a un grupo de amigos me dieron las siguientes soluciones:

1. Usar claves compartidas de ssh

Ajá, esto seria válido si ya tuviera las llaves compartidas,  en este caso como no las tengo, tendría que entrar a cada máquina y hacer la configuración, lo cual no es una opción no viable ya que eso es justo lo que quiero evitar.

2. Usar la opción sudo -S de la siguiente manera: echo “password” | sudo -S

Tengo un script que puede ejecutarse automáticamente en cada máquina, pero este se ejecuta con privilegios de usuario, dicho script puede ser modificado y cargado masivamente en cada máquina de la red vía rsync, el detalle con esta solución es que en la distribución cliente los usuarios no están por defecto en el grupo que pueden hacer sudo, por lo cual tendría que configurar /etc/sudoers máquina a máquina para poder implementar esta opción, con lo cual esto ya no es viable.


Viendo ya que la solución debería investigarla por mis medios, pensé en usar la librería:

http://search.cpan.org/~bnegrao/Net-SSH-Expect-1.09/lib/Net/SSH/Expect.pod

Que ya he usado con anterioridad  para otras cosas y hacerme un scriptcito en perl, pero de verdad me daba fastidio y pereza instalarla vía CPAN, investigando un poco más di con la solución mas perezosa usando el programa expect, acá hay un ejemplo de como ( el cual use ):

http://modp.com/wiki/sshpasswords

Expect no se usa necesariamente para hacer login remoto ssh o scp, realmente es un programa hecho en tcl que permite controlar programas en consola o linea de comandos ( CLI ) que tienen una interfase interactiva, por ejemplo esos programas que te preguntan opciones y opciones para poder realizar alguna función y requieren una intervención vía teclado para contestarlas, bueno expect bien configurado puede ser usado para responder todas esas preguntas de forma automática.

Sin más preámbulo acá está el cochino script que realice, cabe destacar que no tenía idea de cuantas máquinas cliente existían en la red ( aunque más o menos calculo que podrían ser unas 100 al menos ) ni de sus direcciones ip ( el cliente tiene eso registrado, pero me dio fastidio pedírselo):

#!/bin/bash
for n in {1..9} ; do
for i in {100..140} ; do

expect -c “set timeout 10; eval spawn scp /tmp/rc.local root@192.168.$n.$i:/etc/ ; expect ‘yes: $’; send yes\n ; \ expect ‘password: $’; send algunpassword\n ; expect ‘$ $’”

done
done

La linea realmente importante es la que empieza con el comando “expect” precisamente y vamos a explicar sus opciones:

set timeout 10 : Esta opción permite configurar 10 segundos de timeout en caso de no conseguir una respuesta.

eval spawn scp /tmp/rc.local root@192.168.$n.$i:/etc/ :

Esta opción es la que ejecuta realmente el scp, al final los últimos 2 octetos de la dirección ip, son variables, provistas por los for de arriba.

expect ‘yes: $’; send yes\n : Esas 2 opciones pueden ser consideradas una sola, y es que como en muchas de esas máquinas clientes nunca se ha conectado vía ssh, entonces se debe aceptar primero la clave RSA del ssh, entonces  “expect ‘yes: $” espera que se presente una linea que diga “yes:” y “send yes\n”  envía como respuesta yes y aplica un enter luego ( \n).

expect ‘password: $’; send algunpassword\n : Como en la anterior, esto puede ser considerado una sola instrucción y es muy similar a la anterior, se espera la cadena “password:” y cuando se reciba, se contesta con  “send algunpassword\n” enviando la password de la sesión e iniciando la transferencia.

expect ‘$ $’ : ya al final coloque esta opción la cual simplemente espera que se entregue un prompt para salir, realmente no se si era necesaria pero sin embargo la coloque por si acaso :-D

Espero que le llegue a servir a alguno, como me sirvio a mi, en menos de 20 minutos ya tenía todos las máquinas cliente plenamente configuradas :-D , tal vez hayan otras opciones incluso más elaboradas, pero me pareció buena esta debido a su sencillez, solo basta con instalar el paquete expect, el cual está en los repositorios de la mayoría de las distribuciones de GNU/Linux.

Por cuestiones de seguridad no me preocupe mucho, debido que todas esas máquinas están en una red local sin acceso a internet y los clientes son prácticamente terminales tontos en donde el usuario tiene perfiles de desktop muy bien delimitados y no tienen acceso a tty, además ya scp cifra la comunicación en la transferencia, incluso en la sesión de login.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Copyright © 2010 Richzendy.org. Search Engine Optimization by Star Nine. Distributed by Wordpress Themes