2009-10-27

Control de Microfono en Ubuntu

En mi PC tengo instalado el skype y el micrófono me colocaba problemas, por lo que busque infinidad de soluciones y hasta en una de esas casi daño el kernel, todo por que el administrador de audio se veia así




Como se puede ver en los controles se ve el micrófono esta al máximo pero no funcionaba, ya habia revisado características que el modulo de la tarjeta estuviera bien y todo parecia estar bien, pero no funcionaba, entonces vi en preferencias un control que decia grabación como se ve en la siguiente imagen



Por lo que lo habilite, lo que genero otra pestaña en el control que decía Grabación y miren el control con el que viene




Si es lo que estan pensando, no se por que el Ubuntu biene con el sistema de entrada de audio apagado, es una cosa que aun no logro entender, pero si le habilitas hay y le subes y ya tienes microfono.

2009-10-26

Sincronizar Todos tus Marcadores de Navegación

Debido a que tanto en el PC de mi casa como en el de mi trabajo tengo muchos marcadores de las paginas que me sirven o de las que he encontrado información interesante, necesito tenerlas en todo lado, para esto gracias a Said mi compañero de trabajo conocí xmarks, una aplicación que te permite no solo tenerlas en tus PC's sino además vía web, la instalación es vía web ingresando a la siguiente url http://www.xmarks.com/ de hay bajas el instaldor para tu firefox o navegador que uses y sigues estos pasos




Inicio de la guia de instalación









Te pregunta si tienes o no cuenta, sino la tienes como en mi caso simplemente le indicas que no y sigues








Simplemente llenas lo parametros que te piden para crear la cuenta








Listo ya con eso el te pide reiniciar el firefox, y cunado reinicie te pide unos parámetros mas que son los que veremos a continuación







Tras haber reiniciado el Firefox



Te dice que si quieres que guarde tus contraseñas, yo particularmente le dijo que no, no me gusta que mis contraseñas estén por hay en otras maquinas que yo no controlo.







Empieza a sincronizar y a cargar tus datos








Listo terminaste








Ahora este procedimiento lo haces en cada PC que quieras meter dentro de tu sincronización y sale, espero que te sirva

2009-10-17

Creación y Control de Usuarios desde Consola

Muchas veces debes crear usuarios para una función o aplicación determinada pero no quieres que este usuario pueda hacer otras cosas, por ejemplo creas un usuario para un acceso a ftp pero no quieres que este usuario se pueda loguar al sistema por ssh, para esto en Linux existen los diferentes shell, que son como a los comando o aplicaciones que tu puedes usar, entonces para seguir con ejemplo del ftp vamos a ver como se crearia el usuario

root@localhost:~# adduser -g ftp -d /home/ftp/usuario -s /bin/false usuario

Con esto tenemos las siguientes características

-g Lo adicionamos a un grupo especifico, en este caso ftp
-d Le indicamos que directorio queremos que use y no que nos cree uno.
-s Le decimos que shell va a usar para que no nos asigne el de por defecto

Entonces para el control de que deseamos que se pueda o no hacer para cada usuario lo fundamental es saber que shell le asignamos, en Linux los shell que tienes disponibles son

/sbin/nologin, programa que de forma cortés rechaza el ingreso en el sistema (login).

/bin/false, programa que realiza salida inmediata indicando falla. Es decir, que no permite la realización de cosa alguna y además con falla. Ideal si se quiere tener cuentas de usuario con acceso hacia FTP, correo, Samba, etc., aunque sin permitir el acceso hacia un intérprete de mandatos.

/dev/null, el dispositivo nulo que descarta todos los datos escritos sobre éste y no provee datos para cualquier proceso que lo lea. Ideal para definirse cuando se quiere utilizar una cuenta que sólo tenga acceso a correo (SMTP, POP3, IMAP y/o cliente de correo con interfaz HTTP).

/bin/bash, intérprete de mandatos desarrollado por el proyecto GNU. Es el intérprete de mandatos predefinido en Linux y Mac OS X (a partir de Tiger).

/bin/sh, un enlace simbólico que apunta hacia /bin/bash y ofrece una versión simplificada de Bash muy similar a Bourne Shell (sh).

/bin/tcsh, una versión mejorada del de mandatos de C (csh).

Estas características de los shell las saque de un excelente libro llamado Alcance Libre, escrito por el señor Joel Barrios, es excelente y existe en versión digital solo deben buscarlo se los recomiendo.

Bueno entonces ya sabiendo eso decides segun tus necesidades cual le asignas a acá usuario, pero tiene un pequeña trampita para que funcionen como deseas, la trampita esta en que te tienes que fijar que esten en el archivo /etc/shells, por defecto en Ubuntu viene así

root@localhost:~# more /etc/shells
# /etc/shells: valid login shells
/bin/csh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/usr/bin/screen
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/false


Entonces revisas que este hay y listo, espero que les sirva

2009-10-16

Caracteristicas de Hardware de tu PC

