8 nov 2008

Digest Authentication

Apache2 provee autenticacion de usuarios como mecanismo de control de acceso. La configuracion se puede realizar con el archivo .htaccess, la cual puede ser aplicada de forma distinta a cada directorio que se quiera proteger.

La authenticacion de usuario puede ser Basic o Digest. La authenticacion de tipo Digest ofrece mayor seguridad, ya que la clave que se transfiere puede ser cifrada en algoritmo md5. En cambio la authenticacion de tipo Basic transfiere el usuario y la clave como texto, por lo tanto es menos seguro.

Los pasos que se exponen a continuacion se realizaron en Debian Etch (4.0).

1. Editar la configuracion de Apache2 para que habilite la configuracion de autenticacion de usuarios por .htaccess

user@host# vim /etc/apache2/sites-available/default

# Archivo Apache2.conf o httpd.conf, en este caso el archivo default en debian etch
# Estaba como AllowOverride None, puede ser All o AuthConfig

<Directory /var/www/>


AllowOverride AuthConfig

</Directory>

2. Habilitar el modulo de authenticacion Digest
user@host# cd /etc/apache2/mods-enabled/
user@host# ln -s ../mods-available/auth_digest.load auth_digest.load

3. Recargar la configuracion de Apache2 y verificar que el modulo de Digest esta cargado
user@host#  apache2 -k graceful
user@host#  apache2 -M
auth_digest_module (shared)

4. Crear el usuario

user@host#  auth_digest_module (shared)
user@host#  cd /var/www/
user@host#  htdigest -c .DigestUsers Classified test
user@host#  chown www-data:www-data .DigestUsers
user@host#  chmod 640 .DigestUsers
user@host#  ls -l .DigestUsers

5. Crear el .htaccess en el directorio que se desea proteger
user@host#   cd /var/www/apache2-default/

AuthName Classified
AuthType Digest
AuthUserFile /var/www/.DigestUsers
Require valid-user

Nota: el AuthName debe ser igual al realm especificado con htdigest, en este caso "Classified"

27 oct 2008

Logitech ClearChat Comfort USB en Ubuntu 8.04

Hace poco compre unos audifonos Logitech ClearChat Comfort USB. Hacerlo funcionar en Ubuntu no fue cosa sencilla, por lo menos no para todos los programas.

El movie player (totem) y el Rhythmbox reconoce los audifonos y reproducen el sonido en los audifonos y no en los speakers de la laptop Dell Vostro 1310. Para esto tuve que ir a System->Preferences->Sound y especificar todos los Sound Playback como "USB Audio".

Para que funcionara para firefox/flash (youtube, google videos, etc) me costo otro poco, tuve que googlear bastante para encontrarme que se hace de la siguiente manera:
user@host$ asoundconf list
Names of available sound cards:
Intel
Headset
user@host$ asoundconf set-default-card Headset
Para GMplayer, se especifica el dispositivo de audio. En la version Gnome de Mplayer, hacer click derecho y seleccionar "Preferences", Seleccionar la pestaña "Audio", escoger el driver (OSS o quizas ALSA), y hacer click en el boton "Configure driver". Aparecera una pequeña ventana en donde se puede especificar el "Device", ahi debe colocar el device, en mi caso me aparecen 2 devices, el de la laptop "/dev/dsp" y el del Headset "/dev/dsp1".

24 oct 2008

Colores en Shell (Bash)

Los colores en shell ayudan a identificar facilmente al usuario, el sistema y tambien los tipos de archivos.

Esto se puede hacer facilmente editando el archivo .bashrc, el cual debe estar localizado en el directorio home (~) de cada usuario. En el archivo .bashrc agregar un alias para ls:


user@host$ vim ~/.bashrc
alias ls='ls --color=auto'
Tambien es posible especificar colores para el command prompt en el archivo .bashrc, o especificarlo en la variable de entorno PS1.

