Google
 

viernes, 30 de mayo de 2008

Brillo en Kubuntu 8.04 en Dell Inspiron 6400

Buenasss

Llevaba desde que salió Kubuntu 8.04 con la espina de que el brillo no me funcionaba, y era un rollo!!! Después de muchas búsquedas y de estar con la solución pero no saberla aplicar, la he encontrado!!!

Para activar el brillo es muy fácil, sólo hay que hacer un par de cosas bien:
  1. Identificar tu pantalla en /proc
  2. Ajustar los valores de tu pantalla
Para lo primero tienes que ir a:
#:/proc/acpi/video/>

ahí te saldrán varias carpetas, a mí me salen estas
  • VID
  • VID1
  • VID2
a otros les sale
  • VGA
eso supongo que dependerá del portátil.
Una vez que ya has visto cuáles tienes hay que probar cúal se corresponde con tu pantalla, pues supongo que tendrás tantas carpetas como posibles salidas de video.

Para saber cúal es la que se corresponde vamos probando con todas las carpetas haber cúal responde, en las mías sería:
  • #:/proc/acpi/video/>cat VID/LCD/brightness
  • #:/proc/acpi/video/>cat VID1/LCD/brightness
  • #:/proc/acpi/video/>cat VID2/LCD/brightness
Al menos en una de las salidas habrá sido algo parecido a esto:
levels: 72 48 12 24 36 48 60 72 84 100 current: 72

A mí me salió en VID y VID1, y elegí, por orden, VID.

Una vez hecho esto, ya tenemos la carpeta de nuestra pantalla y los valores del brillo.
Para cambiar el brillo simplemente:
#:/proc/acpi/video/>echo -n 100 > /proc/acpi/video/VID/LCD/brightness

Y tendréis el brillo al máximo!
Para cambiar el brillo, donde he puesto 100, se pondría uno de los valores que tienes en levels, esto es importante porque si pones otro valor NO FUNCIONARÁ.

Pero no vamos a estar escribiendo el comando siempre, para ello vamos a crear un script en /etc/acpi/:

En esa carpeta tendrás:
  • /etc/acpi/video_brightnessup.sh
  • /etc/acpi/video_brightnessdown.sh
Supuestamente serían los que controlan el brillo pero a mí no me funcionan, pero por si acaso vamos a hacer una copia de seguridad por si algún día son útiles.

#:/>mv /etc/acpi/video_brightnessup.sh /etc/acpi/video_brightnessup.sh.original #:/>mv /etc/acpi/video_brightnessdown.sh /etc/acpi/video_brightnessdown.sh.orig

Creamos los siguientes scripts en /etc/acpi/video_brightnessup.sh con nuestro editor favorito.

Para subir el brillo:
#:/>vi /etc/acpi/video_brightnessup.sh
#!/bin/bash


CURRENT=$(grep "current:" /proc/acpi/video/VID/LCD/brightness |awk '{print $2}')
case "$CURRENT" in

100)
echo -n 100 > /proc/acpi/video/VID/LCD/brightness;
;;
84)
echo -n 100 > /proc/acpi/video/VID/LCD/brightness;
;;
72)
echo -n 84 > /proc/acpi/video/VID/LCD/brightness;
;;
60)
echo -n 72 > /proc/acpi/video/VID/LCD/brightness;
;;
48)
echo -n 60 > /proc/acpi/video/VID/LCD/brightness;
;;
36)
echo -n 48 > /proc/acpi/video/VID/LCD/brightness;
;;
24)
echo -n 36 > /proc/acpi/video/VID/LCD/brightness;
;;
12)
echo -n 24 > /proc/acpi/video/VID/LCD/brightness;
;;
*)
echo -n 100 > /proc/acpi/video/VID/LCD/brightness ;
;;
esac


Para bajar el brillo:
#:/>vi /etc/acpi/video_brightnessup.sh
#!/bin/bash

CURRENT=$(grep "current:" /proc/acpi/video/VID/LCD/brightness |awk '{print $2}')

case "$CURRENT" in

