domingo, 29 de julio de 2012

Formatear Pendrives fácilmente


No hace mucho, el usuario Pablo uy hacía una consulta sobre la desaparecida opción de formatear dispositivos USB  o tarjetas en Debian de forma rápida e intuitiva. Tras consultar un poco veo que realmente esta opción (como ha sucedido con otras tantas tras la irrupción de Gnome 3 ) a desaparecido.

Tras esto, pensé que no sería muy complicado la creación de un pequeño Script que nos pudiera servir como sustituto a esta desaparecida herramienta.
Así que hoy vengo a presentar este pequeño Script que ya he "terminado" e intenta llenar el hueco dejado por la anteriormente herramienta referida.

El funcionamiento de éste es muy simple. Detecta el último dispositivo conectado para poder formatearlo.  Por lo tanto es muy importante conectar el USB o tarjeta momentos antes de ejecutar el script, o que sea el último dispositivo que se conecto.


De cualquier modo he añadido dos rutinas de control para que no asuma dispositivos distintos a un  USB o tarjeta, así como también le he puesto un tope al tamaño de estos. Si es mayor de 32GB no se podrá formatear. Las dos rutinas son para evitar que por equivocación formateemos un dispositivo mayor como suelen ser los discos físicos que tengamos en nuestro sistema, y de este modo evitar que se muestren para ser formateados.

Con la primera rutina puede parecer que ya sería suficiente ya que realiza un chequeo a todas las conexiones frontales tanto de tarjetas como USB, mirando de ver si el dispositivo detectado está en alguna de ellas. Si es así, entonces lo mostrará para que la podamos formatear. Pero me he dado cuenta de que las conexiones traseras que tengo no entran en este rango.


Es aquí donde entra la otra rutina de control de capacidad ya que asumo que USB superiores 32GB no son muy habituales aún. De este modo cualquier dispositivo encontrado mayor de esta capacidad no será admitido.
En este punto podría haber puesto un dialogo de selección en el cual el usuario decidiera si continuar o no en el caso de encontrar un dispositivo mayor a 32GB. Pero por motivos de seguridad prefiero no ponerlo, ya que aún los hay (usuarios venidos del Lado Oscuro) que aún tiene la manía de ir pulsando de forma compulsiva el botón Aceptar.


El que quiera puede añadir este dialogo, así como modificar el valor máximo de 32GB por el que crea más conveniente, pero no aconsejo hacerlo. Claro está, salvo que tenga un USB de mayor capacidad de 32GB. La variable a modificar es la llamada mg que es fácilmente distinguible.

Bueno ahora vamos al lo que interesa....
Para que nos funcione el formato  NTFS es necesario tener los siguientes paquetes instalados:
fuse ntfs-3g
Para que nos funcione la interfaz del Script se necesita:
zenity
o en el caso de MATE podemos instalar:
mate-dialogs-gnome
Que para el casos es lo mismo.

Importante:
El Script podemos guardarlo donde queramos y luego debes crear un lanzador anteponiendo a su ruta la orden : gksu como se muestra en la imagen:



Bueno el funcionamiento es el siguiente:
Introducimos en Pendrive que queramos. Una cosa muy importante para que este sea detectado es que tiene que estar montado.
Luego clicamos en en lanzador creado para este menester para ejecutar el Script. Introducimos nuestra clave y se mostrará el pendrive listo para formatear:


Seleccionamos el tipo de formato deseado:


Añadimos si se quiere una etiqueta identificativa para el pendrive:


A partir de aquí comenzará el formato del dispositivo...


Una vez finalizado éste, recibiremos un aviso al respecto:


Si luego volvemos a montar el pendrive veremos que su formato a cambiado por el que seleccionamos:


Como con todo hay que tener cuidado ¿OK?.  Yo para realizar este Script he formateado dos de mis pendrives cerca de ¡100 veces! cada uno probados de manera indistinta en un Portátil Toshiba y en un PC de escritorio Acer . Lo resultados han sido muy buenos y puedo dar fe de que no he tenido problema alguno. Pero esto no quita que puedan haberlos. Así que en un principio tomad las precauciones lógicas.

Si queres probar esta utilidad puedes decargarlo aquÍ: 
↓↓↓↓↓↓↓↓↓↓↓↓
Ver código fuente: Código

sábado, 28 de julio de 2012

Montando nuestro propio servidor (IV)


-->
De como montar un servidor de archivos y otras cosillas....