Los colores se especifican de la siguiente manera:
\[\033[32m\]
Lo que esta en color azul es una secuencia de escape que siempre debe estar para especificar un color, y lo que esta en color rojo es el codigo de color.

Los colores que hay disponibles son:

30m
31m
32m
33m
34m

35m
36m
37m
38m
39m
Un ejemplo de PS1:

PS1="\[\033[32m\]\u@\[\033[35m\]\h:\[\033[34m\]\W\$ "
en el ejemplo se puede observar la especificacion de colores, ademas estan otras secuencias de escape:

  • \u muestra el nombre del usuario
  • \h muestra el nombre del host
  • \W muestra el directorio de trabajo actual
  • \$ muestra $ para usuario normal y # para root
Una vez editado el archivo .bashrc tanto con el alias como con PS1, tienes que ejecutar el comando:

user@host$ source .bashrc
Tambien te puedes ayudar con el comando tput para conocer los colores:

user@host$ tput setaf 3 > color.txt
user@host$ less color.txt
puedes ejecutarlo pasandole desde 0 hasta 9 para obtener los codigos de color.

17 sept 2008

SSH con RSA key

Editado: Este procedimiento funciona tanto para linux como para Solaris 10

Es posible establecer un mecanismo más seguro para conectase a un servidor ssh, utilizando llaves rsa o dsa.

Los siguientes pasos son para generar y utilizar una llave rsa para conectarse por ssh:

1. Login a usuario normal

2. Si no existe el directorio ~/.ssh crearlo
$ mkdir ~/.ssh

3. Generar la llave
$ ssh-keygen -t rsa

4. Agregar la llave al archivo de llaves autorizadas
$ cat id_rsa.pub >> ~/.ssh/authorized_keys

5. Configurar el servidor ssh para que no acepte authenticación por usuario y password

6. Copiar la llave privada (id_rsa)

7. Reiniciar el servidor SSH

y por último utilizar la llave privada a la hora de conectarse al servidor.

10 sept 2008

Dumpear base de datos MYSQL con soporte para español

Cuando es necesario dumpear una base de datos que tiene contenido en español, es necesario especificarlo.

$ mysqldump --character-set latin1 -p base_de_datos > dump.sql

para restaurarlo es sencillo:

$ mysql -p -h servidor_msyql  base_de_datos < dump.sql 


Generar CSR para certificado SSL

Cuando deseas adicionar seguridad a tu sitio con HTTPS, tienes que generar un CSR o Certificate Signing Request. Esto se lo envias a una CA autorizada, ejemplo Verisign, para que lo firmen.

Pasos:

1. Generar CSR (Tu dominio es el Common Name, ejemplo: www.example.com)
$ openssl req -nodes -new -keyout private.key -out server.csr
2. Verificar la información (Opcional)
$ openssl req -text -noout -in certificate.csr

Listo, con eso tienes tu CSR para solicitar un certificado SSL para hacer tu sitio mas seguro. Ojo, solo debes entregar el CSR. La llave privada es PRIVADA!

8 sept 2008

Resetear password de mysql

Pasos para reiniciar el password de mysql.

1. Detener mysql
2. Iniciar mysql con "mysqld_safe --skip-grant-tables &"
3. Conectarse a la base de datos con "mysql -u root"
4. Ejecutar el query "UPDATE mysql.user SET password=PASSWORD('el_password') where User='root';
5. Ejecutar el query "FLUSH PRIVILEGES";
6. Detener mysqld con el comando "pkill mysql"
7. Iniciar mysql

27 may 2008

Certificado SSL con OpenSSL para Apache

Llevo rato sin postear, pero aqui va:

Para crear la llave privada:
# openssl req $@ -new -x509 -days 365 -nodes -out -keyout

Para crear el certificado:
# openssl req -new -x509 -key privatekey.pem -out cacert.pem -days 365

Se puede colocar la llave privada y el certificado en un mismo archivo:
# cat cacert.pem >> privatekey.pem

Habilitar SSL en httpd.conf

Configuracion en httpd-ssl.conf:
SSLCertificateFile "/usr/local/apache//ssl/SSLCert.pem"
SSLCertificateKeyFile "/usr/local/apache//ssl/SSLCert.pem"