jueves, 3 de octubre de 2013

Añadir una conexión VPN en Windows 8

Muchas veces queremos acceder a la red de nuestra empresa para poder trabajar sobre servidores que existen en ella. Existen básicamente dos formas de hacerlo:

  1. Acceso directo: Para acceder a la red interna de la empresa debemos abrir en el router/s y cortafuego/s de la empresa los puertos correspondientes y hacer las redirecciones necesarias que nos permitan abrir los servicios compartidos de nuestra red. Esta opción es bastante liosa en el sentido de que deberemos configurar router y cortafuegos para cada uno de los servicios que queramos tener accesibles.
  2. VPN: Una red privada virtual consiste en conectar a un servidor VPN de mi empresa. Este tipo de conexión se caracteriza por que usa una conexión de red normal pero encriptando la información, de forma que la conexión es segura y funciona para todos los servicios que oferte mi red. La seguridad de la información transmitida a través está garantizada

Descripción más detallada de la VPN

Básicamente, cuando conecto a través de una VPN, lo que hago es crear una interfaz de red virtual que va a adquirir una IP de la red de mi empresa, de forma que esa interfaz está conectada directamente a la red de la empresa. El símil que mejor explica lo anterior es imaginarnos que en realidad, hemos tirado un cable de red hasta nuestra empresa y lo hemos conectado a una boca ethernet en ella.
Pero claro, dispongo de dos conexiones simultaneas: Mi conexión de red doméstica (tipicamente ADSL via WiFi o por cable Ethernet) y mi conexión virtual VPN y esto provoca a veces ciertos problemas.

Como conectarme a mi VPN

Debo de preguntar a mi administrador de red por los datos de conexión a la VPN de mi empresa, en concreto, y como mínimo, me deberá facilitar:
  1. La dirección IP o nombre de host a la cual deberé conectarme. Por ejemplo 66.66.66.66
  2. El nombre de usuario y contraseña con el que conectarme: En el caso de que en mi empresa esté instalado Active Directory de Microsoft, lo habitual es que sea mi nombre de usuario y contraseña para el dominio como pepe@midominio.es
Para crear la VPN:
  1. Abrimos el 'Centro de redes y recursos compartidos'.
  2. Pulsamos sobre la opción 'Configurar una nueva conexión o red'.
  3. Nos aparece la siguiente ventana:

    Pulsamos en Conectarse a un área de trabajo.
  4. En la siguiente pantalla nos permite elegir entre 'Usar mi conexión a Internet' o 'Llamar directamente', escogemos la primera opción.
  5. Pasamos a la pantalla 'Conectarse a un área de trabajo':

    En esta pantalla deberé de indicar:
    1. Dirección de Internet: Es la dirección IP de la VPN que me proporcionó el administrador de mi red, en el ejemplo '66.66.66.66'.
    2. Nombre de destino: El nombre con el cual quiero que aparezca reflejado la VPN, por ejemplo, 'Mi empresa'.
    3. Usar tarjeta inteligente: Lo marcamos si usamos una tarjeta inteligente para identificarnos en Windows.
    4. Recordar mis credenciales: Lo marcamos si no queremos que nos pida el usuario y contraseña cada vez que iniciemos la VPN.
    5. Permitir que otras personas usen esta conexión: Esta es una opción delicada, de forma general, solamente en mi usuario Windows debería estar disponible la VPN, por mucho que la VPN me pida mis credenciales al iniciar. Si marco la casilla, el resto de usuarios del equipo podrán acceder a la conexión VPN, eso sí, conociendo el usuario y contraseña.
Ya tengo la VPN configurada. Hay que destacar que en Conexiones de red' (aparece mostrando el 'Centro de redes y recursos compartidos' y luego pulsando 'Cambiar configuración del adaptador', o alternativamente, buscando en inicio 'Conexiones de red') me aparecerán normalmente dos nuevas conexiones:
  1. Una primera conexión es la propia VPN, que se denomina Mi Empresa, es la conexión que realmente contiene la configuración de la VPN.
  2. Un bridge de red (Network Bridge): Esta solo aparece si nuestro equipo dispone de varios dispositivos capaces de conectarnos a internet (por ejemplo, un portatil con Tarjeta de red Ethernet y WiFi): Se encarga de puentear la VPN a la forma de conexión que en ese momento esté activa.