Aprovecho mis últimos días de vacaciones. El mes que viene estaré bastante liado, y no sé cuándo podré terminar la serie....

-->
Continuamos la serie de nuestro querido server, realizando el montaje del software necesario para tener una servidor de archivos en red local, que sea capaz de compartir las carpetas que deseemos para cualquier cliente de red. El software necesario para realizarlo es, como muchos de vosotros sabéis, SAMBA.

-->
Para los que no lo sabéis, SAMBA es la implementación libre de los protocolos de compartición de archivos de.... Microsoft Windows.

-->
¡Toma ya! Ahora vas y se lo cuentas a los que queremos que dejen el lado oscuro..... Pues si, señores, es lo que hay. SAMBA se creó a base de ingeniería inversa, es decir, utilizando sniffers en una red local para entender como funcionaba el protocolo de compartición en red SMB de Windows (¿alguien nota la similitud de los nombres?....¿SMB – SAMBA?).

-->
SAMBA es la implementación libre de una serie de servicios y protocolos, entre ellos NetBIOS over TCPIP (NetBT), SMB (ó CIFS), DCE-RPC (llamada a procedimiento remoto), WINS (sistema de nombres para NetBIOS) y, lo que considero más importante e increíble de conseguir, todos los protocolos de dominio de NT, entre ellos Logon para entrada a dominio, SAM (cuentas de seguridad de Windows), y hasta el logon de entrada de Active Directory de Microsoft. Impresionante. Ahora sí podemos vacilarles a los del lado oscuro.....

SAMBA configura directorios como recursos para compartir en la red. Para los usuarios de Windows, estos recursos son carpetas normales de red. Los usuarios de Linux pueden montar estas unidades como si fueran dispositivos locales. Cada directorio puede tener diferentes permisos de acceso, pero eso si, los permisos de SAMBA no se supeditan a los permisos de los archivos en nuestro server. Osea, que aunque creemos un recurso compartido a partír de un directorio en SAMBA, si ese directorio no tiene permisos de lectura nada más que para root, nadie más podrá leerlo.

-->
Y lo mejor de todo, la configuración de todo esto se logra editando un solo archivo, ubicado en /etc/samba/smb.conf.
Y lo más increíble para mí. Utilizando SAMBA, podemos conseguir que nuestro Debian Server..... ¡sea PDC (Primary Domain Controler) de una red Windows!

Y aquí sí que me planto. Me costó más montar mi primer dominio en MS W2K3 que aprenderme el Ora pro nobis peccatoribus cuando era monaguillo, así que me niego en rotundo a volver a empezar, ahora con SAMBA. Entiendo que ninguno de nosotros quiere/necesita tener un dominio con PDC, Active Directory y el sursuncorda montado en su casa para tres o cuatro ordenadores que habrá como mucho. Pero si no es así, invito amablemente a alguno de los lectores de este fantástico blog a que se meta en faena.... A mí no me pilláis en otra....

-->
En fín, volviendo a lo nuestro.... y .... ¿cuanta paquetería va a hacer falta para nuestro servidor de archivos? Pues tanta como cabe en la siguiente línea:

-->
apt-get install samba samba-common smbclient samba-doc smbfs


-->

¿Recordáis en el post anterior la creación de los usuarios ftp y proftpd cuando montamos nuestro ftp?. Recuerdo que os dije para qué servirían y se quedó la explicación en el limbo. Realmente sirven para poco, ya que no hemos montado un ftp anónimo, así que no voy a volver sobre lo
--> mismo, pero también montó el grupo nogroup, y ese nos va a servir ahora con nuestro servidor de archivos. Añadiremos un usuario a nuestro server: nouser. Lo añadiremos sin directorio home, ya que no será utilizado por ningún usuario “real”:

-->
useradd‭ ‬-g nogroup‭ ‬-d‭ ‬/home/nouser nouser


-->
Vamos a ir configurando ahora nuestro SAMBA. Editamos el archivo de configuración:

-->
nano /etc/samba/smb.conf

-->
En la sección “Global Settings” configuramos el siguiente valor:

workgroup = “LMDE-COSILLAS”

(Frannoe, que no se diga que no te aprecio, ¿eh?)

-->
Podéis utilizar el que queráis, pero todas las máquinas deberán tener el mismo grupo de trabajo, las que sean Linux tendrán que tener en su SAMBA el mismo grupo, y las que sean Windows tendrán que estar definido en Mi PC/Propiedades. Tener en cuenta que el grupo de trabajo en Windows tiene que tener un nombre NetBIOS válido.

