DO 101: Configuración inicial de VPS con Arch Linux

En la entrada anterior, vimos como configurar un VPS en un SSD Cloud Server de una manera sencilla a través de DigitalOcean. Seleccionamos Arch Linux como distro para el VPS dada su facilidad de uso.

Como medida inicial, debemos cambiar la contraseña por defecto que nos envía DigitalOcean por correo electrónico, iniciamos sesión por nuestro cliente SSH desde Linux, Mac o desde PuTTY en Windows.


ssh root@192.168.1.1

Iniciamos sesión con la clave por defecto de DigitalOcean, se mostrará un mensaje parecido a este:

The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
ECDSA key fingerprint is 79:95:46:1a:ab:37:11:8e:86:54:36:38:bb:3c:fa:c0.
Are you sure you want to continue connecting (yes/no)?

Escribimos yes o no dependiendo de si queremos guardar la huella digital de la clave utilizada. Ahora cambiamos como medida de seguridad la contraseña si no lo hemos hecho ya anteriormente:


passwd
Changing password for root.
Enter new UNIX password:

Ahora, es momento de configurar nuestro servidor con cuentas de usuario y cambiar la configuración de SSH para endurecer las medidas de seguridad y proteger nuestro servidor de ojos ajenos.

Para crear un usuario normal con su directorio dentro de /home, sin tantos privilegios y con una nueva contraseña hacemos lo siguiente:


useradd -m ejemplo
passwd ejemplo

En lo personal no me gusta utilizar sudo, en su lugar prefiero iniciar sesión como usuario root a través de su, hacer lo que tenga que hacer y salir de la sesión de root y continuar mi uso como usuario normal. Dicen que cuentas claras mantienen la amistad, pues en este caso, cuentas y privilegios separados mantienen el servidor.

Configurar SSH

Es hora de asegurar nuestro servidor SSH, para ello abrimos el editor de texto de nuestra preferencia, ya sea vi o nano que son los que vienen instalados por defecto con el archivo sshd_config.


nano /etc/ssh/sshd_config

Buscamos la línea del protocolo y dejamos activada la versión 2 del protocolo SSH, ya que la versión 1 tiene ciertas vulnerabilidades que pueden ser explotadas.


Protocol 2

Desactivamos el login de usuario root, con esto solo podremos iniciar sesión con el usuario recién creado.


PermitRootLogin no

Algunas personas suelen cambiar el puerto por defecto de SSH, usando como argumento la seguridad por oscuridad, pero considero que esta práctica es un poco ineficaz ya que de todas maneras al lanzar un scan contra nuestro VPS encontrarán que corremos SSH.

La mejor manera de asegurar nuestro servidor SSH, en mi opinión personal, es a través de criptografía de llave pública con SSH keys.

Antes de cerrar la sesión de usuario root que estamos corriendo, reiniciamos nuestro servidor SSH


systemctl restart sshd

Abrimos otra terminal para verificar que todo está en orden y podemos proceder.


ssh ejemplo@192.168.1.1

Si nuestro prompt dice, una vez, iniciada sesión esto:


[ejemplo@servidor1 ~]

Sabremos que todo esta corriendo bien y podemos cerrar ahora si la sesión de root que teníamos abierta. Ahora para cambiar a usuario root solo será cuestión de iniciar el comando su.

SSH Keys

Desde Linux

Las SSH keys nos ahorran tener que teclear la clave en la terminal cada vez que nos logueamos al sistema. Una vez puesto en marcha nuestro servidor para que soporte las SSH Keys y desactivada la escritura de contraseñas, se volverá bastante seguro ya que solo podrá entrar quien tenga la llave privada. Razón por la cual debes cuidar esa llave privada como si tu vida dependiera de ello.

Para generar nuestro par de llaves (public key/private key), en una consola en cualquier distro GNU/Linux podemos crearla con el comando ssh-keygen.

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ejemplo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

Podemos cambiar el nombre de la clave que estamos creando solo para recordar donde dejamos los archivos. Lo siguiente es enviar la public key al servidor donde nos queremos conectar. Nos movemos al directorio .ssh.


