jueves, marzo 15, 2012

VSFTP +Django + MySQL


En una agencia conocida se creo un aplicativo con Django el cuál requiere de un servicio FTP donde los usuarios estarían en una base de datos con sus respectivos password. El detalle que se encontró es que Django genera su propio hash para guardar las contraseñas en MySQL así que se necesita del paquete de MySQL con PAM modificado. Así que mi compañera Laura le hizo algunas modificaciones para tener la funcionalidad con Django.

Tengo entendido que ya existe para Django pero aun no esta muy funcional y con el siguiente paquete modificado no se tuvo problemas.



1.- Antes de comenzar la compilación debemos tener instalado las librerías mhash.

yast2 -i mhash mhash-devel

2.- También debemos verificar si nuestro vsftpd tiene soporte con SSL. Sinos arrija algo parecido a lo de abajo entonces estamos bien.

[root@local] ldd /usr/sbin/vsftpd | grep libssl 
 libssl.so.0.9.8 => /usr/lib64/libssl.so.0.9.8 (0x00007faa603f2000) 
3.- Verificamos que al descomprimir nuestro paquete se respeten las ligas suaves depcomp y missing y que apunten a tu versión de automake.

Ahora si compilamos.

./configure --with-mhash

make
make install

4.- Al finalizar nos deb haber creado los siguiente módulos en

/lib/security/pam_mysql.la
/lib/security/pam_mysql.so

5.- Y creamos nuestras ligas suaves hacia la ruta /etc/security

pam_mysql.la -> /lib/security/pam_mysql.la
pam_mysql.so -> /lib/security/pam_mysql.so

También agregue estas por si las dudas.

pam_mail.so -> /lib/security/pam_mail.so
pam_mkhomedir.so -> /lib/security/pam_mkhomedir.so
pam_motd.so -> /lib/security/pam_motd.so

6.- Dentro de nuestra ruta /etc/security debemos tener el archivo pam_mysql.conf y lo editamos.

ppvm2:/etc/security # pam_mysql.conf
users.host= xxx.xxx.xxx.xxx
users.database= vsftpd
users.db_user=vsftpd
users.db_passwd= vsftpdpassword
users.table=accounts
users.user_column=username
users.password_column=password
users.password_crypt= django
users.where_clause= is_active = '1'
verbose=1


7.- Creamos nuestra base de datos.


CREATE DATABASE vsftpd;
GRANT SELECT ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'vsftpdpassword';
FLUSH PRIVILEGES;

USE vsftpd;

CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass
word` VARCHAR( 50 ) NOT NULL ,
UNIQUE ( `username` )
) ENGINE = MYISAM ;
exit;

8.- En nuestra ruta /etc/pam.d debemos tener el archivo vsftpd con el siguiente contenido.

auth required /lib/security/pam_mysql.so config_file=/etc/security/pam_mysql.conf try_first_pass=false
account required /lib/security/pam_mysql.so config_file=/etc/security/pam_mysql.conf try_first_pass=false
session required /lib/security/pam_mysql.so config_file=/etc/security/pam_mysql.conf try_first_pass=false

Iniciamos vsftpd

chkconfig vsftpd on

9.- Y esto nos genera el archivo de configuración vsftpd.conf en /etc/ yo tengo lo siguiente.

nopriv_user=ftpsecure
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=yes
guest_enable=YES
local_root=/srv/ftp/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf
virtual_use_local_privs=YES
user_sub_token=$USER

##For SSL setting
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
rsa_cert_file=/etc/ssl/vsftpd.pem

pasv_enable=YES
pasv_min_port=30300
pasv_max_port=30309
port_enable=YES

10.- Ahora si vemos la directiva user_config_dir=/etc/vsftpd_user_conf es donde guardamos los privilegios de nuestro usuarios si no existe la carpeta vsftpd_user_conf la creamos.

Por ejemplo creamos un archivo llamado test y le agregamos lo siguiente.
dirlist_enable=NO
download_enable=YES
write_enable=YES

11.- Observamos también que el home de los usuarios están apuntando con la directiva local_root=/srv/ftp/$USER

simplemente creamos su carpeta y le damos permisos de 770 y no olvidemos poner los privilegios del usuario y grupo del servicio que le pertenecen a vsftpd a la carpeta test.

12.- Y listo reiniciamos el servicio vsftpd

/etc/init.d/vsftpd restart

miércoles, febrero 29, 2012

MIGRAR RT 3.8.1 de RHE5 a SLE 11SP1

1.- Paquetes que se instalaron:

apache2
apache2-mod_auth-mysql
apache2-mod_perl
apache2-mod_python
perl-Apache-DBI
gd-devel
gcc
ncftp
fastcgi
openssl

2.- Respaldamos la Base de Datos y el archivo RT_SiteConfig.pm

mysqldump -u root -p  --skip-extended-insert --default-character-set=binary --databases rtdb_name   | gzip > dump.sql.gz

cp  RT_SiteConfig.pm  RT_SiteConfig.pm.original

3.- Descargamos el paquete rt-3.8.1.tar.gz se descomprime y ejecutamos los siguiente:

/configure --prefix=/opt/rt3 –with-web-user=rt --with-web-group=rt --with-db-database=rt3 --with-db-rt-pass=mipassword --with-db-type=mysql --with-rt-group=rt

4.- Después aseguramos algunos módulos de Perl ejecutando lo siguiente:

Entramos en modo consola.

perl -MCPAN -e shell

He instalamos.

perl -MCPAN -e 'install DBD::mysql'
perl -MCPAN -e 'install FCGI'
perl -MCPAN -e 'install Scalar::Util'

Ejecutamos el test para ver si no faltan módulos por instalar.


make testdeps


En el caso de Suse 11 SP 1 no encontró los siguientes módulos:

*******************************************************************

SOME DEPENDENCIES WERE MISSING.

GD missing dependencies:

GD::Graph...MISSING

GD::Text...MISSING

GD...MISSING

make: *** [fixdeps] Error 1

********************************************************************

Así que para corregir ese detalle se instalaron los siguientes paquetes desde Yast2:

perl-GD

perl-GD-Graph3d

perl-GDGraph

perl-GDTextUtil


5.- Como nuestra base de datos se encuentra en otro servidor editamos el archivo Makefile y buscamos las siguientes variables.

*********************************************************************

DB_DBA = rt

DB_HOST = La IP de mi Server Remoto


# If you're not running your database server on its default port,

# specifiy the port the database server is running on below.

# It's generally safe to leave this blank

DB_PORT = 3306

#

# Set this to the canonical name of the interface RT will be talking to the

# database on. If you said that the RT_DB_HOST above was "localhost," this

# should be too. This value will be used to grant rt access to the database.

# If you want to access the RT database from multiple hosts, you'll need

# to grant those database rights by hand.

#

DB_RT_HOST = La IP de mi Server Remoto

# set this to the name you want to give to the RT database in

# your database server. For Oracle, this should be the name of your sid

DB_DATABASE = rt3
DB_RT_USER = rt
DB_RT_PASS = mispassword

****************************************************************************

6.-Una vez ejecutado make vendrá la instalación de la DB con 'make initialize-database'

7.- Solo agregamos nuestra IP remota de nuestra BD en el archivo RT_SiteConfig.pm


Set($DatabaseHost, 'XXX.XXX.XXX.XXX');

Y con eso esta por termina nuestra migración solo importamos la base de datos y ¡ listo ! Solo faltaría configurar el apache pero eso es otra historia.

Algunas Referencias.


http://requesttracker.wikia.com/wiki/How_to_Migraci%C3%B3n_RT_3.6.6_to_4.01

http://requesttracker.wikia.com/wiki/ManualInstallation

jueves, febrero 23, 2012

INSTALACION DE FFMPEG EN SLE 11 SP 1

Algunas Ligas ponen al repositorio de http://packman.links2linux.org/ para instalar ffmpeg pero al instalar los paquetes marcaron un error en el hash y del Key.
Así que se agrego el repositorio de VLC
Agregamos repo.
zypper ar -f http://download.videolan.org/pub/vlc/SuSE/ VideoLAN
 
Desde YAST2 se instalaron los siguientes paquetes:
 - > (dependencia)

ffmpeg
libvpx.so.0
libschroedinger  -> liborc-0.4.so.0()(64bit),
libopencore-amrwb.so.0
libopencore-amrnb.so.0:
libmp3lame.so.0:
libmp3lame-devel

RPM descargados desde:
http://rpm.pbone.net/

liborc-0_4-0-0.4.6-2.1.x86_64.rpm
libjack0-0.109.2-63.7.x86_64.rpm
libx264-120-0.120-4.1.x86_64.rpm
libdc1394-22-2.0.2-10.23.x86_64.rpm
Tal vez falten algunas librerías por incluir pero son pocas. Ya que se pensó hacer este tutorial después de que ya habían sido instaladas.

domingo, febrero 05, 2012

Auriculares USB Logitech en LXDE sobre Debian 6.0

El detalle se presento cuando conectaba los auriculares USB logitech  no hacia el cambio automático y solo se mantenían las bocinas de la laptop, anteriormente ha este problema conectábamos los auriculares normales  al plugin de la laptop y tampoco hacían el cambio   así que  actualizamos el kernel de Debian 6.0 de 2.6.32  a  2.6.39-2  y se corrigió el problema de los auriculares con miniplug  pero el problema de los auriculares con USB se  mantuvo igual  mi laptop es una Toshiba L635 Satellite L635.

Verificamos que el sistema lo reconociera.
********************************************************************************
# lsusb

Bus 002 Device 005: ID 0930:0214 Toshiba Corp.
Bus 002 Device 004: ID 1d57:32ba
Bus 002 Device 003: ID 046d:0a01 Logitech, Inc. USB Headset
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 10f1:1a2a Importek
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
*********************************************************************************

# cat /proc/asound/modules
0 snd_hda_intel
1 snd_usb_audio


Observamos que la preferencia la tiene las bocinas internas de mi laptop.
La referencia fue tomada de:
http://debiantotal.blogspot.com/2008/01/auriculares-logitech-clearchat-comfort.html


Así que agregamos lo siguiente:
# vi /etc/modprobe.d/alsa-base - Añadir al final del archivo
# AURICULARES/MICRÓFONO USB LOGITECH - Dispositivo: /dev/dsp
options snd_usb_audio index=0
# INTEGRADA PORTÁTIL - AC97 - Dispositivo: /dev/dsp1
options snd-hda-intel index=1 model=basic position_fix=0 single_cmd=0
********************************************************************************************************
Lo que hice de mi parte fue
Detener la prioridad de la tarjeta interna de sonido.
# /etc/init.d/alsa-utils  stop 0
He iniciamos la de las USB
# /etc/init.d/alsa-utils  start 1


Reinicamos el alsasound
# /etc/init.d/alsasound restart


Observe que la barra de menu del LXDE desapareció me imagino por que tengo agregado al panel el icono de bocina
Reiniciamos la laptop  y listo tenemos mis auriculares USB en LXDE con Debian 6.0.
Solo que el icnono de la bocina en la barra de LXDE no aparecio pero no importa le incremento y bajo el volumen  con alsamixer  yeeeep!!  :)



# cat /proc/asound/modules 
 0 snd_usb_audio
 1 snd_hda_intel

lunes, enero 30, 2012

Error setuptools-0.6c11-py2.6.egg sobre SUSE 11.1

En una agencia conocida nos toco migrar de RHE a SUSE 11.1  y al tratar de instalar el setuptools   me arrojo el siguiente error.

UFWTSAVAP:/export/src # sh setuptools-0.6c11-py2.6.egg
error: can't create or remove files in install directory

The following error occurred while trying to add or remove files in the
installation directory:

    [Errno 2] No such file or directory: '/usr/local/lib64/python2.6/site-packages/test-easy-install-27075.pth'

The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

    /usr/local/lib64/python2.6/site-packages/

This directory does not currently exist.  Please create it and try again, or
choose a different installation directory (using the -d or --install-dir
option).
***********************************************************************
Ahora si vemos el paquete el distutils da el soporte para la construcción e instalación de modulos adicionales dentro de python y nos da la siguiente ruta.

$ cat /usr/lib64/python/distutils/distutils.cfg
[build_py]
optimize=0

[install]
prefix=/usr/local
optimize=0
***********************************************************************
Y la forma que se soluciono fue la siguiente aun no se si fue lo correcto.

mkdir -p /usr/local/lib64/python2.6/site-packages

viernes, enero 20, 2012


VSFTPD con FTPES


Hace  unos días me toco levantar un VSFTP, y se implantó de con TLS/SSL y de la forma EXPLICITA.
Es decir utilizamos el puerto 21 y agregamos un certificado en este caso lo creamos local.

Al realizar la configuración y  descargar Filezilla  me encontré con el siguiente error que daba Filezilla al conectarme:

GNUTLS  Error 53:

Y  cual era  el detalle básicamente necesitaba de otros puertos para la conexión TLS además de que nuestro FTP esta configurado de la forma pasiva de hecho esa configuración la tenia agregada en el vsftpd.conf  con los siguientes puertos.

pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40020
port_enable=YES

El problema se corrigio cambiando a los siguientes puertos.

pasv_enable=YES
pasv_min_port=30300
pasv_max_port=30309
port_enable=YES

También tenemos que ver que nuestro vsftpd este soportada para TLS/SSL si nos regresa lo siguiente todo esta bien.

[root@vps] ldd /usr/sbin/vsftpd | grep libssl
 libssl.so.4 => /lib/libssl.so.4 (0x4001e000)


Os dejo mi vsftpd.conf !

######################################################################
# No ANONYMOUS users allowed
anonymous_enable=NO
# Allow 'local' users with WRITE permissions (0755)
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
# if you want to LOG vsftpd activity then uncomment this log_ftp_protocol
# log_ftp_protocol=YES
connect_from_port_20=YES
# define a unique user on your system which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=vsftpd
chroot_local_user=YES
chroot_local_user=YES
listen=YES
# here we use the authentication module for vsftpd to check users name and passw
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# for users that are denied.
userlist_deny=yes
# here the vsftpd will allow the 'vsftpd' user to login into '/home/vsftpd/$USER directory
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
##For SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
##Este certificado se creo localmente
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
# PASV - passive ports for FTP (range 30300 - 30309 ; 100 PASV ports,
pasv_enable=YES
pasv_min_port=30300
pasv_max_port=30309
port_enable=YES
************************************************************************