Una forma de saber que puedes o no puedes hacer en cualquier sistema operativo es conocer exactamente que tiene tu PC en cuanto al hardware, y Linux como siempre te facilita el trabajo, con un simple comando te genera en formato html la información completa, esto es super útil para en una red tener todos los informes listos para presentar.

Bueno por defecto en Ubuntu 9.04 viene instalado, pero si no lo tienes la forma de instalarlo es

root@localhost:~# apt-get install lshw

Una vez instalado y solo como root, o con sudo lo ejecutas así si solo deseas ver la información

root@localhost:~# lshw

pero si deseas guardar la información en html y que la puedas ver en el navegador es sencillo solo es colocar

root@localhost:~# lshw -html > hwpc.html

Lo que te generara un archivo que con mozilla se ve así

2009-10-13

Paginas https con Certificados Propios

Debido a mi trabajo aprendí como crear los certificados SSL para las paginas https, esto lo hice siguiendo este buen manual sobre CentOS (distribución basada en redhat, muy buena para servidores). Obviamente como la explicación esta echa para este sabor tube que realizar ciertas pero diminutas variaciones, así que pues empecemos eso advierto es largo, un poco tedioso y sobre todo de mucho cuidado de lo que se esta haciendo, lo primero es saber si tienes el openssl actualizado e instalado, el cual se prueba así

root@localhost:~# openssl version
OpenSSL 0.9.8g 19 Oct 2007

Una vez echo esto crearemos los directorios donde guardaremos los datos del certificado, por defecto estos directorios se guardan con el nombre de CA pero la verdad puedes usar el nombre que desees, ya entenderas porque, ara nuestro ejemplo todo lo crearemos sobre el directorio de /etc/ssl/, pues me pareceque es el lugar mas apropiado para guardar el orden pero lo puedes colcoar donde quieras siempre y cuando sepas donde esta, entonces creas los 3 diretorios que necesitas así

root@localhost:/etc/ssl# mkdir CA
root@localhost:/etc/ssl# mkdir CA/certificados
root@localhost:/etc/ssl# mkdir CA/privado

sobre este mismo directorio se deben crear dos archivos que se usan en la base de datos para la creación de llaves, estos se crean así

root@localhost:CA# echo 01 > serial
root@localhost:CA# touch index.txt

Bueno ya tenemos los prerequisitos listos, entonces ahora toca cuadrar los parámetros de openssl.cnf, estos son docenas de parámetros pero pues no todos son completamente necesarios o mas bien para nuestro caso útiles, acá les muestros los parámetros que modifique y les muestro como los deje

dir = /etc/ssl/CA # ubicación del directorio
certs = $dir/certificados # donde se guardaran los certificados

crl_dir = $dir/privado # donde se guardan los crl
database = $dir/index.txt # Archivo index de la base de datos

countryName_default = CO # Id por defecto del país mi caso Colombia

stateOrProvinceName_default = Bogota DC # Nombre de la ciudad

localityName_default = Bogota # Nombre por defecto de la localidad

0.organizationName_default = Diego Samuel Ltd # Nombre por defecto de la organización

emailAddress_default = diego@samuel.com # Correo de contacto por defecto


Bueno iniciaremos con el proceso de la creación del certificado raiz, el cual nos permitira la autoridad para firmar los certificados CA que crearemos, para esto se tiene que tener en ceunta que lo primero que se solicitara es el passphrase o frase de contraseña, la cual debe ser bastante compleja, de mas de 10 caracteres con mayusculas, minusculas, numeros, simbolos y espacios, como ejemplo yo usare la siguiente

E1 fu7uR0 d31 Pl4net4 3$ta en TI

Bueno ahora ya con eso en la cabeza y claro que es la que vas a tener que saber y aprender, enviamos el comando para crear el certificado de la siguiente forma

root@localhost:/etc/ssl/CA# openssl req -x509 -newkey rsa:2048 -keyout privado/cakey.pem -out cacert.pem -days 3650 -config /etc/ssl/openssl.cnf

Esto nos generara la siguiente salida que si se fijan es lo que habíamos configurado

Generating a 1024 bit RSA private key
..............++++++ ......................++++++
writing new private key to 'privado/cakey.pem'

Enter PEM pass phrase:

Verifying - Enter PEM pass phrase:
----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. -----
Country Name (2 letter code) [CO]:
State or Province Name (full name) [Bogota DC]:
Locality Name (eg, city) [Bogota]:

Organization Name (eg, company) [Diego Samuel Ltd]:

Organizational Unit Name (eg, section) []:infraestructura
Common Name (eg, YOUR name) []:server.diegosamuel.com
Email Address [diego@samuel.com]


Ahora entenderemos lo que se hizo en el comando, por que la intensión es aprender no copiar, los parámetros de comando son los siguientes

req -new x509 = Administrador de requerimientos de firma para certificados x509, en este caso es un certificado autofirmado

keyout = Ubicación y nombre donde quedara la llave privada, por defecto se usa cakey.pem, pero en realidad puedes usar cualquier nombre siempre y cuando te acuerdes de cambiarlo en el openssl.cnf