cd .ssh

copiamos la public key al servidor remoto

scp id_rsa.pub ejemplo@servidor1:~/.ssh/

Ahora nos conectamos al servidor remoto para configurar el acceso con SSH keys.

ssh ejemplo@servidor1

Cambiamos los permisos a 700 al directorio .ssh

chmod 700 .ssh

Creamos un archivo para guardar las keys que el servidor remoto vaya a aceptar y le damos permisos 600.

touch authorized_keys
chmod 600 authorized_keys

Colocamos el contenido de nuestro public key en el authorized_keys:

cat id_rsa.pub >> authorized_keys

Finalmente, si dejas todo en su lugar con los nombres de archivo por defecto, te podrás conectar directamente con solo hacer:

ssh ejemplo@servidor1

De lo contrario, especificas el archivo donde guardaste la private key

ssh ejemplo@servidor1 -i .ssh/privatekey

Es posible que si creaste un passphrase durante la creación de las SSH keys, te lo pida para conectarte.

Eso es todo por ahora, para la siguiente entrada un tutorial para conectarse con SSH keys desde PuTTY. Por último te invito a crear un VPS en un SSD Cloud Server de una manera sencilla a través de DigitalOcean.

Anuncios

DO 101: Introducción a DigitalOcean

En los últimos días he estado probando un servicio relativamente nuevo en el mundo de los VPS (servidores privados virtuales). DigitalOcean, me atrajo inicialmente por su precio y al día de hoy no me arrepiento de haber empezado a usarlo. Crear un VPS aquí, es realmente fácil y toma muy poco tiempo. Y no es para menos, dejar funcionando un servidor que tenga Apache, Maria DB, PHP toma unos pocos minutos. Puede colaborar conmigo registrándose a través de este enlace: DigitalOcean.

Portada de DigitalOcean

Portada de DigitalOcean

Primero solo hay que registrarse, con un correo electrónico y una contraseña basta. Una vez iniciada la sesión, podremos crear nuestro primer VPS, que de ahora en adelante llamaremos droplet. Los droplets no son más que sistemas operativos virtualizados, en el caso de DigitalOcean utilizando KVM.

Panel para creación de droplets

Panel para creación de droplets

Le damos un nombre a nuestro droplet, seleccionamos el plan que utilizaremos, la región del datacenter, la imagen de la distro a utilizar (en mi caso Arch Linux para sentirme como en casa). Dejamos la opción VirtIO activada.

Una vez creado nuestro primer droplet, veremos algo así y nos será enviada por correo electrónico nuestra clave de usuario root. Por supuesto que lo más recomendable es cambiar esta contraseña una vez iniciada sesión por primera vez.

Panel de control de DigitalOcean

Panel de control de DigitalOcean

Ahora podemos explorar un poco sus opciones. Entre las opciones podremos reiniciar y apagar el droplet, cambiar la contraseña del usuario root, cambiar el tamaño del droplet, generar snapshots y backups, cambiar el kernel y eliminar por completo el droplet.

Controles del droplet

Controles del droplet

Los snapshots permiten guardar por decirlo así la configuración del servidor y permiten crear un nuevo droplet con la misma configuración, esto permite ahorrar tiempo valioso al momento de crear otro droplet. Los backups, pueden ser configurados para que cada “x” tiempo hagan un respaldo de todo el servidor, estos tienen un costo adicional del 20% del plan actual. Los snapshots son gratis. Para generar un snapshot es necesario apagar el droplet, pero para generar un backup no es necesario apagarlo.

Por último, para conectarse al servidor utilizaremos SSH con el usuario root, la ip que fue asignada a nuestro droplet y la contraseña que nos fue enviada al correo:

$ ssh root@192.168.1.1

Por último para cambiar la clave por una de nuestra elección, escribimos el comando passwd.

# passwd
Changing password for root.
Enter new UNIX password:

Eso es todo por hoy, pronto vendrán más tutoriales para poner a punto nuestros droplets. Puede colaborar conmigo registrándose a través de este enlace: DigitalOcean.

Controlar a Banshee desde Android

