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.
Etiquetas:
autenticación,
cifrado,
debian,
encriptado,
linux,
OpenVPN,
redes,
seguridad,
servicios,
servidor,
sistema,
sistema operativo,
VPN