noviembre 2009


Uno de los protocolos más utilizados en Internet es el FTP. Instalar y configurar un servidor de FTP en GNU/Linux es muy sencillo. El primer paso es encontrar el servidor que más nos interesa. Para ello se puede utilizar el comando apt-cache search ftpd o yum search ftpd. Yo me he decantado por el servidor vsftpd (The Very Secure FTP Daemon) porque es con el que más familiarizado estoy y porque es uno de los más populares en entornos GNU/Linux. Alguna de sus características principales son que es muy rápido, estable y seguro. Soporta usuarios virtuales, SSL, IPv6, control del ancho de banda…

Para instalarlo podemos utilizar cualquier gestor de paquetes. Por ejemplo, con apt sería:

sudo apt-get install vsftpd

El archivo de configuración se encuentra en /etc/vsftpd.conf. Para saber el significado de cada una de las opciones de configuración se puede consultar el man o leer la documentación online.

Os pego la configuración que tengo en mi servidor para que veáis un ejemplo que podáis utilizar directamente en un copy&paste:
# este parámetro indica que el proceso vsftpd se controla a sí mismo y que no
# formar parte de inetd
listen=YES
# Soporte de IP versión 6
listen_ipv6=YES
# Impedir el acceso anónimo al servidor (dejar las líneas comentadas)
#anonymous_enable=YES
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
# Habilitar el acceso para los usuarios locales del sistema
local_enable=YES
# habilitar el permiso de escritura para los usuarios logueados
write_enable=YES
# Selección del umask por defecto para los usuarios. El umask 002 concede permisos
# 755 a los ficheros subidos por los usuarios.
local_umask=022
# Permitir conexiones en el puerto 20
connect_from_port_20=YES
# Impedir el acceso ASCII a los ficheros, mejora la estabilidad del servidor
#ascii_upload_enable=YES
#ascii_download_enable=YES
# Saludo del servidor
ftpd_banner=Bienvenido a mi servidor ftp personalizado!
#Importantísimo para que los usuarios no “escapen” de sus $HOMES
chroot_local_user=YES
#Un par de opciones extra de configuración para mejorar su integración con el sistema
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
#Archivo con el certificado ssl
rsa_cert_file=/etc/ssl/certs/ssl-cert.pem
#clave ssl
rsa_private_key_file=/etc/ssl/private/ssl-cert.key

Para que los cambios se apliquen al servidor hay que reiniciar el proceso utilizando:

sudo /etc/init.d/vsftpd restart

¿Algunas recomendaciones extras?

  • No habilitar el acceso anónimo tanto de lectura como de escritura es importantísimo para mejorar la seguridad del servidor.
  • Habilitar la opción chroot para los usuarios del FTP es recomendable para que no puedan “cotillearse” entre ellos. Por supuesto, es muy recomendable que cada HOME tenga unos permisos 700 para evitar accesos de unos usuarios a directorios que no son suyos.
  • Para evitar posibles sobrecargas del sistema, es recomendable establecer los valores adecuados para las opciones max_clients y max_per_ip que controlan el número máximos de clientes permitidos en el servidor y el máximo número de clientes desde la misma IP respectivamente.

Espero que este post os haya sido de ayuda. Hasta pronto.

Anuncios

Hoy ha empezado oficialmente el máster en el que me he matriculado este año. Se trata del máster universitario en inteligencia artificial avanzada: fundamentos,métodos y aplicaciones. He escogido la especialidad de sistemas inteligentes de diagnóstico, planificación y control. Este máster es impartido por la UNED y aunque tiene un nombre muy rimbombante, he de admitir que sus asignaturas son realmente atractivas.

Este año voy a cursar:

  • Descubrimiento de información en textos. Como su propio nombre indica, el objetivo de esta asignatura es dar a conocer las distintas tecnologías existentes para la obtención de información en textos. Técnicas de etiquetado léxico y sintáctico, clasificación automática de textos…
  • Métodos de aprendizaje en I.A. En esta asignatura aprenderé las técnicas más significativas del Aprendizaje Automático, aprenderemos las características más importantes de los distintos algoritmos de aprendizaje.
  • Procesamiento del lenguaje natural. En esta asignatura aprenderé a diseñar y construir programas para comprender y generar lenguaje natural. Estudiaremos los niveles léxico, sintáctico y semántico del lenguaje, será como volver a cursar compiladores pero a un nivel mucho más avanzado.

