linux

Asegurar servidor SSH

Lun, 14/05/2012 - 18:18 -- Sandor

Aquí van algunos consejos para proteger el acceso remoto a un servidor linux, corriendo Secure Shell (SSH).

CONFIGURAR CORRECTAMENTE EL SERVIDOR SSH

  • NOTA: el archivo de configuración, al menos en Debian, se encuentra situado en /etc/ssh/sshd_config
  • Protocol 2
    La versión 1 del protocolo tiene algunas vulnerabilidades conocidas, así que quitamos su soporte, obligando a acceder utilizando únicamente la versión 2 del protocolo.
  • ListenAddress ip
    Comprueba que el servidor escuche únicamente la interfaz de red que quieras realmente (puede que sólo te interese acceder a tu pequeño servidor casero desde tu propia red local, y tengas activado por defecto la escucha en todas las IPs, incluida la pública).
  • PermitRootLogin No
    Es indispensable que el usuario root no pueda acceder via SSH. Siempre podremos escalar privilegios, una vez hayamos accedido al servidor, a través de su o sudo, pero es importante que el usuario root no pueda acceder directamente desde el servidor SSH.
  • Listen num-puerto
    Cambiando el puerto de escucha por defecto pondremos otra piedra en el camino de aquellos que pretendan entrar remotamente en nuestro sistema. Hay formas de deducir qué programa está escuchando un puerto, pero al menos se lo pondremos un poquito más dificil a aquellos que hacen uso de scripts automatizados.
  • PermitEmptyPasswords No
    Ya que estamos intentando aumentar la seguridad de acceso a nuestro sistema, parece lógico prohibir las contraseñas vacías, ¿no? :-)
  • AllowUsers usuario1 usuario2 ...
    Si como yo, administras una pequeña red local, probablemente solo quieras dar acceso SSH a uno o dos usuarios, así que ¿por qué no limitar el acceso al servidor solamente a esos usuarios?
  • AllowGroups grupo1 grupo2 ...
    Si por el contrario hay más usuarios que acceden via SSH, tal vez sería interesante filtrar el acceso al servidor SSH, permitiendo solamente aquellos usuarios que pertenezcan a un determinado grupo.
  • PasswordAuthentication Yes
    Mediante esta directiva configuramos si permitimos la autenticación mediante clave al servidor SSH. El acceso tradicional al servidor se realiza mediante usuario y clave, aunque si prohibimos este acceso mediante usuario/clave (PasswordAuthentication No), aumentaremos la seguridad, dejando el acceso solamente a través de pares de claves públicas y privadas (si has usado alguna vez un programa de cifrado tipo GPG o similar ya sabrás a qué me refiero).
  • Hay otras directivas que incrementan la seguridad, como LoginGraceTime, MaxAuthTries, MaxStartups y algunas otras, aunque considero que estas de aquí arriba son las más importantes. Como siempre un simple man sshd_config te te permitirá profundizar más en las directivas de configuración.

AUTENTICACION SSH BASADA EN PARES DE CLAVES

  • Para deshabilitar el acceso con usuario/clave, y habilitar el acceso con pares de claves, necesitaremos comprobar que el servidor SSH (recuerda: /etc/ssh/sshd_config) está configurado correctamente:
# Desactivamos la autenticación via usuario/clave:
PasswordAuthentication No
# Activamos la autenticación con pares de claves:
PubkeyAuthentication yes
# Definimos el archivo donde irán las claves de acceso autorizadas.
# Como mi partición home está cifrada, defino que las claves se almacenen,
# de manera centralizada, dentro de /etc/ssh. Hay más información al respecto
# (importante el tema de los permisos en las carpetas) en la siguiente URL:
# https://help.ubuntu.com/community/SSH/OpenSSH/Keys
AuthorizedKeysFile /etc/ssh/%u/authorized_keys
# Activamos la atenticación RSA
RSAAuthentication yes
  • Una vez configurada la parte del servidor correctamente, lo que haremos será crear, en nuestra máquina cliente (desde la que accedemos al servidor) una clave pública que copiaremos luego al servidor. El par de claves (pública y privada) las podremos generar mediante el comando ssh-keygen -t rsa (si estamos bajo GNU/Linux), o usando el programa puttygen.exe del cliente PuTTY (si estamos en un entorno MS Windows). Para este ejemplo, suponemos que hemos llamado a la clave pública ssh-publico.key y a la clave privada ssh-privada.key.ppk.
  • Para subir la clave pública a nuestro servidor SSH, haremos uso de la utilidad scp (pscp si usamos PuTTY):
