Hola Visitante

Autor Tema: Creacion de un servidor SSH  (Leído 2786 veces)

Berni69

  • Administrator
  • *****
  • Mensajes: 42
    • Ver Perfil
Creacion de un servidor SSH
« en: Noviembre 23, 2008, 11:31:18 am »
SSH (acrónimo del inglés Secure SHell, cuya traducción sería intérprete de comandos seguro) es un protocolo de comunicación para controlar un ordenador en remoto a través de una CLI (Command Line Interface -Interfaz de Línea de Comandos- también llamada: \"shell\"). Sirve para conectarnos con un ordenador ante el cual no estamos físicamente, bien porque está en una sala de servidores refrigerada, bien porque no tiene teclado ni pantalla, por ejemplo los que están apilados en un rack (un armario donde se guardan ordenadores como los servidores web, de correo electrónico, firewalls, etc...).

Es parecido a Telnet, con la gran diferencia de que en el caso de ssh, la información viaja codificada con lo cual es muchísimo más segura, en el caso de conectarnos a un ordenador que esté en nuestra LAN no es tan importante, pero si nos conectamos a través de Internet es fundamental, casi diría que imprescindible, usar un protocolo seguro como SSH.



Para empezar con esto, debemos descargar y compilar el paquete openssh. En algunas distribucioens lo puedes enconttrar precompilado en sus repositorios. Aqui os dejo la pagina principal del proyecto:
http://www.openssh.org/

Una vez compilado e instalado, procederemos a instalar no-ip o dyndns en caso de tener ip dinámica, los configuramos para que se nos asigne un dominio y procedemos a mapear el puerto 22 del router que apunte a nuestra ip local, para no tener que estar toqueteando cada 2x3 el router recomiendo asignar una ip estatica a nuestro pc dentro del a red local.

En las siguientes lineas procederemos a configurar el servidor que hemos isntalado para ello debemos modificar el archivo /etc/ssh/sshd_config con algun editor de textos

Parámetro Port.

Una forma de elevar considerablemente la seguridad al servicio de SSH, es cambiar el número de puerto utilizado por el servicio, por otro que solo conozca el administrador del sistema. A este tipo de técnicas se les conoce como Seguridad por Oscuridad. La mayoría de los delincuentes informáticos utiliza guiones que buscan servidores que respondan a peticiones a través del puerto 22. Cambiar de puerto el servicio de SSH disminuye considerablemente la posibilidad de una intrusión a través de este servicio.

Port 22

SSH trabaja a través del puerto 22 por TCP. Puede elegirse cualquier otro puerto entre el 1025 y 65535. ejemplo:

Port 52341

Parámetro ListenAddress.

Por defecto, el servicio de SSH responderá peticiones a través de todas las interfaces del sistema. En algunos casos es posible que no se desee esto y se prefiera limitar el acceso sólo a través de una interfaz a la que sólo se pueda acceder desde la red local. Para tal fin puede establecerse lo siguiente, considerando que el servidor a configurar posee la IP 192.168.1.254:

ListenAddress 192.168.1.254

Parámetro PermitRootLogin.

Establece si se va a permitir el acceso directo del usuario root al servidor SSH. Si se va a permitir el acceso hacia el servidor desde redes públicas, resultará prudente utilizar este parámetro con el valor no.

PermitRootLogin no

Parámetro X11Forwarding.

Establece si se permite o no la ejecución remota de aplicaciones gráficas. Si se va a acceder hacia el servidor desde red local, este parámetro puede quedarse con el valor yes. Si se va a permitir el acceso hacia el servidor desde redes públicas, resultará prudente utilizar este parámetro con el valor no.

X11Forwarding yes

Parámetro AllowUsers.

Permite restringir el acceso por usuario y, opcionalmente, anfitrión desde el cual pueden hacerlo. El siguiente ejemplo restringe el acceso hacia el servidor SSH para que solo puedan hacerlo los usuarios fulano y mengano, desde cualquier anfitrión.

AllowUsers fulano mengano

Permite restringir el acceso por usuario y, opcionalmente, anfitrión desde el cual pueden hacerlo. El siguiente ejemplo restringe el acceso hacia el servidor SSH para que solo puedan hacerlo los usuarios fulano y mengano, solamente desde los anfitriones 10.1.1.1 y 10.2.2.1.
AllowUsers fulano@10.1.1.1 mengano@10.1.1.1 fulano@10.2.2.1 mengano@10.2.2.1
Aplicando los cambios.

El servicio de SSH puede iniciar, detenerse o reiniciar a través de un guión similar a los del resto del sistema. De tal modo, podrá iniciar, detenerse o reiniciar a través del mandato service y añadirse al arranque del sistema en un nivel o niveles de corrida en particular con el mandato chkconfig.

Para ejecutar por primera vez el servicio, utilice:

service sshd start

Para hacer que los cambios hechos a la configuración surtan efecto, utilice:

service sshd restart

Para detener el servicio, utilice:

service sshd stop

De forma predeterminada, el servicio SSH está incluido en todos los niveles de corrida con servicio de red. Para desactivar el servicio Sshd de los niveles de corrida 2, 3, 4 y 5, ejecute:

chkconfig --level 2345 sshd off

Cuando nos logueamos autentificamos en algún servidor ssh lo primero que se muestra es el banner de bienvenida si es que este está configurado. Luego que el acceso en el servidor ssh es exitoso lo que se muestra es el mensaje que está configurado en motd ubicado /var/run.

Gracias a que en Linux todo es configurable, podemos personalizar estos mensajes de bienvenida para que nos muestren alguna bienvenida más atractiva, algo como un ascii ( por ejemplo.

La configuración se hace en el servidor ssh.
Editar o crear el archivo de texto issue.net el cual se ubica en /etc he insertar nuestro mensaje de bienvenida pre login.

sudo pico /etc/issue.net



Para que el cambio en el texto de bienvenida sea solicitado por ssh, debemos crear o descomentar (sacar #) en la línea que dice \"Banner /etc/issue.net\" en el archivo de configuración del servidor ssh /etc/ssh/sshd_config.

sudo pico /etc/ssh/sshd_config

Cambiamos el mensaje que aparece después de ingresar al servidor ssh.

sudo pico /var/run/motd



Ahora si queremos que los cambios hechos tengan efecto de inmediato, reiniciamos el servidor ssh.

sudo /etc/init.d/ssh restart




Conexión a un servidor remoto

Para conectarnos con un servidor SSH remoto desde Ubuntu tenemos un cliente por defecto. En Windows no, hay que descargar un cliente (por ejemplo, el programa Putty). Usar el cliente es muy sencillo: basta con teclear desde una consola o terminal lo siguiente:

Código: [Seleccionar]
$ ssh host_remoto

Donde host_remoto es la IP del servidor SSH o el nombre de este. Eso hará que nos conectemos con nuestro nombre de usuario. Si queremos conectar como un usuario remoto teclearemos:

Código: [Seleccionar]
$ ssh usuario_remoto@host_remoto

Luego nos pide la contraseña del usuario. La primera vez que nos conectemos a un servidor tarda un poco más y nos pide confirmación tecleando \"yes\" con todas sus letras, las subsiguientes ya no. Sabemos que estamos conectados porque el prompt cambia y aparece en lugar del nombre de nuestro host el nombre del host remoto.

Los comandos, programas y scripts que lancemos tras conectarnos se ejecutarán en la máquina a las que nos hayamos conectado, utilizando los recursos del host remoto (CPU, memoria, disco, etc.). Esta arquitectura puede utilizarse, por ejemplo, para tener un servidor más potente y varios clientes que ejecutan aplicaciones en dicha máquina.

Para ejecutar aplicaciones gráficas en la máquina a la que nos conectamos tenemos dos opciones. La primera consiste en definir la variable $DISPLAY apuntando a la máquina desde la que nos conectamos.

Código: [Seleccionar]
$ export DISPLAY=host_local:0.0

Este mecanismo no se recomienda por motivos de seguridad (el protocolo X11 no se encuentra cifrado) y, además, pueden encontrarse problemas porque cortafuegos intermedios bloqueen ese tráfico (puertos 600x TCP).

Una solución mejor es utilizar un túnel SSH para encapsular el protocolo X11, lo que transmite la información de manera segura y, además, no suele dar problemas con los cortafuegos intermedios.

Para poder ejecutar aplicaciones gráficas en el host remoto de forma segura, necesitamos dos cosas. La primera, que en la configuración del servidor SSH del host remoto (/etc/ssh/sshd_config) se encuentre activada la siguiente opción:

Código: [Seleccionar]
X11Forwarding yes

Para aprovechar esta característica, hemos de conectarnos usando el parámetro -X, lo que exportará la configuración de la variable $DISPLAY con lo que podremos ejecutar aplicaciones gráficas de forma remota:

Código: [Seleccionar]
$ ssh -X usuario_remoto@host_remoto

Ahora si ejecutas el programa xclock verás que la ventana sale en tu escritorio:

Código: [Seleccionar]
$ xclock