Desactivar SElinux
instalar apache:
yum install php apr apr-util apr-util-ldap httpd httpd-tools mailcap php-cli php-common php-mbstring
yum install epel-release
sino
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh epel-release-6*.rpm
yum install php-pdo php-mssql php-odbc
Buscar este blog
viernes, 10 de abril de 2015
jueves, 9 de abril de 2015
Comandos para iptables in centos 6
agregar puerto 443 in rackspace
iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 443 -j ACCEPT
comando para guardar
service iptables save
comando para reinicia
service iptables restart
Comando para cargar un archivo de reglas
iptables-restore file ó
iptables-restore < file
Comando para guardar
service iptables save ó
iptables-save > file
luego restart
iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 443 -j ACCEPT
comando para guardar
service iptables save
comando para reinicia
service iptables restart
Comando para cargar un archivo de reglas
iptables-restore file ó
iptables-restore < file
Comando para guardar
service iptables save ó
iptables-save > file
luego restart
lunes, 30 de marzo de 2015
Custom android driver for devices
CUSTOM MADE DRIVER FOR ANDROID DEVICES ON WINDOWS
You need to modify 3 things in order to make Google USB driver work for any android phone on any Windows:
1-modify android_winusb.inf file.
2- Digitally sign the modified driver
3- modify adb
1-modify android_winusb.inf file.
2- Digitally sign the modified driver
3- modify adb
and here are the details:
1-modify android_winusb.inf
1-modify android_winusb.inf
the format to add is:
;Comment usually the device name
%SingleAdbInterface% = USB_Install, USB\; here you put VID and PID
%CompositeAdbInterface% = USB_Install, USB\; same as above but add the MI
%SingleAdbInterface% = USB_Install, USB\; here you put VID and PID
%CompositeAdbInterface% = USB_Install, USB\; same as above but add the MI
before i go on, vid is the usb vendor id; it doesn’t have to be the same for the same Device OEM: for example: MSI gets usb chip in MSI enjoy tablet from a company and usb chip in MSI enjoy plus tablets in another company (rockchip).
How to get the vid and pid : they are in drivers you are merging; but if you don’t have a driver for the device you can get it by opening device manager; then right-click the device – select properties-in new dialog go to Details tab >in property drop menu select hardware ids. for example you see something like:
USB\VID_2207&PID_0000&REV_0222&MI_01
USB\VID_2207&PID_0000&MI_01
USB\VID_2207&PID_0000&MI_01
take this value for composite adb device and remove MI for single adb device, you get
;MSI WindPad Enjoy 7 plus
%SingleAdbInterface% = USB_Install, USB\VID_2207&PID_0000
%CompositeAdbInterface% = USB_Install, USB\VID_2207&PID_0000&REV_0222&MI_01
;
%SingleAdbInterface% = USB_Install, USB\VID_2207&PID_0000
%CompositeAdbInterface% = USB_Install, USB\VID_2207&PID_0000&REV_0222&MI_01
;
copy this 2 line TWICE , once to [Google.NTx86] section and another to [Google.NTamd64] section
REPEAT for every device you want to support
Now an optional edit for [Strings] Section: edit
[Strings]
ProviderName = “Google, Inc.”
SingleAdbInterface = “Android ADB Interface”
CompositeAdbInterface = “Android Composite ADB Interface”
SingleBootLoaderInterface = “Android Bootloader Interface”
WinUSB_SvcDesc = “Android USB Driver”
DISK_NAME = “Android WinUsb installation disk”
ClassName = “Android Device”
ProviderName = “Google, Inc.”
SingleAdbInterface = “Android ADB Interface”
CompositeAdbInterface = “Android Composite ADB Interface”
SingleBootLoaderInterface = “Android Bootloader Interface”
WinUSB_SvcDesc = “Android USB Driver”
DISK_NAME = “Android WinUsb installation disk”
ClassName = “Android Device”
To:
[Strings]
ProviderName = “Google, Inc.”
SingleAdbInterface = “MSI ADB Interface”
CompositeAdbInterface = “MSI Composite ADB Interface”
SingleBootLoaderInterface = “MSI Bootloader Interface”
WinUSB_SvcDesc = “MSI USB Driver”
DISK_NAME = “MSI WinUsb installation disk”
ClassName = “MSI Tablet”
ProviderName = “Google, Inc.”
SingleAdbInterface = “MSI ADB Interface”
CompositeAdbInterface = “MSI Composite ADB Interface”
SingleBootLoaderInterface = “MSI Bootloader Interface”
WinUSB_SvcDesc = “MSI USB Driver”
DISK_NAME = “MSI WinUsb installation disk”
ClassName = “MSI Tablet”
2- Sign the driver:
Although the original google usb driver was signed by google , modifying android_winusb.inf will prevent installing it on windows 8 showning an error message

Although the original google usb driver was signed by google , modifying android_winusb.inf will prevent installing it on windows 8 showning an error message