Como conectarme

La forma de conexión es muy sencilla:
  1. Pulso el icono de la red en el área de notificación de Windows (el icono que muestra la red que estamos usando al lado del reloj).
  2. En el desplegable que aparece a la derecha, puedes ver que aparece nuestra conexión VPN:
  3. Si pulsas en la conexión aparece un botón conectar, y luego nos pedirá nuestro usuario y contraseña de acceso:
  4. Tras esto deberías de estar conectado.

Problemas con el enrutamiento en el acceso a la VPN

A veces se produce un problema extraño, y es que podemos acceder a cualquier sitio de nuestra red de empresa, pero no podemos acceder a Internet. Esto se produce por que todo el tráfico de red se está redirigiendo hacia la VPN, y en nuestra empresa, el enrutamiento está configurado para que la VPN no enrute hacia el exterior.
La forma de arreglar esto es bastante sencilla: Debemos de seguir estos dos pasos:

  1. Debemos indicar en la conexión VPN que no queremos usar la puerta de enlace de la VPN. Con esto lograremos que la puerta de enlace por defecto sea la de mi conexión a internet.
  2. Debemos configurar rutas de enrutamiento estáticas a las distintas subredes que haya en mi empresa.

Deshabilitar la puerta de enlace por defecto de la VPN

Expliquemos la situación actual: Estamos conectados a una VPN, y todo el tráfico de red se deriva hacia la VPN, de forma que mi equipo está enrutando todo el tráfico de red hacia la VPN (excepto el tráfico de mis redes locales).
  1. Para indicar en la VPN que no queremos usar la puerta de enlace de la VPN deberemos de acceder al 'Conexiones de red', y mostrando el menú contextual de la conexión VPN escoger 'Propiedades', apareciendo la ventana siguiente:
  2. Ahora hacemos doble click en el nodo 'Protocolo de Internet versión 4 (TCP/IPv4)' y en la ventana que aparece, pulsamos el botón 'Opciones avanzadas'. En la pestaña de 'ConfiguraciónIP' nos aparecerá esta ventana:
  3. Ya solo tenemos que desmarcar la casilla 'Usar la puerta de enlace predeterminada en la red remota'.
Ahora podremos comprobar lo que hemos hecho:
  1. Comprobamos con un navegador web que con la VPN activada, entramos en interneet.
  2. Comprobamos de algún modo que hemos dejado de acceder a la red interna de la empresa.
Ya solo necesitamos añadir rutas estáticas a las distintas redes de la empresa.

Añadir rutas estáticas a las redes de la empresa

Expliquemos la situación actual: Como he desconectado la puerta de enlace de la VPN, ahora, estoy conectado a la VPN, pero a nivel de enrutamiento estoy derivando todo el tráfico de red a través de mi conexión normal a internet. Esto hace que no sea capaz de acceder a los servicios de mi empresa, pero si salir a internet.
Para este paso debo de conocer las redes a las cuales quiero acceder, por ejemplo, supongamos que la red interna de la empresa (donde están colgados los servicios de esta es la red 192.168.30.0/24). Esta información me la debe proporcionar el administrador de red de la empresa.
Ya hemos desvelado el misterio, solo debemos añadir una ruta estática a la red interna de mi empresa (si son varias redes, varias rutas). Para ello, debo obtener ciertas informaciónes:

  • Con ipconfig, debo obtener la dirección IP de mi équipo en la VPN:

  • Con 'route print' puedo mostrar las rutas habilitadas en el sistema. También me permite ver los identificadores de las diferentes interfaces de red.

  • Ahora que conozco la IP de la VPN y el identificador de red de la VPN, puedo añadir una ruta hacia la red deseada, por ejemplo '192.168.30.0/24', para ello uso el comando: route add 192.168.30.0 mask 255.255.255.0 <ip_de_la_VPN> if <número de interfaz de la VPN>, en mi caso, se observa en la imagen:

Esta ruta que hemos creado no es persistente de forma que cuando el equipo reinicie, desaparecerá. Si quiero que la ruta sea persistente, debo de añadir -p tras la partícula route: route -p add....
Con esto ya tendré accesible desde mi VPN los equipos de la red de mi empresa, además de disponer de Internet simultáneamente.







martes, 17 de septiembre de 2013

El comando tasksel en Ubuntu

Cuando instalamos Ubuntu usando los antiguos instaladores en modo texto usados por debian, al final del proceso podemos escoger la configuración del sistema: Nos aparece una ventana donde podemos escoger una serie de roles para el sistema que estamos instalando (por ejemplo, el servidor LAMP: Linux Apache MySQL y PHP.
Es un poco engorroso instalar cualquier servidor en Ubuntu e ir instalándolo paquete por paquete con apt-get, y aparte de eso, los roles que nos aparecen en la pantalla que se ha descrito tienen la ventaja de que para cada uno de ellos se instala toda una maraña de software recomendado que nos va a ser muy dificil de reproducir.
El comando tasksel nos va a permitir instalar roles en un sistema ya instalado:
Ejecutar el comando sudo tasksel
Como puedes ver en la imagen, nos llevamos una agradable sorpresa: Nos aparecen todos los roles que aparecían al instalar Ubuntu, y muchos más. Esto es debido, a que en este punto, podemos convertir nuestra distribución Ubuntu estandard en otra distribución kubuntu, lubuntu, etc.

Modo gráfico

Además, si instalamos el gestor de paquetes synaptic (sudo apt-get install synaptic) tendremos acceso a estos roles con la opción de menú "Editar -> Marcar paquetes por tarea", que se nos mostrará de esta forma:
El editor de tareas de synaptic
Como puedes ver, son las mismas tareas que obteniamos en tasksel.

Listar los componentes de una tarea

Otro punto interesante es conocer los paquetes que forman una tarea de tasksel, para ello usamos el propio comando tasksel, como en este ejemplo que mostramos los paquetes que componen la tarea 'LAMP Server':
  1. Para ver el listado de las tareas disponibles usamos:
    # sudo tasksel --list-tasks
  2. Para ver los paquetes que componen una tarea (por ejemplo lamp server):
    # sudo tasksel --task-packages 'lamp server'




domingo, 10 de febrero de 2013

Activar servidor apache para todos los usuarios del sistema

Vamos a convertir una máquina con Ubuntu 12.04 Server en un servidor web donde todos los usuarios podrán insertar páginas web.

Instalar el software

Necesitamos instalar el servidor apache y un servidor ftp:

Instalar apache

Podremos instalar apache de tres maneras:
  1. Con tasksel instalamos Apache-MySQL-PHP: Usamos el comando 'sudo tasksel install lamp-server'.
  2. Instala individualmente la instalación de apache: Sudo apt-get install apache2
  3. Instalando manualmente apache a partir de una descarga de la web de apache: Si compilamos la aplicación podremos realizar una configuración personalizada que será imposible con los paquetes distribuidos con Ubuntu.

Instalar vsftp

Existen varios servidores ftp para Linux, pero el que documenta Ubuntu Server es vsftp. Para instalarlo solamente tenemos que ejecutar: sudo apt-get install vsftpd.

Pasos de la configuración

Activar el módulo userdir

Para que los usuarios puedan acceder a sus propias carpetas de usuario y tener su propio sitio web, debemos de habilitar el módulo usermod (para ver mas información http://httpd.apache.org/docs/2.2/mod/mod_userdir.html). Este módulo se encarga de crear un sitio web para cada usuario del sistema, sitio que estará accesible en el subdirectorio web ~<nombreusuario> (como en http://serve4.emc.home/~emc2).
Para activar el módulo usamos a2enmod userdir, quedando activado con sus valores por defecto, que podremos encontrar en el fichero /etc/apache2/mods-enabled/userdir.conf (además existe un fichero de carga del módulo en /etc/apache2/mods-enabled/userdir.load).
Si queremos configurar el módulo, debemos editar el fichero userdir.conf, aunque es una tarea que nosotros no realizaremos y que se describe en la documentación del módulo.
Ya solo nos queda recargar la configuración en el servidor con sudo service apache2 reload

Crear la estructura de directorios usada por userdir en /etc/skel

Userdir permite servir el directorio public_html de cada usuario como una página web personal. Para que esto funcione, debemos disponer de la carpeta y que esta tenga algún tipo de contenido, solo nos queda crear la carpeta en el directorio del usuario.
Pero si queremos que los usuarios nuevos tengan su propia web en blanco, deberemos crear estos ficheros y  carpetas en el directorio /etc/skel, de forma que cuando se cree un usuario nuevo este tenga activado el soporte para su página web personal:
$ cd /etc/skel
$ mkdir public_html
$ echo Este es mi sitio > public_html/index.html
Tras esto, los nuevos usuarios tendrán su sitio personal en public_html.
En el caso de los usuarios existentes, deberé acceder a su carpeta de usuario y crear el directorio public_html

Como accedo a la web del usuario

mediante la dirección 'http://servidor/~nombre-usuario', como por ejemplo en "http://server4.emc.home/~juan"

Configurar ftp para el acceso de los usuarios a la carpeta public_html

Por defecto, nuestro servidor FTP permite acceso anónimo, pero no permite el acceso a los usuarios del sistema. Vamos a modificar varias líneas del fichero /etc/vsftpd, para lo cual lo abrimos con un editor de textos, como podría ser gedit (con sudo gedit /etc/vsftpd):
  1. Deshabilito el acceso anónimo:
    1. Si queremos deshabilitar el acceso de usuarios anónimos al servidor modifico la línea 'anonymous_enable=Yes' por 'anonymous_enable=No'. 
    2. El servidor ftp usa el directorio /srv/ftp para los usuarios anónimos, podría ser una buena idea borrar el directorio en cuestión, aunque no lo veo demasiado necesario.
    3. En caso de que tenga habilitado el usuario anónimo y quiera permitir que este suba ficheros al servidor, habilito la orden 'anon_upload_enable=YES'
  2. Habilito la autenticación de los usuarios del sistema:
    1. Habilito la línea 'local_enable=YES' que me permitirá usar los usuarios locales con vsftp.
    2. Habilito la escritura para los usuarios locales con 'write_enable=YES'
  3. Asegurando ftp:
    1. Si quiero limitar a que los usuarios solo puedan escribir en su carpeta de usuario a través de ftp habilito 'chroot_local_user=YES'
    2. Si quiero que solo puedan acceder por ftp una lista de usuarios, habilito 'chroot_list_enable=YES'
    3. La lista de los usuarios que pueden iniciar sesión en el sistema la guardo en el fichero '/etc/vsftpd.chroot_list' (un usuario por línea) y tengo que añadir una línea indicando la ubicación del fichero en 'chroot_list_enable=YES'
  4. Usar FTPS:
    1. Si quiero habilitar FTPS (FTP sobre SSL) habilito la línea 'ssl_enable=YES'
    2. Tras habilitar FTPS debo indicar las ubicaciónes de las claves públicas y privadas que va a usar el sistema para encriptar las comunicaciones. Para ello modifico dos variables:
      1. 'rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem' para la clave pública
      2. 'rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key' para la clave privada
      3. Estas dos claves existen por defecto cuando se instala el paquete 'ssl-cert' (para instalarlo, si no existen los ficheros usamos 'sudo apt-get install ssl-cert')
Ni que decir tiene que para que los cambios que hayamos realizado se apliquen debemos de reiniciar el servidor ftp con 'sudo service vsftpd restart'

Enlaces