Los dos cursos pasados ya estuve compaginando otro máster de la UNED con el trabajo y la verdad es que no se me dio mal. Espero obtener los mismos buenos resultados en esta nueva aventura. Supongo que mi vida social los fines de semana se va a mermar sobremanera.

Un saludo

Creo que empieza a ser hora de ofrecer algo de publicidad información sobre los blogs de unos buenos amigos míos. Espero que alguno de vosotros os haga gracia el título del post, aunque he de advertiros que todavía no pretendo convertirme en un HOYGAN :-).

Siempre es difícil elegir un orden para estas listas a sí que voy a utilizar el orden cronológico. Es posible que alguno de estos links os suene, pero por si acaso, id preparando vuestros lectores de RSS para una actualización.

Un saludo

Para aprender más sobre la configuración de servidores en GNU/Linux, creo que es una buena idea continuar con el servidor de Bases de Datos MySQL. Tarde o temprano, cuando trabajas de informático o de administrador de sistemas te toca instalar y configurar un servidor de bases de datos.

Instalarlo es tan sencillo como utilizar nuestro gestor de paquetes favorito o descargarlo de la página del proyecto MySQL. Por ejemplo, con apt sería:

sudo apt-get install mysql-server

El archivo de configuración principal del servidor se encuentra por defecto en /etc/mysql/my.cnf. Para arrancarlo, detenerlo o reiniciarlo hay que utilizar el siguiente comando:

sudo /etc/init.d/mysql [start | stop | restart]

Aunque la configuración y utilización de dicho servidor puede hacerse con la omnipotente consola o shell, hay algunas herramientas gráficas que nos pueden venir muy bien. También se pueden descargar desde la página del proyecto MySQL o utilizando apt con el siguiente comando:

sudo apt-get install mysql-admin mysql-query-browser

Ahora podemos administrar nuestro servidor tanto de forma gráfica como cambiando el archivo de configuración. Recordad que para poder modificar el archivo de configuración /etc/mysql/my.cnf con la aplicación mysql-admin debemos utilizar la orden sudo para arrancarla ya que el propietario de dicho archivo de configuración es el usuario root, como se muestra a continuación:

root@localhost:~# ls -l /etc/mysql/my.cnf
-rw-r–r– 1 root root 3839 2009-11-09 19:05 /etc/mysql/my.cnf

mysql-admin

Estableciendo UTF-8 como default character set

¿Algunas recomendaciones extras?

  • Modificar el parámetro de “default character set” para que sea UTF-8. Esto se puede hacer añadiendo las siguiente líneas al archivo de configuración:

    default-character-set=utf8
    default-collation=utf8_general_ci

  • Permitir conexiones remotas al servidor cambiando la línea que pone
    bind-address        = 127.0.0.1
    por esta otra:
    bind-address        = 0.0.0.0
  • Controlar el número de conexiones máximas y el timeout de las mismas. Esto es importante porque podemos tener alguna aplicación que se quede colgada y que no cierre bien la conexión con el servidor. Si esto pasa muchas veces podemos tener conexiones muertas al servidor que no se cerrarían nunca. Habría que reiniciar el servidor para que aceptase nuevas conexiones. Se puede solventar este problema haciendo que el servidor MySQL cierre las conexiones automáticamente cuando ha pasado un cierto tiempo. Esto se consigue añadiendo estas líneas al archivo de configuración:#Número máximo de conexiones
    max_connections        = 1000
    #Timeout en segundos (1 hora)
    wait_timeout=3600

Os pego la sección [mysqld] del archivo de configuración por si alguno quiere hacer un copy&paste rápido:

[mysqld]

user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket        = /var/run/mysqld/mysqld.sock
port        = 3306
basedir        = /usr
datadir        = /var/lib/mysql
tmpdir        = /tmp

bind-address        = 0.0.0.0

key_buffer        = 16M
max_allowed_packet    = 16M
thread_stack=192
thread_cache_size       = 8

myisam-recover         = BACKUP

max_connections        = 1000
wait_timeout=3600

query_cache_limit    = 1M
query_cache_size        = 16M

default-character-set=utf8
default-collation=utf8_general_ci

Hay muchos más parámetros de configuración con los que podéis jugar hasta encontrar la configuración que mejor satisface vuestras necesidades, este es tan solo un ejemplo. Espero que os sea de utilidad.

Hasta pronto

