Búsqueda de sitios web

Instalación y configuración del servidor y cliente OpenVPN en Debian 7


Este artículo detalla cómo obtener conectividad IPv6 en OpenVPN usando Debian Linux. El proceso ha sido probado en Debian 7 en un VPS KVM con conectividad IPv6 como servidor y un escritorio Debian 7. Los comandos deben ejecutarse como root.

¿Qué es OpenVPN?

OpenVPN es un programa VPN que utiliza SSL/TLS para crear conexiones VPN cifradas y seguras para enrutar su tráfico de Internet y evitar así el espionaje. Open VPN es altamente capaz de atravesar firewalls de forma transparente. De hecho, si la situación lo requiere, puede ejecutarlo en el mismo puerto TCP que HTTPS (443), lo que hace que el tráfico sea indistinguible y, por lo tanto, prácticamente imposible de bloquear.

OpenVPN puede utilizar una variedad de métodos, como claves secretas previamente compartidas, certificados o nombres de usuario/contraseñas, para permitir que los clientes se autentiquen en el servidor. OpenVPN utiliza el protocolo OpenSSL e implementa muchas funciones de seguridad y control, como autenticación de respuesta a desafíos, capacidad de inicio de sesión único, funciones de equilibrio de carga y conmutación por error y compatibilidad con múltiples demonios.

¿Por qué utilizar OpenVPN?

Piense en comunicaciones seguras, piense en OpenVPN. Si no desea que nadie espíe su tráfico de Internet, utilice OpenVPN para enrutar todo su tráfico a través de un túnel seguro y altamente cifrado.

Esto es especialmente importante a la hora de conectarnos a redes WIFI públicas en aeropuertos y otros lugares. Nunca puedes estar seguro de quién está espiando tu tráfico. Puede canalizar su tráfico a través de su propio servidor OpenVPN para evitar espionaje.

Si se encuentra en alguno de los países que monitorean rutinariamente todo su tráfico y bloquean sitios web a voluntad, puede usar OpenVPN a través del puerto TCP 443, para que no se pueda distinguir del tráfico HTTPS. Incluso puede combinar OpenVPN con otras estrategias de seguridad, como canalizar su tráfico OpenVPN a través de un túnel SSL, para superar las técnicas de inspección profunda de paquetes que podrían identificar firmas OpenVPN.

Requisitos del sistema

OpenVPN requiere requisitos mínimos para ejecutarse. Un sistema con 64 MB de RAM y 1 GB de espacio en disco duro es suficiente para ejecutar OpenVPN. OpenVPN se ejecuta en casi todos los principales sistemas operativos.

Instalación y configuración de OpenVPN en Debian 7

Instale OpenVPN en el servidor maestro

Ejecute el siguiente comando para instalar OpenVPN.

apt-get install openvpn

De forma predeterminada, los scripts easy-rsa se instalan en el directorio '/usr/share/easy-rsa/'. Por lo tanto, debemos copiar estos scripts en la ubicación deseada, es decir, /root/easy-rsa.

mkdir /root/easy-rsa
cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa

Generar certificado CA y clave CA

Abra el archivo 'vars' y realice los siguientes cambios, pero antes de realizar cambios le sugiero que haga una copia de seguridad del archivo original.

cp vars{,.orig}

Usando su editor de texto, configure los valores predeterminados para easy-rsa. Por ejemplo.

KEY_SIZE=4096
KEY_COUNTRY="IN"
KEY_PROVINCE="UP"
KEY_CITY="Noida"
KEY_ORG="Home"
KEY_EMAIL="[email "

Aquí estoy usando una clave de 4096 bits. Puede utilizar una clave de 1024, 2048, 4096 o 8192 según lo desee.

Exporte los valores predeterminados ejecutando el comando.

source ./vars

Limpie todos los certificados que se generaron anteriormente.

./clean-all

A continuación, ejecute el siguiente comando para generar el certificado CA y la clave CA.

./build-ca