-->
[mode pregunta tímida ON]
Y.... ¿eso qué es?
[mode pregunta tímida OFF]

[mode resignación ON]
Vaaaaale,,, Lo explico para el que no lo sepa.....
Un nombre NetBIOS consta de 16 caracteres. Los 15 primeros corresponden al nombre de la computadora y el último, el byte decimosexto, es un número hexadecimal de 8 bits que corresponde al tipo específico del nombre (ni caso a esto último, son pajillas mentales de los desarrolladores.... no es más que para fastidiar. Vosotros centraros en los 15 primeros.). Los nombres de computadora pueden constar de un máximo de 15 caracteres y deben respetar las siguientes reglas:
  • Se permite el uso de los siguientes caracteres: A – Z, a – z, 0-9 y el guión (-).
  • Los caracteres primero y último deben ser alfanuméricos (A – Z, a – z o 0-9).
Así que a nadie se le ocurra poner como grupo de trabajo “Linux es mejor” porque ese nombre no cumple los estándares NetBIOS.
[mode resignación OFF]

-->
Seguimos configurando. Buscamos la sección ### Networking ###. Tenemos que establecer la tarjeta de red y la dirección de red. En nuestro caso, y hasta que montemos el gateway en nuestro server (lo prometo, el próximo post va dedicado a ello), descomentamos la línea y la dejamos así:



-->
Buscamos la sección ### Authentication ###.Aquí podemos establecer el modo de acceso al servidor de archivos. La línea security es la clave de todo. Si la dejamos como user, podremos loguearnos en el servidor de archivos con nuestras cuentas de linux, pero esas cuentas tendrían que existir en el servidor. Para evitar esto, descomentamos la línea, y le cambiamos el valor: security = share.


-->
Al final de esta sección, vamos a añadir las siguientes líneas:

guest account = nouser (éste es el usuario que creamos antes)
guest ok = yes
guest only = no
read only = no


-->
En la sección Share Definitions vienen predefinidos una serie de recursos que podemos descomentar y utilizar. En concreto, el CDROM y la impresora, son muy útiles. Y ahora vamos a crear nuestro propio recurso de red en el server. Tecleamos al final del archivo:

[Frannoe] (en homenaje a nuestro maestro, of course... Cada uno que le ponga el que quiera)

path‭=‬/shared
browseable = ‬yes
public‭ = ‬yes
writeable‭= ‬yes
read only = ‬no (aunque parezca redundante con el anterior, es conveniente ponerlo)
guest ok‭ = ‬yes
guest only‭ = ‬no


-->
Guardamos cambios y salimos. Creamos el directorio /shared y aplicamos permisos:

mkdir /shared
chmod 777 /shared

y reiniciamos samba: /etc/init.d/samba restart 


-->
No da ningun error, ¿no?. Pues voy a coger el ordenata de mi mujer, con su WXp y a ver qué pasa:

Lo primero, cambiar el grupo de trabajo de Windows:


Y ahora, podemos explorar la red:





o bien mapear directamente la unidad, y acceder a ella desde Mi Pc:



-->
Et voilà.... Vamos ahora desde un cliente Linux. Lo primero, instalar SAMBA en nuestro cliente:

sudo aptitude install samba4-clients


-->
…. y sus dependencias, y es tan sencillo como acceder a nautilus, y explorar la red....




Et voilà de nuevo..... Como véis, Nautilus monta directamente la unidad.
-->
[Frannoe dixit]
Pero.... si eso no es lo que yo quería..... Que yo quiero mi propio recurso de red, y para mi hija Claudia otrooooooo....

Vaaaale. Como te gusta que te lo den todo hecho..... Pues entonces, creamos nuestros usuarios, al igual que el nouser descrito, sin /home propio. Ahora nos pedirá la contraseña para el usuario:

adduser‭ ‬-shell /bin/false -no-create-home frannoe
adduser‭ ‬-shell /bin/false -no-create-home claudia


Y ahora creamos los usuarios de SAMBA. Se le pone la misma contraseña que tiene en Linux.

smbpasswd -a frannoe
smbpasswd -a claudia

La estructura de carpetas a crear y sus permisos seria la siguiente:

cd /shared
mkdir frannoe
mkdir claudia
chmod 777 frannoe/
chmod 777 claudia/
chown frannoe:frannoe frannoe/
chown claudia:claudia claudia/



Y el archivo de configuración quedaria de la siguiente manera:

En la sección #### Authentication ####