12)
echo -n 12 > /proc/acpi/video/VID/LCD/brightness;
;;
24)
echo -n 12 > /proc/acpi/video/VID/LCD/brightness;
;;
36)
echo -n 24 > /proc/acpi/video/VID/LCD/brightness;
;;
48)
echo -n 36 > /proc/acpi/video/VID/LCD/brightness;
;;
60)
echo -n 48 > /proc/acpi/video/VID/LCD/brightness;
;;
72)
echo -n 60 > /proc/acpi/video/VID/LCD/brightness;
;;
84)
echo -n 72 > /proc/acpi/video/VID/LCD/brightness;
;;
100)
echo -n 84 > /proc/acpi/video/VID/LCD/brightness;
;;
*)
echo -n 48 > /proc/acpi/video/VID/LCD/brightness ;
;;
esac


Al igual que te he dicho antes, es importante que los valores que hay los sustituyas por los tuyos(los de antes del levels te acuerdas no?), estos scripts los saqué de bugs.launchpad.net y si te metes verás que sus valores y los míos cambian. Se hace para poder incrementar y decrementar el brillo poco a poco si no se te subirá el brillo al máximo y al mínimo.

Una vez tenemos esto, para subir y bajar el brillo lo tendremos que hacer ejecutando el archivo que hemos creado, aunque esto es un rollo pero como solución temporal sirve hasta que descubra como hacer una combinación del teclado.

Creamos accesos directos para poder ejecutar los archivos desde cualquier lado:
#:/>ln -s /etc/acpi/video_brightnessup.sh /usr/local/bin/sube_brillo
#:/>ln -s /etc/acpi/video_brightnessdown.sh /usr/local/bin/baja_brillo

Un saludo

martes, 27 de mayo de 2008

Openswan: ipsec en linux (I)

Ya que me he estado peleando con IPsec en linux voy a dejar los pasos que hay que seguir para crear un túnel en modo transporte mediante openswan. Supongo que sabrás que es esto de IPsec, y también teoría sobre túneles pues para poder entender que estas configurando lo necesitarás.

Voy a explicar la configuración necesaria para autenticarse mediante

  • Claves compartidas
  • RSA
  • Certificados X.509


Lo primero de todo es instalar openswan, yo lo hice desde los repositorios de debian y no tuve ningún problema en la instalación. Tengo entendido que si usas un kernel 2.6 no necesitas nada más, pero si tienes un kernel 2.4 vas a tener que parchearlo para añadir KLIPS. ( $:/>uname -r para saber el tuyo) A la hora de instalarlo te indica que si quieres opportunistic encryption yo le he dicho que no y tampoco quiero que me cree claves rsa ni certificados. Todo esto lo haremos nosotros.


Después de instalar openswan vamos a levantar el servicio:

#:/>/etc/init.d/ipsec start
ipsec_setup: Starting Openswan IPsec 2.4.9...
#:/>

Dependiendo del kernel que uses te saldran más o menos mensajes de salida, pero eso es lo de menos. Ahora vamos a comprobar que todo va bien:

#:/>ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path [OK]
Linux Openswan U2.4.9/K2.6.24-16-generic (netkey)
Checking for IPsec support in kernel [OK]
NETKEY detected, testing for disabled ICMP send_redirects [FAILED]

Please disable /proc/sys/net/ipv4/conf/*/send_redirects
or NETKEY will cause the sending of bogus ICMP redirects!

NETKEY detected, testing for disabled ICMP accept_redirects [FAILED]

Please disable /proc/sys/net/ipv4/conf/*/accept_redirects
or NETKEY will accept bogus ICMP redirects!

Checking for RSA private key (/etc/ipsec.secrets) [DISABLED]
ipsec showhostkey: no default key in "/etc/ipsec.secrets"
Checking that pluto is running [OK]
Two or more interfaces found, checking IP forwarding [FAILED]
Checking for 'ip' command [OK]
Checking for 'iptables' command [OK]
Opportunistic Encryption Support [DISABLED]
#:/>

Para solucionar esto es necesario ejecutar tres comandos que sólo los encontré en esta página. Los comandos ha ejecutar son:
#:/>for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $f; done
#:/>for f in /proc/sys/net/ipv4/conf/*/send_redirects; do echo 0 >; $f; done
#:/>echo 1 > /proc/sys/net/ipv4/ip_forward

Los dos primeros son necesarios para la denegar el envío y aceptación de paquetes ICMP de redirección y el último para aceptar la redirección de paquetes que no son nuestros.

