viernes, 29 de agosto de 2008

Conexión mediante SSH sin password - Claves Públicas y Privadas

Introducción

Cuando entré a trabajar como becario en el departamento de sistemas informáticos, con funciones de Administrador de sistemas. (jejeje parece que no.. pero de esto hace ya unos añitos).
Una de mis primeras tareas fue la de configurar el ssh de diversas máquinas, (RedHat, Suse y Solaris), para que la conexión no necesitara de intervención humana, ya que era necesario para automatizar tareas mediante el cron. (Copias, Sincronizaciones, etc)
Hoy por casualidad he visto varias webs donde se hace referencia en una especie de mini How-To de como configurar esto, y.... me ha parecido que oviaban determinados aspectos de la configuración, posiblemente porque en los sistemas donde lo han configurado no se han encontrado con este problema de permisos en algunos ficheros que intervienen en el proceso.
Por este motivo me he animado a hacer uno más, donde si aparezcan estos aspectos puntuales, que pueden hacer como me ocurrió a mi.... que se "pierda" más tiempo del necesario, para configurar algo que debería ser bastante sencillo.

How-To

Nombraremos los nodos como n_origen y n_destino, y los usuarios como u_origen y u_destino.

1.- En n_origen, iniciamos sesion con u_origen, y vamos a "/home/u_origen/.ssh" (No omitir el ".")

2.- Miramos "ls -las" si existen los ficheros "id_dsa" y "id_dsa.pub", si no existen los creamos de la siguiente manera.

3.-
[u_origen@n_origen .ssh]#ssh-keygen -t dsa

*Cuando ssh nos solicita la passphrase, dejamos esta en blanco.

*Si al generar este par de claves, se introduce la passphrase, ssh seguirá pidiendo password, solo que en este caso, hay diferencias con la otra opción, en la que pide el password:
1.-La password que solicita no es la del usuario, sino las passphrase, que sirve para cifrar nuestra clave privada, por si acaso fuera sustraída.
2.-La passphrase, no viaja en ningún momento a través de la red, solo se utiliza localmente para descifrar nuestra clave privada.

4.- Se debe copiar la clave publica de (u_origen@n_origen), en el home/XXX/.ssh de (u_destino@n_destino), con el nombre de "authorized_keys" o "authorized_keys2" según se este usando el protocolo ssh1 o ssh2 (mas seguro), esto se puede ver en la configuración de ssh, en /etc/ssh/sshd_config --> "#Protocol 2".

#scp /HOME/u_origen/.ssh/id-dsa.pub u_destino@n_destino:/HOME/u_destino/.ssh/fich

(Se copia como fich ya que en la maquina remota, es posible que ya exista un fichero id-dsa.pub) (Solicita el password del usuario)
<n_origen>#ssh usuario_remoto@maquina
(solicita el password del usuario)
#cd .ssh
<n_origen>#cat fich>>authorized_keys2
(Doble redirección, por si ya existen mas claves en este fichero)

A partir de este momento, si todo ha sido correcto ya no debería solicitarnos password, debería usar la password que esta en este fichero, cuando la conexión sea a este usuario.

NOTA.

Esta es la parte a la que me referia al comienzo del How-To, y es que los permisos afectan al funcionamiento de esto, no por temas de ejecución sino por temas de seguridad.

*El fichero authorized_keys o authorized_keys2, deben tener exactamente los permisos 644 y ser propiedad del usuario y su grupo.
4 -rw-r--r-- 1 root root 602 mar 1 2007 authorized_keys2

*Si hay más permisos en los directorios home o .ssh, como medida de seguridad se desactivaba la posibilidad de usar ssh sin password (Linux, segun versiones), por lo visto en los Solaris ocurre lo mismo
ssh-->755
home-->700

4 drwxr-xr-x 2 stats operatoria 4096 2006-01-26 08:47 . (.ssh)

4 drwx------ 3 stats operatoria 4096 2006-01-25 13:08 ..(Home del usuario)


Weno ahora creo que esta todo explicado.

lunes, 25 de agosto de 2008

Memoría de Pez - Recuperando Password de Root

Introducción.