security = user

Al final del archivo añadiríamos:

[frannoe]

path = /shared/frannoe
browseable = yes
writeable = yes
readonly = no
valid users = frannoe

[claudia]
path = /shared/claudia
browseable = yes
writeable = yes
readonly = no
valid users = claudia

y reiniciamos samba: /etc/init.d/samba restart

Y eso es todo. Nos conectamos igual que antes... Y con esto termino por hoy. Para el próximo capítulo, convertiremos nuestro server en el Gateway de la red local. Ir buscando una segunda tarjeta de red que montarle a vuestro server.... ¡Animo, que ya falta poco!

jueves, 19 de julio de 2012

Aironux ... ¡A Bailar!


¿Buscas música...?  ¿Toda clase de música...? ¿Cualquier música...? ¿Reproducirla...? ¿Descargarla...? ¿Sin complicaciones...? ¿de forma rápida y segura...? ¿Sí...? Pues estás de suerte, ya que Aironux es lo que buscas.
Aironux es un buscador de archivos de audio en formato mp3 fuera de lo común y exclusivo de GNU/ Linux. Y seguirá siendo exclusivo de Linux por mucho, según su desarrollador.
Liviano como una pluma, potente y rápido buscador con un impacto en el sistema inapreciable.   
Aaron Diaz R es el programador y diseñador de este estupendo programa, hecho por completo en Python.
Este programador ha creado un algoritmo que realiza una búsqueda masiva en la red, (no utiliza sistemas p2p, ni se conecta a otros equipos) encuentra, reproduce y si se quiere, descarga de forma directa lo que le indiquemos o seleccionemos de los resultados de búsqueda.

Lo primero que tenemos que hacer es descargarnos el programa desde aquí:
Descargar Aironux 

Tienes que saber que necesitas instalar la siguiente paquetería (alguna ya la tendrás) para que te funcione de forma correcta:
  • Python 2.7.x
  • wxpython 2.8 o superior
  • pygame 1.9
  • gstreamer
  • python-notify
  • python-gst
  • Codecs para MP3
Para esto puedes instalar lo siguientes paquetes desde un Terminal:
sudo apt-get install
libwxbase2.8-0 libwxgtk2.8-0 python-wxgtk2.8 python-wxtools  python-wxversion python-notify python-pygame python-gst0.10 


Luego desempaquetamos el archivo descargado y nos dejará una carpeta llamada  aironux.
Esta carpeta la copiamos por ejemplo en nuestra carpeta de usuario.
Abrimos la carpeta y veremos otra carpeta llamada data. Entramos dentro de ésta ,en su interior (entre otros) veremos un archivo de imagen en mapa de bits llamado aironuxicon.ico. Lo seleccionamos copiamos y lo pegamos en nuestra carpeta de usuario. Si no hacemos esto, nos dará un error (nada importante pero sí molesto) a la hora de arrancar el programa.


Ahora llega el momento de crear un practico lanzador para este programa. Clicamos con el botón derecho en cualquier zona vacía del escritorio y seleccionamos Crear Lanzador...:
Tipo: Aplicación
Nombre: Aironux
Comando: python /home/TuUsuario/aironux/data/ADR.py
Ícono: /home/TuUsuario/aironux/data/imag/aironuxicon.png

Gnome


 Xfce

Listo, ya podemos clicar en él para arrancarlo.
Como se puede apreciar por las imágenes el programa es sumamente fácil de utilizar.
Ventan principal de presentación y sonsejos úitiles:


Ventana de búsqueda y reproducción de archivos de audio:


Ventana de gestión de archivos en descarga y descargados:


Ventana de Configuración:


Algo que puede llevarnos a confusión es la forma que tiene este programa para reproducir los archivos seleccionado.
Lo más lógico es que al seleccionar un archivo de los hallados, y querer reproducirlo es que cliquemos en el botón Play de la botonera de abajo donde se ven los botones de Play, Stop, Retroceso-rápido y Avance-rápido.
Pues no esto no es así. Para reproducir un archivo se tiene que clicar en el botón etiquetado como Reproducir. Luego, ya sí podemos utilizar la botonera de abajo para gestionar el archivo en reproducción, como se muestra en la imagen.


Para cada nueva canción que queramos escucha tendremos que volver a clicar en el botón Reproducir. De lo contrario siempre escucharemos la misma aún teniendo seleccionada otra.

Bueno pues nada más queda decir que según la legislación vigente de cada País,  queda dentro de la responsabilidad de cada uno el uso de este tipo Software.