Hace un momento estaba peleando con Banshee y otros reproductores en Arch Linux porque deseaba controlar a uno remotamente desde mi Galaxy Ace. La solución vino con Google, solo fue cuestión de leer un poco. Me tope con una página escrita por Nikitas Stamatopoulos, una persona que desarrolló un app para Android y una extensión para Banshee que permite controlarlo remotamente.

Para instalarlo en Arch Linux, podemos hacerlo desde el AUR con la ayuda de yaourt o packer:

$ yaourt -S banshee-remote-control

o

$ packer -S banshee-remote-control

Para instalarlo en otras distribuciones debemos hacer lo siguiente:

$ cd /usr/lib/banshee/Extensions

Luego como usuario root o a través de sudo debes descargar este archivo en esa carpeta

# wget -c http://www.dartmouth.edu/~nstamato/BansheeRemoteListener.dll

Evidentemente el archivo se descargará en el directorio de extensiones de Banshee al hacer eso, ahora debemos activar la extensión en Editar > Preferencias > Extensiones

Activar Remote Control en Banshee

Activar Remote Control en Banshee

Por el momento solo se puede cambiar el puerto de escucha para la extensión, por defecto es 8484:

Cambiar puerto de Remote Control en Banshee

Cambiar puerto de Remote Control en Banshee

Mientras tanto en nuestro terminal con Android, debemos instalar esta aplicación: Banshee Remote. Al iniciar el app saldrá esta pantalla:

Pantalla inicial de Banshee Remote

Pantalla inicial de Banshee Remote

Introducimos la ip de nuestro equipo que ejecuta Banshee en ese momento, luego sincronizamos la aplicación con nuestro equipo (presionar tecla de menú y luego la opción Sync) y descargará nuestra lista de reproducción completa. Luego podremos seleccionar desde el smartphone lo que deseemos y correrá en banshee. Como bonus adicional, también puedes controlar el volumen con las teclas de volumen del smartphone.

Lista de artistas en Banshee Remote

Lista de artistas en Banshee Remote

Algo de AC/DC seleccionado desde Banshee Remote...

Algo de AC/DC seleccionado desde Banshee Remote…

Algo del patio... Alfredo "Fello" Escudero

Algo del patio… Alfredo “Fello” Escudero

DICOM toolkit

Volviendo al tema de las imágenes DICOM, hoy me ha dado por instalar dcmtk, o bien DICOM toolkit. Es un set de herramientas (ojo, son para línea de comandos) que permiten manipular las  imágenes DICOM. A mi parecer, dcmtk, es el imagemagick de las imágenes DICOM.

Parafraseando la definición de los desarrolladores, pero al idioma de Cervantes:

DCMTK es una colección de librerías y aplicaciones de  grandes partes del estándar DICOM. Incluye software para examinar, construir y convertir archivos de imagen DICOM, gestión de medios en línea, enviar y recibir imágenes a través de una conexión de red, así como almacenamiento de imágenes demostrativas y servidores de listas de trabajo. DCMTK es que está escrito en una mezcla de ANSI C y C + +. Se presenta en el código fuente completo y está disponible como “open source”.

Lo que más me gusta, está al final de la última línea “open source” y por lo tanto, podemos instalarlo en Arch Linux. Claro, luego de buscar un rato en AUR.

$ yaourt dcmtk

y entonces yaourt responde:

1 aur/dcmtk 3.5.5-5 (11)
 a collection of libraries and applications implementing large parts the 
 DICOM standard

weee! ahí estaba… no me toco empaquetar un PKGBUILD para AUR, pero quien sabe, luego aprenderé sobre esto. Bueno, le di a instalar y se bajaron sus 4.4 MB… y luego empezó a compilarse y me tuve que ir a hacer otras cosas ya que por lo visto, es bastante. Después de un rato tenía generado un paquete de 130 MB aproximadamente y terminé instalándolo. He aquí la lista de aplicaciones:

dcm2pdf   dcmconv   dcmdspfn  dcmmkcrv  dcmprscp  dcmpsrcv  dcmquant
dcm2pnm   dcmcrle   dcmdump   dcmmkdir  dcmprscu  dcmpssnd  dcmscale
dcm2xml   dcmdjpeg  dcmftest  dcmmklut  dcmpschk  dcmqridx  dcmsign
dcmcjpeg  dcmdjpls  dcmgpdir  dcmodify  dcmpsmk   dcmqrscp  
dcmcjpls  dcmdrle   dcmj2pnm  dcmp2pgm  dcmpsprt  dcmqrti   

Lo que más me gusta es que cada uno de los programas está bien documentado, así que he preparado una serie de tutoriales que publicaré en los próximos días.

Saludos a todos!

dcm2pdf

dcmconv

dcmdspfn

dcmmkcrv

dcmprscp

dcmpsrcv

dcmquant
dcm2pnm

dcmcrle

dcmdump

dcmmkdir

dcmprscu

dcmpssnd

dcmscale
dcm2xml

dcmdjpeg

dcmftest

dcmmklut

dcmpschk

dcmqridx

dcmsign
dcmcjpeg

dcmdjpls

dcmgpdir

dcmodify

dcmpsmk

dcmqrscp
dcmcjpls

dcmdrle

dcmj2pnm

dcmp2pgm

dcmpsprt

dcmqrti

Un alias útil en el .bashrc

Consola

Consola

No suelo moverme mucho en la consola, pero de vez en cuando lo hago y en ocasiones al momento de manipular archivos comprimidos me es un poco difícil recordar los distintos parámetros de extracción para cada mimetype. Así que me propuse hacer un alias en el .bashrc para resolver esto:

function extraer () {
  if [ -f $1 ] ; then
      case $1 in
          *.tar.bz2)   tar xvjf $1    ;;
          *.tar.gz)    tar xvzf $1    ;;
          *.bz2)       bunzip2 $1     ;;
          *.rar)       unrar x $1     ;;
          *.gz)        gunzip $1      ;;
          *.tar)       tar xvf $1     ;;
          *.tbz2)      tar xvjf $1    ;;
          *.tgz)       tar xvzf $1    ;;
          *.zip)       unzip $1       ;;
          *.Z)         uncompress $1  ;;
          *.7z)        7z x $1        ;;
          *)           echo "mmm... no puedo extraer '$1'..." ;;
      esac
  else
      echo "'$1' no es un archivo válido!"
  fi
}

Ahora con solo escribir extraer nombredearchivo.formato será extraído en un nuevo directorio.

Plymouth, Arch Linux y Nouveau: Mi experiencia

Hoy me pegaron las ganas de instalar Plymouth y Nouveau para hacer algo más amigable el arranque de mi laptop con Arch Linux. Plymouth depende de que el driver de video soporte KMS (Kernel Mode Setting) y el driver que utiliza mi pc actualmente es el de nVidia que según sus desarrolladores nunca soportará KMS. En fin, dejando de lado esos problemas de licencia queda “pritty” y se puede mostrar a los compañeros de clase para que se les ague la boca y queden con una sialorrea de espanto.

Mi laptop es una humilde HP Pavilion DV6809wm que ya tiene su tiempito. Tiene una gráfica integrada nVidia GeForce 7150M / nForce 630M como dice la salida del comando lspci | grep GeForce y como se observa en el wiki de Nouveau, la misma está soportada (familia NV04). No uso muchas aplicaciones que requieran soporte 3d a excepción de los efectos de kde, pero estos deben correr bien con este driver.

Vamos con la receta de cocina:

Instalar el driver Nouveau

Con pacman como toda instalación:

sudo pacman -S nouveau-drm xf86-video-nouveau
resolviendo dependencias...
verificando conflictos...

Objetivos (2): nouveau-drm-0.0.16_20100313-2 [0.27 MB] xf86-video-nouveau-0.0.15_git20100314-1 [0.08 MB]

Tamaño total de descarga: 0.34 MB

Tamaño total instalado: 1.48 MB

esperamos a que termine de descargar e instalar. Si la gráfica pertenece a la familia NV50 o superior, será necesario añadir también el paquete nouveau-firmware.

