Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Scorpyo82

Páginas: [1]
1
Hola a todos.

Pues la verdad quería comentaros y preguntaros si alguien está teniendo problemas con las redes wifi desde que cambiaron al nuevo núcleo de linux 3.XXX.
Es que estoy teniendo problemas con todos los nuevos sistemas que usan ese núcleo, aunque la versión de NetwokManager en todos es la misma, la 0
0.8 ...
Lo que me ocurre es:
Cuando no se puede conectar a la red, por lo que sea.... pues resulta que te pregunta de nuevo la clave, hasta ahí como siempre, pero el problema es que te borra la anterior... antes valía con dar enter y confirmar la antigua... y ahora te obliga a rellenarla entera denuevo....
Algunas veces lo hace... otras no... el caso es que cuando te la borra es una gracia que no veas...

wicd lo veo más lioso y menos integrado... ¿que pensais?

¿Y si me hago un script que maneje las conexiones y mando a la mierda los administradores de toda la vida?

Un saludo.

PD: Si no fuese un portatil.... sudo apt-get puge network-manager; nano /etc/network/interfaces y a tomar por saco

2
Al parecer Nvidia ha estado trabajando con el kernel de linux para integrar sus drivers (aún propietarios).

En un futuro es posible que esos drivers pasen a ser código abierto.

http://www.clubpcbox.com/2012/03/nvidia-al-igual-que-amd-e-intel-se-une-a-la-linux-foundation/

3
Noticias / Ley Lleras
« en: Abril 11, 2012, 05:28:13 pm »
http://www.diariodelsur.com.co/nvodiariodelsur/portal/paginas/vernoticia.php?id_noticia=31232
¿Que os creíais, que íbamos a estar tranquilos por unos minutos tras alguna buena noticia con respecto a internet?
Pues nada, ahí tenéis una mala pa que no os acostumbréis....

Por cierto, cuidado en la calle, se dice que hay peligrosos delincuentes que descargan contenidos desde internet.... son muy peligrosos, te pueden dar un par de clicks y descargarte dentro de un pendrive.... estáis avisados.

Ahh, y lo más asqueroso de todo es que comparten lo que descargan... es repugnante.

4
Noticias / Cambios y fecha de exámenes para LPIC
« en: Abril 09, 2012, 01:44:12 pm »
Estoy registrado en LPIC y tengo número de user necesario para hacer los exámenes, (Aunque no hay dinero ahora mismo para hacer ninguno)

Me han mandado un mensaje con los cambios para este año y os lo hago saber para los que estéis interesados.

Citar
Actualización de los programas de certificación de LPI

Contenido:

1.   Cambios en los Objetivos de LPIC-1 y LPIC-2
1.1 Resumen de cambios en LPIC-1
1.2 Resumen de cambios en LPIC-2
2.  Otras iniciativas del programa de certificación
2.1 Linux Essentials
2.2 Tienda LPI
2.3 Mercado LPI

1.  Cambios en los Objetivos de LPIC-1 y LPIC-2

Como es sabido LPI regularmente revisa y actualiza los objetivos de sus certificaciones para estar al día con la evolucón de la tecnología y la industria. Pequeñas revisiones se llevan a cabo cada 2.5 años mientras que los grandes cambios se realizan cada 5 años.

Las revisiones de nuestros objetivos correspondientes al período 2,5 han sido efectuados y están disponibles en http://wiki.lpi.org.

Los nuevos exámenes que reflejan esos cambios estaban en un principio programados para salir a la luz el 01 de Abril, 2012 (LPIC-1) y 01 de Julio, 2012 (LPIC-2). Sin embargo, para dar un mayor margen de tiempo a nuestros candidatos, centros de formación asociados y editores de material didáctico, para preparase ante estos cambios publicaremos estos nuevos exámenes en las siguientes fechas: 02 de Julio, 2012 (LPIC-1) y 01 de Agosto, 2012 (LPIC-2).

Una comparación que destaca los cambios establecidos entre los objetivos “viejos” y los “revisados” estará disponible como “addenda” en  http://wiki.lpi.org

1.1 Resumen de cambios en LPIC-1

Pequeños cambios en los objetivos de LPIC-1 y que estrán presentes en el nuevo examen (02 de Julio de 2012 en todos los idiomas):

- Cubre explícitamente el nivel básico de la configuración de GRUB 2
- Cubre explícitamente el sistema de ficheros ext4
- Conocimiento de las características básicas de systemd y Upstart
- Conocimiento  de las características básicas de IPv6 y LVM
- Ya no cubre LILO

1.2 Resumen de cambios en LPIC-2


Los cambios en los objetivos del LPIC-2 incluidos en el nuevo examen (01 Agosto,2012):

- Cubre explicitamente el sistema de ficheros ext4
- Cubre explícitamente el  IPv6
- Basic feature knowledge of encrypted file systems
- Conocimiento  de las características básicas de los sistemas de ficheros encriptados
- Conocimiento de las características básicas de los comandos xfsdump/xfsrestore
- Cubre explícitamente el kernel de Linux 3.0


2. Otras iniciativas del programa de certificación

LPI has also recently introduced a number of other program initiatives
and services for Linux Professionals, educators, publishers and those
new to the world of Linux and Open Source Software.
LPI ha introducido recientemente una serie de nuevas inicitaivas en su programa de certificación y nuevos servicios para los Profesionales del Linux, educadores, editores y todos aquellos recién llegados al mundo de Linux y el Software de Fuentes Abiertas

2.1 Linux Essentials