Fuente: Marcelo (compañero de trabajo)
Desarrollador:  Aaron Diaz R
Nueva Web de AironuxIronSistem.com

domingo, 15 de julio de 2012

Montando nuestro propio servidor (III)


-->
Buenas a todos.

Ya hemos conseguido conectarnos de manera remota a nuestro server. Consecuencia: el monitor se lo he devuelto a mi hijo, y mi server ya no tiene ni teclado, ni monitor. Pero antes de seguir instalando servicios, y quitar teclado y monitor, vamos a asegurar un poquito más nuestro acceso. Primero, editamos el archivo de configuración de ssh, y denegamos acceso remoto como root. Es un poco peligroso ir conectándonos como root por ahí a nuestro servidor. Una vez conectados con nuestro usuario “cosillas”, si necesitamos acceso como root, basta con teclear el comando su y poner la contraseña de root.
-->
Además, vamos a cambiar el puerto de acceso por ssh. Hay muchos hackers en la red que se dedican a buscar accesos a servidores en los puertos habituales (0 a 1023), así que vamos a ponérselo difícil. En el mismo archivo, cambiamos el valor de puerto a 12678, por ejemplo. O 27087, o 33288... Mientras no sea un puerto dedicado, tenéis hasta el 65536 para utilizar, es decir, que podéis elegir cualquier puerto desde el 1025 hasta el 65536. Voy a poner el 12321, por ejemplo. Editamos el archivo: nano /etc/ssh/sshd_config



Ahora ya tenemos más seguro nuestro acceso y nos podemos conectar, añadiendo el puerto:
ssh cosillas@cosillas.ftp21.net -p 12321
-->
Hoy vamos a aprender algo de los DNS. Para los que no lo saben, DNS es el sistema que se utiliza para localizar en una red un nombre de equipo determinado. Así, nuestro navegador “sabe” que www.linuxmint.com tiene por dirección IP 109.203.97.80. Y lo sabe gracias a que se lo pregunta a una serie de servidores que hay por ahí fuera, no es porque sea muy listo. En esos servidores se almacena la información que relaciona el nombre de la pagina electrónica con su dirección IP. Y si un servidor no lo sabe, pues se lo pregunta a otro, y así sucesivamente hasta llegar al error de página no encontrada.

Estas búsquedas se van almacenando en dichos servidores en cachés, habitualmente dinámicas. Así, si queremos navegar a la página www.debian.org, y la información de dicha página no se encuentra en los DNS de nuestro proveedor, guardará la información de qué salto ha dado nuestro DNS para encontrar otro DNS que tenga la información, consiguiendo así que el próximo requerimiento de acceso a dicha página sea más rápida. Para evitar sobrecargar dichas cachés (según datos de 2008, Google tenía indexadas 1 trillón de páginas), si en un periodo de tiempo determinado no hay peticiones a esa página, esa información se borra .

Bueno, como vemos, nuestro proveedor nos ofrece unos DNS para poder navegar por la web. Pero, ¿podríamos tener nosotros nuestro propio servidor DNS? Y en caso afirmativo, ¿para qué serviría? Pues la respuesta a la primera pregunta es sí, y a la segunda es para mejorar la velocidad de navegación, aunque no os creáis que es la panacea, ¿eh? El que tenga 10 MB contratados, que no crea que va a navegar a 30 MB.... Eso sí, la navegación a las páginas que más usemos será más rápida, porque crearemos nuestra propia caché.

¿Y cómo funciona? Pues, evidentemente, preguntando a otros servidores DNS.... obvio, ¿no?. Pero, ¿merece la pena?. Yo pienso que para lo que estamos utilizando nuestro servidor, no es necesario tener nuestras propias DNS. Mi experiencia me indica que éstos se crean en sistemas sin acceso a Internet, equipos capados que utilizan únicamente la Intranet de la empresa ó con sistemas proxy para acceso a Internet. Ese no es nuestro caso, pero una pregunta de Eduardo en el post anterior, indicando que quería utilizar su server como gateway, me “obliga” a instalarlo y configurarlo. En un próximo post, instalaremos una segunda tarjeta de red en nuestro server, e implementaremos DNS e IP FORWARDING. Y yo había pensado terminar esto en 4 post..... En fin.....