Como podéis ver no me voy a romper mucho la cabeza con el primer post/how-to. No voy a explicar las bases teóricas de la criptografía de clave pública ni del ssh en sí mismo porque ya hay alguien que ya lo ha hecho y, seguro, que mucho mejor de lo que yo lo podría hacer. Lo bueno de tener tanto en el ordenador de tu trabajo como en el de tu casa un servidor ssh bien configurado es que puedes acceder de forma privada/segura tanto a los ficheros como a las aplicaciones del mismo remotamente. Por supuesto la administración de servidores sin el ssh sería completamente imposible. La lista de servidores ssh es extensa pero yo me voy a centrar en OpenSSH.

Para instalarlo solo hay que utilizar algún gestor de paquetes como yum o apt o incluso descargarse una versión portable desde aquí. Una vez instalado, hay que configurarlo a través del archivo /etc/ssh/sshd_config. Debería tener algo como lo que se muestra a continuación:

# Puerto y protocolo
Port 22
Protocol 2
# Claves del servidor
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
UsePrivilegeSeparation yes

# Opciones de autenticación (conviene desactivar el acceso de root)
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes

#Permitir los passwors vacíos (por favor esto siempre a NO)
PermitEmptyPasswords no

# Estas opciones permiten la tunelación de las X por el ssh
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

Subsystem sftp /usr/lib/openssh/sftp-server

#indica que el sistema utilizará PAM
UsePAM yes

Hay más opciones pero estas son las más representativas. Para reiniciar el servidor tan solo hay que teclear la orden como root:

/etc/init.d/ssh restart

Para comprobar que funciona se puede hacer un ssh a nuestra propia máquina:

ssh user@localhost

Para ejecutar un comando sin tener una bash abierta se puede poner:

ssh user@host ‘comando’

Para copiar un fichero tunelado por ssh se utiliza el comando:

scp file.txt user@host:/folder/

¿Algunas recomendaciones extras?

  • Impedir las conexiones ssh sin contraseña.
  • Impedir las conexiones del usuario root. Si hay que utilizar algún comando como root siempre se puede utilizado el comando “sudo” o “su root” una vez logueados.
  • Otro truquito que os puede venir muy bien es el de cambiar el puerto de escucha del 22 (el puerto por defecto para el ssh) al 443 (puerto por defecto para HTTPS), siempre y cuando no estéis utilizando este puerto para el servidor web. Hay reglas de firewall en determinadas organizaciones o empresas (hoteles, aeropuertos, incluso bibliotecas) que impiden las conexiones salientes a otros puertos que no sean el 80 (puerto por defecto para HTTP) o el 443. Otro día con algo más de tiempo os explicaré cómo crear unas reglas en iptables para la redirección de puertos.

En futuros posts pondré más información sobre cómo sacar el máximo partido a un servidor ssh pero, por supuesto, lo primero es la correcta configuración del mismo.

Un saludo

He tenido la oportunidad de pasar unos días en Budpest (Hungría) debido a que tenía que hacer una pequeña presentación en el “Technical Course on Federation of Learning Repositories for Agriculture, Food & Environment (AgLRs)“. Mi presentación consistía en explicar la arquitectura técnica de Organic.Edunet, proyecto en el que estoy trabajando, haciendo hincapié en la interconexión de repositorios con recursos educativos en agricultura ecológica en un portal web centralizado.

Presentación del portal Web de Organic.Edunet

Presentación del portal Web de Organic.Edunet

No he tenido mucho tiempo para ver la ciudad pero el poco que he tenido lo he aprovechado al máximo. Os dejo unas vistas de tan preciosa ciudad:

Palacio Real

Palacio Real de Budapest

Parlament

Parlamento

Puente

Vista nocturna del puente sobre el Danubio

Hola a todos,

Antes de nada me gustaría daros la bienvenida a mi blog. Hacía algún tiempo que me rondaba la idea de crearme una bitácora pero por unas cosas o por otras siempre lo dejaba para más adelante. La mayor parte del tiempo que estoy navegando por Internet lo paso leyendo bitácoras de otras personas, aprendiendo muchas cosas de sus experiencias y enriqueciéndome con sus conocimientos. Tal vez ha llegado el momento de que yo escriba algo que otros puedan leer y aprovechar.

Por si alguien tiene curiosidad en saber quién soy, os dejo el enlace a mi perfil de Linkedin.Todavía no tengo muy claro las cosas que voy a contar en este blog pero casi seguro que estarán relacionadas con la informática en general y, más concretamente, con el mundo del software libre.

Hasta pronto!