scp ssh-publico-key usuario@nuestroservidor:/etc/ssh/usuario
  • Reiniciamos el servidor sshd y voilà, ya podemos acceder usando el par de claves RSA.

Teneis más información sobre este último tema en los siguiente enlaces:

Partir y juntar archivos grandes en GNU/Linux

Lun, 16/01/2012 - 11:10 -- Sandor

Hoy me ha surgido, en el servidor de la oficina, la necesidad de partir un archivo de 20 Gb en partes más pequeñas. Buscando un poco por ahí, he visto que existe la utilidad split, que hace precisamente eso:

split -btamaño miarchivogrande prefijodelosarchivospequeños

Para juntar los archivos pequeños y volver a crear el archivo grande, la nunca bien valorada :) utilidad cat nos servirá a la perfección:

cat prefijodelosarchivospequeños* > minuevoarchivogrande

 

Linux : Como montar un volumen NTFS de Truecrypt usando la linea de comando

Vie, 10/12/2010 - 22:03 -- Sandor

Hoy me he encontrado con que he tenido que montar una partición Truecrypt bajo Linux, usando la línea de comandos. Vago que es uno :-) me apunto aquí la chuletilla, para futuras referencias y por si a alguien le puede ser de utilidad.

El comando quedaría algo así:

truecrypt --filesystem='ntfs-3g'  --mount /dev/sdb2 /mnt/truecrypt  --fs-options='uid=1000,gid=1001,umask=0002'

Obviamente, es necesario tener instalado el soporte NTFS en linux, mediante el paquete ntfs-3g, así como el propio Truecrypt. Las opciones de --mount son autoexplicativas: primero la partición y luego la ruta destino para el montaje. Como parámetros a ntfs-3g (fs-options), le ordenamos que monte la partición como el usuario con id 1000 y grupo con id 1001, con unos permisos (umask) de 0002 que pondrá los archivos con los permisos 664 y los directorios con 775.

Para algo más de información, podeis ojear estas páginas que he encontrado en la red:

Cambiar permisos selectivamente

Dom, 14/02/2010 - 10:13 -- Sandor

Me apunto aquí una pequeña chuleta con información sobre cómo cambiar los permisos de los directorios de forma selectiva. Es decir, cambiar los permisos solamente a los directorios, o a los archivos, de una determinada ruta.

Para seleccionar solamente los directorios dentro de una ruta determinada, tendremos que echar mano del comando find. Brevemente, la cosa quedaría así:

find /home/usuario -type d -print0 | xargs -0 chmod 775

Esto cambiaría los permisos de todos los directorios bajo /home/usuario, a 775. Podríamos hacer algo similar para los archivos:

find /home/datos -type f -print0 | xargs -0 chmod 664

Linux hasta en la sopa

Mié, 03/02/2010 - 09:14 -- Sandor

Ayer fue un día de esos en los que te das cuenta de que lo que empezó siendo la simbiosis entre un proyecto de sustitución de Minix por parte de un estudiante (Linus Torvals) de la Universidad de Helsinki, y el proyecto GNU iniciado por Richard Stallman, ha ido poco a poco copando nichos de mercado, hasta poderlo encontrar en las tripas de mucha de la cacharrería electrónica que invade nuestro mundo.

Digo que fue ayer porque, al descargarme por la mañana el manual de la tele LG 32LF pude leer un "Aviso de software de código abierto", advirtiendo que la tele incluye un kernel 2.6, busybox, lzo, uClibc y Nanox (The Nano X-Window System).

Algo más tarde me fuí al IKEA y al pagar en una de esas cajas rápidas se bloqueó el lector de tarjetas de crédito, por lo que tuvieron que resetear mi TPV. Al reiniciarlo, pude ver las familiares líneas de arranque de un sistema GNU/Linux (solo me faltó andar listo y hacerle una foto con el móvil).

Tal vez este año tampoco sea el año de Linux en sistemas de escritorio, pero parece que avanza a buen ritmo en otro tipo de entornos...

Recuperando archivos de un backup de Plesk Parallels

Mar, 05/01/2010 - 21:50 -- Sandor

