Páginas

sábado, 7 de agosto de 2010

OpenSSh

Propuestas de Linux para administrar un servidor y acceder a nuestra estación de trabajo remotamente. Tener solamente una linea de comandos o un escritorio gráfico completo.


OpenSSH es la herramienta para la administración remota, es seguro y fácil de instalar y usar. Desempeña la autenticación, el cifrado y la garantía de la integridad de la transferencia de datos. Si ocurre algo que altere los paquetes, SSH nos lo comunicará.

Componentes:

- sshd: Demonio del servedor OpenSSH
- ssh: Significa shell segura.
- scp: Copia segura, ofrece transferencia cifrada de ficheros
- sftp: Protocolo seguro de transferencia de ficheros.
- ssh-copy-id: Para instalar clave personal de identidad en el fichero authorized_keys de un equipo remoto.
- ssh-keyscan: Genera y gestiona claves de autenticación RSA y DSA.
- ssh-add: Agrega identidades RSA o DSA al agente de autenticación ssh-agent.
- ssh-agent: Recuerda las frases de acceso durante varias entradas a SSH para una autenticación automática. Funciona durante una misma sesión. Salir, abrir otra terminal, supone volver a empezar. En cambio, keychain recuerda las frases de acceso mientras no reiniciemos.

Tipos de autenticación:

- Autenticación por clave de host. Utiliza la identificación de entrada y contraseña de Linux para la autenticación y nuestras claves SSH para cifrar la sesión.
- Autenticación por clave pública. En lugar de utilizar nuestro sistema de identificación de entrada, autentica con una clave de identidad SSH. Las claves de identidad autentican usuarios individuales, las claves de host autentican servidores. Tiene que crear claves de identidad además de claves de host, luego distribuir copias de la clave pública a todos los hosts a los que se quiere acceder. Su clave privada no debe compartirla nunca.
- Autenticación sin frase de acceso. Similar a la autenticación por clave pública, pero el par de claves se crea sin frase de acceso. Resulta útil para servicios automatizados, como los guiones y tareas con cron. Una forma de usar frases de acceso con procesos automatizados es usar las utilidades ssh-agent o keychain.

Tipos de claves:

Las claves en símismas son del mismo tipo, RSA o DSA. Cada clave tiene dos partes, una pública y otra privada. El servidor se queda con la clave privada y el usuario, (cliente) emplea la clave pública. Las transmisiones se cifran con la clave pública y se descifran con la clave privada.

La dirección de la transmisión definen Servidor y Cliente. El demonio SSH debe estar ejecutándose y escuchando los intentos de conexión en el Servidor. El Cliente es cualquiera que entre a dicha máquina.

Configurar OpenSSH

para entrar en un host remoto con el método más sencillo soportado:

La autenticación por clave de host es el método más sencillo de configurar el acceso remoto SSH. Será necesario:

- Tener OpenSSH instalado en la máquina a la que queremos acceder remotamente.
- Demonio SSH ejecutándose en el servidor remoto y que el puerto 22 no esté bloquedo.
- Software cliente en el ordenador cliente.
- Una cuenta de acceso en el servidor remoto.
- Por último, distribuir la clave pública del host a los clientes.

Averiguar dependencias y USE local para el paquete openssh en Gentoo Linux, (no es necesario en otras distribuciones).
gentoo@hypatia / # emerge -pv openssh

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] net-misc/openssh-5.3_p1-r1  USE="X* pam tcpd -X509 -hpn -kerberos -ldap -libedit -pkcs11 (-selinux) -skey -smartcard -static" 1,004 kB

Total: 1 package (1 reinstall), Size of downloads: 1,004 kB

Por lo tanto la información dentro de package.use quedará asi:
gentoo@hypatia / # vim /etc/portage/package.use
...
net-misc/openssh USE="X* pam tcpd -X509 -hpn -kerberos -ldap -libedit -pkcs11 (-selinux) -skey -smartcard -static"

Instalar openssh en Gentoo:

gentoo@hypatia / # emerge -av net-misc/openssh

Iniciar el demonio sshd:
gentoo@hypatia / # /etc/init.d/sshd start
* Starting sshd ...
gentoo@hypatia / # /etc/init.d/sshd status
 * status:  started

Para iniciarlo automáticamente:
gentoo@hypatia / # rc-update add sshd default

¿Crear claves RSA o DSA?, es igual. Ambas son fuertes criptográficamente.

La cuenta a utilizar será:
username -- > gentoo
passwdord -- > ********

Generar claves SSH:

Siguiendo con nuestro ejemplo, generamos un nuevo par de claves utilizando el nombre de clave de host por defecto de /etc/sshd_config. No cree nunca una frase de acceso en clave de host, en el momento que le solicite una pulse Intro:
gentoo@hypatia / # cd /etc/ssh
gentoo@hypatia / # ssh-keygen -t rsa -f ssh_host_rsa_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ssh_host_rsa_key.
Your public key has been saved in ssh_host_rsa_key.pub.
The key fingerprint is:
f1:d0:8f:de:1f:41:75:5e:51:11:76:9d:c6:1d:3f:64 root@hypatia
The key's randomart image is:
+--[ RSA 2048]----+
|              .E/|
|         .    +*B|
|        o .   o.o|
|         + o .  .|
|        S o . .  |
|         . .   . |
|          . . .  |
|             . . |
|              .  |
+-----------------+
gentoo@hypatia / #

Creo una pequeña red utilizando dos ordenadores, dos claves de red y un router.  El que hará de servidor se llamará hypatia, (Gentoo Linux instalado) y el cliente lucy_ubuntu, (Ubuntu 10.04 - Lucy instalado). Crear

Agregar regla al firewall:

Puede que quiera agregar regla que permita las peticiones de entrada del cliente tanto en el archivo /etc/host.allow como en su guión iptables:
# /etc/host.allow ALL:10.0.0.3/255.255.255.0

En mi caso particular:
# /usr/local/bin/fw_host
...
$ipt -A INPUT -p tcp --dport 22 --sport 1024:65535 -j ACCEPT
---

Esta regla permite las peticiones de entrada del cliente a traves del puerto 22 (puerto por defecto de openssh), desde rango de puertos de origen no privilegiados.

Con la finalidad de realizar pruebas utilizo un viejo router D-Link 504 con 4 puertos Ethernet. A traves de un navegador accedo a la dirección por defecto del router 192.168.1.1 (username y password admin), y cambio la dirección IP  10.0.0.1 con máscara de subred 255.255.255.0.

De esta manera tendré dos redes: La red LAN 10.0.0.0/24 y la 192.168.1.1/24 perteneciente al router de mi proveedor de acceso a Internet. Esta última no la necesito para las pruebas. Desactivo mi tarjeta inalámbrica traves del controlador que utiliza:
gentoo@hypatia / # rmmod iwl3945

No hace falta tocar ningún fichero de configuración ya que con el siguiente comando es posible establecer IP de manera temporal:
gentoo@hypatia / # ifconfig eth0 10.0.0.2 netmask 255.255.255.0 up

gentoo@hypatia / # ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:21:9b:e2:cd:44 
          inet addr:10.0.0.2  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::221:9bff:fee2:cd44/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:448 errors:0 dropped:0 overruns:0 frame:0
          TX packets:562 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:171419 (167.4 KiB)  TX bytes:66852 (65.2 KiB)
          Interrupt:16

Crear ruta estatica:

Para la red 10.0.0.0/24 el gateway por defecto es 10.0.0.1 siendo este el router utilizado para conectar ambos ordenadores.
gentoo@hypatia / # route add default gw 10.0.0.1 eth0

Comprobando con el comando route:
gentoo@hypatia / # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         10.0.0.1        0.0.0.0         UG    0      0        0 eth0

Desde el ordenador que hara de cliente repito los comandos ifconfig y route respectivamente, cambiando la IP a 10.0.0.3:
gentoo@lucy_ubuntu ~ # ifconfig eth0 10.0.0.3 netmask 255.255.255.0 up    
gentoo@lucy_ubuntu ~ # route

Copiar la clave:

Una manera de distribuir la clave pública del host al(los) clientes es entrar desde el cliente y dejar que OpenSSH transfiera la clave. Puede utilizar el nombre de host o su dirección IP:

gentoo@lucy_ubuntu ~ $ ssh 10.0.0.2
The authenticity of host '10.0.0.2 (10.0.0.2)' can't be established.
RSA key fingerprint is 44:e0:bb:e2:92:45:d0:90:cd:54:44:19:7c:b2:97:df.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.2' (RSA) to the list of known hosts.
Password:

Last login: Fri Aug  6 19:01:40 CEST 2010 from 10.0.0.3 on pts/1

En este momento lucy_ubuntu puede en hypatia como si estuviera delante de la máquina, y el tráfico, incluida la identificación de entrada inicial, está cifrado.
gentoo@hypatia ~ $

Fijese, (en el prompt), que al salir volvemos a la máquina cliente.
gentoo@hypatia ~ $ exit
logout
Connection to 10.0.0.2 closed.

gentoo@lucy_ubuntu ~ $ ssh 10.0.0.2

Password:
Last login: Fri Aug 6 19:5:04 CEST 2010  from 10.0.0.3 on pts/1

gentoo@hypatia ~ $

En el fichero ~/.ssh/known_hosts está la clave pública en el PC cliente. Puede contener cualquier cantidad de claves de host. Es buena idea entrar como usuario normal y luego utilizar su para cambiar a usuario root.

Linux es genial!.

No hay comentarios:

Publicar un comentario