Este nuevo programa de certificación anunciado recientemente (ver
http://www.lpi.org/news/lpi-announces-linux-essentials-program) es un "certificate of achievement" enfocado a los jóvenes y a todos aquellos nuevos en Linux y Software de Fuentes Abiertas. Para más información ver:
http://www.lpi.org/linux-certifications/intro-programs/linux-essentials


2.2 Tienda LPI

LPI ha lanzado recientemente su nueva tienda on-line incorporando varias mejoras. Entre ellas encontramos una reducción en los costes de envío (especialmente para clientes internacionales) y una mayor selección y calidad de productos afines. La “nueva” tienda de LPI está en http://www.lpi.org/store

2.3 Mercado LPI

LPI ha lanzado "LPI Marketplace"- donde se centraliza toda la información sobre todo tipo de material de estudio: libros, guias de estudio, exámenes de práctica y todo tipo de recurso educacional. Esto proveerá a los profesionales de Linux de un arsenal on-line completo de contenidos producidos por suministradores de material de estudio de todo el mundo.
Ver : http://www.lpi.org/lpimarketplace

Finalmente, invitamos a todos a unirse a nuestros canales en las redes sociales Facebook,
Twitter, Youtube, Google Plus y otros. Para más información acceder a:
http://www.lpi.org/social

--------------------------------------------------------
Scott Lamberton
Director of Communications
Linux Professional Institute
http://www.lpi.org
slamberton@lpi.org

--------------------------------------------------------

Henry Chalup
Director LPI España
mob: +34 659 250 496
e-mail: henry.chalup@lpi.org.es


C/ Julian Camarillo, 29 Edif. D2 4to Izda
28037 Madrid
Tel. +34 91 766 24 21
Fax. +34 91 766 23 57
www.lpi.org
lpi.org.es

_______________________________________________
lpi-spain-alumni mailing list
lpi-spain-alumni@lpi.org
http://list.lpi.org/cgi-bin/mailman/listinfo/lpi-spain-alumni

Un saludo a todos.

5
Noticias / Una tendencia que está aumentando...
« en: Abril 08, 2012, 10:14:12 pm »
Normalmente estamos acostumbrados a que la mayoría de los pc's que adquirimos en tiendas, queramos o no, llevan un Windows preinstalado con su consecuente aumento de precio.

Con esto de la crisis son muchas las empresas que están decidiendo entregar sus pc's con sistemas GNU-Linux para así, abaratar los costes al consumidor.

Es una tendencia que está aumentando día a día y e aquí un ejemplo que me da bastante alegría ver:

http://www.carrefouronline.carrefour.es/noalimentacion/NodoTerminal.aspx?itemId=cat410336&pila=catalog310026@cat410296@cat410336&menu=yes&navCount=0&itemMarcado=catalog310026&sortPrices=%2B

Un saludo.

6
Hola a todos de nuevo, hoy voy a explicar de forma muy muy clara como funcionan las claves pública y privada. Ya verán como lo entienden.

Todos sabemos que ssh es un protocolo muy seguro, ya que todo la información que circula por la conexión entre cliente y servidor está encriptada.

Cuando hacemos una conexión a un servidor ssh lo hacemos así:

Código: [Seleccionar]
ssh usuario@direcion.ip.com
El servidor y el cliente ssh negocian el protocolo ssh que se usará (por seguridad debe ser la versión 2)

Y después generan un acuerdo de cifrado para el canal, de manera que ya todo lo que circule por él, esté cifrado.

La conexión continua..

Una vez abierto un canal seguro, el servidor nos pedirá contraseña para acceder y tras introducirla el servidor la comprobará.

Si la clave es correcta obtendremos acceso al servidor ssh.

Aquí se presentan dos inconvenientes.

1.- El password, aunque encriptado, viaja por la red cada vez que nos conectamos y esto puede ser peligroso si alguien estuviese capturando (snifando) datos de nuestra red y fuese capaz de generar fuerza bruta contra nuestros datos para sacar el pass.

2.- Tener que meter una y otra vez la clave cuando iniciamos sesión es 'cansino' y además, si tenemos 20 servidores y los que acceder.... Tenemos que tener 20 claves diferentes, ya que si usamos una sola para todo compromete la seguridad de los 20 pcs si perdemos la clave o alguien nos la roba.

Para todo esto hay una solución, usar un par de claves RSA.




Explicación sobre pareja de claves RSA

¿Que es RSA?

RSA es un sistema de encriptado que usa un algoritmo imposible de solucionar a día de hoy. Se creé que con la llegada de sistemas cuánticos y su rapidez se puedan llegar a solucionar.

¿Por qué una pareja?
Esto mucha gente no lo entiende, y lo voy a explicar muy claro.

Es una pareja de claves porque se crean a pares y de forma que una no sirve sin la otra, una clave es privada y la otra pública.

Clave privada:
Se usa para desencriptar y es la que debe estar solo presente en la máquina cliente y protegerla.

Clave  pública:
Se usa para encriptar y se puede repartir sin miedo a tus amigos.
Esta clave solo encripta y no puede usarse para desencriptar ni lo que se haya encriptado con ella.
Solo la clave privada asociada a ella puede desencriptar lo que se haya encriptado con la clave pública.

¿Y como funciona?
El proceso es el mismo pero con una diferencia...

Código: [Seleccionar]
ssh usuario@direcion.ip.com
El servidor y el cliente ssh negocian el protocolo ssh que se usará (por seguridad debe ser la versión 2)
Y después generan un acuerdo de cifrado para el canal, de manera que ya todo lo que circule por él, esté cifrado.
La conexión continua..

Hasta aquí todo igual, pero ahora comienza la diferencia.....:

El cliente decide usar usar RSA para identificarse, así que le manda al servidor información sobre su clave pública..

El servidor busca en su base da datos en busca de la clave pública del cliente, cuando la encuentra le manda un desafío, si si, como lo oyes. El servidor manda un paquete llamado (challenge) que contiene un número aleatorio cifrado con la clave pública del cliente.

El cliente recibe el paquete incriptado y usa la clave privada para desencriptar el mensaje, una vez desencriptado se lo devuelve al server... y le dice "¡Eh mira, lo he averiguado, así que soy yo!".

El servidor comprueba que el número devuelto es igual que el que mandó encriptado y por tanto el usuario es el que dice ser, ya que ninguna otra persona puede desencriptar el paquete sin no tiene la clave privada asociada a la pública. Así que se permite la sesión.

Yo creo que explicado así se entiende a la perfección.

¿Os habéis fijado que en ningún momento se mandan claves por la red?

Ahora podrías dar a todos tus amigos tu cláve pública y así poder entrar en sus sistemas sin pedir contraseña ni tener que usar una contraseña para cada sitio.

Como podréis imaginar, si alguien os copia la clave privada de vuestro ordenador, podrá acceder a cualquier sistema en el que estén la clave pública..... que peligro ¿no?

Tranquilos, generaremos una clave RSA que esté encriptada con clave, de manera que si alguien os la quita se quedará con la cara partida porque hace falta una clave para poder usarla... jejeje.




Preparación del Servidor para permitir autenticación por RSA

Accedemos a nuestro servidor:

Código: [Seleccionar]
ssh usuario@servidor.com
Tendremos que meter la clave como siempre.

Una vez dentro tendremos que editar el archivo /etc/ssh/sshd_config

Código: [Seleccionar]
sudo nano /etc/ssh/sshd_config
Buscamos las siguientes líneas y nos aseguramos de que estén así:

Citar
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

La primara opción permite el uso de clave pública para que un cliente se identifique.
La segunda especifíca donde se guarda la relación de claves públicas autorizadas.

Una vez modificado lo que sea necesario presionamos Ctrl+o para guardar, presionamos "enter" para confirmar y luego Ctrl+x para salir.

Comprobamos que existe la carpeta .ssh dentro del directorio home, el cual debe de contener el archivo authorized_keys

Código: [Seleccionar]
ls -al  ~
Si no existe lo crearemos

Código: [Seleccionar]
mkdir ~/.ssh
touch ~/.ssh/authorized_keys

En ese archivo se guardan las claves públicas de los clientes autorizados.
Necesitamos reiniciar el demonio ssh y normalmente eso no supone una caida del cliente que está conectado a ssh... así que:

Código: [Seleccionar]
sudo service ssh restart
Ahora ya podemos salir del ssh:

Código: [Seleccionar]
exit




Configuración del Cliente para usar RSA

El cliente de la versión actual de ssh está configurado para usar en primera instancia automáticamente una privada RSA para identificarse, así que solo tenemos que crearla.





Creación de parejas de claves

Ahora llega el momento de crear nuestra pareja de claves, es importante comprender que podemos crear la pareja de claves en cualquier pc y llevarlas a donde queramos.... pero en este caso las crearemos en el cliente.

Primero comprobamos que existe la carpeta .ssh dentro del directorio home, el cual es necesario ya que es ahí donde se generarán la pareja de claves.

Código: [Seleccionar]
ls -al  ~
Si no existe lo crearemos

Código: [Seleccionar]
mkdir ~/.ssh
Ahora generamos la pareja de claves RSA

Código: [Seleccionar]
ssh-keygen -t rsa
Nota: ssh-keygen genera por defecto claves RSA pero por si las moscas lo hemos especificado.

Creará una clave de 1028 Bits, muy segura, aunque se pueden crear mayores claves con menor rendimiento... claro está.

Tras ejecutar el comando nos preguntará donde generar la clave, le dejamos la ruta por defecto ~/.ssh/id_rsa

Seguidamente nos pedirá una clave de paso, yo uso la misma que para mi sesión, pero podéis usar cualquier clave que sea segura, que contenga numeros, símbolos y letras en minúscula y mayúscula.

Una vez terminado tendréis una clave privada (id_rsa) y otra pública (ud_rsa.pub) en el directorio .ssh de vuestra carpeta personal.

Ahora moveremos la llave pública al servidor usando scp, que pertenese al paquete de ssh y permite copiar contenido usando ssh de forma segura:

Código: [Seleccionar]
scp ~/.ssh/id_rsa.pub usuario@servidor.com:/tmp/
Y metemos la clave para mandar la llave pública a la carpeta temporal del server.




Añadiendo la clave pública al servidor ssh

Tras copiar la clave pública en el server hay que añadirlo al archivo authorized_keys
Accedemos al servidor ssh:

Código: [Seleccionar]
ssh usuario@servidor.com
Y ejecutamos:

Código: [Seleccionar]
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
Listo, ya podemos salir del server y al entrar no usaremos clave para iniciar sesión, y ojo, sigue leyendo.

Código: [Seleccionar]
exit




Usar ssh-agent para evitar la frase de paso

Si ya has intentado acceder pos ssh para probar la conexión te habrás percatado de que te pide contraseña.... ehhh! jeje para para, no me llames mentirosooooo jejee

Dije que no te pediría clave para iniciar sesión, y de hecho, no lo hace, lo que pasa es que tu clave privada está cifrada ¿Recuerdas que al crearla pusiste una clave para protegerla?

Usaremos ssh-agent, que se instala automáticamente al instalar ssh y que se ejecuta al inicio de cada sesión de manera automática.

Usaremos ssh-add para añadir la clave a ssh-agent de manera que esté vinculada a la sesión y no te pida más la pass para desencriptar la clave privada.... ya se encargará ssh de pedírsela a ssh-agent.

Código: [Seleccionar]
ssh-add ~/.ssh/id_rsa
Eso nos pedirá la frase de paso que usamos para crearla, y la añadirá a la base de datos.

Prueba ahora y verás...

Ya puedes usar tu clave privada sin temor, y compartir la pública para poder acceder a otros servidores o pc's sin tener que memorizar gran cantidad de claves.

Nota: Tras reiniciar o cerrar la sesión actual en tu sistema linux, se te volverá a pedir la clave de paso, pero puedes hacer que no te la vuelva a pedir pinchando en la opción "Desbloquear al iniciar sesión" .... o algo así XD

Bien, para terminar os recomiendo que impidáis el acceso mediante clave al server ssh.

¿Para qué?

Pues para evitar ataque de fuerza bruta y que intenten sacar el pass.

Accedemos a nuestro servidor:

Código: [Seleccionar]
ssh usuario@servidor.com
Ya no tendríamos que meter la clave... jejeje
Una vez dentro tendremos que editar nuevamente el archivo /etc/ssh/sshd_config

Código: [Seleccionar]
sudo nano /etc/ssh/sshd_config
Buscamos las siguientes líneas y nos aseguramos de que estén así:

Código: [Seleccionar]
#PasswordAuthentication yes
Y la dejamos así:

Código: [Seleccionar]
PasswordAuthentication no
Ahora reinicias el servicio ssh

Código: [Seleccionar]
sudo service ssh restart
Listo, ya no os pedirá contraseña normal y exigirá identificación por RSA.

Un saludo y espero que os sirva.

7
El otro día trasteé el server, y expliqué como ponerlo a modo repetidor de internet wifi.
El problema es que era un servidor sin seguridad en lo que se refiere a conexiones.
He aprendido a usar lo básico de iptables y he conseguido hacer un escript para aumentar la seguridad y conseguir que se comparta internet.

Código: [Seleccionar]
#!/bin/sh

# Script para servidor que comparte internet
# Borramos todas las reglas actuales de filtrado
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

# Por defecto tiramos todo los paquetes que entran al pc
iptables -P INPUT DROP

# Permitimos FORDWARD y OUTPUT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# Añadimos una regla para fail2ban-ssh
iptables -N fail2ban-ssh

# A tener en cuenta que el servidor se conecta por wlan1 a internet y
# por eth1 a la red local

# Regla de iptables para canalizar  lo que entra por eth1 (red) hacia wlan1 (internet)
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o wlan1 -j MASQUERADE

#Activación de ip_fordward
echo 1 > /proc/sys/net/ipv4/ip_forward

# Comenzamos a filtrar

# Permitimos todo el tráfico de loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Aceptamos todas las conexiones ya establecidas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Filtramos las conexiones de SSH hacia fail2ban para que de el visto bueno
# Cambiar el puerto si es distinto
iptables -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
iptables -A fail2ban-ssh -j RETURN

# Permitimos acceso a HTTP y HTTPS hacia el server (los puertos habituales para un servidor web)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Habilitamos conexiones al puerto 22 de SSH
# Cambiar el puerto si es necesario
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Permito acceso desde la red interna (Cuidado con esto que puede comprometer la seguridad)
iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j ACCEPT

# Permito conexiones al puerto 53 (DNS) en la tarjeta que brinda internet para que funcione dnsmasq
iptables -A INPUT -i eth1 -p udp --sport 68 --dport 67 -m state --state NEW -j ACCEPT
#iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p tcp --dport 53 -j ACCEPT
#iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p udp --dport 53 -j ACCEPT

# Permitimos que se haga ping al server
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# Descomentar para permitir el tráfico HTTP y HTTPS para FORWARD si la política por defecto es DROP
#iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --dport 80 -j  ACCEPT
#iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --dport 443 -j ACCEPT

# Descomentar para permitir tráfico para msn en FORWARD si la politica por defecto es DROP
#iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --dport 1864 -j  ACCEPT
#iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -p tcp --dport 1863 -j  ACCEPT

No se si habrá algo mal.
Yo lo estoy usando ahora mismo en mi server y tendré que hacerle test a ver como anda de robustez.

Lo he colocado aquí para mejorarlo mas que para para usarlo sin más, lo mejor es que os sirva de referencia y no lo uséis a la ligera.

Un saludo a todos.

8
Administración sistemas / Encender un ordenador remotamente
« en: Marzo 26, 2012, 10:47:50 pm »


Hola de nuevo.

En este tutorial lo que pretendo es mostrar como encender un pc desde otro pc, claro está, siempre que haya una conexión entre ellos (internet, lan local, etc).

Explicaré todos los pasos necesarios para que podáis conseguir hacer esto.

Lo primero es lo primero, información, ya que no todos saben de informática, es mejor que el tutorial comience..... así. XD

Un poco de información:

Cuando un pc se apaga, la fuente de alimentación o batería mantiene la corriente en la placa base a bajo nivel.

Normalmente las placas se valen de esto para mantener la fecha y hora del sistema aún cuando la pila de la placa está agotada, pero hay mas cosas que puede hacer la placa, como encender el pc mediante cualquier pulsación del teclado o mediante la activación de un determinado evento en una tarjeta PCI.

Casi todas la placas base de hoy en día permiten el arranque mediante estas opciones añadidas a la BIOS (Pequeño chip que controla la placa base).

Comprobaciones:

A nosotros lo que nos interesa es hacer que el pc se encienda a través de la tarjeta de red, así que lo primero que tenemos que hacer en el pc que queremos arrancar remotamente, es saber si soporta esta cualidad.

Encendemos el pc, y durante el arranque de este accedemos a la BIOS presionando la tecla 'suprimir' o 'DEL', aunque en muchas placas no sirven estos botones y hay que utilizar otros, estos suelen indicarse durante el arranque con frases como "Press F2  for BIOS Setup", en tal caso presionaríamos F2 y accederíamos a la BIOS.

Una vez dentro, tendríamos que buscar la sección POWER y activar la opción de "despertar por PCI" que en la BIOS puede aparecer como Power On by PCI Devices o el Power On by PCI Cards
También pueden encontrarse en algún sub-menú de ACPI

Bien, si tenemos estas opciones significa que la placa permite encender remotamente, así que la habilitamos colocando su valor a ENABLE (Habilitado).

Ok, ahora vamos asta la opción exit, y salimos guardando los cambios "Exit and save configuration"

Configuración de tarjeta:

Ahora, ya tenemos activada la opción en nuestra BIOS, pero queda comprobar si nuestra tarjeta de red es capaz de quedarse  'despierta' cuando el ordenador se apaga y avisar a la placa para que se encienda el pc cuando alguien le da la orden.

Esta capacidad se conoce como WOL, que son las siglas de Wake On Lan (despertar/levantar por LAN) y vamos a ver si nuestra tarjeta lo soporta accediendo a nuestro maravilloso mundo que es la terminal de linux.

Lo dicho, encendemos nuestro sistema Linux del pc que queremos arrancar remotamente, y abrimos una terminal.

Lo primero que necesitamos es conocer si nuestra tarjeta soporta la opción WOL, así que instalaremos una pequeña aplicación que nos servirá tanto como para comprobar esto, como para activarlo.

Código: [Seleccionar]
sudo apt-get install ethtool
Con eso se instalará el programa ethtool.

Cuando termine la instalación comprobamos cual es nuestra tarjeta de red así:

Código: [Seleccionar]
ifconfig
Esto nos devolverá algo como:

Citar
eth0      Link encap:Ethernet  direcciónHW 60:4b:a6:50:74:ea 
          ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:65802 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:65893 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000
          Bytes RX:10748466 (10.7 MB)  TX bytes:4209197 (4

Bien, lo que os he resaltado en negrita, es importante.
eth0 Ese es el nombre asignado a la tarjeta de red, en vuestro caso puede ser eth0 o eth1...
60:4b:a6:50:74:ea Es la dirección MAC de la tarjeta de red, que es único.
Debéis apuntar la dirección MAC, ya que la usaremos para despertar la tarjeta desde otro ordenador.

Ahora que ya sabemos como se llama nuestra tarjeta (en mi caso eth0) pues comprobamos si la tarjeta soporta wol usando ethtool así:

Código: [Seleccionar]
sudo ethtool eth0
Citar
[sudo] password for scorpyo:
Settings for eth0:
    Supported ports: [ TP MII ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 10Mb/s
    Duplex: Half
    Port: MII
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbg
    Wake-on: d
    Current message level: 0x00000033 (51)
    Link detected: no

De nuevo, os resalto la información importante en negrita.

Si os aparece el parámetro Wake-on: d vamos por buen camino, aunque la d significa que está desactivado.
Vamos a activarlo de la siguiente manera:

Código: [Seleccionar]
sudo ethtool -s eth0 wol g
Y para comprobar que ahora está activado:

Código: [Seleccionar]
sudo ethtool eth0
Citar
[sudo] password for scorpyo:
Settings for eth0:
    Supported ports: [ TP MII ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 10Mb/s
    Duplex: Half
    Port: MII
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000033 (51)
    Link detected: no

Como veis, ahora está activada con la opción "g" esto hace que la tarjeta despierte con un MagicPacket (paquete mágico).

El MagicPacket es una señal que se le manda a la dirección MAC que comienza con FF FF FF FF FF FF y sigue con 16 repeticiones de la dirección MAC que queremos despertar.

La opción wol puede activarse de muchas otras maneras, pero la que nos interesa a nosotros es esta. Para mas info sobre esto usar el "man ethtool"

Perfecto, ahora ya hemos hecho que la tarjeta sepa que ha de quedarse a la escucha siempre y cuando apaguemos el pc de forma adecuada, es decir, sin tirar del cable o sacar la batería, o sin apagar a lo bestia desde el botón.... jejeje.

Encendiendo el pc remotamente:

Para hacer esto es fundamental que el ordenador que queremos encender, esté apagado... jjajajaja ¿claro no?

Ahora en serio, para arrancar el pc solo necesitamos usar el comando wakeonlan y saber su dirección mac (que ya la apuntamos más arriba)

Primero instalamos la aplicación, aunque casi seguro que ya la tenéis instalada...

Código: [Seleccionar]
sudo apt-get install wakeonlan
Lo segundo y último, es despertar el pc.

Si estamos en su misma red, bastará con:

Código: [Seleccionar]
sudo wakeonlan  60:4b:a6:50:74:ea
Y si estamos desde internet en otro lugar del mundo.. jejeje tenemos que hacerlo añadiendo antes de la mac, la dirección ip del router en el que está conectado el pc, o la dirección ip del pc si este se conecta a internet directamente sin router.

Código: [Seleccionar]
sudo wakeonlan 82.125.12.14 60:4b:a6:50:74:ea
Y eso os devolverá algo como:

Código: [Seleccionar]
Sending magic packet to 255.255.255.255:9 with 60:4b:a6:50:74:ea
Y el pc, debe de comenzar a arrancar el solito...

Por cierto, normalmente no debe de haber problema atravesando el router, pero si experimentáis problemas al despertar el pc como que no os obedece podéis configurar el router para que os mande los paquetes entrantes por el puerto 9 hacia la dirección de difusión que suele ser la 192.168.0.255

Espero que os haya servido.

9
Hay veces que tenemos un ordenador viejo, que no anda con ningún Windows, al menos de los menos viejos, ya  que Windows es un devorador de recursos y exige continuamente hardware nuevo para funcionar.

Linux por el contrario nos brinda la oportunidad de aprovechar prácticamente cualquier pc por muy viejo que sea.

Así que id desempolvando esos viejos pc's.

 

Veamos, en muchos tutoriales de internet podemos ver fácilmente como compartir internet con otros equipos usando sistemas Linux

Lo que ocurre es que la mayoría de las veces está orientado a sistemas con interfaz gráfica, y claro está, si estás usando un sistema sin las X, como Ubuntu Server pues te encontrarás que no puedes seguir esos tutos, caso a parte, no siempre sabes que cambios se están haciendo a nivel de configuración...

Bueno, en esta entrada intentaré explicar de forma breve la configuración básica de un sistema para:

-Funcionar como un router. (incluso como repetidor sin necesidad de que el router desde el que viene la señal soporte wds )
-Crear una red local.
-Compartir internet.
-Asignar ips y DNS de forma automática al resto de pcs.

Nota: Hay distribuciones especiales de linux para hacer función de router o proxy, como "Router Linux" o "Freesco" y que pueden andar sin instalación desde un live-CD pero aquí no los usaremos, ya que buscamos usar el sistema que tenemos instalado.

Requisitos:

-Necesitamos al menos 2 interfaz de red, ya que por una nos comunicaremos con el exterior, (internet) y con la otra nos comunicaremos con el resto de pc's.
Pueden ser tarjetas de red Ethernet o Wifi.

-Iptables, que sirve para administrar conexiones y aplicar reglas. (cualquier versión del kernel igual o superior a la 2.6 serviría ya que lo trae por defecto)

-dnsmasq, que nos servirá para asignar ips y dns de forma automática al resto de máquinas que lo soliciten.

Bueno, partiremos de que ya tendremos configurada la conexión a internet en la máquina en la que estamos trabajando de acuerdo a los requisitos de nuestro proveedor.

Encendemos el server y nos logueamos.

Imaginemos que tenemos conectado el servidor a un moden por cable de red, y que tenemos otra tarjeta libre.

Serían Eth0 y Eth1 respectivamente.


Para empezar tenemos que  echar un vistazo al archivo /etc/network/interfaces y editar lo que nos haga falta.

Código: [Seleccionar]
sudo nano /etc/network/interfaces
En este caso el contenido el el siguiente:

Código: [Seleccionar]
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Esto quiere decir que tenemos configurado la tarjeta de red eth0 para obtener ip por dhcp, pero no hay menciones para eth1, así que lo pondremos nosotros, pero lo haremos de forma manual ya que lo que estamos haciendo es crear una red con esa interfaz.

Código: [Seleccionar]
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
      address 192.168.0.1
      netmask 255.255.255.0
      broadcast 192.168.0.255

Presionamos Ctrl+o para guardar (confirmamos presionando enter) y Ctrl+x  para cerrar. 

La configuración quedaría así:

Ip de la máquina es 192.168.0.1
La máscara de red es  255.255.255.0
Y la dirección de difusión es la 192.168.0.255

Con  eso ya hemos configurado nuestra tarjeta para que coja esos valores.

Pero para que sean efectivos ahora mismo hemos de reiniciar el servicio de red.

Código: [Seleccionar]
sudo /etc/init.d/netwoking restart
Ahora hay que activar ip_forward para que nuestro server no ignore los paquetes que no vayan destinado a si mismo, ya que pueden ser paquetes para otros equipos y esto haría que esos equipos no obtuviesen respuesta del exterior.

Para activarlo podemos hacerlo de dos formas:

1.-Provisionalmente (Se pierde al reiniciar):

Código: [Seleccionar]
echo 1 > /proc/sys/net/ipv4/ip_forward
2.-De manera permanente:
Nota: también se puede añadir a un script que explicaré más abajo

Editando el archivo /etc/sysctl.conf

Código: [Seleccionar]
sudo nano /etc/sysctl.conf
Y descomentando la linea:

Código: [Seleccionar]
#net.ipv4.ip_forward=1
Descomentar es quitar la "#" de manera que quede así:

Código: [Seleccionar]
net.ipv4.ip_forward=1
Presionamos Ctrl+o para guardar (confirmamos presionando enter) y Ctrl+x para cerrar.

Bien, ya nos queda menos, ahora vamos a activar NAT para que los equipos que estén conectados a nuestro server puedan salir a internet mediante la ip del server.

Digamos que lo que hace nat es como una bifurcación de los datos entre redes.

Para esto usaremos iptables con el siguiente comando:

Código: [Seleccionar]
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Voy a intentar explicarlo:

Iptables  es el comando para modificar las reglas.

-t  Es para especificar el tipo de tabla a la que van dirigidas las reglas.

nat  Es el tipo de tabla.

-A  Añade la regla a las ya existentes.

POSTROUTING Modifica los paquetes justo antes de reenviarlos a las máquinas correspondientes

-o  Sirve para especificar hacia que tarjeta van redirigidos los paquetes.

eth0 Es nuestra tarjeta conectada a internet.

-j  Especifica hacia donde se aplican las reglas

MASQUERADE  Indica el enmascaramiento ip.

Traducido, que todo lo que entre a nuestro pc por el puerto que no sea eth0 se enmascara para reenviarlo a la tarjeta eth0

XD

Esta regla solo se aplica en esta sesión, cuando reiniciemos se desactivará.

(Ya la haremos permanente si nos funciona bien)

Pues desde ya, cualquier pc conectado a nustra tarjeta eth1 tendría acceso a internet, pero lo que pasa es que tendríamos que configurar las direciones ip y las dns a mano, puesto que no tenemos activo dhcp, pero eso lo podemos arreglar con el programa dnsmasq

Así que lo instalamos si no lo hemos hecho ya.

Código: [Seleccionar]
sudo apt-get install dnsmasq
Ahora cambiamos la configuración:

Código: [Seleccionar]
sudo nano /etc/dnsmasq.conf
Buscamos las lineas siguientes y las modificamos para que queden así:

Código: [Seleccionar]
listen-address=192.168.0.1
bind-interfaces
dhcp-range=192.168.0.2,192.168.0.254,12h

Unas hay que descomentarlas y otras cambiar los valores.

Presionamos Ctrl+o para guardar (confirmamos presionando enter)

 y Ctrl+x para cerrar.

Reiniciamos el servicio con:

Código: [Seleccionar]
sudo /etc/init.d/dnsmasq restart
Y ahora sí, cualquier pc conectado a ese puerto obtendrá ip, dns y acceso a internet.

Si queremos conectar muchos pc's podmos colocar un hub, de manera que multiplico por 4 u 8 los puertos de red y todos los pc's tendrían el mismo trato, sus propias ips, dns y acceso a internet.

Bueno, si nos funciona podemos dejar fija la reglas existentes de iptables así:

Creamos un script que contenga la regla:

Código: [Seleccionar]
sudo nano firewall.sh
Introducimos los parámetros:

Código: [Seleccionar]
#!/bin/sh
#Regla de iptables para canalizar
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#Activación de ip_fordward
echo 1 > /proc/sys/net/ipv4/ip_forward

Nota:Si activaste ip_fordward de manera permanente no es necesario hacerlo de nuevo.

Guardas el archivo y lo cierras.
Le damos permiso de ejecución y exclusividad para root:

Código: [Seleccionar]
sudo chmod 700 firewall.sh
sudo chown root:root firewall.sh

Ahora solo tendríamos que añadir una linea nueva al final del archivo /etc/init.d/rc.local para que ejecute el script al inicio:

Código: [Seleccionar]
sudo nano /etc/init.d/rc.local
Os movéis hasta el final del archivo y poneis la ruta del script que hemos creado.
En mi caso es:

Código: [Seleccionar]
/etc/firewall.sh
Guardáis y cerráis

Pues listo.

Si lo que queréis es compartir internet por wifi podemos hacerlo así:

Volvemos a editar el archivo  /etc/network/interfaces

Código: [Seleccionar]
sudo nano /etc/network/interfaces
En este caso el cambio sería el siguiente:

Código: [Seleccionar]
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0
iface wlan0 inet static
      address 192.168.0.1
      netmask 255.255.255.0
      broadcast 192.168.0.255
wireless_essid "nombre de tu red wifi"
wireless_channel 6
wireless_mode ad hoc
#
# Para usar claves con texto o en hexadecimal descomentar una de las lineas:
#wireless_key s:claveweptexto
wireless_key 0123456789

Presionamos Ctrl+o para guardar (confirmamos presionando enter) y Ctrl+x para cerrar.

Reiniciamos la configuración de red:

Código: [Seleccionar]
sudo /etc/init.d/netwoking restart
 Con eso el resto de pc's podrán ver un nuevo punto de acceso wifi al que pueden

acceder para tener internet.

El problema es que este tipo de configuración es equipo a equipo, y no se pueden

conectar más de un pc al mismo tiempo al punto de acceso creado.

Un saludo y espero que os sirva a más de uno.

Editado: Mejor opción para iptables y no reventar reglas nuevas

Una de las fuentes que visité:
http://crysol.org/es/router-casero

10
Hola

Muchas veces, tras montar mis servidores para trastear joomla o lo que sea, me encuentro con una gran duda...

¿Que usuario y que permisos he de dar a las carpetas de /var/www ?

Por ejemplo, he leído que al instalar apache se crea un usuario, el www-data.

¿He de cambiar el propietario de las carpetas a www-data?
¿Que permisos tengo que poner exactamente para que todo funcione con normalidad en caso de poner www-data sin que los datos estén comprometidos?

Un saludo.

11
Scripting / Juego tipo trivial
« en: Marzo 20, 2012, 10:14:18 pm »
He creado un Script al que voy dando soporte poco a poco y de vez en cuando.

No es nada profesional, pero si que puede ser de gran ayuda.

El script sirve para hacer preguntas al usuario a modo test y desde una base de conocimientos que ya tiene, son muy pocos los temas que el programa tiene, pero se le pueden añadir nuevos.

Para seros sincero, mi madre lo está usando para sus oposiciones y le va genial.

El programa tiene estas opciones:

-Crea un usuario para guardar la estadística de Aciertos, Fallos, Media, Nombre, etc...

-Se permite la síntesis de texto a voz. (El programa hablará)

-Se permitirá elegir un tema.

-Se permite elegir la curiosidad del programa por aprender. (Su base de datos crecerá y lo usará contra ti u otros usuarios)

-Las preguntas se podrán mostrar de forma aleatoria o secuencial.

Descarga en:
http://ubuntuone.com/4kTf3VjUpbXjj6oQLHEE1X

Tengo que modificar un poco algunos módulos para que no discrimine entre mayúsculas y minúsculas, para así acertar las preguntas aún teniendo alguna falta de ortografía.
Por ejemplo, si el programa pregunta ¿Quién descubrió America? entenderá como respuesta Cristobal Colón, y no será válidas otras respuestas como Colón, colón, colon, Cristobal, cristobal colón..... etc etc..

Y claro, hay veces que es una discriminación excesiva para el uso que le vamos a dar.

Bueno, espero que de algo de debate el tema...

;D un saludo a todos.

12
Scripting / Bluedetecth un script más
« en: Marzo 19, 2012, 09:25:03 pm »
Esto, más que nada es una vacilada.... pero bueno, tal vez le saquéis provecho.

La idea original es de Javier Perez y el script está algo modificado pero todo el mérito es suyo.
http://javierperez.eu/bloqueo-y-desbloqueo-de-pantalla-por-detector-de-presencia-en-ubuntu-con-bluetooth-aimtooth/
Se trata de bloquear la pantalla (o cualquier cosa que se nos ocurra) cuando nos alejamos del ordenador de manera automática, y volver a desbloquearla cuando nos acercamos sin tocar absolutamente nada.

Necesitamos que nuestro ordenador disponga de bluetooth y de un terminal movil también con bluetooth.

Para ello nos ayudamos de un script que lo que hace es crear continuamente un vínculo con nuestro terminal móvil y comprobar la calidad de la señal, si esta baja de un mínimo, significa que nos estamos alejando, con lo que la pantalla se bloquea, y si nos acercamos, la calidad sube y por tanto la pantalla se desbloquea.

El script es el siguiente:

------------ Copia el texto --------------
Código: [Seleccionar]
#!/bin/bash

export INTERFACE="6H:A8:84:4B:54:F6"

while true; do

hcitool cc ${INTERFACE}

sleep 1

Signal="`hcitool lq ${INTERFACE}`"

echo $Signal

if [ "${Signal##*: }" -lt 240 ]; then
    echo "Baja señal"
    sudo -u scorpyo gnome-screensaver-command --lock

else

    if [ "${Signal##*: }" -gt 240 ]; then
        echo "Conectado"
        sudo -u scorpyo gnome-screensaver-command --deactivate

    else
   
        echo "Desconectado"
        sudo -u scorpyo gnome-screensaver-command --lock
fi
fi

hcitool dc ${INTERFACE}
done
-----------------FIN DE TEXTO---------------

Copiad el texto a un archivo de texto.
Sustituir lo que está en negrita por vuestros datos, scorpyo es mi usuario, vosotros poned el vuestro.

El primer parámetro... el de los numeros y letras separados por ":"  es el identificador de vuestro terminal movil, si queréis saber cual es el vuestro abrid una terminal y teclear:

scorpyo@pc:~$
Código: [Seleccionar]
hcitool scan
Scanning ...
    6H:A8:84:4B:54:F6    Scorpyo
    H6:G5:D2:4S:B1:43    Maria

Como veis, yo puse el número que identifica a mi terminal.

Guardáis el archivo, le dais permisos de ejecución de una de estas dos formas:

-Botón derecho sobre el archivo, Propiedades, luego pincháis en la pestaña "permisos" y por último marcáis la casilla de "permitir ejecutar el archivo como un programa"

O también desde una terminal con el comando:

-scorpyo@pc:~$
Código: [Seleccionar]
sudo chmod +x /ruta/del/archivo
Para ejecutar el archivo debemos hacerlo con poderes de administrador.
Abrimos una terminal y ponemos:

scorpyo@pc:~$
Código: [Seleccionar]
sudo ./ruta/del/archivo
Bien, ahora solo tendréis que comprobar como os va si os alejáis del ordenador y os acercáis..... y modificar si es necesario los valores de calidad del enlace... por si son demasiado exigentes para vuestro movil o demasiado tolerante...

Podéis darle otras utilidades así que dadle vueltas al coco y si se os ocurre modificaciones comentadlas y compartidlas.


---------------------------------------------------

 He trabajado en una modificación del script que lo hace más elegante, mas fácil de usar y menos trabajoso, ya que el original te puede bloquear la pantalla por un error tuyo o del bluetooth.

Mejoras:

-No es necesario cambiar nada en el script si se usa Gnome, ya que está preparado para añadir a las variables del programa los datos necesarios para no tener que hacer cambios en él script.

-Integración con el escritorio Gnome mediante Zenity.

-Se instalan paquetes necesarios para poder mandar mensajes al usuario en panatalla (pc)

-Hace un escaneo de los dispositivos y te presenta una lista, así es más fácil elegir el teléfono.

-Se notifica al usuario de los datos y acontecimientos mediantes mensajes con botones

-Se crea un perfil del teléfono para mejor seguimiento.

-Se avisa al usuario del móvil al que está vinculado el programa.

-Controla la presencia del móvil antes de empezar, si este no existe se aborta el arranque del programa.

-Se han introducido mejoras para evitar bloquear la pantalla por un "pico" de baja intensidad.

-No es necesario ejecutarlo desde una ventana de terminal.

-Relanzando el script se activa o desactiva el seguimiento del terminal móvil.

-Crea un acceso directo al escritorio si se desea.

El Script es el siguiente, está claro que no será el mejor, pero cumple con su cometido.

Código: [Seleccionar]
#!/bin/bash

#    bluedetecth es una pequeña utilidad que se encarga de bloquear la pantalla
#    cuando el usuario se aleja del PC en el que se está ejecutando.
#    Copyright (C) <2011> <Miguel Ponce Torres>
#
#    Este programa es software libre: usted puede redistribuirlo y / o modificar
#    bajo los términos de la GNU General Public License publicada por
#    la Free Software Foundation, bien de la versión 3 de la Licencia, o
#    (A su elección) cualquier versión posterior.
#
#    Este programa se distribuye con la esperanza de que sea útil,
#    pero SIN NINGUNA GARANTÍA, incluso sin la garantía implícita de
#    COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
#    Licencia Pública General GNU para más detalles.
#
#    Debería haber recibido una copia de la Licencia Pública General GNU
#    junto con este programa. Si no, vea <http://www.gnu.org/licenses/>.
#
#    Si quiere contactar con <Miguel Ponce Torres> puede hacerlo en: miguelponcetorres@gmail.com
#
#    Este script usa la idea original de Javier Perez
#    <http://javierperez.eu/bloqueo-y-desbloqueo-de-pantalla-por-detector-de-presencia-en-ubuntu-con-bluetooth-aimtooth/>
#    pero añadiendo muchos más extras y más facilida de uso al script original.

#    Este script está preparado para andar en Gnome, para que funcione en KDE u otros
#    escritorios hay que cambiar la orden zinety por la adecuada para KDE u otros.

#Se guarda el nombre del usuario que hay logueado en el sistema.
USUARIO=`whoami`
echo "El usuario detectado es $USUARIO"

# Se comprueba si el programa está corriendo
lockfile=/var/lock/bluedetecth.lock

if [ ! -e $lockfile ]; then
# Si no está corriendo se ejecuta lo siguiente
# creamos el fichero de bloqueo
touch $lockfile
else
if zenity --question --title "Detector de presencia" --text "La aplicación ya está en uso. \n¿Quiere cerrarla?"; then
zenity --info --title "Cerrando aplicación" --text "La aplicación se cerrará"
echo "La aplicación se cerrará"
rm $lockfile
killall bluedetecth
sudo -k
exit
fi
exit
fi

#-------------------------------------------------------------
# Se busca zenity y verifica si está instalado
dpkg --list zenity | grep ^ii
# Si zenity no está instalado el comando anterior
# devolverá un código diferente a cero entonces se abrirá
# una ventana para ver el proceso y apt-get
# instalará zenity
if [ "$?" != "0" ]
then
echo "El programa zenity no está instalado y ha de instalarse"
zenity --warning --title "Falta un componente" --text "No se encontró zenity"
if zenity --question --title "Consejo" --text "¿Instalar zenity desde el \nCentro de software de ubuntu?"
then
zenity --info --title "Relanzar" --text "Relanze el programa cuando haya instalado zenity"
software-center zenity
rm $lockfile
exit
else
zenity --warning --title "Se saldrá del programa" --text "Instale zenity antes de volver a intentarlo"
rm $lockfile
exit
fi
fi

# Aquí se avisa de que es necesario la creación de una carpeta temporal (tmp) si esta no existe
if [ ! -d ~/tmp ]; then
zenity --info --title "Creación de una carpeta temporal..." --text "Bluedetecth nesecita crear una carpeta temporal. \n\
Ruta de la carpeta: `echo ~/tmp`"
mkdir ~/tmp
fi

# Aquí se avisa de que es necesario la creación de una carpeta de trabajo si esta no existe
if [ ! -d ~/.bluedetecth ]; then
zenity --info --title "Creación de una carpeta de configuración" --text "Bluedetecth nesecita crear una carpeta para guardar sus datos. \n\
Ruta de la carpeta: `echo ~/.bluedetecth`"
mkdir ~/.bluedetecth
touch ~/.bluedetecth/terminales
fi

# Aquí se pregunta si se quiere un acceso directo al escritorio si no existe
if [ ! -L ~/Escritorio/bluedetecth ]; then
if zenity --question --title "Comodidad" --text "Se ha detectado que no tiene un acceso directo al escritorio. \n ¿Quiere crearlo?"; then
ln -s `pwd`/bluedetecth ~/Escritorio
fi
fi

zenity --info --title "Bluedetecth" --text "A continuación se hará un escaneo por bluetooth.\n\n\
ATENCIÓN:\n\
Encienda su terminal movil y cuando esté listo presione aceptar."

echo "Detector de presencia, Iniciando detector..."

#-------------------------------------------------------------

#--------Mostrando una barra de progreso---------
(
hcitool scan | sed -e '1d' > ~/tmp/bluetudetecth.scan&
echo "# Comenzando escaneo..."
echo "10" ; sleep 1
echo "20" ; sleep 1
echo "# Buscando dispositivos..."
echo "30" ; sleep 1
echo "40" ; sleep 1
echo "50" ; sleep 1
echo "60" ; sleep 1
echo "# Terminando escaneo..."
echo "70" ; sleep 1
echo "80" ; sleep 1
echo "# Cargando lista de dispositivos..."
echo "90" ; sleep 1
echo "96" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress --auto-close \
--title="Escaneo bluetooth" \
--text="Rastreando los dispositivos cercanos" \
--percentage=0
BOTONESPROGRESOS=$?
echo "Salida de la barra de progreso (0 = ok / 1 = cancelado) $BOTONESPROGRESOS" # Dato para control

if [ "$BOTONESPROGRESOS" = 1 ] ; then
killall hcitool
zenity --warning --title "Cancelado!" --text="Ha cancelado la búsqueda de dispositivos.\n\
Los resultados mostrados a continuación no serán concisos..."
fi

#----------Fin de barra----------


# Se mete en la variable TELEFONO la elección del usuario del
# resultado del archivo ~/tmp/bluetudetecth.scan
# En el cual están los datos recogidos por el último escaneo.

TELEFONO=$(zenity --list --title "Elija una dispositivo" \
--text "Dispositivos encontrados:" \
--column "Mac" --column "Nombre Disp" `cat ~/tmp/bluetudetecth.scan`)
BOTONESLISTA=$?
echo "Salida del diálogo de lista (0 = ok / 1 = cancelado) $BOTONESLISTA" # Dato para control
echo "El terminal elegido (si se eligió alguno) es: $TELEFONO" # Dato de control
echo $BOTONESLISTA "Es el valor del boton de lista"
if [ $BOTONESLISTA = "0" ]; then

if [ -z "$TELEFONO" ]; then
zenity --warning --title "Cancelado y cerrando" --text "Parece que no eligió ningún dispositivo o no hay dispositivos cerca... \n\
El programa terminará ahora."
rm $lockfile
exit
else
export INTERFACE=$TELEFONO
fi

else
zenity --warning --title "Cancelado y cerrando" --text "Ha decidido cancelar la operación de enlace... \n\
El programa se cerrará."
rm $lockfile
exit
fi

# Función para calcular media de señal y mostrar barra de progreso

function calcular()
{
gksu "hcitool cc ${INTERFACE}" -m "Para hacer conexiones al teléfono hace falta permisos de root"
sleep 1
sudo hcitool dc ${INTERFACE}
echo "# Conectando con el dispositivo..."; sleep 1

# Creamos un bucle hasta que pase el tiempo establecido en la variable TIEMPOSCAN

SEGUNDOS=0
PORCENTAJE=0
TIEMPOSCAN=20 # Aquí se establece el tiempo de scaneo, por defecto a 20 segundos
MEDIA=0
TOTAL=0

while [ $SEGUNDOS -lt $TIEMPOSCAN ]; do
sudo hcitool cc ${INTERFACE}

sleep 1

Signal="`hcitool lq ${INTERFACE}`"
SENAL="${Signal##*: }"
let CALIDAD=SENAL/255*100
let TOTAL=TOTAL+CALIDAD
let SEGUNDOS=SEGUNDOS+1
if [ $SEGUNDOS = "1" ]; then
let MEDIA=CALIDAD
else
let MEDIA=TOTAL/SEGUNDOS
fi

let PORCENTAJE=SEGUNDOS*100/TIEMPOSCAN
echo "# Calidad del enlace: $CALIDAD % \n\
Calidad media obtenida: $MEDIA %\n\
Progreso del cálculo $PORCENTAJE %
"
echo $PORCENTAJE
sudo hcitool dc ${INTERFACE}
done
echo "${INTERFACE} $MEDIA" > ~/tmp/bluedetecth.media
}


# Aquí ha de cotejarse los datos de la variable escogida con el archivo de terminales en: ~/.bluedetecth/terminales
# para ver si existen datos del teléfono, si no existen datos del teléfono, se hará un examen de calidad del enlace
# y se añadirá una nueva línea a ese archivo

# Se busca el terminal en la base de datos
if grep $TELEFONO ~/.bluedetecth/terminales; then
if zenity --question --title " Terminal conocido! " \
--text "Este terminal es conocido y existen datos sobre él. \n\
¿Quiere usar esos datos?"; then

POTENCIAMEDIA=`grep $TELEFONO ~/.bluedetecth/terminales | awk '1 { print $2 }'`
let POTENCIADEBIL=POTENCIAMEDIA*255/100-30
else
# Se borra la línea en la que están los datos del teléfono
BORRARLINEA=`cat ~/.bluedetecth/terminales | nl | grep $TELEFONO | awk '1 { print $1 }'`
mv ~/.bluedetecth/terminales ~/.bluedetecth/terminales.backup
cat ~/.bluedetecth/terminales.backup | sed "$BORRARLINEA d" > ~/.bluedetecth/terminales

# Se hace un nuevo escaneo de la calidad del terminal y se añade una nueva linea con referencia al terminal $TELEFONO
calcular | zenity --progress \
--title="Control de calidad..." \
--auto-close \
--text="Esperando...." \
--percentage=0
BOTONESCALCULO=$?

if [ $BOTONESCALCULO = "1" ]; then
zenity --warning --title "Operación cancelada" --text "Al cancelar la operación no se ha creado un perfil del teléfono. \n\
El programa utilizará valores standard."
POTENCIADEBIL=180
else
cat ~/tmp/bluedetecth.media >> ~/.bluedetecth/terminales
POTENCIAMEDIA=`grep $TELEFONO ~/.bluedetecth/terminales | awk '1 { print $2 }'`
let POTENCIADEBIL=POTENCIAMEDIA*255/100-30
zenity --info --title "Estadística terminada" --text "MAC del terminal: $TELEFONO \n
Calidad media: $POTENCIAMEDIA"

fi
fi
else
zenity --info --title " Terminal nuevo! " \
--text "Este terminal es nuevo y no hay referencias sobre él en la base de datos \n\n \
Es necesario calcular la estadística del alcance del aparato y añadirla a la base de datos."
# Se hace un escaneo de la calidad del terminal y se añade una nueva linea con referencia al terminal $TELEFONO
calcular | zenity --progress \
--title="Control de calidad..." \
--auto-close \
--text="Esperando...." \
--percentage=0
BOTONESCALCULO=$?

if [ $BOTONESCALCULO = "1" ]; then
zenity --warning --title "Operación cancelada" --text "Al cancelar la operación no se ha creado un perfil del teléfono. \n\
El programa utilizará valores standard."
POTENCIADEBIL=200
else
cat ~/tmp/bluedetecth.media >> ~/.bluedetecth/terminales
POTENCIAMEDIA=`grep $TELEFONO ~/.bluedetecth/terminales | awk '1 { print $2 }'`
let POTENCIADEBIL=POTENCIAMEDIA*255/100-30
zenity --info --title "Estadística terminada" --text "MAC del terminal: $TELEFONO \n
Calidad media: $POTENCIAMEDIA"
fi
fi


# Se comprueba que el terminal sigue cerca.
gksu hcitool cc ${INTERFACE}

sleep 1

hcitool lq ${INTERFACE}; echo $? > ~/tmp/bluedetecth.conect
CONECTADO=$(cat ~/tmp/bluedetecth.conect)

if [ "$CONECTADO" = "1" ]; then
echo "Sin señal..."
zenity --warning --title "No se detecta el telefono" --text "El teléfono con Interface: $INTERFACE \n no es detectado :("
echo "El programa se cerrará para evitar problemas."
zenity --info --title "Cierre de seguridad" --text "El programa se cerrará para evitar problemas"
rm $lockfile
sudo -k
exit
else

echo "Terminal localizado...."
zenity --info --title "¡Terminal localizado!" --text "El teléfono con Interface: $INTERFACE ha sido detectado y se hace su seguimiento XD"
fi

# sudo hcitool dc ${INTERFACE}

# --------Esta es la idea original de <Javier Perez> bastante modificada por <Miguel Ponce Torres>--------
let REINCIDENTE=0
while true; do

sudo hcitool cc ${INTERFACE}

sleep 1

Signal=$(hcitool lq ${INTERFACE}; echo $? > ~/tmp/bluedetecth.conect)

CONECTADO=$(cat ~/tmp/bluedetecth.conect)
echo "Valor de conectado: $CONECTADO"

if [ "$CONECTADO" = "1" ]; then

if [ $REINCIDENTE -lt 2 ]; then
# Si el número de picos continuados es menor a 2, se le suma 1
let REINCIDENTE=REINCIDENTE+1
fi

if [ $REINCIDENTE -gt 1 ]; then
# Si el número de picos continuados es mayor a 1 se bloquea la pantalla
sudo -u $USUARIO gnome-screensaver-command --lock
fi
else


echo $Signal
echo "El umbral para desconectar es de: $POTENCIADEBIL"

if [ "${Signal##*: }" -lt $POTENCIADEBIL ]; then
echo "Baja señal"

# Mejora para evitar sustos por picos de baja intencidad
if [ $REINCIDENTE -lt 2 ]; then
# Si el número de picos continuados es menor a 2, se le suma 1
let REINCIDENTE=REINCIDENTE+1
fi

if [ $REINCIDENTE -gt 1 ]; then
# Si el número de picos continuados es mayor a 1 se bloquea la pantalla
sudo -u $USUARIO gnome-screensaver-command --lock
fi
else
echo "Buena señal"
# Mejora para evitar sustos por picos de baja intencidad

if [ $REINCIDENTE -gt 1 ]; then
# Si la señal es buena y el valor de RENCIDENCIA es mayor a 1, se le perdona un valor (se le resta 1).
let REINCIDENTE=REINCIDENTE-1
else
# Si no se pone a 0
let REINCIDENTE=0
fi
sudo -u $USUARIO gnome-screensaver-command --deactivate
fi
fi
echo "Reincidencia: $REINCIDENTE"
sudo hcitool dc ${INTERFACE}
done
# ---------------Fin de idea de Javier Perez modificada---------------


gksu hcitool dc ${INTERFACE}
sudo -k
exit

Tened en cuenta de que lo he escrito yo, que voy aprendiendo sobre la marcha, cualquier cosa que haya que modificar pues comentáis.

Por cierto, mas tarde descubrí que existe un paquete para ubuntu que hace lo mismo, creo que se llama blueproximity
Código: [Seleccionar]
sudo apt-get install blueproximity
Un saludo.

Edito:
Subo el paquete en tar.gz para quien lo quiera bajar (Gracias Jordi)

Reedito:
Subo un paquete nuevo actualizado, con sonidos y mejoras.

13
En este tutorial, voy a explicar como instalar openssh-server para poder conectarnos a nuestro pc desde una LAN o desde internet.

También lo configuraremos de manera que sea más seguro y añadiremos extras de seguridad.


Instalación y configuración de ssh

Para empezar, vamos  a instalar openssh-server

Abrimos una terminal y :

Código: [Seleccionar]
sudo apt-get install openssh-server
Como el programa una vez instalado, se ejecuta, pues lo vamos a parar... para que no esté andando.

Código: [Seleccionar]
sudo service ssh stop
Ahora, vamos a modificar los parámetros de ssh para que sea más seguro.

El archivo que configura ssh está en /etc/ssh/sshd_config, así que en la misma terminal ponemos:

Código: [Seleccionar]
sudo nano /etc/ssh/sshd_config
*Yo he usado nano, pero podeis usar gedit si preferís así:

Código: [Seleccionar]
gksu gedit /etc/ssh/sshd_config
Bien, ahora las opciones que tenemos que cambiar o añadir si no están son estas:

-Cambiar el puerto:
Por defecto, ssh usa el puerto 22, pero a nosotros no nos interesa eso, ya que es algo que cualquiera sabe, nos interesa poner otro puerto, ejemplo.... 4428, entonces tenemos que cambiar el parámetro Port.
Quedaría así:
Citar
Port 4428

-Cambiar o añadir osuarios permitidos:
Por defecto, si tienes solo un usuario no hace falta, pero si tienes varios usuarios en tu pc, y quieres decidir quien pueden entrar por ssh a su cuenta desde el exterior, puedes ponerlo en el siguiente apartado, será entonces cuando solo se puedan conectar los usuarios que pongas ahí:

Citar
AllowUsers scorpyo
En ese ejemplo solo se podrá conectar el usuario scorpyo

-Disminuir el tiempo de cortesía para logearse:
Por defecto suele venir en 120... pero eso es demasiado tiempo, si te sabes la contraseña, por muy larga que sea no tardas más de 8 segundos en colocarla, así que quien tarde más de 30 segundos es que no la sabe... lo pondremos en 30 segundos y mucho es.

Citar
LoginGraceTime 30

-No permitir login de root
Es importante, que nadie pueda acceder como root al sistema, y si queremos hacer tareas administrativas siempre podremos usar sudo.

Citar
PermitRootLogin no

-Maximos intentos de loguin erroneos hasta cerrar sesión:
Por si alguien está intentando averiguar la contraseña, esto le incordiará bastante, ya que lo que hacemos es cerrar la conexión tras un limites de intentos, en el ejemplo he puesto 2.

Citar
MaxAuthTries 2

(esto no evita que vuelca a conectar y reintentar otras claves)

Bueno, con esto ya tenemos lista nuestra configuración de ssh.
Guardamos y cerramos Gedit.
Si estamos editando con nano apretamos Ctrl+o para guardar, le damos enter para confirmar y salimos con Ctrl+x


Otras medidas de seguridad

Ahora, vamos a tomar otras medidas de seguridad.

Hay que tener en cuenta algo primordial, aquí estamos usando la clave del usuario para iniciar sesión por ssh, es decir, si tu clave de usuario es "pepe", vamos por muy mal camino, es una clave super facil.

Así que unos consejos:

-No usar claves que puedan encontrarse en un diccionario, tales como... silla, calabaza, hermano, perro.... ni nombres propios... ni fechas de nacimiento.

-Usad siempre palabras inventadas como PerricopterO14?Alf
Anda, ¡que averigüen eso!... jajaja

Así, que si creéis que buestra contraseña no es segura, cambiadla.

Lo mejor es crear un par de claves RSA o RDA de manera que no haya claves viajando por la conexión, aunque sea SSH se corren riesgos...
Más adelante crearé un tutorial para crear una pareja de claves RSA y dejar de usar el login tradicional y pondré un enlace aquí.


Sigamos...

Todos sabemos que mediante fuerza bruta se pueden sacar claves aunque sean difíciles como la de arriba... puede llevar horas, semanas o meses, pero eso, al que está atacando le da igual.

Pues nosotros vamos a ponérselo más difícil aún... vamos a Banear (impedir conexión) a todos los que hagan cierta cantidad de intentos de acceso con claves erróneas.

Para eso necesitamos instalar fail2ban, así que en la misma terminal ponemos:

Código: [Seleccionar]
sudo apt-get install fail2ban
Ahora lo vamos a configurar para que sea un poco más duro en su trabajo... Va a pegar guantazos y todo... jajaja

Igual que antes vamos a editar con nano o gedit el archivo /etc/fail2ban/jail.conf así que....

Código: [Seleccionar]
sudo nano /etc/fail2ban/jail.conf
Tenemos que ir hasta el apartado [ssh] y veremos los situientes parámetros:
Citar
    [ssh]

    enabled = true
    port   = ssh
    filter  = sshd
    logpath  = /var/log/auth.log
    maxretry = 6


Pues bien, hay que hacer cambios... nos aseguraremos de que el valor de enabled está en true ya que si está en false significa que no controlará las conexiones ssh.

port (puerto a controlar)
El puerto está establecido como el que usa por defecto ssh, que es el 22 pero nosotros lo cambiamos para más seguridad, así que hay que especificarlo, el nuestro era el 4428

Citar
port = 4428

maxretry (intentos de conexión antes de banear)
Aquí pondremos el numero de veces que una determinada IP puede intentar hacer login de forma errónea...
Si supera ese límite el programa fail2ban impedirá la conexión de esa ip durante un tiempo establecido por defecto en 10 minutos.

Citar
maxretry = 4


Quedaría algo así:

Citar
    [ssh]

    enabled = true
    port    = 4428
    filter  = sshd
    logpath  = /var/log/auth.log
    maxretry = 4


Ok, ya tenemos configurado la mayor parte, pero como soy muy malo, a mi, 10 minutos de baneo me parecen muy pocos... ya que como tiene 4 intentos por cada 10 minutos, significa que tiene 20 intentos por hora y 480 por día.. me parece una burrada... así, que vamos a complicarlo..

Buscamos el apartado Defaults que está casi arriba y buscamos la opción bantime.

Esta opción es el tiempo de baneo en segundos... así que en vez de 600 que són 10 minutos, le pondremos algo más, yo le pongo 1680 segundos que son 28 minutos.

Citar
bantime 1680

Esto, reduce considerablemente el uso de ataques a nuestro pc.

Ya, creo que hemos terminado con la seguridad, ahora, guardamos todo.
Apretamos Ctrl+o para guardar, le damos enter para confirmar y salimos con Ctrl+x

Bien, ahora relanzamos el programa fail2ban para que tome las nuevas opciones

Código: [Seleccionar]
sudo service fail2ban restart
Y también lanzamos de nuevo ssh que lo paramos anteriormente

Código: [Seleccionar]
sudo service ssh start

Cortafuegos y routers

Ahora tenemos que configurar nuestro cortafuegos para que permita las conexiones entrantes al puerto 4428 que es el que hemos puesto.

Si estamos tras un router tendrá también su propio cortafuegos, así que tendremos que añadir este puerto y redirigirlos hacia nuestro pc... para eso no voy a hacer un tutorial, pero has de tener una ip fija o asegurarte de que el router siempre asigna el puerto 2248 a tu pc mediante mac o como sea.
Hay muchos tutoriales en internet.


Probando nuestra conexión desde el exterior o desde LAN

Pues listo, ya podemos conectarnos desde otro pc al nuestro de la siguiente forma:

Por ejemplo, mi ip (la del exterior, es decir, con la que salimos a internet) es la 83.168.154.124 y mi usuario en la máquina en la que quiero conectarme es scorpyo, pues haré lo siguiente:

Código: [Seleccionar]
ssh -p 4428 scorpyo@83.168.154.124
-p es para especificar el puerto, ya que nosotros lo hemos cambiado, si no lo ponemos  el comando ssh usaría por defecto el 22 y no podríamos conectarnos.

La IP es facil averiguarla si queréis acceder desde la misma red local, por ejemplo tipeando en una terminal:

Código: [Seleccionar]
nm-tool | grep Address
  HW Address:        70:F1:A1:16:BE:3E
    Address:         192.168.0.106
  HW Address:        70:5A:B6:80:72:EA
Ahí la tenéis... la 192.168.0.106 (siempre tengo la misma dentro de la red local)

Si queréis acceder desde internet podéis averiguar vuestra ip de muchas maneras, hay páginas en internet que os la dicen, también sale en el router... etc.

Como la mayoría de las ip's que nos asignan los proveedores de internet, son ips dinámicas, (esto significa que no siempre es la misma) pues eso añade el problema de que tenemos que estar constantemente averiguando la ip del pc, y si estamos fuera de casa, pues es un problemón.

Para eso, os podeis hacer una cuenta en http://dyn.com/dns/ o en http://www.no-ip.com/
Añadís los datos al router (no todos los routers soportan esta opción) y de esta manera, podríais tener un dominio tipo mimakina-remota.dyndns.org o mimakina-remota.no-ip.com y esta siempre os redirigiría hacia la ip actual que tengas.

Así yo me conectaría por ejemplo de esta manera:


Código: [Seleccionar]
ssh -p 4428 scorpyo@la-pcera.dyndns.org
Listo, ahora mismo eso es todo, y es lo mínimo que debéis de hacer para tener un servicio ssh mínimamente seguro.


Lo mejor es no tener activo ssh cuando no se necesite o cerrar el puerto en el cortafuegos.
También se pueden crear juegos de claves públicas y privadas del tipo rsa y dsa para mayor seguridad.

Para mayor control del tráfico y más seguridad seguir con este enlace del foro en el que k1d explica como detectar posibles intrusos:
http://www.lapipaplena.net/foro/index.php?topic=12.msg31#msg31

Páginas: [1]