Como os comenté hace unas entradas, he comenzado a trabajar con ConfigBox para poner en marcha Petra Por T. Habituado a los backups de Sync, en los que los recibo en un práctivo archivo ZIP, el nuevo formato de ConfigBox se me ha antojado un poco raro. ¿La diferencia? Sync utiliza cPanel como panel de administración para los alojamientos contratados, mientras que ConfigBox utiliza Plesk Parallels.

Con Plesk, te bajas un archivo .gz, pensado exclusivamente para poderlo subir tal cual si necesitamos restaurar la copia. Pero a mí me interesaba poder extraer el contenido, para poder trabajar en local con una copia del web. El problema es que al descomprimirlo se crea un fichero nuevo, sin extensión. Buscando en la red, he encontrado una solución para extraer su contenido desde linux:

Comprobar que tenemos instalado munpack (en Debian, un aptitude install mpack lo instalará).
zcat archivo_backup.gz > archivo_backup
cat archivo_backup | munpack

Con esto extraeremos los archivos del backup. En mi caso he tenido que agregar la extensión tar manualmente. En dominio.httpdocs.tar y dominio.httpsdocs.tar están los archivos de nuestro sitio web, mientras que los archivos de extensión .mysql contendrán un volcado SQL de las bases de datos que tenemos. Además, también tendremos los logs, y alguna otra cosa más (dump.xml) que no se muy bien para qué sirve :-?

Cifrado de particiones en Linux con LUKS

Mié, 09/12/2009 - 22:09 -- Sandor

Desde que me pillé el Dell Mini 10v he estado intentando encontrar un rato para cifrar la partición /home, no vaya a ser que me lo tomen prestado un día y mi información personal acabe en malas manos.

He estado investigando un poco y parece que lo que se lleva es hacerlo con LUKS y dm-crypt. En este artículo se explica la manera de hacerlo:

Partición cifrada con dm-crypt en Debian.

Al parecer, según se puede leer en la página de la Wikipedia referente a LUKS, LUKS pretende convertirse en un formato estándar de cifrado, independiente de la plataforma. Para acceder a particiones LUKS bajo Windows, por ahora nos tendremos que conformar con FreeOTFE.

LUKS (de las siglas en inglés, Linux Unified Key Setup) es una especificación de cifrado de disco creado por Clemens Fruhwirth, originalmente destinado para Linux. Mientras la mayoría del software de cifrado de discos implementan diferentes e incompatibles formatos no documentados, LUKS especifica un formato estándar en disco, independiente de plataforma, para usar en varias herramientas. Esto no sólo facilita la compatibilidad y la interoperabilidad entre los diferentes programas, sino que también garantiza que todas ellas implementen gestión de contraseñas en un lugar seguro y de manera documentada.

La implementación de referencia funciona en Linux y se basa en una versión mejorada de cryptsetup, utilizando dm-crypt como la interfaz de cifrado de disco. En Microsoft Windows, los discos cifrados con LUKS pueden ser utilizados con FreeOTFE. Ha sido diseñado para ajustarse a la clave de configuración TKS1 de sistema seguro.

Apache SSL y acceso por certificado

Jue, 17/09/2009 - 23:40 -- Sandor

Por fin, tras tres días volviéndome loco configurando humildepc (el pequeño servidor que tengo en casa), he logrado configurar el servidor web Apache, de manera que sea posible acceder desde el exterior de manera segura, usando SSL y siendo necesaria la instalación previa de un certificado en el navegador cliente.

Hay decenas de tutoriales en la red que tratan la configuración SSL de Apache, como la propia documentación de mod_ssl o este artículo de Linux para Todos. Pero de toda la documentación que he ojeado, los dos documentos que más me han ayudado han sido los siguientes:

  • Lo hice y lo entendí: Crear los certificados SSL para nuestro servidor web HTTPS con Apache, OpenSSL y Debian Lenny. Estupenda guia, muy en la línea de su indispensable blog, en la que explica de manera amena (bueno, todo lo ameno que puede ser un tema de estos :-D) los pasos más importantes para tener nuestro servidor https serviendo páginas en un pispás. En particular, explica de una manera muy clara qué pasos tenemos que dar para crear nuestra propia Entidad Certificadora (CA), y firmar con ella nuestros propios certificados digitales. De igual manera, señala donde se ubican y el nombre por defecto de los diferentes archivos que se crean en el proceso, y que eran mi particular talón de aquiles (siempre me terminaba liando con ellos).
  • Shadowsland: Certificados digitales con OpenSSL II. Si bien la guia anterior está genial, siguiendo solamente los pasos indicados en ella he sido incapaz de echar a andar el invento. Tras volverme loco, he llegado a la conclusión de que el error no estaba en la configuración del servidor apache, sino en la instalación de los certificados en los navegadores clientes. La forma que la guia de LHYLE propone a mi la verdad es que no me ha funcionado, ni en Firefox ni el Explorer (ambos en un sistema XP). Por el contrario, siguiendo los pasos de Shadowsland, he creado el certificado en formato pkcs12 y, tras importarlo en los navegadores, todo ha funcionado correctamente. Digamos que era la puntilla que necesitaba para echar todo a andar :)