Bueno, pues tal y como suena.. ya es la segunda vez en menos de un año, en la que me toca recuperar el password de root.
Es fácil pensar algo como.. "vaya, eso a mi no me pasaría..", pues.. solo comentar que la primera vez no fue por olvido sino porque un error al apagar la máquina corrompió varios ficheros, entre ellos el /etc/shadow ;(
En los dos casos tube que repetir la búsqueda para encontrar el how-to a seguir así que he decidido hacer el mio.
Ejecutarlo cuesta aproximadamente 5 minutos ;)
En este Link está el documento original para Fedora (Inglés).

How-To

1.- Debemos tener acceso local a la máquina, y al arrancar en la pantalla de selección de Kernels, nos colocamos sobre la versión en la que queremos arrancar.



2.- Una vez seleccionado pulsamos "e" para entrar en las opciones de edición, nos colocamos sobre el kernel elegido y volvemos a pulsar "e" para editar esta entrada.



3.- Al final de la linea añadimos un "1", asegurándonos de dejar un espacio previo, esto nos hará arrancar en modo "single user", que evidentemente es lo que queremos.








4.- Llegados a este punto pulsamos "b" para volver a la selección anterior, donde podremos ver la linea tal y como la hemos dejado.



5.- Por último pulsando "enter" arrancamos en modo "single user", con lo que accederemos como root sin necesidad de password.
Una vez aquí simplemente resta ejecutar:

#passwd root

Introducir el nuevo password y repetirlo en la vinificación. Reboot y.. Woala!! Tenemos nuevo paassword.

domingo, 17 de agosto de 2008

Configuración Wifi en Centos5



Bien,
pues hace un par de días decidí cambiar de OS en mi "precioso" portátil. Un Toshiba Stellite Pro U200 12.1", en el que hasta ahora estaba usando Ubuntu y que,aunque me autoconfiguraba todo el hard al ser derivado de Debian, no se ajustaba a mis gustos que son mas RH ;) -por desviación profesional-. Así que me hice el ánimo de cambiar a Centos5, y.... por supuesto llegó el quebradero de siempre: la conflagración Wifi.

Vaya por delante que aún no he conseguido hacer correr la tarjeta intel3945 que lleva integrada aunque lo haré en breve.

Tengo una tarjeta Wifi PCMCIA SMC 108Mb con chip Atheros, así que decidí hacer correr esta antes, ya que es más sencillo ;)

Bien.... los pasos son estos:

1.- Necesitamos modificar los repos que vienen por defecto en Centos5, para poder usar Yum.
[root@localhost ~]# vi /etc/yum.repos.d/atrpms.repo
y añadimos lo siguiente:
[atrpms]
name=CentOS $releasever - $basearch - ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1

2.- Bien ahora ya podemos instalar todo lo que necesitamos, con yum


[ro
ot@localhost ~]# yum install madwifi-hal-kmdl-`uname -r`
...

[root@localhost ~]#
yum install madwifi-kmdl-`uname -r`
...

[root@localhost ~]#
yum install wpa_supplicant
...

[root@localhost ~]#
yum install wpa_supplicant-gui
...


3.- Una vez instalados los paquetes necesarios, solo nos queda modificar el
modprobe.conf , para que tengan efecto en el reinicio.

[root@localhost ~]# vi /etc/modprobe.conf

Y añadimos lo siguiente:
alias ath0 ath_pci
options
ath_pci autocreate=sta


4.- Con ésto es suficiente, y tras un reinicio veremos como el sistema reconoce nuestra querida tarjeta

[root@localhost ~]#reboot

5.- Una vez rebotada la máquina, ya podemos identificarnos en la red en mi caso mediante WPA. ;)

viernes, 1 de agosto de 2008

Virtualización - OpenVZ tu gran amigo

Bueno... estando en la Campus, he asistido a una Conferencia-Taller de virtualización con OpenVZ.
la verdad es que me ha parecido una opción más que interesante, asi que me he puesto a testearlo un poco.

Introducción:

OpenVZ, es una tecnología de virtualización basada en el kernel de linux. Permite que un servidor físico ejecute múltiples instancias de sistemas operativos aislados (Aunque compartiendo el mismo kernel), conocidos como Servidores Privados Virtuales (SPV) o Entornos Virtuales (EV).

Esto tiene varias ventajas e inconvenientes, alguno de los cuales cito acontinuación.

Desventajas:

1.- Al compartir un kernel, un error en una de las maquinas virtuales, podria propagarse al resto, lo cual supondria una caida general del sistema.