-->
Y, ¿que sabemos del DHCP? El fin básico de un servidor DHCP es servir direcciones IP a la red local, utilizaremos esta utilidad más adelante para otros servicios. Así que vamos al lío. Primero de todo, desactivar el DHCP de nuestro router. Si, pensad que es una obviedad, pero no seríais los primeros (ni los últimos) que se olvidan de esto. Caso verídico, en carne propia:
Hace unos años, sonaron todas las alarmas en un cliente de mi empresa. Un edificio de tres plantas, con atención al público incluída, unos 200 equipos en total entre CPU's e impresoras de red..... todos, absolutamente todos, sin acceso al servidor después de un corte de luz (nuestro amigo Juanele.... que crack!)

Allá que va Jose... todos haciéndome la ola.... ¡el informático!¡ha llegado el informático!. Entro al servidor, DHCP funcionando, pool definido y correcto, servicio levantado, conexión con la electrónica de red correcta..... Me conecto a la electrónica de red, 5 switch Cisco de 48 bocas estacados, reviso configuraciones, todo correcto..... Bueno, solución del informático, apaga y enciende..... Todo igual.... Me voy a un equipo cualquiera, y veo que la IP no está en el rango de la red corporativa. ¡Meca! ¿Esto qué es?.... ipconfig/release, ipconfig/renew..... y funcionando. Pffff.... me quedan 199..... O encuentro al hijo de …. que ha conectado un router 3Com a la red en su despacho, todavía no sé para qué..... Claro, el router 3Com y los equipos arrancaron antes que el servidor, y como todo va por DHCP, pues cogieron el primer DHCP que encontraron, el del router 3Com.....

nosotros desactivamos el DHCP de nuestro router. Me remito a San Google para ver cómo hacerlo cada uno con el suyo.
--> Ahora en el server:
apt-get install dhcp3-server


Vale, da errores. No les hagáis caso, todavía no está configurado. Ahora editamos el archivo /etc/default/isc-dhcp-server para establecer la tarjeta de red que "dará" las direcciones IP.


-->Editamos el archivo de configuracion que viene predefinido:
nano /etc/dhcp/dhcpd.conf
El escenario es el siguiente: queremos crear una red tipo 10.14.100.x/24. Esto quiere decir que tendremos direcciones ip desde la 10.14.100.1 hasta la 10.14.100.254.
Pero no las queremos todas, sólo vamos a repartir 6 direcciones, en concreto desde la 10.14.100.110 a la 10.14.100.115.
El servidor tiene IP 10.14.100.100
El router tiene IP 10.14.100.1
Las DNS de nuestro proveedor son las de Movistar, por ejemplo: 80.58.61.250 y 80.58.61.254.
Queremos asignar a nuestra impresora de red la IP 10.14.100.10, a la cámara web la IP 10.14.100.20, y al ordenador del niño la IP 10.14.100.50

-->
subnet 10.14.100.0 netmask 255.255.255.0{

range 10.14.100.110 10.14.100.115;

option domain-name-servers 80.58.61.250, 80.58.61.254;

option domain-name "cosillas.ftp21.net";

option routers 10.14.100.1;

default-lease-time 600;

max-lease-time 7200;

}

host impresora_red{
hardware ethernet 01:02:03:04:05:06;

fixed-address 10.14.100.10;

}

host camara_web{
hardware ethernet 06:05:04:03:02:01;

fixed-address 10.14.100.20;

}

host computer_hijo{
hardware ethernet 00:01:02:02:01:00;
fixed-address 10.14.100.50;
}

Finalmente reiniciamos el servicio DHCP: /etc/init.d/isc-dhcp-server restart


-->
Configuramos nuestros clientes (cualquier s.o.) para que la IP sea por DHCP, y veremos como van cogiendo la ip con los valores especificados.

Nuestra impresora de red, que tiene por Mac Address 01:02:03:04:05:06, se configurará con la IP 192.168.0.10, nuestra cámara web obtendrá la IP 192.168.0.20. y el ordenador del niño la 192.168.0.50

Esto último nos será bastante útil en los siguientes post de la serie. Teniendo como puerta de enlace nuestro server, y estableciendo la IP que queremos que tenga una tarjeta de red determinada, podemos después, con IPTABLES, efectuar filtros de acceso. Por ejemplo: Nuestro querido hijo está obsesionado con las redes sociales, y las notas no han sido excesivamente buenas. Podemos optar por denegarle acceso total a la web, especificar a qué puertos tiene acceso, etc....

Continuamos con el siguiente paso. ¡Por fin! Vamos a crear nuestro FTP. Luego lo aseguraremos. Como cliente FTP voy a utilizar la consola y CuteFtp.