Genere el certificado del servidor ejecutando el comando. Sustituya el "nombre del servidor" por el nombre de su servidor.

./build-key-server server-name

Genere el certificado Diffie Hellman PEM.

./build-dh

Generar el certificado de cliente. Sustituya el "nombre del cliente" por su nombre de cliente.

./build-key client-name

Genere el código HMAC.

openvpn --genkey --secret /root/easy-rsa/keys/ta.key

Copie los certificados en las máquinas cliente y servidor de la siguiente manera.

  1. Asegúrese de que ca.crt esté presente tanto en el cliente como en el servidor.
  2. La clave ca.key debe estar en el cliente.
  3. El servidor requiere server.crt, dh4096.pem, server.key y ta.key.
  4. client.crt, client.key y ta.key deben estar en el cliente.

Para configurar las claves y los certificados en el servidor, ejecute los comandos.

mkdir -p /etc/openvpn/certs
cp -pv /root/easy-rsa/keys/{ca.{crt,key},server-name.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/

Configurar el servidor OpenVPN

Ahora necesitas configurar el servidor OpenVPN. Abra el archivo '/etc/openvpn/server.conf'. Realice los cambios como se describe a continuación.

script security 3 system
port 1194
proto udp
dev tap

ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server-name.crt
key /etc/openvpn/certs/server-name.key
dh /etc/openvpn/certs/dh4096.pem
tls-auth /etc/openvpn/certs/ta.key 0

server 192.168.88.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

keepalive 1800 4000

cipher DES-EDE3-CBC # Triple-DES
comp-lzo

max-clients 10

user nobody
group nogroup

persist-key
persist-tun

#log openvpn.log
#status openvpn-status.log
verb 5
mute 20

Habilite el reenvío de IP en el servidor.

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

Ejecute el siguiente comando para configurar OpenVPN para que se inicie al arrancar.

update-rc.d -f openvpn defaults

Inicie el servicio OpenVPN.

service openvpn restart

Instalar OpenVPN en el cliente

Ejecute el siguiente comando para instalar OpenVPN en la máquina cliente.

apt-get install openvpn

Usando un editor de texto, configure la configuración del cliente OpenVPN en '/etc/openvpn/client.conf', en el cliente. Una configuración de ejemplo es la siguiente:

script security 3 system
client
remote vpn_server_ip
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/client.crt
key /etc/openvpn/certs/client.key
cipher DES-EDE3-CBC
comp-lzo yes
dev tap
proto udp
tls-auth /etc/openvpn/certs/ta.key 1
nobind
auth-nocache
persist-key
persist-tun
user nobody
group nogroup

Ejecute el siguiente comando para configurar OpenVPN para que se inicie al arrancar.

update-rc.d -f openvpn defaults

Inicie el servicio OpenVPN en el cliente.

service openvpn restart

Una vez que esté satisfecho de que OpenVPN funciona bien en IPv4, aquí le explicamos cómo hacer que IPv6 funcione en OpenVPN.

Hacer que IPv6 funcione con OpenVPN en el servidor

Agregue las siguientes líneas al final del archivo de configuración del servidor '/etc/openvpn/server.conf'.

client-connect /etc/openvpn/client-connect.sh
client-disconnect /etc/openvpn/client-disconnect.sh

Estos dos scripts construyen/destruyen el túnel IPv6 cada vez que un cliente se conecta/desconecta.

Aquí está el contenido de client-connect.sh.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
ifconfig $dev up
ifconfig $dev add ${BASERANGE}:1001::1/64
ip -6 neigh add proxy 2a00:dd80:003d:000c:1001::2 dev eth0
exit 0

Mi host me asigna direcciones IPV6 del bloque 2a00:dd80:003d:000c::/64. Por eso uso
2a00:dd80:003d:000c como RANGO BASE. Modifique este valor según lo que le haya asignado su anfitrión.

Cada vez que un cliente se conecta a OpenVPN, este script asigna la dirección 2a00:dd80:003d:000c:1001::1 como la dirección IPV6 del tap0< interfaz del servidor.

La última línea configura Neighbor Discovery para nuestro túnel. Agregué la dirección IPv6 de la conexión tap0 del lado del cliente como dirección proxy.

Aquí está el contenido de client-disconnect.sh.

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
/sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev
exit 0

Esto simplemente elimina la dirección del túnel IPv6 del servidor cuando el cliente se desconecta. Modifique el valor de BASERANGE según corresponda.

Haga que los scripts sean ejecutables.

chmod 700 /etc/openvpn/client-connect.sh
chmod 700 /etc/openvpn/client-disconnect.sh

Agregue las siguientes entradas a '/etc/rc.local' (también puede modificar los sysctls apropiados en /etc/sysctl.conf).

echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
/etc/init.d/firewall stop && /etc/init.d/firewall start

Estas entradas activan el descubrimiento y reenvío de vecinos. También agregué un firewall.

Cree '/etc/init.d/firewall' y coloque el siguiente contenido.

#!/bin/sh
description: Firewall
IPT=/sbin/iptables
IPT6=/sbin/ip6tables
case "$1" in
start)
$IPT -F INPUT
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
$IPT -A INPUT -i tap+ -j ACCEPT
$IPT -A FORWARD -i tap+ -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -F POSTROUTING
$IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$IPT -A INPUT -i eth0 -j DROP
$IPT6 -F INPUT
$IPT6 -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT6 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT6 -A INPUT -i eth0 -p icmpv6 -j ACCEPT
$IPT6 -A FORWARD -s 2a00:dd80:003d:000c::/64 -i tap0 -o eth0 -j ACCEPT
$IPT6 -A INPUT -i eth0 -j DROP
exit 0
;;
stop)
$IPT -F
$IPT6 -F
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac

Ejecute '/etc/rc.local' e inicie el firewall.

sh /etc/rc.local

Esto completa las modificaciones del lado del servidor.

Hacer que IPv6 funcione con OpenVPN en el cliente

Agregue lo siguiente como las últimas líneas del archivo de configuración de su cliente '/etc/openvpn/client.conf'.

create the ipv6 tunnel
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh
need this so when the client disconnects it tells the server
explicit-exit-notify

Los scripts arriba y abajo construyen/destruyen los puntos finales del cliente IPV6 de la conexión tap0 del cliente cada vez que un cliente se conecta/desconecta hacia o desde el servidor OpenVPN.

Aquí está el contenido de up.sh.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
ifconfig $dev up
ifconfig $dev add ${IPV6BASE}:1001::2/64
ip -6 route add default via ${IPV6BASE}:1001::1
exit 0

El script asigna la dirección IPV6 2a00:dd80:3d:c:1001::2 como la dirección IPV6 del cliente y establece la ruta IPV6 predeterminada a través del servidor.

Modifique IPV6BASE para que sea igual que BASERANGE en la configuración del servidor.

Aquí está el contenido de down.sh.

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
/sbin/ip -6 addr del ${IPV6BASE}::2/64 dev $dev
/sbin/ip link set dev $dev down
/sbin/ip route del ::/0 via ${IPV6BASE}::1
exit 0

Esto simplemente elimina la dirección IPV6 del cliente y elimina la ruta IPV6 cuando el cliente se desconecta del servidor.

Modifique IPV6BASE para que sea igual que BASERANGE en la configuración del servidor y haga que el script sea ejecutable.

chmod 700 /etc/openvpn/up.sh
chmod 700 /etc/openvpn/down.sh

Opcionalmente, modifique '/etc/resolv.conf' y agregue los servidores de nombres IPV6 de Google para la resolución DNS.

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

Reinicie openvpn en el servidor y luego conéctese desde el cliente. Deberías estar conectado. Visite test-ipv6.com para ver si su conectividad IPV6 a través de OpenVPN está funcionando.

Enlaces de referencia

Página de inicio de OpenVPN

Fuente: stavrovski