Una vez ejecutados los comandos, la salida de ipsec verify es la siguiente:
#:/>ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path [OK]
Linux Openswan U2.4.9/K2.6.24-16-generic (netkey)
Checking for IPsec support in kernel [OK]
NETKEY detected, testing for disabled ICMP send_redirects [OK]
NETKEY detected, testing for disabled ICMP accept_redirects [OK]
Checking for RSA private key (/etc/ipsec.secrets) [DISABLED]
ipsec showhostkey: no default key in "/etc/ipsec.secrets"
Checking that pluto is running [OK]
Two or more interfaces found, checking IP forwarding [OK]
Checking NAT and MASQUERADEing [N/A]
Checking for 'ip' command [OK]
Checking for 'iptables' command [OK]
Opportunistic Encryption Support [DISABLED]
#:/>

Debes verificar esto cada vez que reinicies el ordenador.
Ahora llega el paso de configurar openswan, vamos a explicar el método de clave compartida(PSK).

Para configurar IPsec mediante clave compartida sólo hay que configurar dos archivos:
  • ipsec.secrets, (que estará en /etc/ipsec.secrets)
  • ipsec.conf, (que estará en /etc/ipsec.conf)
Vamos a empezar por ipsec.conf, editamos el fichero con nuestro editor favorito:

#:/>vi /etc/ipsec.conf

y añadimos al final:

conn linux-linux # Nombre de la conexión
authby=secret # Autenticación mediante clave compartida
left=192.168.1.100 # La IP del equipo de un lado del túnel
leftid=@laptop.dbx # Identificador de red del equipo, no te preocupes por esto puedes poner cualquier nombre
right=192.168.1.2 # La IP del equipo del otro lado del túnel
right=@xbase.dbx # Identificador del equipo
auto=add # Para levantar el túnel manualmente

(CUIDADO: todas la líneas referentes a una conexión necesitan un tabulado, es decir, desde la línea authby... hasta la última auto... necesitan ser tabuladas)
Creo que con los comentarios está todo bien explicado no??(sino esto no es lo tuyo...xD)
Esta configuración es para dos máquinas que estén en la misma red o que se vean entre sí. Si quisieramos conectar dos redes mediante Internet habría que añadir:

leftnexthop=%defaultroute
rightnexthop=%defaultroute

Con esto lo que conseguimos es que envíe los paquetes al router, y que sea el quién se encargue de llevarlos al otro extremo del túnel. Si esto lo pensamos es lógico, en la anterior configuración no era necesario puesto que estamos creando un túnel entre dos host de la misma red, y ellos saben encontrarse. Para ver que es lo que tiene openswan por defaultroute ejecutamos:
#:/>ipsec showdefaults
routephys=wlan0
routevirt=ipsec0
routeaddr=192.168.1.100
routenexthop=192.168.1.1
#:/>


Ahora vamos a por el otro archivo de configuración que nos queda, ipsec.secrets:

Puesto que la fortaleza de este método(autenticación mediante PSK) reside en la clave elegida, la propia herramienta permite generarnos una clave que podemos considerar segura.

#:/>ipsec ranbits 128
0x205e3332_93ed0e56_03b58c08_75ef2c4c
#:/>

No te preocupes por la clave, no hay que aprendersela!!xD Quedará en un fichero, así que revisad bien los permisos que sólo root pueda trabajar con el archivo.

Copiamos esa clave y la añadimos al fichero ipsec.secrets, nos quedará algo así:
#:/>vi /etc/ipsec.secrets

# RCSID $Id: ipsec.secrets.proto,v 1.3.6.1 2005/09/28 13:59:14 paul Exp $
# This file holds shared secrets or RSA private keys for inter-Pluto
# authentication. See ipsec_pluto(8) manpage, and HTML documentation.

# RSA private key for this host, authenticating it to any other host
# which knows the public part. Suitable public keys, for ipsec.conf, DNS,
# or configuration of other implementations, can be extracted conveniently
# with "ipsec showhostkey".

#Clave PSK para conexion linux-linux
192.168.1.100 192.168.1.2 : PSK "fe774cd2_309cb910_b1f869d4_23222782"