2.- Si la version de openVZ es para Linux, solo nos permite crear SPV Linux, de distintas versiones, si es para Windows, solo versiones de Windows (Esto lo he oido pero no lo he verificado.)


Ventajas:

1.- OpenVZ es una version Free de Virtuozzo, desarrollado por SWsoft, se instala sobre una modificacion del kernel de Linux, la cual es bastante dificil que nos de algun error, ya que la fiabilidad del producto es bastante alta.

2.-OpenVZ proporciona mucho mejor rendimiento, escabilidad, densidad, administración de recursos dinámicos, y facilidad de administración que sus alternativas. (Xen.....)

Escenario:

Para realizar las pruebas, he montado un servidor CENTOS5 virtualizado con VmWare Server, sobre WindowsXP, en este CENTOS5, se ha instalado y configurado OpenVZ y se ha creado una maquina Virtual con "fedora-7-i386-minimal".

En este mini manual se partira de la instalacion de CENTOS5 ya creada, ya que el tema de VmWare se escapa de la finalidad del mismo.

Toda la informacion necesaria esta disponible en:

http://wiki.openvz.org/Main_Page

Instalación:

La instalación del software es casi automatica gracias a Yum, bastara con actualizar los repositorios disponibles.

Actualización de Repositirios:

[root@nodo1 ~]# cd /etc/yum.repos.d/

[root@nodo1 yum.repos.d]# wget http://download.openvz.org/openvz.repo

--18:40:47-- http://download.openvz.org/openvz.repo

Resolviendo download.openvz.org... 64.131.90.11

Connecting to download.openvz.org|64.131.90.11|:80... conectado.

Petición HTTP enviada, esperando respuesta... 200 OK

Longitud: 2179 (2,1K) [text/plain]

Saving to: `openvz.repo'

100%[=======================================>] 2.179 --.-K/s in 0s

18:40:47 (9,38 MB/s) - `openvz.repo' saved [2179/2179]

[root@nodo1 yum.repos.d]# rpm --import http://download.openvz.org/RPM-GPG-Key-O

Instalación:

[root@nodo1 yum.repos.d]# yum list|grep -i ovz
ovzkernel.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh
ovzkernel-PAE.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh
ovzkernel-PAE-devel.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh
ovzkernel-devel.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh
ovzkernel-ent.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh
ovzkernel-ent-devel.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh
ovzkernel-xen.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh
ovzkernel-xen-devel.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh
[root@nodo1 yum.repos.d]# yum install ovzkernel.i686
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* addons: ftp.cica.es
* extras: ftp.cica.es
* base: ftp.cica.es
* openvz-kernel-rhel5: mirror.yandex.ru
* openvz-utils: mirror.yandex.ru
* updates: ftp.cica.es
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package ovzkernel.i686 0:2.6.18-53.1.19.el5.028stab053.14 set to be install ed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
ovzkernel i686 2.6.18-53.1.19.el5.028stab053.14 openvz-ker nel-rhel5 17 M

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 17 M
Is this ok [y/N]: y
Downloading Packages:
(1/1): ovzkernel-2.6.18-5 100% |=========================| 17 MB 00:36
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: ovzkernel ######################### [1/1]

Installed: ovzkernel.i686 0:2.6.18-53.1.19.el5.028stab053.14
Complete!


Configuración:

Modificamos el grub para asegurarnos que arrancamos con la versión de kernel que necesitamos.

[root@nodo1 yum.repos.d]# vi /etc/grub.conf


