Escrito por Iván Alonso el Miércoles 30 de Septiembre de 2009

En el anterior post vimos cómo instalar el pack de aplicaciones diseñado por fonz, y dejamos el sistema funcionando con un servidor telnet para facilitarnos la tarea de realizar futuras modificaciones. Aunque era algo sospechoso el hecho de que nos dejara conectarnos mediante telnet sin pedirnos ningún tipo de usuario ni contraseña.

Arreglando el usuario root

El firmware incluido, como todo Linux, tiene un usuario root, aunque en este caso se encuentra desactivado, por lo que el fun_plug por defecto realiza una serie de acciones para “ignorar” este hecho y permitirnos hacer login (o eso entiendo tras lo que he leído en varios tutoriales). En cualquier caso, sea por una razón u otra, tener un sistema que nos permite hacer login sin contraseña no parece una buena opción, así que vamos a arreglarlo.

Todos estos pasos están extraidos directamente del tutorial que podemos encontrar en la Wiki de dns323.info, en la página sobre el fonz fun_plug.

Nos conectamos al DNS-323 e indicamos una nueva contraseña de root:

$ telnet <IP del disco>
Trying <IP del disco>...
Connected to <IP del disco>.
Escape character is '^]'.
/ # pwconv
/ # passwd
Changing password for root
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
New password: <Introducís una nueva contraseña para el usuario root>
Re-enter new password: <repetís la contraseña>
Password changed.
/ # usermod -s /ffp/bin/sh root

Los mensajes de aviso siguientes los podemos ignorar:

/ # pwck
user admin: directory /home/admin does not exist
user nobody: directory /home/nobody does not exist
pwck: no changes
/ # grpck
invalid group name '500'
invalid group name '501'
grpck: no changes

Por último comprobamos que todo lo realizado ha sido correcto, tratando de conectarnos desde esta sesión al propio disco con la nueva contraseña que hemos creado:

/ # login
DLINK login: root
Password: <nueva contraseña>
No mail.
root@DLINK:~# exit

Si todo ha sido correcto, llamamos al script que actualizará el contenido de la memoria flash del aparato, haciendo que no tengamos que volver a repetir estas tareas.

/ # store-passwd.sh
Copying files to mtd1...
Copying files to mtd2...
Done.

Actualizamos el funcionamiento del script que inicia el servidor de telnet, para que tenga en cuenta los nuevos cambios.

/ # cd /ffp/start
/mnt/HD_a2/ffp/start # sed -i '/flags/ s@^@#@' telnetd.sh

Y reiniciamos el servidor de telnet. Nuestra sesión se quedará colgada (en mi caso tuve que reiniciar el disco para que terminara de reiniciar correctamente, y volví a conectarme después de estos comandos).

/mnt/HD_a2/ffp/start # cd /tmp
/tmp # nohup sh /ffp/start/telnetd.sh restart
nohup: appending output to nohup.out
<la sesión de telnet se desconecta, introducimos ctrl+']' para terminarla>
telnet> quit
Connection closed.

Tras esto veremos que los siguientes intentos de conectarse vía telnet ya son como deberían:

$ telnet <IP del disco>
Trying <IP del disco>...
Connected to <IP del disco>.
Escape character is '^]'.
DLINK login: root
Password: <contraseña de root>
No mail.
root@DLINK:~#

Activando y desactivando servicios

Ahora que nuestro usuario root ya funciona correctamente, podemos hacer otra cosa más, que es desactivar el servidor de telnet y activar el servidor ssh, que nos permitirá iniciar sesión de modo más seguro, hacer transferencia segura de archivos, etc. Y, de paso, aprendemos como activar y desactivar los servicios que vienen incluidos en el fonz fun_plug:

Iniciamos el servicio de ssh “a mano”. Es importante notar que en este primer inicio se generarán todos los datos necesarios para que el sistema de seguridad que estamos utilizando funcione, por lo que podrá tardar un poco, pero la información irá apareciendo por pantalla poco a poco:

root@DLINK:~# cd /ffp/start
root@DLINK:/mnt/HD_a2/ffp/start# sh sshd.sh start
Generating public/private rsa1 key pair.
Your identification has been saved in /ffp/etc/ssh/ssh_host_key.
Your public key has been saved in /ffp/etc/ssh/ssh_host_key.pub.
The key fingerprint is:
<muchos números en hexadecimal> root@DLINK
The key's randomart image is:
+--[RSA1 2048]----+
<imagen ascii aleatoria>
+-----------------+
Generating public/private dsa key pair.
Your identification has been saved in /ffp/etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /ffp/etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
<muchos números en hexadecimal> root@DLINK
The key's randomart image is:
+--[ DSA 1024]----+
<imagen ascii aleatoria>
+-----------------+
Generating public/private rsa key pair.
Your identification has been saved in /ffp/etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /ffp/etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
<muchos números en hexadecimal> root@DLINK
The key's randomart image is:
+--[ RSA 2048]----+
<imagen ascii aleatoria>
+-----------------+
Starting /ffp/sbin/sshd
root@DLINK:/mnt/HD_a2/ffp/start#

Ahora ya podremos conectaros desde un cliente ssh. La primera vez que nos conectamos se almacena en nuestra máquina la información necesaria para comprobar en conexiones futuras que no nos estamos conectando a otra máquina que esté suplantando a la nuestra:

$ ssh root@<IP del disco>
The authenticity of host '<IP del disco> (<IP del disco>)' can't be established.
RSA key fingerprint is <muchos números en hexadecimal>.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '<IP del disco>' (RSA) to the list of known hosts.
root@<IP del disco>'s password: <contraseña de root>
root@DLINK:~#

Y tras ver que nuestro servidor ssh funciona correctamente, ya podemos desactivar el servidor de telnet y marcar el de ssh para que se inicie automáticamente, algo que ya podemos hacer desde esta nueva sesión que hemos abierto, por ejemplo:

root@DLINK:~# cd /ffp/start
root@DLINK:/mnt/HD_a2/ffp/start# chmod a-x telnetd.sh
root@DLINK:/mnt/HD_a2/ffp/start# chmod a+x sshd.sh
root@DLINK:/mnt/HD_a2/ffp/start# ls -lah
drwxr-xr-x    2 root     root         4.0k Sep 30 18:26 .
drwxr-xr-x   11 root     root         4.0k May 22  2008 ..
-rw-r--r--    1 root     root           52 Oct 25  2008 LOGIN.sh
-rw-r--r--    1 root     root           35 Oct 25  2008 SERVERS.sh
-rw-r--r--    1 root     root          203 Sep 29  2008 inetd.sh
-rw-r--r--    1 root     root          229 Apr 13 14:30 kickwebs.sh
-rw-r--r--    1 root     root          223 Apr 13 14:30 lighttpd.sh
-rw-r--r--    1 root     root          267 Apr 15  2008 mediatomb.sh
-rw-r--r--    1 root     root         1.4k Apr 15  2008 nfsd.sh
-rw-r--r--    1 root     root          526 Mar  2  2009 ntpd.sh
-rw-r--r--    1 root     root          160 Apr 15  2008 portmap.sh
-rw-r--r--    1 root     root          224 Mar  3  2009 rsyncd.sh
-rwxr-xr-x    1 root     root          971 May 20 00:35 sshd.sh
-rw-r--r--    1 root     root          383 Sep 29  2008 syslogd.sh
-rw-r--r--    1 root     root          170 Sep 30 18:26 telnetd.sh
-rw-r--r--    1 root     root          998 Feb 26  2009 unfsd.sh
root@DLINK:/mnt/HD_a2/ffp/start#

Vemos que es tan sencillo como poner o quitar el marcador de archivo ejecutable al script que nos interese. Aquellos que estén marcados como ejecutables (con la x en la primera columna), como nuestro sshd en el ejemplo anterior, serán los que se inicien cuando arranquemos el disco. El resto serán ignorados.

Añadimos permiso de ejecución con:

chmod a+x <archivo del script>

Quitamos el permiso de ejecución con:

chmod a-x <archivo del script>

Etiquetas: , , ,

Esta entrada fue escrita el Miércoles 30 de Septiembre de 2009 a las 7:13 pm y está archivada en la categoría Blog. Puedes seguir las respuestas y comentarios en el feed RSS 2.0. Puedes dejar un comentario, o dejar un trackback desde tu propia página.

Un comentario en “D-Link DNS-323: Personalizando el aparato”

  1. [...] más a nuestro nuevo NAS, tras lo que aprendimos en los últimos posts [primeros pasos y personalizando]. Primero configuraremos el ventilador para que funcione a distintas velocidades dependiendo de la [...]

Deja tu comentario