-->
Pero, ¿qué es un FTP?. FTP es el acrónimo de File Transport Protocol, Protocolo de Transporte de Ficheros. Así, FTP es un protocolo utilizado para transmitir ficheros entre dos ordenadores remotamente. Este protocolo es muy inseguro, ya que la transmisión de los datos de usuario y contraseña se hace en modo texto, sin cifrar, por lo que cualquier sniffer conectado a nuestra red será capaz de ver los datos de acceso a nuestro servidor FTP. Como comentaba en el primer post de esta serie, todo depende de lo “secretos” que sean los datos que tenemos en nuestro FTP, pero aún así, no es de recibo dejar usar nuestro FTP a cualquiera, ¿no?.
El FTP utiliza por defecto el puerto 21. Al igual que SSH, podemos cambiar el puerto utilizado, eso lo dejo al gusto de cada uno. Durante la instalación y pruebas, trabajaré en red local, y al final, abriremos el puerto 21 (o el que hayáis decido cada uno) en el router, redireccionando a nuestro server.
Para dejar acceso a cualquiera, se utiliza el acceso anónimo, que se configura habitualmente como acceso de sólo lectura; pero no es eso lo que buscamos, ¿verdad?. Lo que nos interesa es un FTP robusto, donde tener nuestros datos a mano, en cualquier parte del mundo, a salvo de miradas indiscretas.
¿Cómo evitaremos esto? Se puede configurar el FTP para que exija autenticación al usuario, y la transmisión de datos encriptados. Para ello, tendremos que activar el soporte para TLS (Transport Layer Security ó Seguridad de la Capa de Transporte), en resumen: encriptación de los datos. Para rizar el rizo, tendremos que utilizar certificados SSL, autofirmados o no, que generaremos nosotros mismos (esto se va complicando cada vez más.....)
Llegados a este punto, pregunto: ¿Alguien pensó de verdad que esta aventura sería fácil?

-->
Al que quiera salir corriendo sólo le diré una cosa: Correr es de cobardes y de malos toreros.

Vamos al lío.
No hay una guía única para construir nuestro FTP. Donde unos dicen -”este punto es imprescindible, y tiene que ser de esta manera”- otros dicen todo lo contrario. Esto no tiene porqué ser un problema, sino una muestra de la versatilidad y capacidad de configuración del mismo. Y en este punto, tengo que deciros que no es porque estemos en Linux, ya que lo mismo ocurre en el lado oscuro (al César lo que es del César). Yo voy a montar el mío, como a mí me gusta. Podéis seguirme, utilizarme de guía, o hacer todo lo contrario, faltaría más.

Conectados al server, tecleamos: apt-get install proftpd


Se ejecuta el configurador:


Seleccionamos la opción independiente (standalone), así, el servicio se ejecuta como un proceso independiente, y se finaliza la instalación:


-->
Como veis, ha creado el directorio /home/ftp, y los usuario ftp y proftpdcon el grupo nogroup. Después veremos para qué sirve. Bueno, pues os lo creáis o no, esto ya está montado. Ya me estoy imaginando vuestras caras. Y todo el rollo de antes, ¿para qué?. Vamos paso a paso. Nos conectamos al FTP con nuestro usuario cosillas:

-->


tenemos el servidor más inseguro del mundo. Con el trabajito que nos dimos asegurando el SSH, ahora resulta que cualquier hijo de vecino puede “escuchar” nuestro password, y después puede robarnos nuestra clave de root.... Si, vale, no tenemos el servidor de la CIA, pero, por lo menos yo, o hago las cosas bien, o no las hago. Vamos a arreglarlo un poco.
Podemos restringir el acceso al directorio home del usuario que se conecta, o bien a un directorio específico.
Editamos el archivo de configuración y vamos cambiando datos:
nano /etc/proftpd/proftpd.conf
UseIPv6 -> cambiamos el valor a off
ServerName -> cambiamos el valor. En mi caso, "cosillas"


Descomentamos la entrada DefaultRoot, y, o bien la dejamos como está (sólo dejaría acceso al home del usuario conectado) o bien añadimos el directorio donde queremos que se conecte. Voy a utilizar la primera opción, dejándolo de la siguiente manera:
DefaultRoot         ~
Así, conseguimos que no se pueda salir del home del usuario.

-->