title OpenVZ (2.6.18-53.1.19.el5.028stab053.14)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.1.19.el5.028stab053.14 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-53.1.19.el5.028stab053.14.img
title CentOS (2.6.18-92.1.6.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.1.6.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-92.1.6.el5.img


[root@nodo1 yum.repos.d]# reboot

Si estas entradas no existen, hay que añadirlas en sysctl, si existiesen, hay que dejarlas como se indica aquí.

[root@nodo1 ~]# vi /etc/sysctl.conf # On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.ip_forward = 1 net.ipv4.conf.default.proxy_arp = 0 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # TCP Explict Congestion Notification #net.ipv4.tcp_ecn = 0 # we do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 [root@nodo1 ~]# reboot

Instalación de Paquetes adicionales:

Una vez instalado y configurado correctamente el kernel, podemos empezar a instalar las aplicaciones adicionales, necesarias para gestionar el openVZ.


[root@nodo1 ~]# yum list|grep -i vz * openvz-kernel-rhel5: mirror.yandex.ru * openvz-utils: mirror.yandex.ru ovzkernel.i686 2.6.18-53.1.19.el5.028 installed ovzkernel-PAE.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh ovzkernel-PAE-devel.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh ovzkernel-devel.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh ovzkernel-ent.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh ovzkernel-ent-devel.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh ovzkernel-xen.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh ovzkernel-xen-devel.i686 2.6.18-53.1.19.el5.028 openvz-kernel-rh vzctl.i386 3.0.22-1 openvz-utils vzctl-lib.i386 3.0.22-1 openvz-utils vzpkg.noarch 2.7.0-18 openvz-utils vzquota.i386 3.0.11-1 openvz-utils vzrpm43.i386 4.3.3-7_nonptl.6 openvz-utils vzrpm43-python.i386 4.3.3-7_nonptl.6 openvz-utils vzrpm44.i386 4.4.1-22.5 openvz-utils vzrpm44-python.i386 4.4.1-22.5 openvz-utils vztmpl-centos-4.i386 2.0-2 openvz-utils vztmpl-fedora-7.i386 1.1-1 openvz-utils vztmpl-fedora-core-3.i386 2.0-2 openvz-utils vztmpl-fedora-core-4.i386 2.0-2 openvz-utils vztmpl-fedora-core-5.i386 2.0-2 openvz-utils vztmpl-fedora-core-6.i386 1.2-1 openvz-utils vzyum.noarch 2.4.0-11 openvz-utils

Instalamos todas las aplicaciones.

[root@nodo1 ~]# yum install vzctl.i386 vzctl-lib.i386 vzpkg.noarch vzquota.i386 vzrpm43.i386 vzrpm43-python.i386 vzrpm44.i386 vzrpm44-python.i386 vztmpl-centos-4.i386 vztmpl-fedora-7.i386 vztmpl-fedora-core-3.i386 vztmpl-fedora-core-4.i386 vztmpl-fedora-core-5.i386 vztmpl-fedora-core-6.i386 vzyum.noarch
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* addons: ftp.cica.es
* extras: ftp.cica.es
* base: ftp.cica.es

......

Transaction Summary
=============================================================================
Install 15 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 57 M
Is this ok [y/N]: y
Downloading Packages:

.......

Package vztmpl-fedora-core-6-1.2-1.i386.rpm is not signed


Este "error" es simplemente que el paquete no está firmado por lo cual le indique que simplemente no verificara las firmas ;)

[root@nodo1 ~]# vi /etc/yum.repos.d/openvz.repo

[openvz-utils]
name=OpenVZ utilities
#baseurl=http://download.openvz.org/current/
mirrorlist=http://download.openvz.org/mirrors-current
enabled=1
gpgcheck=0


Tras la modificación instalamos de nuevo esta vez ya sin errores. ;)

[root@nodo1 ~]# yum install vzctl.i386 vzctl-lib.i386 vzpkg.noarch vzquota.i386 vzrpm43.i386 vzrpm43-python.i386 vzrpm44.i386 vzrpm44-python.i386 vztmpl-centos-4.i386 vztmpl-fedora-7.i386 vztmpl-fedora-core-3.i386 vztmpl-fedora-core-4.i386 vztmpl-fedora-core-5.i386 vztmpl-fedora-core-6.i386 vzyum.noarch
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* addons: ftp.cica.es
* extras: ftp.cica.es
* base: ftp.cica.es

.......

Transaction Summary
=============================================================================
Install 15 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 57 M
Is this ok [y/N]: y

.......

Installed: vztmpl-centos-4.i386 0:2.0-2 vztmpl-fedora-7.i386 0:1.1-1 vztmpl-fedora-core-3.i386 0:2.0-2 vztmpl-fedora-core-4.i386 0:2.0-2 vztmpl-fedora-core-5.i386 0:2.0-2 vztmpl-fedora-core-6.i386 0:1.2-1
Dependency Installed: vzctl.i386 0:3.0.22-1 vzctl-lib.i386 0:3.0.22-1 vzpkg.noarch 0:2.7.0-18 vzquota.i386 0:3.0.11-1 vzrpm43.i386 0:4.3.3-7_nonptl.6 vzrpm43-python.i386 0:4.3.3-7_nonptl.6 vzrpm44.i386 0:4.4.1-22.5 vzrpm44-python.i386 0:4.4.1-22.5 vzyum.noarch 0:2.4.0-11
Complete!

