Tag Archive | SSH

Autenticación de SSH con clave pública usando PuTTYgen

Hola!

Muy buenas a todos/as!

Cuando configuramos un servidor SSH en nuestro servidor es bueno configurar algunas cosas para hacerlo un poco mas seguro y sencillo de administrar.

Una de las cosas que podemos configurar es acceder a los servidores con clave pública. Para que sea mas sencillo de crear y administrar crearemos las claves con PuTTYgen y lo configuraremos en el servidor para poder acceder.

Primero necesitaremos Putty

Una vez instalado abrimos PuTTYgen y le damos a Generar una nueva clave. Empezará a crear una clave mientras movemos el ratón. Ponemos un comentario y ponemos la clave a la clave pública con la que nos autenticaremos.

Guardamos la clave pública y la clave privada. Copiamos la clave pública al servidor.

En el servidor configuramos la clave para poder acceder

Creamos la carpeta de SSH

usuario@servidor: mkdir ~/.ssh

Asignamos los permisos a la carpeta

usuario@servidor: chmod 700 ~/.ssh

Ahora convertimos la clave que hemos creado con PuTTYgen a formato de clave SSH

usuario@servidor: ssh-keygen -if clave_publica > clave_publica_ssh

Ahora ya tenemos la clave en formato ssh, así que la copiaremos a las claves autorizadas que pueden acceder

usuario@servidor: cat clave_publica_ssh >> ~/.ssh/authorized_keys

Asignamos los permisos al fichero de claves autorizadas

usuario@servidor: chmod 600 ~/.ssh/authorized_keys

Ahora configuramos ssh para que sólo se pueda entrar mediante clave pública

usuario@servidor: nano /etc/ssh/sshd_config

Ahroa buscamos y sustituímos estos valores por los que dejo aquí

PermitRootLogin		no
PasswordAuthentication	no
UsePAM			no

Dejamos los valores en no y reiniciamos el servicio.

En Putty en el apartado de Data configuramos la clave privada poniendo el archivo .ppk que guardamos antes.

Y hasta aquí ya está todo.

Un saludo

Kippo Honeypot para SSH

Hola!

Muy buenas a todos/as!

Revisando las entradas pendientes que tenía y herramientas por probar me encuentro con Kippo un Honeypot para SSH.

Podemos bajarlo desde aquí.

Una vez ya lo hemos bajado podemos probarlo en nuestra distribución favorita en mi caso lo he probado en Ubuntu.

Los paquetes necesarios eran:

sudo apt-get install python-dev openssl python-openssl python-pyasn1 python-twisted

Una vez ya los tenemos instalados, podemos empezar con el shell script que lleva haciendo:

./start.sh

Kippo empezará a correr en background y registrará todos los intentos de acceso. Veamos un ejemplo de que pasa cuando intento acceder:

  1. 2011-05-06 19:36:15+0200 [-] Log opened.
  2. 2011-05-06 19:36:15+0200 [-] twistd 10.2.0 (/usr/bin/python 2.7.1) starting up.
  3. 2011-05-06 19:36:15+0200 [-] reactor class: twisted.internet.selectreactor.SelectReactor.
  4. 2011-05-06 19:36:15+0200 [-] kippo.core.honeypot.HoneyPotSSHFactory starting on 2222
  5. 2011-05-06 19:36:15+0200 [-] Starting factory <kippo.core.honeypot.HoneyPotSSHFactory instance at 0x9ab1cac>
  6. 2011-05-06 19:40:23+0200 [kippo.core.honeypot.HoneyPotSSHFactory] New connection: 192.168.10.2:52876 (192.168.10.3:2222) [session: 0]
  7. 2011-05-06 19:40:23+0200 [HoneyPotTransport,0,192.168.10.2] Remote SSH version: SSH-2.0-OpenSSH_5.1p1 Debian-3ubuntu1
  8. 2011-05-06 19:40:23+0200 [HoneyPotTransport,0,192.168.10.2] kex alg, key alg: diffie-hellman-group1-sha1 ssh-rsa
  9. 2011-05-06 19:40:23+0200 [HoneyPotTransport,0,192.168.10.2] outgoing: aes128-cbc hmac-md5 none
  10. 2011-05-06 19:40:23+0200 [HoneyPotTransport,0,192.168.10.2] incoming: aes128-cbc hmac-md5 none
  11. 2011-05-06 19:40:26+0200 [HoneyPotTransport,0,192.168.10.2] NEW KEYS
  12. 2011-05-06 19:40:26+0200 [HoneyPotTransport,0,192.168.10.2] starting service ssh-userauth
  13. 2011-05-06 19:40:26+0200 [SSHService ssh-userauth on HoneyPotTransport,0,192.168.10.2] root trying auth none
  14. 2011-05-06 19:40:26+0200 [SSHService ssh-userauth on HoneyPotTransport,0,192.168.10.2] root trying auth keyboard-interactive