Una vez realizada la configuración copiamos los dos archivos a los dos extremos del túnel, 192.168.1.2 === 192.168.1.100, que es desde y hasta donde viajará la información cifrada.

Reiniciamos el servicio ipsec:
#:/>/etc/init.d/ipsec restart

Levantamos el túnel linux-linux:
#:/>ipsec auto --up linux-linux

Nos fijamos que al final nos salga algo así:
004 "linux-linux" #7: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_PRESHARED_KEY cipher=oakley_3des_cbc_192 prf=oakley_md5 group=modp1536}
117 "linux-linux" #8: STATE_QUICK_I1: initiate
004 "linux-linux" #8: STATE_QUICK_I2: sent QI2, IPsec SA established {ESP=>0xbf98f229 <0xd9165e59 xfrm=AES_0-HMAC_SHA1 NATD=none DPD=none}

Si es así, todo habrá ido bien. Para verificarlo podemos ejecutar:
#:/>/etc/init.d/ipsec status
IPsec running - pluto pid: 27918
pluto pid 27918
1 tunnels up
#:/>

Hay que recordar que las SA son unidireccionales, luego es necesario establecer una SA en cada dirección del túnel.(vamos que ejecutes ipsec auto --up linux-linux en las dos máquinas)


Si todo no ha sido tan bonito y han aparecido fallos, espero que no pues este es el método más sencillo, a mi me ayudó a solucionarlos cuando me aparecieron en la autenticación mediante certificados estos dos comandos:
#:/>ipsec auto --add
(en nuestro caso ipsec auto --add linux-linux)
No suele tener mensajes tan descriptivos como en auth.log.

Podemos ver los intentos de autenticación de ipsec, he de decir que son muy descriptivos, a mí me ayudó bastante.
#:/>tail -n 200 /var/log/auth.log


Una vez ya entiendes todo esto te dejo algunos enlaces por si quieres revisar/complementar:
Para la autenticación mediante rsa dejaré más enlaces.

Un saludo

David

sábado, 17 de mayo de 2008

Grave incidente en Debian - openssl con los prng

Ya os habréis enterado todos del problema que ha habido con los números pseudo aleatorios de openssl en el paquete de Debian.
No voy a comentar el problema, pues hay muchos mejores sitios que lo hacen con más conocimiento que yo, sólo voy a poner una lista de webs interesantes que tratan el tema. Lo grave de este bug, no es el bug en sí, sino que se han creado muchas dudas sobre el código abierto. Sobre este tema se puede leer los comentarios que se han dejado en el enlace de kriptopolis.

Webs que tratan el tema:

Webs con herramientas:

jueves, 8 de mayo de 2008

Apagar pc desde la consola de linux (I)

Si queremos apagar el pc desde la consola en linux con un usuario no-privilegiado el sistema no nos va a dejar. Tendríamos que hacer uso de sudo y escribir nuestra contraseña, pero esto para un comando como es shutdown, poweroff o reboot para apagar/reiniciar el sistema no lo veo adecuado. Entonces para poder apagar/reiniciar el sistema sin necesidad de contraseñas tenemos dos opciones:
  1. sudo
  2. permisos de linux
Para la primera opción, he encontrado una página en español donde explican muy bien todo el tema de sudo, sudoers y visudo.

Para ejecutar el comando mediante sudo y sin contraseña, se necesitan dar permisos a nuestro usuario para que pueda ejecutar el comando shutdown sin contraseña.Para ello,
  1. Abrir la línea de comandos
  2. Ingresamos como root y ejecutamos
    visudo#/ visudo o mediante $/ sudo visudo
  3. al final del fichero escribimos:
nombre_usuario ALL=(root) NOPASSWD: /usr/sbin/shutdown

donde
  • nombre_usuario es el usuario que queremos que ejecute shutdown sin contraseña.
  • NOPASSWD le decimos que no pida contraseña para los comando que le siguen, en nuestro

visudo

Una vez hecho esto, ya podemos ejecutar shutdown sin contraseña como si fuesemos root.

$/ sudo shutdown -P now

El único inconveniente de esta opción es que hay que escribir sudo... vale si no es mucho, pero con la segunda opción nos evitaremos el tener que escribir sudo.

Para no hacer un post muy largo dejo la opción de usar el sistema de permisos de linux para una segunda entrega.