Testear Nouveau

Tendremos que abandonar el X Window System por un rato para verificar que todo funcione. Así que en este punto tendremos que copiar lo que sigue, imprimirlo o verlo desde otra pantalla. Cambiamos a una consola Ctrl+Alt+F1 y hacemos lo siguiente: cerramos las X, quitamos el módulo nvidia, cargamos el módulo nouveau.

sudo /etc/rc.d/kdm stop

sudo rmmod nvidia

sudo modprobe nouveau

Cualquier cosa que ocurra verificamos la salida de dmesg, para errores y reportar bugs y eso…

dmesg | tail

Antes de matar las X, habrá que hacer algunos cambios al xorg.conf. Lo abrimos:

sudo nano /etc/X11/xorg.conf

Nos vamos a la sección Device, que en mi caso tiene el siguiente contenido:

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection

añadimos lo siguiente:

Section "Device"
Identifier "Device0"
#Driver "nvidia"
Driver "nouveau"
VendorName "NVIDIA Corporation"
EndSection

Ahora arrancamos las X

sudo /etc/rc.d/kdm start

En mi caso, todo funcionó de maravillas, solo que al volver al escritorio no había composite activado. Eso será tema para otro post. Habiendo vuleto a arrancar kde, ahora abres una consola para editar permanentemente el rc.conf para seguir usando nouveau. Abrimos el rc.conf

sudo nano /etc/rc.conf

y en la línea de módulos hacemos lo siguiente:

MODULES="nouveau ... !nvidia"

Todavía hay que hacer algunos cambios para reiniciar y estar seguros que todo va bien.

Abrimos el modprobe.conf

sudo nano "/etc/modprobe.d/modprobe.conf"

y añadimos la línea

blacklist nvidia

Ahora editamos el mkinitcpio.conf:

sudo nano /etc/mkinitcpio.conf

Vamos a la línea FILES y añadimos lo siguiente:

FILES="/etc/modprobe.d/modprobe.conf"

Regeneramos la imagen de arranque

sudo mkinitcpio -p kernel26

Si reiniciamos en este punto, veremos que el KMS hace magia con la resolución de la consola. Me gusta mucho que la consola me muestre los mensajes de arranque, eso era al principio, y como ya no tengo problemas para arrancar ArchLinux siempre muestra los mismos mensajes. Así que ahora vamos a instalar plymouth.

Instalando plymouth

Plymouth no está en los repositorios oficiales, pero podemos descargar el PKGBUILD desde el aur. Al momento de escribir esto, la versión más reciente que hallé es la git. Me gusta hacer las cosas a mano y por eso no uso yaourt o similares.

wget -c "http://aur.archlinux.org/packages/plymouth-git/plymouth-git.tar.gz"

extraer plymouth.tar.gz

ó

tar xvfz plymouth.tar.gz

cd plymouth-git/

ahora compilamos

makepkg -s

Cuando termine, podemos instalar con pacman:

sudo pacman -U plymouth-git-20100523-1-x86_64.pkg.tar.xz

Al instalar veremos unas instrucciones, estas son las últimas que seguiremos para terminar. Tendremos que añadir plymouth al mkinitcpio.conf. en la línea HOOKS después de base y udev:

HOOKS="base udev plymouth ..."

En mi caso estoy usando el grub2, así que silenciemos los mensajes que salen después del grub.

sudo nano /boot/grub/grub.cfg

y vamos a la línea que carga el SO

# Entry 0 - Arch Linux
menuentry "Arch Linux" --class "arch" {
set root=(hd0,5)
linux /boot/vmlinuz26 root=/dev/sda5 resume=/dev/sda8 ro hpet=disable quiet splash
initrd /boot/kernel26.img
}

Tendremos que actulizar la imagen de arranque:

sudo mkinitcpio -p kernel26

Para cambiar el tema:

plymouth-set-default-theme [theme]

y actualizamos el initrd

plymouth-set-default-theme [theme] --rebuild-initrd

Resultados?? funcional, pero tengo problemas con composite. En cuanto tenga una solución la posteo.