El resto del log lo podéis encontrar en Pastebin

Ya podéis jugar con Kippo para registrar accesos por SSH y mas funcionalidades que tiene.

Un saludo

Showoff-io comparte tu localhost en la web

Hola!

Muy buenas a todos/as!

Todos conocemos los servidores web en local, servidores como XAMPP, MAMP, AppvServer. Si necesitáramos de enseñar esta web a alguien en particular que no se encuentra con nosotros, podríamos usar servicios como DynDNS, NO-IP para poder hacer una redirección hacia nuestro portátil.

Con Showoff creamos un tunel usando nuestra clave SSH para enseñar nuestro localhost en la web.

Para los usuarios de MAC OS X podemos instalarlo de esta manera:

sh-3.2# gem install showoff-io

Successfully installed json_pure-1.5.1
Successfully installed mime-types-1.16
Successfully installed rest-client-1.6.1
Successfully installed net-ssh-2.1.4
Successfully installed highline-1.6.1
Successfully installed showoff-io-0.2.9
6 gems installed
Installing ri documentation for json_pure-1.5.1...
Installing ri documentation for mime-types-1.16...
Installing ri documentation for rest-client-1.6.1...
Installing ri documentation for net-ssh-2.1.4...
Installing ri documentation for highline-1.6.1...
Installing ri documentation for showoff-io-0.2.9...
Installing RDoc documentation for json_pure-1.5.1...
Installing RDoc documentation for mime-types-1.16...
Installing RDoc documentation for rest-client-1.6.1...
Installing RDoc documentation for net-ssh-2.1.4...
Installing RDoc documentation for highline-1.6.1...
Installing RDoc documentation for showoff-io-0.2.9...

Ya tenemos Showoff instalado. Ahora creamos la clave SSH para poder usar Showoff

sh-3.2# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/root/.ssh/id_rsa):
Created directory '/var/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/root/.ssh/id_rsa.
Your public key has been saved in /var/root/.ssh/id_rsa.pub.
The key fingerprint is:
53:1f:ff:df:cc:64:fc:d3:49:60:f3:32:61:58:3f:5b root@Thor-2.local
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|             .   |
|          . + .  |
|         . o O oE|
|        S   + * +|
|         .   o * |
|              + B|
|               B=|
|                B|
+-----------------+

Ya tenemos la clave SSH creada.

Ahora ejecutamos showoff en el puerto que queramos

sh-3.2# show 300
Welcome to Showoff

Showoff shares localhost over the web. To begin using showoff,
choose an SSH key. Showoff will use this key to create and secure
tunnels between this computer and the showoff server.

Choose the public key you'd like to use:
[0] id_rsa.pub
[q] Quit

Enter your selection [0]: 0

Do you have a Showoff account? [y/N]
Do you have a Showoff account? [y/N] y
Enter your email address > mriverolopez@gmail.com
Enter your password >
You're out of credits: connected using the 5 minute trial.
Buy credits at https://showoff.io/

Share this URL: https://92ft.showoff.io/

Ahora podríamos tener la web funcionando para poder verla durante 5 minutos en la versión gratuita.

La web oficial del proyecto Showoff-io

Un saludo

Haciendo tu SSH mas seguro

Empecemos por lo básico que es SSH?

SSH (Secure SHell, en español: intérprete de órdenes seguro) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.

Además de la conexión a otras máquinas, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a las máquinas y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH.

Fuente

Bueno, primero de todo vamos a Instalar nuestro paquete ssh en Linux, yo lo he echo desde Ubuntu, si utilizas otras distribución cambia en el comando el gestor de paquetes y listo.

Para instalar ssh hacemos:

seifreed@seifreed-linux-labs:~$ sudo aptitude install ssh

Esto nos instalará el paquete que necesitamos.

Ahora empezaremos haciendo SSH más seguro.

Tecleamos en el terminal, para editar el archivo. Por defecto en Ubuntu el archivo se encuentra en /etc/ssh/sshd_config:

seifreed@seifreed-linux-labs:~$ sudo nano /etc/ssh/sshd_config

Ahora vamos a mirar el archivo de configuración, recordad que las lineas que lleven# es que están comentados significan que no se leeran al ejecutar el servicio.

Cambiando el Puerto:

Por defecto SSH trabaja en el puerto 22, como esto ya es sabido por todos, los exploits y escaneos  ya se centran en el puerto 22. Así que vamos a cambiarlo:

# What ports, IPs and protocols we listen for
Port 8142

Ahora ssh trabajará en el puerto 8142

Ahora veremos como funciona hagamos una prueba.

Recordad que todos los cambios efectuados requieren un reinicio del servicio,

para reiniciar ssh:

seifreed@seifreed-linux-labs:~$ sudo /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd                                                                        [ OK ]

Hagamos la prueba. Si hiciéramos una conexión ssh normal, lo haríamos de la siguiente manera:

seifreed@seifreed-linux-labs:~$ ssh seifreed@192.168.241.128
ssh: connect to host 192.168.241.128 port 22: Connection refused

Como podéis comprobar nos sale que la conexión no se puede realizar.

Ahora vamos ha hacer una conexión como se tendría que hacer una vez hemos cambiado el puerto

seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.128
The authenticity of host ‘[192.168.241.128]:8142 ([192.168.241.128]:8142)’ can’t be established.
RSA key fingerprint is 58:bd:21:76:a9:1d:cc:25:e2:76:fd:82:00:43:81:6c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[192.168.241.128]:8142′ (RSA) to the list of known hosts.
seifreed@192.168.241.128′s password:
Linux seifreed-linux-labs 2.6.28-15-generic #51-Ubuntu SMP Mon Aug 31 13:33:16 UTC 2009 i686

Cambiando direcciones Ip de escucha:

Por defecto SSH escucha a todo el mundo. Ahora en cambio sólo lo habilitaremos para una dirección:

# Use these options to restrict which interfaces/protocols sshd will bind to
ListenAddress 192.168.241.130

Reiniciamos el servicio y hagamos una prueba, nos conectamos desde una máquina con ip distinta a la 192.168.241.130:

seifreed@seifreed-linux-labs:~$ ifconfig eth0
eth0      Link encap:Ethernet  direcciónHW 00:0c:29:86:4c:ed
Direc. inet:192.168.241.128  Difus.:192.168.241.255  Másc:255.255.255.0
Dirección inet6: fe80::20c:29ff:fe86:4ced/64 Alcance:Enlace
ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
Paquetes RX:3834 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:3421 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:3415609 (3.4 MB)  TX bytes:533316 (533.3 KB)
Interrupción:19 Dirección base: 0×2000

seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.128
ssh: connect to host 192.168.241.128 port 8142: Connection refused

Ahora haremos la prueba desde una máquina que sí tenga la ip que queremos:

seifreed@seifreed-linux-labs:~$ ifconfig eth0
eth0      Link encap:Ethernet  direcciónHW 00:0c:29:86:4c:ed
Direc. inet:192.168.241.130  Difus.:192.168.241.255  Másc:255.255.255.0
Dirección inet6: fe80::20c:29ff:fe86:4ced/64 Alcance:Enlace
ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
Paquetes RX:24398 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:11525 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:29914995 (29.9 MB)  TX bytes:1406365 (1.4 MB)
Interrupción:19 Dirección base: 0×2000

seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
seifreed@192.168.241.130′s password:
Linux seifreed-linux-labs 2.6.28-15-generic #51-Ubuntu SMP Mon Aug 31 13:33:16 UTC 2009 i686

Estableciendo Protocolo de SSH:

SSH puede trabajar con protocolo 1 o 2. Lo estabelecemos en 2. Aunque creo que por defecto en las nuevas versiones ya viene con protocolo 2 implementado.

Protocol 2

LoginGrace Time.

Con esto ponemos el tiempo en el que puede un usuario estar con la ventanita de introduce el password. Si pasa el tiempo que establecemos y no se autentica se le cierra la conexión. Para cambiar el parámetro, cambiamos esto del archivo de configuración:

# Authentication:
LoginGraceTime 30

Vamos  a ver que pasa cuando nos pasamos del tiempo:

seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
seifreed@192.168.241.130′s password:
Connection closed by UNKNOWN

Conectarse como root.

Por defecto SSH hace que te puedas conectar como root a la máquina.

Veamos un ejemplo:

seifreed@seifreed-linux-labs:~$ ssh -p 8142 root@192.168.241.130
root@192.168.241.130′s password:
Linux seifreed-linux-labs 2.6.28-15-generic #51-Ubuntu SMP Mon Aug 31 13:33:16 UTC 2009 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:

http://help.ubuntu.com/

root@seifreed-linux-labs:~#

Esto NO debería permitirse. Asi que cambiamos esta linea en el archivo de configuración:

# Authentication:
PermitRootLogin no

Y ahora hacemos la prueba:

seifreed@seifreed-linux-labs:~$ ssh -p 8142 root@192.168.241.130
root@192.168.241.130′s password:
Permission denied, please try again.
root@192.168.241.130′s password:

No permitir contraseñas vacías.

Por defecto viene que no, pero no está de mas revisarlo.

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

X11Forwanding.

Con esto podríamos habilitar un ssh gráfico. En teroría si es un servidor lo dehjamos en NO.

X11Forwarding no

Autenticación mediantante certificados:

La manera mas segura de autenticarse contra un servidor SSH es mediante un certficado.  Lo cambiamos a YES

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes

Encaminamiento:

SSH permite usar su propio cliente de encaminamiento. Para habilitarlo ponemos:

#Habilitar encaminamiento:
AllowAgentForwarding yes

Encaminamiento TCP:

Con esto podemos bailitar encaminamiento TCP

AllowTcpForwarding yes

Máximo de intentos de contraseña:

MaxStartups 4

Por defecto viene habilitado en 10. Nosotros los estableceremos a 3. Cuando haya fallado 3 veces se le cortará la conexión:

seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
seifreed@192.168.241.130′s password:
Permission denied, please try again.
seifreed@192.168.241.130′s password:

Permission denied, please try again.
seifreed@192.168.241.130′s password:

seifreed@192.168.241.130′s password:
Permission denied (publickey,password).
seifreed@seifreed-linux-labs:~$

Intento de conexión fallida guardada en Log.

Con esta línea lo que haremos es que, cuando llegue a la mitad del número que establecemos se guarda en un log:

Sep  5 16:28:59 seifreed-linux-labs sshd[12210]: Failed password for seifreed from 192.168.241.130 port 51527 ssh2

Ahora estableceremos nuestro cifrado seguro de SSH:

Ciphers aes128-ctr,aes256-ctr,arcfour256,arcfour,aes128-cbc,aes256-cbc

 

Habilitando mensaje para cuando nos conectemos por ssh,

ahora lo que hacemos quitar la almohadilla de esta linea:

Banner /etc/issue.net

Ahora editamos ese archivo y le ponemos el mensaje que queramos:

seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
Bienvenido al SSH seguro para la Comunidad De DragoNjar
seifreed@192.168.241.130′s password:

Habilitando usuarios:

Podemos hacer que sólo se puedan autenticar los usuarios que notros queramos:

#Usuarios permitidos
AllowUsers marc

Ahora veremos un ejemeplo:

seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
Bienvenido al SSH seguro para la Comunidad De DragoNjar
seifreed@192.168.241.130′s password:
Permission denied, please try again.

Ahora veremos si que nos deja entrar con el usuario que queremos:

seifreed@seifreed-linux-labs:~$ ssh -p 8142 marc@192.168.241.130
Bienvenido al SSH seguro para la Comunidad De DragoNjar
marc@192.168.241.130′s password:
Linux seifreed-linux-labs 2.6.28-15-generic #51-Ubuntu SMP Mon Aug 31 13:33:16 UTC 2009 i686

Habilitando Grupos:

Ahora sólo permitiremos usuario que estén dentro un grupo determinado, veamos como dejamos ahora el archivo de configuración:

#Habilitando Usuarios
AllowUsers marc seifreed
#Habilitando grupos
AllowGroups users_ssh

Probemos ahora con el usuario seifreed que ahora lo tenemos dentro de los usuario permitidos:

seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
Bienvenido al SSH seguro para la Comunidad De DragoNjar
seifreed@192.168.241.130′s password:
Permission denied, please try again.
seifreed@192.168.241.130′s password:

ES decir aunque este en la lista de usuarios permitidos tambiñen ha de estar dentro del grupo que le hemos dicho ahora hagmaos la prueba con el user metido:

seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
Bienvenido al SSH seguro para la Comunidad De DragoNjar
seifreed@192.168.241.130′s password:
Linux seifreed-linux-labs 2.6.28-15-generic #51-Ubuntu SMP Mon Aug

Esconder versión SSH:

Código:
snprintf(buf, sizeof buf, “SSH-%d.%d-%.100s\n”, major, minor, SSH_VERSION);

por tanto, para eliminar/cambiar el banner sólo hace falta modificar la macro SSH_VERSION que está definida en version.h:

Código:
#define SSH_VERSION    “OpenSSH_4.5″

NOTA: no existe otra forma posible de hacer esto, ya que OpenSSH no lee el banner de un fichero, sino que está incrustado en el propio código.

Y hasta aquí para configurar nuestro servidor SSH.

Gracias a security by default y Sor_Zitroen de Wadalbertia por las ayudas.

Seguir

Get every new post delivered to your Inbox.

Únete a otros 615 seguidores