Archivo

Entradas Etiquetadas ‘redes’

Guía de supervivencia para disfrutar de Linux Mint Debian Edition XFCE (III : ssh, nfs, y algunas utilidades para consola)

Jueves, 22 de Septiembre de 2011 Gaspar Fernández Sin comentarios

Cosas que no vienen instaladas de serie y deberían, herramientas para redes y administración remota que nos permitirán, sobre todo jugar y aprender. Quiero que esta sea una guía completa para personas que se inician en el mundo Linux por lo que no profundizaré mucho en algunos aspectos y en ocasiones, como esta, serán cosas muy básicas.

Servidor SSH

Cuando tienes en casa varios ordenadores, en ocasiones tenemos la necesidad de acceder a uno de los otros ordenadores y ejecutar algo allí, ya sea porque tengamos archivos en ese ordenador que no tengamos en el que tenemos delante, porque vamos a realizar algo pesado y la otra máquina es más larga, o bien porque no tenemos acceso físico a dicha máquina.

Lo primero es instalar el servidor SSH en la máquina a la que queremos acceder:

$ sudo apt-get install openssh_server

El cliente debemos instalarlo en la máquina desde la que accedemos

$ sudo apt-get install openssh_client

Aunque dado lo poco que ocupan, podemos, sin peligro instalar los dos en nuestro ordenador… nunca se sabe cuándo podemos utilizarlo.

La configuración que viene por defecto es buena para empezar. Ahora, si estamos en la máquina A y queremos conectar a la máquina B, podemos hacer desde un terminal:

$ ssh usuario@DIRECCION_IP_DE_B

y podremos ejecutar comandos en la máquina B

Compartir directorios por NFS

Imagina que estoy en la máquina A y toda mi colección de música está en la máquina B, si quiero reproducirla tendré dos opciones: grabarla en un sopore extraíble, lo cual requiere acceso físico (y tener un soporte para copiar), o compartirla por red local. Para esta segunda tenemos el protocolo NFS.

En la máquina B, la que tiene toda la música, debemos instalar el servidor:

$ sudo apt-get install nfs-server

y en la máquina A, el cliente:

$ sudo apt-get install nfs-client

Ahora debemos configurar qué queremos compartir. En muchos entornos tenemos aplicaciones para configurar los directorios compartidos de forma gráfica, pero para los que no, debemos abrir un terminal y ejecutar:

$ editor /etc/exports

# editor carga el editor de texto por defecto… os gusta nano ? vim ? emacs ? joe?

Dentro del archivo tenemos que introducir el directorio a compartir y el host con el que lo compartimos. Si somos la mágina B:

/directorio/a/compartir      DIRECCION_DE_A(ro,sync,no_subtree_check)

A partir de ahí podemos incluir tantos directorios compartidos como queramos, siempre en el mismo formato. He colocado unos atributos por defecto: ro,sync,no_subtree_check, podemos (y a veces debemos) cambiarlos:

  • ro - Comparte el recurso como sólo lectura. Si queremos compartirlo tanto para lectura como para escritura, debemos poner rw (read/write).
  • sync - Sincroniza las escrituras enviando notificaciones al cliente cuando se escriben para que pueda continuar. Podemos poner async, y en este caso no se envían notificaciones y las escrituras son más rápidas.
  • no_subtree_check. No verifica los permisos en directorios anteriores a la ruta especificada, puede que el usuario ptolomeo no tenga acceso a /home/pitagoras/ pero sí pueda acceder a /home/pitagoras/compartido ; si esta opción es subtree_check, provocaríamos que ptolomeo no acceda a /home/pitagoras/compartido porque no tiene acceso al directorio anterior.

Ahora vamos a la parte del cliente, éste tiene que montar los recursos compartidos. Imaginémonos que el usuario ptolomeo quiere montar en /home/ptolomeo/amigos/pitagoras el recurso compartido que éste tiene en /home/pitagoras/compartido. Ptolomeo deberá hacer:

$ sudo mount -t nfs IP_DEL_ORDENADOR_DE_PITAGORAS:/home/pitagoras/compartido /home/ptolomeo/amigos/pitagoras

Por otra parte, si tenemos un servidor NFS y queremos ver qué recursos tiene compartidos, podemos verlo haciendo:

$ sudo showmount -e IP_DEL_SERVIDOR

La seguridad ante todo

Está bien tener un servidor ssh y nfs ; pero en ocasiones, nos conectamos a una red pública, o directamente a Internet, por lo que no nos interesa compartir nuestros archivos con cualquiera que pueda entrar, para ello tenemos los archivos hosts.deny (que deniega el acceso a nuestros servicios a diferentes máquinas) y hosts.allow (que da permiso para que dichas máquinas accedan a nuestro ordenador).

Ambos archivos funcionan de forma parecida, escribimos en una línea:

SERVICIO : IP/HOST1, IP/HOST2, IP/HOST3, ….

donde SERVICIO, puede ser, por ejemplo ssh, luego ponemos dos puntos (:) y una lista de IP o nombres de host separados por comas. Dependiendo de si esa línea la ponemos en hosts.deny o hosts.allow, denegaremos o permitiremos el acceso a esa máquina.

Para hacer una configuración segura, en hosts.deny podemos poner:

ALL : ALL

Lo que bloqueará TODOS los servicios para TODOS los ordenadores remotos, así tendremos nuestro ordenador cerrado al exterior. Ahora, en hosts.allow, queremos dar permiso a ptolomeo para que acceda a nuestro servicio ssh:

sshd : ptolomeo

también queremos dar permiso al ordenador con IP 192.168.1.28, al ordenador pitagoras y a 192.168.1.20 para acceder al servicio httpd (servidor web, imaginemos que lo tenemos instalado):

httpd: 192.168.1.28, pitagoras, 192.168.1.20

Por otra parte, el servicio nfs, hemos visto que compartimos directorios con máquinas determinadas, por lo que así podríamos restringirlo, además, si en hosts.deny ponemos ALL:ALL no va a arrancar el demonio; tenemos dos posibles soluciones:

  1. Poner en hosts.deny
    ALL : ALL EXCEPT LOCAL
    Para que no se bloqueen conexiones locales
  2. Poner en hosts.allow
    rpcbind : localhost
    Para no bloquear conexión local al demonio rpcbind

Si queremos permitirlo todo, también podemos poner en hosts.allow:

ALL : ALL

pero no se recomienda, sólo debemos hacer esto para equipos de pruebas o máquinas que tengan una conexión limitada (es decir, que sólo estén conectadas con uno o dos hosts y esté todo controlado).

Instalar nmap

Este programa tiene muchas utilidades, una de las más comunes es saber qué servicios tiene abiertos una máquina, o por ejemplo, nuestro router tiene un servidor DHCP para darnos una dirección IP en nuestra red (es la configuración más común), cada vez que encendamos nuestro ordenador, lo más probable es que tengamos una IP diferente asignada, y si hay varios ordenadores conectados, ya sí que es difícil saber la IP que tiene cada máquina, nmap nos puede ayudar a eso.

Además, podemos utilizar nmap para averiguar si hay intrusos en nuestra red.

$ sudo apt-get install nmap

