martes, 17 de noviembre de 2015

Securizando nuestras conexiones: Instalando y configurarando OpenVPN









Como IT una parte importante es la seguridad y esta hay que tomársela bastante en serio y para el ámbito empresarial más aún. En el mundo empresarial son muchas las ocasiones en que sus empleados trabajan en remoto fuera de la intranet, ya sea por trabajo a pie de calle, porque  su estructura empresarial no está centralizada en un lugar concreto en definitiva, a la hora de trabajar con sus sistemas y redes se tienen que vale de conexiones remotas que no son ni seguras ni estables y es aquí donde entra VPN.

Una VPN o red privada virtual nos permite tener una conexión estable, segura, fiable e incluso más rápida que otro tipo de conexiones remotas. Este tipo de conexión nos permite trabajar  a través de la WAN como si estuviéramos en la propia LAN y esto lo permite creando un túnel de conexión desde nuestro cliente hasta la red interna permitiendo trabajar al cliente remoto de una manera local y segura.





Para poner en práctica todo esto nos vamos a valer de un servidor Debian  y de OpenVPN. Antes de empezar la instalación recomiendo que visitéis los enlaces puestos a lo largo de la entrada y que os empapéis bien de los conocimientos previos, también es recomendable la web de OpenVPN que está en perfecto inglés como se ha de esperar. Vuelvo a repetir OpenVPN no es una instalación sencilla, requiere de conocimientos previos para poder llevar a cabo su correcta instalación, configuración y puesta en marcha.

1.- Instalación: Actualizamos el sistema e instalamos OpenVPN.

sudo apt-get update
sudo apt-get install openvpn

2.- Configuración: Comenzamos con la configuración de ficheros y generación de certificados necesarios.

Copiamos ficheros:

cp –r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa

Nos movemos al directorio easy-rsa:

cd /etc/openvpn/easy-rsa

Editamos el fichero vars:

vim /etc/openvpn/easy-rsa/vars

Dejamos esta línea así:

export KEY_SIZE=2048

Ponemos los valores siguientes:

export KEY_COUNTRY="ES"
export KEY_PROVINCE="SE"
export KEY_CITY="Seville"
export KEY_ORG="TEST"
export KEY_EMAIL="mail.mydomain"
export KEY_EMAIL="mail@host.domain
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=changeme
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234

Generamos los certificados dentro del directorio easy-rsa, esto puede variar en el tiempo de exportación en función del tamaño del key:

source ./vars
./clean-all

./build-ca

Generamos el certificado del server:

./build-key-server saw

Ahora generamos el certificado del cliente:

./build-key

Generamos la clave HMAC:

openvpn --genkey --secret ta.key
cp ta.key keys

cp -r easy-rsa/keys/ .

Modificamos la configuración VPN para poner el servidor en funcionamiento:

vim /etc/openvpn/server.conf

Dejamos el archivo como aparece a continuación:

port 1194
proto tcp
dev tun

#Nuevos certificados
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/saw.crt
key /etc/openvpn/keys/saw.key
dh /etc/openvpn/keys/dh2048.pem
tls-auth /etc/openvpn/keys/ta.key 0

#rangos de direcciones
server 192.168.1.50 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"

#DNS 
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

client-to-client
keepalive 10 120

cipher AES-256-CBC # Triple-DES
comp-lzo

max-clients 5

user nobody
group nogroup
tcp-nodelay
persist-key
persist-tun

log /var/log/openvpn.log
status /var/log/openvpn-status.log

verb 3
mute 20
#client-config-dir ccd

Habilitamos el bit de forwarding:

echo 1 > /proc/sys/net/ipv4/ip_forward

Eliminamos decomentamos la linea "net.ipv4.ip_forward=1"en el fichero "/etc/sysctl.conf":

vim /etc/syscrl.conf

Cargamos el módulo tun:

modprobe tun

Después de esto habilitamos el servicio y lo arrancamos:

/etc/init.d/openvpn start

Añadimos la siguiente línea de comando para iptables:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s "192.168.88.0/24" -j ACCEPT
iptables -A FORWARD -j REJECT

iptables -t nat -A POSTROUTING -s "192.168.1.0/24" -j MASQUERADE

Finalmente guardar las reglas:

iptables-save


Finalmente vuelvo a recordar que para montar un servidor de este tipo debemos de tener unos conocimientos previos, esta guía es una mera muestra de como montarlo. Para llevarlo a acabo se deben tener conocimientos preestablecidos sobre redes, sistemas operativos, VPN y OpenVPN.