¿Es suficiente con eso? De momento si. No voy a tratar la instalación de un FTP anónimo, no me interesa. Es muy sencillo para quien quiera hacerlo, sólo tiene que descomentar la parte del archivo de configuración protfpd.conf y cambiar alguno de los valores por defecto para adaptarlo a vuestro server (viene todo comentado, en perfecto inglés).
Yo voy a ir un paso más allá, y voy a asegurar mi FTP. Voy a exigir la autenticación del usuario, y la encriptación de los datos transmitidos. Para ello, tenemos que activar TLS (Transport Layer Security ó Seguridad de la Capa de Transporte). Activando TLS, aseguramos nuestros datos, tanto de usuario/contraseña como de información transmitida. Para ello, utilizaremos certificados. Los certificados son emitidos por entidades certificadoras independientes y de confianza reconocida. Pero eso cuesta dinerito.
Es posible crear un certificado "auto-firmado", que nos servirá para autentificarnos en nuestro server, no lo intentéis utilizar para otra cosa, porque saltarán todas las alarmas de seguridad..... Es broma, no aparecrá el FBI, pero no os servirá para autentificaros en sistemas “oficiales”.

Sin perder el tiempo con teoría, instalamos el software necesario: apt-get openssl ca-certificates



-->
Vamos a crearnos una carpeta de trabajo para los certificados, mkdir certificates y trabajaremos desde ella.
Lo primero que vamos a hacer es generar una clave privada: 
openssl genrsa -des3 -out server.key 2048

 
-->
Como veis, está asegurada por una clave, que tendremos que teclear siempre, o podemos generar una versión de esta clave sin la protección de la contraseña:
openssl rsa -in server.key -out server.key.signed

-->

¡ATENCION! Esta clave sin contraseña, debe ser tratada con esmero, y hacerla sólo accesible al usuario root:
chmod 600 server.key.signed

-->
Bien. El siguiente paso sería generar un pedido de certificación a una entidad certificadora. Nos va a pedir una serie de datos.
openssl req -new -key server.key -out server.csr

-->

Una vez generado el pedido de certificación, se supone que debería ser enviado a una entidad certificadora, que nos devolvería el certificado firmado. Como eso cuesta dinerito, y estamos en crisis, utilizamos el pedido para generar nosotros mismos el certificado firmado. Estamos seguros que somos nosotros mismos, ¿no?.... pues para qué vamos a pagar a alguien para que diga que si, que somos nosotros.... Ea, pues eso:
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

-->

Pues ya tenemos nuestro propio certificado, firmado y válido por diez años, para nuestro servidor. Eso sí, hay que copiarlos a su sitio correspondiente:



Copiamos server.key y server.key.signed  a /etc/ssl/private/
Copiamos server.crt a /etc/ssl/certs/

-->
Bueno, pues si habéis conseguido generar sin error vuestro certificado, vamos a indicarle al FTP que sólo se pueden conectar con certificados, aunque realmente lo que nos interesa es que la información se transmita de manera cifrada, pero para conseguir esto último, es necesario activar la conexión mediante certificados.

Es sencillo: Editamos el archivo /etc/proftpd/tls.conf y descomentamos las lineas siguientes:

TLSEngine
TLSLog
TLSProtocol

 
-->
Descomentamos y escribimos nuestro certificado:

TLSRSACertificateFile                   /etc/ssl/certs/server.crt
TLSRSACertificateKeyFile             /etc/ssl/private/server.key.signed

-->

Descomentamos el siguiente valor, ya que si no lo hacemos, el FTP aceptaría también conexiones sin firmar:

TLSRequired

 

-->
Añadimos la siguiente línea:

TLSOptions                                         NoSessionReuseRequired

Salvamos los cambios.

Ahora editamos el archivo /etc/proftpd/proftpd.conf para incluir el archivo anterior:

Include /etc/proftpd/tls.conf


-->
Reiniciamos proftpd y probamos a conectarnos, ahora con el programa filezilla:




Vemos que exige conexión por SSL. Editamos una nueva conexión:


Marcamos los siguientes valores y damos a conectar:


Aceptamos el certificado emitido por el servidor y.....


Et voilá, ya tenemos nuestro ftp funcionando y asegurado. Es el momento de activar en el router el reenvío de paquetes recibidos por el puerto 21 a la IP de nuestro server para poder conectarnos desde cualquier sitio.
-->

En fín, aquí os dejo el FTP. Espero que os sirva, y volveré en un par de semanas, porque éste que está aquí, se va a la playa en dos días, y no pienso llevarme mi portátil. Necesito desconectar.

Saludos y que lo paséis bien.