Si estás interesado en montar un servidor seguro que requiera la instalación de certificados en los navegadores clientes, con estos dos recursos probablemente tengas más que suficiente.

Log de los mensajes de arranque en Debian

Mar, 30/06/2009 - 08:54 -- Sandor

Esta mañana al compilar un nuevo kernel para el servidor de la oficina algo ha ido mal. Al reiniciar la máquina, he visto fugazmente un mensaje de error que rápidamente ha desaparecido de la pantalla. Tras esperar algunos segundos y realizar el login, no he podido encontrar el mensaje de error ni en /var/log/syslog, ni ejecutando dmesg, ni retrocediendo con shift+pgup o parando el torrente de información con ctrl+s o la tecla ScrollLock.

Y es que a veces el error aparece tan temprano en el arranque no que se hace dificiil verlo. Para poder ver los mensajes de arranque en Debian de una forma fácil, tenemos que activar bootlogd, simplemente editando el archivo /etc/default/bootlogd y
habilitarlo. Bootlogd creará en el siguiente inicio de la máquina el archivo /var/log/boot. Por último, señalar que esta característica no está disponible para Debian Woody o anteriores.

Un truquillo realmente útil para depurar kernels creados por nosotros o ver los mensajes de error de los scripts de arranque.

Radio en tarjeta TV Kozumi KTV-01C

Vie, 13/02/2009 - 11:08 -- Sandor

Compré ya hace algunos meses en ebay, por cuatro duros, una tarjeta de TV marca Kozumi KTV-01C. El caso es que tras leer un poco por la red conseguí configurarla para ver la televisión y capturar algunas viejas cintas de VHS que tenía por casa. Pero lo que no había podido hacer hasta ahora era poder escuchar la radio usando el sintonizador integrado que tiene la tarjeta. Hoy he debido de dar con las palabras correctas en Google :-), o mi mente ha estado más despejada de lo normal, porque por fin lo he conseguido.

Dejo por aquí la línea mágica del /etc/modules, por si alguien se encuentra en mi misma situación:


bttv pll=1 radio=1 bttv_verbose=1 card=151 tuner=69 gbuffers=4

Por cierto, este sábado día de los enamorados dos acontecimientos reseñables: nueva versión de Debian estable (Lenny) y la hora unix 1234567890 (más info en esta entrada de Barrapunto). Como muy bien dice uno de los comentarios del hilo en BP, 1234567890 cae justo en la madrugada entre un viernes 13 y un 14 de febrero. Entre el terror y el amor. Así es UNIX.

En fin, sea como sea, que paseis un feliz día de los enamorados con vuestro ser querido, ya sea humano o digital ;-)

Páginas

Suscribirse a RSS - linux

Sobre PlanetaInopia

Sandor Inopia nació en Bilbao, un lunes cualquiera, justo 1904 años después de que Nerón se suicidara, diciendo ¡Qué artista muere conmigo!, y 192 años después de que Volta descubriera la pila eléctrica. Mientras celebraba su quinto cumpleaños, Elvis daba su último concierto, y celebrando los siete, Muhammad Ali se retiraba del boxeo.

Sobre PlanetaInoipa, blog personal de Sandor Inopia (Sandor Saiz Ortuondo)

Yo no tengo la ambición de Nerón, la inteligencia de Volta, la voz de Elvis, o la fuerza de Alí, pero a veces me gusta escribir y darme a conocer a los demás. Por eso este blog, que espero te guste.

Mi vida en Twitter

Comentarios recientes