out = Ubicación y nombre donde quedara el certificado ra, por defecto se usa cacert.pem, pero en realidad puedes usar cualquier nombre siempre y cuando te acuerdes de cambiarlo en el openssl.cnf

days = Número de días valido de la llave, para el caso 10 años

config = Ubicación del archivo de configuración a usar


Bueno ahora vamos a crear la llave privada, una solicitud de certificado y auto firmar dicha solicitud, todo esto lo hacemos en Linux con un comando el cual es el siguiente

root@localhost:/etc/ssl# openssl genrsa -des3 -out diegocert.pem -config /etc/ssl/openssl.cnf -passout pass:E1\ fu7uR0\ d31\ Pl4net4\ 3$ta\ en\ TI

Lo cual te genera lo siguiente como respuesta

Generating a 1024 bit RSA private key
.............++++++ ...............++++++ writing new private key to 'privkey.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [CO]:
State or Province Name (full name) [Bogota DC]:
Locality Name (eg, city) [Bogota]:

Organization Name (eg, company) [Diego Samuel Ltd]:

Organizational Unit Name (eg, section) []:infraestructura
Common Name (eg, YOUR name) []:server.diegosamuel.com
Email Address [diego@samuel.com]


Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

En el Common Name que se pregunta se debe colocar el FQDN o nombre de la maquina propiamente, en este caso que es inventado se coloco www.diegosamuel.com pero debes colocar el nombre de la maquina donde va a quedar este certificado, este proceso nos genera archivos el requerimiento de firma del certificado y la llave privada, que son los respectivamente diegocert.pem y privkey.pem, los nombres pueden variar pero tiene que tener en cuenta como los colocaron siempre para cambiar los archivos de configuración.

Bueno en este momento tenemos que hacer el requerimiento del certificado para que sea firmado por la autoridad certificadora que para el caso seremos nosotros mismos, por lo cual procederemos a realizar a continuación con un comando

root@localhost:/etc/ssl# openssl req -new -subj"/DC=diegosamuel.com/OU=com/CN=diegosamuel" -key diegocert.pem -passin pass:E1\ fu7uR0\ d31\ Pl4net4\ 3$ta\ en\ TI -out pet-cert-diego.pem -config /etc/ssl/openssl.cnf

Los parámetros que usamos en este comando sirven cada uno para lo siguiente

req -new = Indicamos que es una petición nueva y con parámetros

subj = Nos permite indicar a quien le pertenece el certificado, por eso se usan las comillas y los separadores /, donde se debn usar los datos de cada uno de ustedes

key = Indica la llave privada que usaremos

passin = La contraseña de la llave

out = Donde quedara guardada la petición


Bueno ya podemos emitir el certificado, para esto vamos a hacer una modificación mas en el archivo de configuración de openssl.cnf , que se encuentra en /etc/ssl y con un editor (vi usualmente), buscamos estas lineas y las dejamos así

basicConstraints = critical,CA:FALSE
extendedKeyUsage = serverAuth

Listo ahora si hacemos el certificado con el siguiente comando

root@localhost:/etc/ssl/CA# openssl x509 -CA cacert.pem -CAkey key.pem -req -in pet-cert-diego.pem -config /etc/ssl/openssl.cnf -days 3650 -sha1 -CAcreateserial -out certdiegosa.pem

Los parámetros son los mismos que anteriormente hemos visto y usado, el unico diferente es sha1, ya que este es el algoritmo de cifrado que usaremos, podemos usar sha 128 pero ya es mucho con sha1 es suficiente.

Bueno de todos los archivos creados tenemos que pasar los dos archivos que realmenten nos interesan a un directorio mas apropiado así

root@localhost:/etc/ssl/CA# cp -a certdiegosa.pem /etc/apache2/ssl
root@localhost:/etc/ssl/CA# cp -a diegocert.pem /etc/apache2/ssl

Y tenemos los certificados listos, ahora la configuración del apache para que sean usados correctamente, se deben adicionar las siguientes lineas en el ports.conf

listen 80
listen 443

Y en la configuración del VirtualHost sería así


DocumentRoot /var/www/diegosamuel
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/certdiegosa.pem
SSLCertificateKeyFile /etc/apache2/ssl/diegocert.pem
ServerName www.diegosamuel.com

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all



Bueno queda reiniciar el servicio y acá se presentara un pequeño inconveniente el cual resolvemos de una forma algo machetera, pero que te evitara problemas cuando se te reinicie la maquina y no estes hay para colocar la contraseña que te pide, entonces en /etc/sites-avaliables/default, y fuera de cualquier vitualhost colocas la siguiente línea

SSLPassPhraseDialog exec:/etc/apache2/clave

y ahora creamos ese "script" para que incerte la contraseña de la siguiente forma

root@localhost:~# vi /etc/apache2/clave

#!/bin/bash
echo
"E1 fu7uR0 d31 Pl4net4 3$ta en TI"


Y le damos permisos de ejecución para el propietario y solo para el propietario así

root@localhost:~# chmod 700 /etc/apache2/clave

Bueno listo con este tenemos el https listo con nuestro propio certificado