Si queremos ver cuánta gente hay conectada en nuestra red, y quiénes son los que están conectados, podemos hacer lo siguiente (si nuestra IP es, por ejemplo 192.168.1.10:

$ nmap 192.168.1.*

Al cabo de unos segundos nos dirá qué máquinas hay conectadas (esto es muy útil si conectamos a través de la red de nuestra facultad y queremos saber lo archivos y servicios que tienen compartidos ver quién está conectado.

Instalar pmount

Yo soy un usuario más de consola, y a veces tengo varios equipos en red local y en diferentes habitaciones. Cuando no tienes entorno gráfico no hay icono para hacer click con el derecho y montarlo. Así que tenemos dos posibilidades, en el caso de querer montar un dispositivo usb flash que está en /dev/sdc1:

$ sudo mkdir /media/pendrive

$ mount /dev/sdc1 /media/pendrive

O utilizar pmount, es más se puede utilizar como un usuario normal (siempre que esté en el grupo plugdev):

$ pmount /dev/sdc1

Automáticamente creará el punto de montaje, que se borrará cuando desmontemos con:

$ pumount /dev/sdc1

Por lo tanto, para instalar este pequeño pero útil programa:

$ sudo apt-get install pmount

$ sudo gpasswd -a USUARIO plugdev

La última línea corresponde a la inclusión del usuario USUARIO en el grupo plugdev para poder montar los dispositivos.

Generador de contraseñas en consola

Una gran utilidad que uso a menudo es un generador de contraseñas y es que, para tener seguridad, es conveniente tener una contraseña para cada servicio/web/cosa que tengamos en el sistema, e incluso si se está creando una base de datos, con un usuario que tenga acceso a ella (sobre todo si no está en nuestro ordenador), es conveniente darle una contraseña “aleatoria”, o al menos difícil de sacar. Para ello tenemos pwgen:

$ sudo apt-get install pwgen

$ pwgen

So9eejei Eej9youf Iex0ga3y rooV0aRi loXi8ooD Eilah4ru eeD7iego ieX6eth9
ohz9Que9 eiJohz5i ku9doo7E Ooghie6U zee9TeiB phei0eeG ith3Aex4 coiYa0ca
mah3aPae YahxaiM9 quiqu9Oi Voh9olub xanoo1Ae ohn8Ahng aiyoh6eG Coo3quok
eiXou6Zi Eis2poo1 bu1iBahf Aey0eeng aethee3K Thoh2ood Aepai6ph iRah2awo
eePei8si tahf5Pe0 Aegh0phu AeR0eech quohce3A siSh8Hit eeQuu4Ei ahGhal5f
Kahgh9ah aJoh7ex6 teeF4Eil Eehue3ee ooca8EiT huzaev8P eiK2quoh muuzae6O
aj6Mu3Ae UPheew2o deiHee8N abeesh4M thei8ohZ Ei3Aingo Phie7eep av0koo5U
koh2Jahb caiv1Cho Oa6fohvu OochaeW9 TeeN2Lee ahlaeH8o sad9Aegh Taiz6gae
looF2mie jahjoaS4 laineiN9 ush1oa0I ipob2Ohs Ha1ohjai OoL5wa7u Eipohva7
aimoox9K Keey4ieW labah4Ci oowaiJ2i pahxaiB1 eiWai3ei bethaF0r fu8eiV7u
Wo3Te1iu roeZ3eil Oorohs8k cah7ESo9 Yohg1aix ohz9Choo Ogooc1ph Eh7eeghi
eeh8Aer2 eph4Ehoh Eis0Ieva Yeochoh9 Aizahn4i eepahH6o wahBae5o eeZiang6
aep0ahPh haewoh7B aidoh9Ea ia7tai8L Tohx5gae OSeexee2 ooN6liWo Pai8Ohs0
ZeiX6iay zie3Iexe Oog2caek Ohoo9eit yoo4eiSe bai0Ooth ieHa5Aig Xie8eeph
Uasoov2a Iesh6EiR ne1Aothi oo7oob7O Lohy5wai zea1Xie3 ooH3be9i fe7Ohnoo
ooSosae2 phei3AeB aerie9Ai ku9ohBoh peegieX5 Eiph0ool choQuoo3 Reew9Ohp
Kohm3aXi Kui9ohCh reifieM0 sha3Yaos emohFo2i ca5zaeP5 Mu4vohgh naiV8Chi
ue7Pooso eePahth6 waLuu7oh Yee8teir eth9Tai8 cho7Poog ooSee6yu Uquai6aa
uqu8Li2u eegooL0i ieth9Aem Miex4Nah ii5Eephi iChae5do fahX9foh eMaexu8i
koh2Ca7J Theem9co eiH4zev4 chofeW9f doh5eK8f ori7ohV5 zo4zohNg saeKah9N

Nada más ejecutarlo nos dará muchas contraseñas para elegir. E incluso podemos personalizar la salida con algunos modificadores (-s para incrementar la seguridad; -y para incluir símbolos; y algunos más)

Links, un navegador web en modo texto

Y el usuario de a pie se preguntará: “¿para qué quiero yo un navegador web en modo texto?”, y es cierto, muchos de nosotros arrancamos el navegador y vemos las imágenes y ejecutamos scripts y “disfrutamos” de la experiencia web; aunque en ocasiones nos puede sacar de algún apuro o por ejemplo, hace muy fácil la creación de scripts que interactúen con un componente web. Por ejemplo:

$ links -dump http://checkip.dyndns.org

Current IP Address: 94.56.107.7

Con lo que nos conectamos a la web http://checkip.dyndns.org para saber nuestra dirección IP (con la que conectamos a Internet). O por ejemplo, si queremos ver la fecha y hora actual descargadas de un servidor de Internet:

$ links -dump  http://www.timeanddate.com/worldclock/city.html?n=141  | grep Current | sed ‘2!d’

Para instalar este programa:

$ sudo apt-get install links

Limitar el ancho de banda de nuestros servicios

Imagina que estamos subiendo un archivo a un FTP de un amigo, descargando nuestra distribución de Linux preferida, enviando imágenes de nuestra webcam a Internet, además, mientras estás escuchando la radio o viendo la tele por Internet, nuestros recursos son limitados y si tienes una conexión de 10Mbps  de bajada y 500Kbps de subida, aparte de dar las gracias, tienes que repartirla sabiamente. Tal vez el FTP de nuestro amigo se va a coger todo el ancho de banda de subida que tengamos, porque puede, y luego las imágenes de la webcam, a lo mejor no se suben al mismo ritmo; por otra parte, la distribución de Linux irá muy rápido, pero a lo mejor se resiente el canal de TV online que estamos viendo. Para eso tenemos trickle, una herramienta capaz de limitar el ancho de banda de red que consume una aplicación. Podemos limitar el ancho de banda de la descarga de nuestra distribución Linux:

$ trickle -d 100 wget http://mirror.linuxmint-fr.net/linuxmint.com/stable/debian/linuxmint-xfce-201104-dvd-32bit.iso

Para limitar la descarga a 100Kb/s

Para instalar:

$ sudo apt-get install trickle

Ver tareas en ejecución en colores desde consola

LMDE GnomeA veces, para ver los procesos en ejecución, top, no es suficiente. No nos deja ver todos los procesos, y a veces la información es algo escasa, para eso tenemos htop, podemos ver una captura de la ejecución de htop en una máquina remota con LMDE Gnome.

$ sudo apt-get install htop

Para terminar

Hay muchas más aplicaciones muy útiles para consola, estas son algunas, una mínima muestra de toda la potencia que encierra nuestra máquina Linux y que no vienen instaladas de serie en Linux Mint Debian Edition; aunque algunas de ellas sí que vienen en otras distribuciones.

Descargar automáticamente todos los programas de Redes

Domingo, 9 de Mayo de 2010 Gaspar Fernández Sin comentarios

neuron
Apenas veo la televisión, pero hay ciertos programas que son interesantes y merecen la pena como Redes. Y tampoco me gusta verlos desde la web ya que Flash es muy lento, y me gusta tener lo que veo echar hacia atrás y hacia alante (como hace mplayer) y verlo cómodamente.

Para ello, lo más cómodo es descargarlos, pero cómo descargarlos si tengo que bajarlos uno a uno (y son muchos), y tengo que mirar dónde está el archivo de vídeo (lo primero que nos podemos bajar a mano es una archivo de metadatos que nos dirá dónde está el vídeo), es una tarea muy lenta para hacerla a mano. ¿ Por qué no automatizar el proceso ?

Vemos que desde la web de Redes para la Ciencia nos podemos descargar los programas desde 2008 (lástima que los anteriores no estén disponibles en vídeo desde esta web), y éstos están alojados en Smartplanet (blip.tv). Con estos datos, he confeccionado este script (aún en beta, no es muy estable, ni está optimizado, pero nos hace el apaño).

Si observamos los pasos intermedios de este script, y vemos el fichero de metadatos por dentro, veremos cómo podemos ver más información, descargar el archivo en mov o mp4 (a gusto del consumidor), también encontramos un resumen del programa; os invito a hacer pruebas y comentarlas en este post.

Una posible mejora a corto plazo, sería poner en orden la variable get_years y que, si descubre que varios capítulos han sido descargados, no intente bajar más (a la hora de descargar el último capítulo también con el script), o incluso almacenar en un archivo el número del último capítulo descargado, para así buscar el siguiente en la siguiente ejecución… todo se andará; por ahora, os dejo el script así, que con un poco de cuidado funciona bien.

Y otra cosa más, con un poco de suerte, para el año que viene, sólo tendremos que añadir a la variable get_years el link del blog con los enlaces a los capítulos del año 2011.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#/bin/bash

get_years="http://www.redesparalaciencia.com/programas-2009 http://www.redesparalaciencia.com/programas-de-2008 http://www.redesparalaciencia.com/programas-2010"

for i in $get_years
do
    echo Descargando $i ...
    wget -q -O /tmp/listado_year $i
    echo Descargado
    # Hay algunas URLS que salen con ../
    caps_year=`cat /tmp/listado_year | grep 'href' | grep '>Redes [0-9]' | sed -e 's/\.\.\//http:\/\/www\.redesparalaciencia\.com\//g' -n -e 's/\(.*\)href=\"\([^\"]*\)\"\(.*\)/\2/p'`
#   caps_year=`cat /tmp/listado_year | grep 'href' | grep '>Redes [0-9]' | grep -o '"http://[a-zA-Z0-9.\/\-]*"' | cut -d\" -f2`
    for j in $caps_year
    do
        echo Descargando metadatos del episodio...
        wget -q -O /tmp/episodio $j
        episodio=`grep -o 'http://blip.tv/rss/flash/[0-9]*' /tmp/episodio`
        wget -O /tmp/metadatos $episodio
        echo Metadatos descargados
        video=`awk -F "\"" '/media\:content/ {print $2}' /tmp/metadatos | grep flv`
        titulo=`sed -n 's/<media:title>\(.*\)<\/media:title>/\1/p' /tmp/metadatos`
        if [ -r "$titulo.avi" ] || [ -r "$titulo.flv" ]
            then
            echo "Episodio $titulo ya existe. Descartando."
        else
            echo "Descargando episodio... $titulo"
# Podemos quitar el -q para ver cómo va la descarga.
            wget -q -O "$titulo.flv" $video
            echo "Recomprimiendo episodio..."
            ffmpeg -i "$titulo.flv" -vcodec msmpeg4v2 -b 1200k -acodec mp2 -ab 128k "$titulo.avi"
        fi
    done
done

Requerimientos: wget, sed, awk, ffmpeg (si queréis recomprimir los programas) y algunos gigas libres de disco duro (unos 20 o así si queremos recomprimir).

Notas:

  • La compresión no está muy optimizada, tal vez comprimamos con más bitrate del que debemos, pero bueno. Si no queremos comprimir, basta con comentar la línea de ffmpeg, aunque si queremos verlo en algún reproductor debemos dejarla. El codec de audio (acodec), es mp2, ya que el mp3 no me funcionaba bien, libmp3lame debe estar instalado y ffmpeg compilado con soporte para él, aún así, probad antes).
  • Soy consciente de que hay demasiado sed, awk y scripts de sobra, pero fue un script rápido y tampoco importa mucho el tiempo que pasemos parseando los metadatos.
  • No hay control de errores, si falla algo y el script se vuelve loco… yo no garantizo nada :)
  • Por ahora, si un archivo no se baja del todo, debemos eliminarlo para que se baje de nuevo por completo.