The hash file is not present in the specified catalog file. The file is likely corrupt o the victim of tampering.
This is only in Windows 8. Windows 7 or earlier do not show this error message. You have to regenerate catalog file (probably with Windows SDK) and sign
Workaround: A workaround for internal tesing is to diable windows signature verification : either temporarily or permanently:
temporarily:
Go to left upper or lower corner of screen to open charms bar and click settings charm.
choose Change PC settings
choose General
Scroll down, and click ‘Restart now’ under ‘Advanced startup’.
Click ‘Troubleshoot’.
Click ‘Advanced Options’
Click ‘Windows Startup Settings’
Click Restart.
Click ‘Advanced Options’
Click ‘Windows Startup Settings’
Click Restart.
or
run cmd
and type:
and type:
shutdown -o -r -t 0
then after restarting choose ‘Disable driver signature enforcement‘ from the list . install your driver before restarting.
Permanently:
press Window+Q
search for cmd
right click cmd
choose run as administrator from action bar
type in cmd:
bcdedit -set loadoptions DISABLE_INTEGRITY_CHECKS
bcdedit -set TESTSIGNING ON
bcdedit -set TESTSIGNING ON
3- modify adb:
a bug in adb make it doesn’t connect to some device vendors. add usb vendor id to it and recompile. modified ad are available:
Workaround:
in the command line:
echo 0x0e79 >> “%USERPROFILE%\.android\adb_usb.ini”
this adds the vendor id to a file named adb_usb.ini in the user files
where 0e79 is the usb vendor id
sábado, 20 de diciembre de 2014
Tuning Mod Pagespeed
# Image Filters
ModPagespeedEnableFilters rewrite_images,insert_image_dimensions,inline_images,inline_preview_images,sprite_images,lazyload_images,convert_jpeg_to_progressive,jpeg_subsampling
# CSS Filters
ModPagespeedEnableFilters rewrite_css,move_css_above_scripts,combine_css,inline_css,flatten_css_imports,prioritize_critical_css,rewrite_style_attributes
# JS Filters
ModPagespeedEnableFilters rewrite_javascript,canonicalize_javascript_libraries,inline_javascript
# Misc Filters
ModPagespeedEnableFilters collapse_whitespace,trim_urls,remove_quotes,insert_dns_prefetch,extend_cache,inline_import_to_link
ModPagespeedEnableFilters prioritize_critical_css
ModPagespeedEnableFilters convert_jpeg_to_webp
ModPagespeedEnableFilters lazyload_images,inline_preview_images
ModPagespeedUseExperimentalJsMinifier on
ModPagespeedEnableFilters rewrite_images,insert_image_dimensions,inline_images,inline_preview_images,sprite_images,lazyload_images,convert_jpeg_to_progressive,jpeg_subsampling
# CSS Filters
ModPagespeedEnableFilters rewrite_css,move_css_above_scripts,combine_css,inline_css,flatten_css_imports,prioritize_critical_css,rewrite_style_attributes
# JS Filters
ModPagespeedEnableFilters rewrite_javascript,canonicalize_javascript_libraries,inline_javascript
# Misc Filters
ModPagespeedEnableFilters collapse_whitespace,trim_urls,remove_quotes,insert_dns_prefetch,extend_cache,inline_import_to_link
ModPagespeedEnableFilters prioritize_critical_css
ModPagespeedEnableFilters convert_jpeg_to_webp
ModPagespeedEnableFilters lazyload_images,inline_preview_images
ModPagespeedUseExperimentalJsMinifier on
martes, 11 de marzo de 2014
FTP pasivo in plesk panel
.....
.....
PassivePorts 57000 58000
# /sbin/modprobe ip_conntrack_ftp
# lsmod | grep conntrack_ftp
nf_conntrack_ftp 13696 0
nf_conntrack 61684 1 nf_conntrack_ftp
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# /sbin/modprobe ip_nat_ftp
To keep the changes after the system boot, the modules should be added into /etc/sysconfig/iptables-config, toIPTABLES_MODULES line (space-separated).
lunes, 24 de febrero de 2014
Instalar DKIM in CentOS 6 con Plesk Panel
Esta semana tuve la oportunidad de asumir el reto de instalar opendkim en centos 6 con plesk para poder firmar nuestros correos y asi llegar a bandeja. Eso es lo que usan ahora las empresas dedicadas al negocio de envio de email como servicio por ejemplo Amazon SES y Mailgun de Rackspace, estos dos son muy buenos ejemplos. Pero ahora la idea es hacer lo mismo en nuestros propios servidores.
http://www.rosehosting.com/blog/how-to-install-and-integrate-opendkim-with-postfix-on-a-centos-6-vps/
http://blog.matoski.com/articles/spf-dk-dkim-plesk-debian/
http://stevejenkins.com/blog/2010/09/how-to-get-dkim-domainkeys-identified-mail-working-on-centos-5-5-and-postfix-using-opendkim/
Despues de haber instalado open dkim hacemos lo siguiente:
si no esta creada la carpeta /etc/opendkim/keys la creamos sino omitimos el primer comando:
mkdir -pv /etc/opendkim/keys chown -Rv opendkim:opendkim /etc/opendkim chmod go-rwx /etc/opendkim/*
Luego creamos una carpeta con el dominio y generamos la firma digital y asignamos permisos
mkdir -p /etc/opendkim/keys/myserverplace.de cd /etc/opendkim/keys/myserverplace.de opendkim-genkey -d myserverplace.de -s mail chown -Rv opendkim:opendkim /etc/opendkim/keys/myserverplace.de chmod -v u=rw,go-rwx *
Luego asignar permisos 644 a Trustedhost,SigninTable y Keytable
Luego asignar permisos 700 a la carpeta y subcarpetas de keys
Luego editar nuestro archivo Trustedhost y poner las ips o dominios permitidos
En el archivo Keytable poner lo siguiente
mail._domainkey.linkwebservices.com linkwebservices.com:mail:/etc/opendkim/keys/linkwebservices.com/mail.private
En el archivo Signingtable poner lo siguiente:
*@linkwebservices.com mail._domainkey.linkwebservices.com
Una vez que hagamos esto ir a la configuracion dns de nuestro dominio y agregar un registro txt llamado _mail.domainkey debe quedar como lo siguiente :
mail._domainkey.linkwebservices.com TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7KtU5uKKA5GJsghjQ/FzFcY0ryDsmoUMcICR2uie22gJqZ016gIHxwSWMbMjz/EliHTMrpJPMmMGQ0YU9NnuBlCWbM8XyVSrj7QWFVvbF/tXBp3COatoOWw3qVfzSBZ4NwaZXLVdU/c5jZJiyWpKgJJCxHTxkoXWDvgcXmr4LeQIDAQAB
Pueden testear su registro dns con estas dos herramientas.
chown -R 700 keys/
chown -R opendkim:opendkim keys/
volvemos a reiniciar los servicios
service opendkim restart
service postfix restart
ahora si ya esta todo configurado correctamente :D
http://www.rosehosting.com/blog/how-to-install-and-integrate-opendkim-with-postfix-on-a-centos-6-vps/
http://blog.matoski.com/articles/spf-dk-dkim-plesk-debian/
http://stevejenkins.com/blog/2010/09/how-to-get-dkim-domainkeys-identified-mail-working-on-centos-5-5-and-postfix-using-opendkim/
## wget -P /tmp http://mirror.pnl.gov/epel/6/i386/epel-release-6-8.noarch.rpm ## rpm -Uvh /tmp/epel-release-6-8.noarch.rpm ## rm -f /tmp/epel-release-6-8.noarch.rpm
Install the package usingyum:## yum install opendkim
Despues de haber instalado open dkim hacemos lo siguiente:
si no esta creada la carpeta /etc/opendkim/keys la creamos sino omitimos el primer comando:
mkdir -pv /etc/opendkim/keys chown -Rv opendkim:opendkim /etc/opendkim chmod go-rwx /etc/opendkim/*
Luego creamos una carpeta con el dominio y generamos la firma digital y asignamos permisos
mkdir -p /etc/opendkim/keys/myserverplace.de cd /etc/opendkim/keys/myserverplace.de opendkim-genkey -d myserverplace.de -s mail chown -Rv opendkim:opendkim /etc/opendkim/keys/myserverplace.de chmod -v u=rw,go-rwx *
Luego asignar permisos 644 a Trustedhost,SigninTable y Keytable
Luego asignar permisos 700 a la carpeta y subcarpetas de keys
Luego editar nuestro archivo Trustedhost y poner las ips o dominios permitidos
En el archivo Keytable poner lo siguiente
mail._domainkey.linkwebservices.com linkwebservices.com:mail:/etc/opendkim/keys/linkwebservices.com/mail.private
En el archivo Signingtable poner lo siguiente:
*@linkwebservices.com mail._domainkey.linkwebservices.com
Una vez que hagamos esto ir a la configuracion dns de nuestro dominio y agregar un registro txt llamado _mail.domainkey debe quedar como lo siguiente :
mail._domainkey.linkwebservices.com TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7KtU5uKKA5GJsghjQ/FzFcY0ryDsmoUMcICR2uie22gJqZ016gIHxwSWMbMjz/EliHTMrpJPMmMGQ0YU9NnuBlCWbM8XyVSrj7QWFVvbF/tXBp3COatoOWw3qVfzSBZ4NwaZXLVdU/c5jZJiyWpKgJJCxHTxkoXWDvgcXmr4LeQIDAQAB
Pueden testear su registro dns con estas dos herramientas.
Los siguientes pasos son configurar nuestro archivo /etc/opendkim.conf y /etc/postfix/main.cf
El contenido del primer archivo debe quedar asi:
##
## opendkim.conf -- configuration file for OpenDKIM filter
##
Canonicalization relaxed/relaxed
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
LogWhy Yes
MinimumKeyBits 1024
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SigningTable refile:/etc/opendkim/SigningTable
Socket inet:8891@127.0.0.1
Syslog Yes
SyslogSuccess Yes
TemporaryDirectory /var/tmp
UMask 022
UserID opendkim:opendkim
Y en el segundo archivo añadimos al final lo siguiente:
# OpenDKIM
#milter_protocol = 6
smtpd_milters = , inet:127.0.0.1:8891, inet:127.0.0.1:12768
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
Comentamos la linea del protocolo porque no me funciono a pesar de que en el blog de matoski de donde obtuve información decia que si le funcionó sin nigun problema. Igual pueden probar de las dos formas, ya lo dejo a criterio de ustedes.
Finalmente reiniciamos opendkim y postfix
service opendkim restart
service postfix restart
con hacer esto deberia de terminar todo, pero no es asi, por alguna razon, cuando reiniciamos opendlim, genera un certificado por defecto el cual resetea los permisos de nuestra carpeta keys, hay que cerciorarnos de que la carpeta keys tenga los permisos correspondientes que señalamos arriba
chown -R opendkim:opendkim keys/
volvemos a reiniciar los servicios
service opendkim restart
service postfix restart
ahora si ya esta todo configurado correctamente :D
no olvidar setear opendkim como servicio de inicio para que se inicie cuando bootee el sistema:
chkconfig opendkim on
Con eso deberia poder estar firmando sus correos, y mas un spf valido deberian estar llegando a bandeja de entrada en gmail y outlook y otros servicios que usen DKIM, ojo el ip tambien debe estar limpio, no tener requisitorias de haber sido usado para enviar spam, porque por ejemplo yahoo bloquea ips que han tenido un historial malo, y asi usen dkim, los seguira rechazando, ojo con eso.
Este tutorial se puede aplicar a aquellas direcciones ips que sabiendo que estan limpias, no llegan a bandeja de entrada y lo envian a la carpeta de spam. Con esto deberian los emails llegar a bandeja. Al menos yo lo comprobe con el dominio que hice las pruebas y todo fue exitoso.
Pueden enviar un email a estas direcciones para obtener un reporte de spf, domainkeys y DKIM
- check-auth@verifier.port25.com
- AAAA3QcKCQwA@appmaildev.com
Saludos.
sábado, 25 de enero de 2014
¿Problemas con el cron en Plesk?
Cuando no se ejecuten las tareas programadas en linux, es porque por defecto no tienen acceso a la shell /bin/sh.
Para permitir el acceso ejecuten esta sentencia.
/usr/local/psa/bin/server_pref -u -crontab-secure-shell "/bin/sh"
para quitar el permiso se ejecutar lo siguiente
/usr/local/psa/bin/server_pref -u -crontab-secure-shell ""
Para permitir el acceso ejecuten esta sentencia.
/usr/local/psa/bin/server_pref -u -crontab-secure-shell "/bin/sh"
para quitar el permiso se ejecutar lo siguiente
/usr/local/psa/bin/server_pref -u -crontab-secure-shell ""
miércoles, 22 de enero de 2014
Limpiando la cola de correos en Plesk
Me gustaria explicar como limpiar la cola de correos de qmail, en un servidor que esta corriendo usando Plesk. A continuacion mostrare dos metodos. Los metodos mencionados solo eliminan los correos de la cola y nada más.
Primero revisaremos los correos en cola usando la herramienta qmail-qstat:
[root@test /]# /var/qmail/bin/qmail-qstat
messages in queue: 22463
messages in queue but not yet preprocessed: 22
Para eliminar los mensajes de la cola SIEMPRE para el servicio primero, para evitar tener que reconfigurar Qmail otra vez.
service qmail stop
Una vez que el servicio esta para ejecuta los siguientes comandos, uno por uno, basado en el numero de carpetas que tengas dentro de queue. Esto puede tomarse su tiempo.
find /var/qmail/queue/mess -type f -exec rm {} \;
find /var/qmail/queue/info -type f -exec rm {} \;
find /var/qmail/queue/local -type f -exec rm {} \;
find /var/qmail/queue/intd -type f -exec rm {} \;
find /var/qmail/queue/todo -type f -exec rm {} \;
find /var/qmail/queue/remote -type f -exec rm {} \;
Finalmente inicia el servicio y asegurate que la cola ha sido eliminada.
service qmail start
Para automatizar el proceso, puedes usar estos dos scripts disponibles, (basicamente estan mejorando las mismas operaciones nombradas anteriormente). Para quellos que reciban un sobrerecargado file truncating, por favor usen el segundo script. Toma un poco mas de tiempo, pero la cola de correos es eliminada.
wget http://dragos.fedorovici.com/qmailclear.sh
wget http://dragos.fedorovici.com/qmailclean.sh
sh qmailclean.sh
sh qmailclear.sh
Etiquetas:
Clear queue,
Limpiar cola de correo,
Plesk
miércoles, 5 de junio de 2013
Manual Vsftpd in suse 11
INTRODUCCIÓN
INSTALACIÓN
CONFIGURACIÓN BÁSICA
CONEXIONES SEGURAS UTILIZANDO SSL
ENLACES
INTRODUCCIÓN
Este pequeño documento tiene como objetivo indicar los principales pasos para configurar un servicio ftp en openSUSE utilizando el reconocido servidor VSFTPD(Very Secure FTPD). Aclaro que en la mayoría de los casos las configuraciones son realizadas editando directamente los archivos de configuración, para esto pueden utilizar el editor de texto de su preferencia (Yo utilizo el Vim =)).
INSTALACIÓN
Para instalar el paquete del servidor VSFTPD lo hacemos desde “Yast → Software → Instalar/desinstalar Software” donde buscamos el paquete con nombre “vsftpd”, lo seleccionamos, comprobamos las dependencias y lo instalamos.
Todas los demás paquetes que necesitaremos más adelante posiblemente ya han sido instalados por defecto con el sistema operativo (paquetes pam, openssl, openssl-certs, db-utils, etc.) ya que son paquetes fundamentales para otras aplicaciones básicas, no obstante, podemos verificar su instalación desde Yast.
Cuando hayamos culminado con la instalación probamos levantar el servicio abriendo una consola en la cual nos conectamos como root (gabriel@superserver:~> su -) y ejecutamos el siguiente comando:
si el servicio se levantó correctamente saldrá el siguiente mensaje:
Paramos nuevamente el servicio con el comando service vsftpd stop, accedemos nuevamente al Yast y nos dirigimos a “Sistema → Editores de niveles de ejecución” donde verificamos que en modo experto estén marcadas las opciones 3 y 5 de los niveles de ejecución para el servicio vsftpd, lo que permite que el servicio se inicie automáticamente cada vez que se encienda el equipo. Concluido con estos pasos, continuamos con la configuración del servicio en sí.
CONFIGURACIÓN BÁSICA
El archivo de configuración del servidor VSFTPD se encuentra en el directorio /etc/ y se llama vsftpd.conf, el cual vamos a tener que modificar con cualquier editor de texto que sea de nuestra preferencia.
Las directivas o comandos que se van a especificar en esta sección son las necesarias para montar un servidor ftp básico que permite la conexión de usuarios locales del sistema operativo como así también de usuarios anónimos.
Obs: Antes de comenzar a modificar un archivo de configuración, nunca hay que olvidarse de hacer una copia de seguridad del mismo, así siempre tendremos a mano una versión original para restaurar la configuración por defecto sin perder mucho tiempo
.
Abrimos el archivo conectados como root:
A continuación se citarán las principales directivas que deberán estar definidas (descomentadas) en el archivo de configuración seguidos de sus respectivos parámetros, hay muchas otras directivas que se pueden consultar en http://vsftpd.beasts.org/vsftpd_conf.html, toda línea que lleve al principio el carácter almohadilla (#) será interpretado como un simple comentario.
Configuraciones Generales:
Configuración para usuarios Locales:
Configuración para usuarios Anónimos:
La configuración que viene más adelante está ideada para que los usuarios que se conectan anónimamente, no puedan subir archivos, sino solamente descargar aquellos compartidos por el administrador del servicio.
Antes de comenzar con la modificación de las directivas de la sección “Anonymus FTP user Settings” del archivo vsftpd.conf, necesitamos crear una carpeta en el sistema de archivos que será utilizada como el directorio raíz para las conexiones anónimas, con la instalación por defecto del servidor vsftpd en openSUSE 10.3, el directorio para usuarios anónimos se encuentra por defecto en /srv/ftp/, este directorio es el HOME del usuario de sistema “ftp” dueño del servicio (Ver Yast → Seguridad y Usuarios → Gestión de Usuarios → Definir Filtro: Usuarios del Sistema → Usuario FTP → Ver Detalles). Previendo la posterior utilización de dicho directorio para albergar a los usuarios virtuales, coloqué una nueva carpeta en dicho directorio llamada anónimo (/srv/ftp/anonimo) :
asignándole el dueño:grupo y los permisos de forma idéntica a la carpeta “ftp” que se encuentra en /srv, esto lo comento porque cuando coloqué otros permisos a la carpeta “anonimo”, las conexiones anónimas no funcionaron correctamente.
Esta carpeta (/srv/ftp/anónimo) será la que contendrá los archivos compartidos para los usuarios conectados como anónimos.
Continuación de la configuración del archivo vsftpd en la sección “Anonymus FTP user Settings”:
Configuración de logs:
Configuraciones relacionadas a Transferencias:
Bueno, hasta este punto ya tenemos configurado un servidor ftp básico que acepta conexiones de usuarios locales que pueden realizar downloads & uploads así como también acepta conexiones de usuarios anónimos que solamente tienen autorización para realizar descargas. Para poner nuevamente en marcha el servicio guardamos y salimos del archivo de configuración y ejecutamos el comando:
y si todo salió según lo planeado deberá aparecer una línea que indique que el servicio se inició correctamente:
No hay que olvidarse de autorizar los puertos correspondientes al servicio vsftpd y del rango de puertos destinados a las conexiones pasivas en el Firewall de openSUSE en el caso de que el mismo se encuentre activo.

Servicio vsftpd autorizado en el firewall.

Rangos de puertos para conexiones pasivas autorizados en la ventana
de Opciones Avanzadas.
USUARIOS VIRTUALES
Vamos a incorporar un punto más a favor de la seguridad evitando usar los usuarios locales para conectarnos al servidor ftp, para ello vamos a implementar el método de autenticación combinando PAM y bases de datos db (Berkeley Database) que son muy simples de manipular, para ello necesitamos tener instalados los paquetes db-utils y pam, que ya suelen estar instalados por defecto.
Para generar la tabla que contendrá los usuarios virtuales y sus respectivas contraseñas primeramente debemos crear un archivo de texto plano donde cargaremos esos datos, para ello nos dirigimos al directorio /etc/vsftpd que creamos anteriormente, ahí adentro creamos un nuevo archivo llamado por ejemplo “logins.txt”
le establecemos permisos de lectura y escritura solo para el usuario root con el comando:
y le agregamos un contenido similar a:
donde la primera línea corresponde al login del usuario virtual gabriel y la segunda a la contraseña del mismo, ya en la tercera línea se agrega otro nuevo login, en este caso jorge y que sigue el mismo procedimiento que las 2 primeras líneas (Arriba login y abajo la contraseña). Una vez que hayamos ingresado todos los usuarios virtuales que deseamos, preparamos un script que ejecutará una serie de comandos para generar la tabla db que es interpretable por el módulo pam.
Para el script creamos otro nuevo archivo también en el directorio /etc/vsftpd/ llamado “generar_db.sh” y le agregamos el siguiente texto:
le asignamos el permiso de ejecución al archivo “generar_db.sh”:
y luego ejecutamos el script:
Con esto creamos el archivo “vsftpd_login.db” en el directorio /etc/vsftpd/, listo para ser utilizado.
El siguiente paso consiste en modificar el archivo de configuración PAM del servicio vsftpd, este archivo lo podemos encontrar en el directorio /etc/pam.d/ y debería llevar el mismo nombre especificado en la directiva “pam_service_name”, en este caso “vsftpd”.
Antes de editar el archivo, hacemos una copia de seguridad del mismo y nos aseguramos que el servicio ftp no esté corriendo, verificado esto, editamos el archivo comentando todas sus líneas anteponiendo el carácter #, y le agregamos las siguientes líneas:
Estas líneas permiten que los usuarios que se conecten al servicio ftp sean validados contra los registros que contiene la tabla vsftpd_login.db que hemos creado.
Como de ahora en más ya no se podrá acceder con los usuarios locales, se tiene que especificar al servidor vsftpd que un usuario local se encargará de gestionar todos los usuarios virtuales que se conecten, también aprovecharemos para agregar el directorio de donde el servidor vsftpd tendrá que buscar la configuración personal de cada usuario virtual, para lo que nuevamente editamos el archivo de configuración /etc/vsftpd.conf y agregamos las siguientes líneas al final del archivo:
Guardamos los cambios del archivo vsftpd.conf y creamos el directorio indicado en la directiva “user_config_dir” dentro de la carpeta /etc/vsftpd/:
En su interior creamos por cada usuario virtual que agregamos a la tabla “vsftpd_login.db” un archivo de texto plano con el mismo nombre del login del usuario.
Por ejemplo editamos el archivo “gabriel” recientemente creado y le agregamos las siguientes líneas:
Lo mismo podemos agregar al archivo “jorge”, obviamente indicando otro directorio personal. Ahora solo nos resta crear los directorios personales para ambos usuarios virtuales (gabriel y jorge) en el directorio /srv/ftp/, cambiarlos de dueño y asignar los permisos correspondientes:
El siguiente paso es activar nuevamente el servicio (service vsftpd start) para comprobar su funcionamiento con los usuarios virtuales que hemos agregado, además las conexiones anónimas deberán seguir funcionando, solamente los usuarios locales ya no podrán conectarse al servidor.
CONEXIONES SEGURAS UTILIZANDO SSL
Como el protocolo ftp no encripta la información que fluye entre la aplicación cliente y el servidor, los datos como ser contraseñas, logins, etc. pueden ser obtenidos con mucha facilidad por personas con malas intenciones o simplemente curiosos mediante el escaneado de paquetes que circulan a través de la red. Para evitar estos casos, se puede activar la encriptación de paquetes utilizado ssl para tener un servicio ftp seguro (ftps).
El primer paso consiste en generar un Certificado SSL, para ello necesitamos tener instalados los paquetes openssl y openssl-certs. Nos dirigimos al directorio /etc/ssl/certs y ahí ejecutamos el siguiente comando:
Para preparar el certificado, el comando openssl nos solicitará que ingresemos varios datos como ser país, provincia, ciudad, empresa, nombre, email, etc., esta información luego aparecerá en el certificado que cualquier usuario deberá aceptar para hacer uso del protocolo seguro. Cuando finalice tendremos el certificado concluido con el nombre vsftpd.pem.
Para el siguiente paso paramos el service ftp en el caso de que lo tengamos corriendo (service vsftpd stop) y editamos el archivo de configuración vsftpd.conf, nos dirigimos hasta el final donde agregaremos las siguientes líneas
Por ultimo iniciamos nuevamente el servicio vsftpd (service vsftpd start) y probamos establecer conexiones seguras utilizando clientes que soportan esta funcionalidad como ser los clientes FilleZilla, gfTP, etc.
ENLACES
Sitio Web de Vsftpd: http://vsftpd.beasts.org/
Completa Lista de Directivas para el archivo vsftpd.conf: http://vsftpd.beasts.org/vsftpd_conf.html
INSTALACIÓN
CONFIGURACIÓN BÁSICA
Configuraciones GeneralesUSUARIOS VIRTUALES
Configuración para usuarios Locales
Configuración para usuarios Anónimos
Configuración de logs
Configuraciones relacionadas a Transferencias
CONEXIONES SEGURAS UTILIZANDO SSL
ENLACES
INTRODUCCIÓN
Este pequeño documento tiene como objetivo indicar los principales pasos para configurar un servicio ftp en openSUSE utilizando el reconocido servidor VSFTPD(Very Secure FTPD). Aclaro que en la mayoría de los casos las configuraciones son realizadas editando directamente los archivos de configuración, para esto pueden utilizar el editor de texto de su preferencia (Yo utilizo el Vim =)).
INSTALACIÓN
Para instalar el paquete del servidor VSFTPD lo hacemos desde “Yast → Software → Instalar/desinstalar Software” donde buscamos el paquete con nombre “vsftpd”, lo seleccionamos, comprobamos las dependencias y lo instalamos.
Todas los demás paquetes que necesitaremos más adelante posiblemente ya han sido instalados por defecto con el sistema operativo (paquetes pam, openssl, openssl-certs, db-utils, etc.) ya que son paquetes fundamentales para otras aplicaciones básicas, no obstante, podemos verificar su instalación desde Yast.
Cuando hayamos culminado con la instalación probamos levantar el servicio abriendo una consola en la cual nos conectamos como root (gabriel@superserver:~> su -) y ejecutamos el siguiente comando:
Código:
superserver:/ # service vsftpd start
Código:
Starting vsftpd done
CONFIGURACIÓN BÁSICA
El archivo de configuración del servidor VSFTPD se encuentra en el directorio /etc/ y se llama vsftpd.conf, el cual vamos a tener que modificar con cualquier editor de texto que sea de nuestra preferencia.
Las directivas o comandos que se van a especificar en esta sección son las necesarias para montar un servidor ftp básico que permite la conexión de usuarios locales del sistema operativo como así también de usuarios anónimos.
Obs: Antes de comenzar a modificar un archivo de configuración, nunca hay que olvidarse de hacer una copia de seguridad del mismo, así siempre tendremos a mano una versión original para restaurar la configuración por defecto sin perder mucho tiempo
Abrimos el archivo conectados como root:
Código:
superserver:/ # vi /etc/vsftpd.conf
Configuraciones Generales:
Código:
#!/bin/bash
# Ejemplo del archivo de configuración /etc/vsftpd.conf
# General Settings
#
# Permite el modo escritura.
write_enable=YES
# Activa mensajes de directorio.
dirmessage_enable=YES
# Mensaje de bienvenida
ftpd_banner=Bienvenido al servidor ftp de GK - Powered by openSuSE 10.3
Código:
# Local FTP user Settings # # Permite que usuarios locales puedan conectarse. local_enable=YES # Enjaula a los usuarios locales dentro de su propio directorio personal, # esta opción mejora la seguridad. chroot_local_user=YES # Permite especificar una lista con los usuarios locales a los cuales no # se les enjaulará cuando la opción chroot_local_user = YES. chroot_list_enable=YES # Especifica la ruta en donde se encuentra la lista, en mi caso he creado una # carpeta en el directorio /etc llamada “vsftpd”, en la cual coloqué el archivo # de texto (vsftpd.chroot_list) que contiene la lista. chroot_list_file=/etc/vsftpd/vsftpd.chroot_list # Esta directiva la he dejado comentada, pero puede resultar muy interesante # para los casos en que sea necesario limitar la velocidad de transferencia para # los usuarios locales, por defecto la velocidad de transferencia es ilimitada. #local_max_rate=7200
La configuración que viene más adelante está ideada para que los usuarios que se conectan anónimamente, no puedan subir archivos, sino solamente descargar aquellos compartidos por el administrador del servicio.
Antes de comenzar con la modificación de las directivas de la sección “Anonymus FTP user Settings” del archivo vsftpd.conf, necesitamos crear una carpeta en el sistema de archivos que será utilizada como el directorio raíz para las conexiones anónimas, con la instalación por defecto del servidor vsftpd en openSUSE 10.3, el directorio para usuarios anónimos se encuentra por defecto en /srv/ftp/, este directorio es el HOME del usuario de sistema “ftp” dueño del servicio (Ver Yast → Seguridad y Usuarios → Gestión de Usuarios → Definir Filtro: Usuarios del Sistema → Usuario FTP → Ver Detalles). Previendo la posterior utilización de dicho directorio para albergar a los usuarios virtuales, coloqué una nueva carpeta en dicho directorio llamada anónimo (/srv/ftp/anonimo) :
Código:
superserver: # cd /srv/ftp superserver:/srv/ftp # mkdir anonimo
Código:
superserver:/srv/ftp # chmod 755 anonimo/ superserver:/srv/ftp # chown root:root anonimo/
Continuación de la configuración del archivo vsftpd en la sección “Anonymus FTP user Settings”:
Código:
# Anonymus FTP user Settings # # Permitir conexiones anónimas. anonymous_enable=YES # Directorio raíz para los usuarios anónimos. Carpeta creada en /srv/ftp/ como # se comentó anteriormente. anon_root=anonimo # Solo permite descargar a los usuarios anónimos aquellos archivos que tengan # permisos de lectura. anon_world_readable_only=YES # Para mi caso especifiqué con la siguiente directiva que los usuarios anónimos # no tengan permisos para subir archivos al servidor. anon_upload_enable=NO # Esta directiva permite a los usuarios anónimos a crear carpetas en ciertos # casos. anon_mkdir_write_enable=NO # Directiva que permite establecer el límite de la velocidad máxima de # transferencia de datos para los usuarios anónimos. Fui un poco drástico jeje # (2kb/s) anon_max_rate=2048
Código:
# Log Settings
#
# Activa la generación de registros logs por cada uploads/downloads.
xferlog_enable=YES
# Define cual será el archivo log.
vsftpd_log_file=/var/log/vsftpd.log
# Si esta directiva no se encuentra comentada activa el registro (log) de todas
# las peticiones/respuestas del servidor.
log_ftp_protocol=YES
Código:
# Transfer Settings # # (ftp-data). connect_from_port_20=YES # Tiempo de espera para mantener establecidas conexiones inactivas. idle_session_timeout=600 # Tiempo de espera para mantener establecidas conexiones de datos inactivas. data_connection_timeout=120 # Comando que permite activar/desactivar conexiones pasivas. pasv_enable=YES # PAM setting. Suele estar configurado por defecto. pam_service_name=vsftpd # Configura listen=YES para que vsftpd corra en modo standalone. listen=YES # Máximos clientes simultáneos conectados. Ejemplo: max_clients=5 # Máximas conexiones simultáneas por IP. Ejemplo: max_per_ip=3 # Como tenemos activado el uso de conexiones pasivas especificamos el rango de # puertos que serán utilizados por este método de conexión. pasv_min_port=40000 pasv_max_port=40020
Código:
superserver:/ # service vsftpd start
Código:
Starting vsftpd done
Servicio vsftpd autorizado en el firewall.
Rangos de puertos para conexiones pasivas autorizados en la ventana
de Opciones Avanzadas.
USUARIOS VIRTUALES
Vamos a incorporar un punto más a favor de la seguridad evitando usar los usuarios locales para conectarnos al servidor ftp, para ello vamos a implementar el método de autenticación combinando PAM y bases de datos db (Berkeley Database) que son muy simples de manipular, para ello necesitamos tener instalados los paquetes db-utils y pam, que ya suelen estar instalados por defecto.
Para generar la tabla que contendrá los usuarios virtuales y sus respectivas contraseñas primeramente debemos crear un archivo de texto plano donde cargaremos esos datos, para ello nos dirigimos al directorio /etc/vsftpd que creamos anteriormente, ahí adentro creamos un nuevo archivo llamado por ejemplo “logins.txt”
Código:
superserver:/etc/vsftpd # touch logins.txt
Código:
superserver:/etc/vsftpd # chmod 600 logins.txt
Código:
user_gabriel pass_gabriel user_jorge pass_jorge
Para el script creamos otro nuevo archivo también en el directorio /etc/vsftpd/ llamado “generar_db.sh” y le agregamos el siguiente texto:
Código:
#!/bin/bash # PRIMERAMENTE SE BORRA EL ARCHIVO "vsftpd_login.db" si es que ya existe. rm -f vsftpd_login.db # Genera el archivo "db" que contiene los usuarios virtuales # del servicio vsftpd. db_load -T -t hash -f logins.txt vsftpd_login.db # Se asignan permisos de seguridad solo para root. chmod 600 vsftpd_login.db
Código:
superserver:/etc/vsftpd # chmod 700 generar_db.sh
Código:
superserver:/etc/vsftpd # ./generar_db.sh
El siguiente paso consiste en modificar el archivo de configuración PAM del servicio vsftpd, este archivo lo podemos encontrar en el directorio /etc/pam.d/ y debería llevar el mismo nombre especificado en la directiva “pam_service_name”, en este caso “vsftpd”.
Antes de editar el archivo, hacemos una copia de seguridad del mismo y nos aseguramos que el servicio ftp no esté corriendo, verificado esto, editamos el archivo comentando todas sus líneas anteponiendo el carácter #, y le agregamos las siguientes líneas:
Código:
# Para usuarios virtuales. OBS: En caso de que se utilice un OS con arquitectura # 64 bits (x86_64), la ruta correcta para el archivo “pam_userdb.so” es # “/lib64/security/pam_userdb.so”. auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
Como de ahora en más ya no se podrá acceder con los usuarios locales, se tiene que especificar al servidor vsftpd que un usuario local se encargará de gestionar todos los usuarios virtuales que se conecten, también aprovecharemos para agregar el directorio de donde el servidor vsftpd tendrá que buscar la configuración personal de cada usuario virtual, para lo que nuevamente editamos el archivo de configuración /etc/vsftpd.conf y agregamos las siguientes líneas al final del archivo:
Código:
# Usuarios Virtuales
#
# Activamos el uso de usuarios virtuales.
guest_enable=YES
# Esta directiva permite especificar el usuario que se encargará de manejar los
# usuarios Virtuales, por defecto si no se especifica esta línea en openSUSE es
# “ftp” que como ya sabemos tiene su home en /srv/ftp/, pero puede ser cualquier
# otro usuario si lo deseamos.
guest_username=ftp
# Especificamos el directorio de donde el servicio obtendrá la configuración
# personal de cada usuario virtual que agregamos a la tabla “vsftpd_login.db”.
user_config_dir=/etc/vsftpd/config_por_usuario
Código:
superserver:/etc/vsftpd # mkdir config_por_usuario
Código:
superserver:/etc/vsftpd/config_por_usuario # touch gabriel jorge
Código:
#!/bin/bash # Indicamos cual será el directorio personal del usuario gabriel local_root=/srv/ftp/gabriel # Le damos permisos de escritura para su directorio personal. write_enable=YES # Con virtual_use_local_privs igualado a YES, supone indicar que los usuarios # virtuales tendrán los mismos privilegios que los usuarios locales. virtual_use_local_privs=YES
Código:
superserver: # cd /srv/ftp superserver:/srv/ftp # mkdir gabriel jorge superserver:/srv/ftp # chown -R ftp:ftp gabriel superserver:/srv/ftp # chown -R ftp:ftp jorge superserver:/srv/ftp # chmod -R 744 gabriel superserver:/srv/ftp # chmod -R 744 jorge
CONEXIONES SEGURAS UTILIZANDO SSL
Como el protocolo ftp no encripta la información que fluye entre la aplicación cliente y el servidor, los datos como ser contraseñas, logins, etc. pueden ser obtenidos con mucha facilidad por personas con malas intenciones o simplemente curiosos mediante el escaneado de paquetes que circulan a través de la red. Para evitar estos casos, se puede activar la encriptación de paquetes utilizado ssl para tener un servicio ftp seguro (ftps).
El primer paso consiste en generar un Certificado SSL, para ello necesitamos tener instalados los paquetes openssl y openssl-certs. Nos dirigimos al directorio /etc/ssl/certs y ahí ejecutamos el siguiente comando:
Código:
superserver:/etc/ssl/certs# openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/certs/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
Para el siguiente paso paramos el service ftp en el caso de que lo tengamos corriendo (service vsftpd stop) y editamos el archivo de configuración vsftpd.conf, nos dirigimos hasta el final donde agregaremos las siguientes líneas
Código:
# Secure FTP
#
# Activamos el soporte SSL
ssl_enable=YES
# No se obliga el establecimiento de conexiones encriptadas mediante SSL para
# usuarios locales.
force_local_logins_ssl=NO
# No se obliga a que las transferencias de datos locales sean encriptados con
# SSL.
force_local_data_ssl=NO
# Se habilitan los soportes para las diversas versiones de SSL
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
# Se especifica la ubicación del Certificado Generado.
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
ENLACES
Sitio Web de Vsftpd: http://vsftpd.beasts.org/
Completa Lista de Directivas para el archivo vsftpd.conf: http://vsftpd.beasts.org/vsftpd_conf.html
Suscribirse a:
Entradas (Atom)