Bien, llegado ha este punto ya tenemos instalado todo lo necesario. Así que ya solo queda empezar con las pruebas.

1.- Creamos la plantilla que vamos a utilizar:

[root@nodo1 ~]# vzpkgcache fedora-7-i386-minimal
...
Complete!
Packing cache file fedora-7-i386-minimal.tar.gz ...
Cache file fedora-7-i386-minimal.tar.gz [62M] created.

En nuestro caso una de las que vienen por defecto.

Este proceso es bastante largo,aunque solo será necesario realizarlo una vez, ya que a partir de este momento, la plantilla estará lista para desplegarse en el instante se necesite.

2.- Creamos entornos Virtuales, EV

Usando la plantilla que acabamos de crear, podemos ir creando tantos EV, como necesitemos.

[root@nodo1 ~]# vzctl create 101 --ostemplate fedora-7-i386-minimal --hostname NVZ1 Creating VE private area (fedora-7-i386-minimal) Performing postcreate actions VE private area was created [root@nodo1 ~]# vzlist VE not found [root@nodo1 ~]# vzctl start 101 Starting VE ... VE is mounted Setting CPU units: 1000 Configure meminfo: 65536 Set hostname: NVZ1 VE start in progress... [root@nodo1 ~]# vzlist VEID NPROC STATUS IP_ADDR HOSTNAME 101 3 running - NVZ1

3.-Acceder a EV.

Para acceder a los
EV creados, bastará con:

[root@nodo1 ~]# vzctl enter 101 entered into VE 101
[root@NVZ1 /]# ls

bin boot dev etc home lib media mnt opt proc root sbin selinux srv sys tmp usr var [root@NVZ1 /]#


4.- Configurando
IP y usuarios.

Para configurar una
IP que nos sirva para conectar a la maquina virtual, desde la maquina anfitriona realizamos lo siguiente:

[root@nodo1 ~]# vzctl set 101 --ipadd 192.168.150.129 --save
Adding IP address(es): 192.168.150.129
SIOCADDRT: Network is unreachable
Saved parameters for VE 101
[root@nodo1 ~]# vzlist
VEID NPROC STATUS IP_ADDR HOSTNAME
101 3 running 192.168.150.129 NVZ1

A la hora de configurar el
password de root de la maquina virtual, es tan simple como entrar en la maquina virtual desde la maquina anfitriona y cambiar el password.

[root@nodo1 ~]# vzctl enter 101
entered into VE 101
[root@NVZ1 /]# passwd root
Changing password for user root.
New UNIX password:
BAD PASSWORD: it does not contain enough DIFFERENT characters
Retype new UNIX password:
passwd: all authentication tokens updated successfully.


Llegados a este punto la maquina virtual ya está lista para recibir conexiones. :)

5.- Asignando recursos.
Principalmente deveriamos establecer dos valores.

A.-Procentaje maximo de CPU que podra usar la maquina virtual

Aqui vemos los valores que tenemos en nuestra maquina, los cuales no está relacionados con MHz ni nada parecido.
Con esto indicamos:

[root@nodo1 ~]# vzcpucheck

Current CPU utilization: 2000
Power of the node: 122225

cpuunits- Valor del que no debe bajar nuestra maquina, pase lo que pase, Minimo garantizado
cpulimit- Valor en % del que noo puede pasar nuestra maquina virtual.
[root@nodo1 /]# vzctl set 101 --cpuunits 30000 --cpulimit 50 --save


B.-Tamaño de disco.

Por defecto es de 1Gb, para cambiarlo basta con:

[root@nodo1 /]# vzctl stop 101
[root@nodo1 /]# vzctl set 101 --diskspace 20000000:22000000 --save
[root@nodo1 /]# vzctl start 101
Esto nos asigna 20Gb de disco, y un margen de 2Gb mas por si fuera necesario.

Bueno y con esto, creo que ya está todo por ahora, ya ire probando mas c
ositas ;)