Espero que disfrutéis del programa.

Foto: MikaNet (Flickr)

Crea tu avatar en 3D

Viernes, 29 de Enero de 2010 Gaspar Fernández 2 comentarios

Nacen cientos de servicios web al mes, pero hoy, vía rm -rf /, he descubierto uno que me ha sorprendido!

En principio, parece la típica página para crear avatares, pero con un detalle añadido, son en 3D, queda bien, queda gracioso, pero es que además están animados (son animaciones de unos 5 segundos, no es mucho, y a lo mejor cuando las veas 5 veces ya cansan, pero mira)…

Pero al entrar en la página, hay una opción que me agrada: Your own photo; y sí, te permite subir tu foto y crearte un carácter en 3D, como tú, no es instantáneo, pero en unos 10 minutos (siguiendo unas instrucciones) tienes un muñecajo en 3D personalizado… y todo gratis (no sé qué tratamiento harán con la imagen, pero para poner una foto en Facebook está muy bien).

La web es: www.avatara.com

Yo tuve que subir la foto 3 veces porque me falló, supongo que será un poco la saturación del servidor, ya que crear los avatares 3D no tiene que ser una tarea muy ligera, y si además hay muchas peticiones de lo mismo, llegará un momento que no se pueden atender todas.

Os dejo aquí el mío:

yo_wink

Internet… dependencia

Lunes, 11 de Enero de 2010 Gaspar Fernández Sin comentarios

adicto a internetMás allá de la adicción a Internet, que se viene estudiando desde hace bien poco vengo observando un fenómeno inusual desde hace ya un par de años (al menos, tan común y con tal repercusión y consecuencias). Dicho fenómeno que, yo creo que debe tener una explicación más allá de la pereza humana, es el hecho de que muchas personas:

  • cuando quieren escuchar una canción que tienen en su colección, la buscan en youtube.
  • cuando quieren consultar un manual cuya versión electrónica se encuentra en el disco duro, lo buscan en Internet.
  • cuando tienen que llamar a un compañero de piso (lo sé hace unos años yo lo hacía), lo hacen por mensajería instantánea.
  • cuando quieren saber cómo se escribe una palabra, hacen una encuesta a Google (se escribe de una forma, y se mira el número de resultados, y de otra, y el que más resultados tenga, gana. Ejemplo: obvio, ovbio).
  • cuando al consultar un documento previamente impreso y guardado en el disco duro, lo volvemos a buscar en Internet.
  • antes de hacer una determinada tarea, han de informar por Facebook/MySpace/Twitter…
  • y muchos más casos que seguro que conocéis.

Lo realmente chocante es que en muchas ocasiones, se tarda mucho más de esta forma que por ejemplo, consultando el manual offline, escribiendo la palabra en el corrector ortográfico, o dándole una voz al compañero de piso… pero la adicción tecnológica es mucho más fuerte. Pero este efecto, ¿lo produce la pereza? ¿lo produce la falta de ganas de pensar en una referencia que nos de la información? ¿la idea de saber que ordenadores en la otra parte del mundo trabajan para nosotros?

Y lo realmente indignante (al menos para mi), es que muchas personas, cuando la compañía de Internet les desconecta… dejan de existir. Es impresionante ver cómo las personas se quedan colgadas, sin vida, reintentando conectar una y otra vez y contando los segundos que quedan para recuperar la conexión… incluso cuando offline también se dispone de mucha información.  Es más, aunque no se esté utilizando la red, el simple hecho de no poder mirar las novedades en la red de Facebook, es capaz de dejar desconectado del mundo a una persona como si de The Matrix se tratase.

Visita otras webs de la red