LinuxParty
Qué es una VPN
Una red privada virtual (virtual private network) es una red de comunicaciones canalizada a través de otra red y dedicada a un uso específico. Para nuestro caso esa otra red es Internet. Establecer una VPN que use una red pública como Internet permite eliminar los costos de contratar un enlace dedicado.
Pero Internet no es una red segura así que una VPN debe utilizar autenticación y encriptar el contenido que viaja a través de ella para evitar el uso de packet sniffers (software o hardware que puede interceptar el tráfico en una red insegura).
Utilizar una VPS puede sonar muy esotérico para muchos pero con el incremento de conexiones WiFi y hotspots inseguros en todo el mundo pronto será una necesidad para todos los que no quieren que su información viaje desnuda por la Red.
En el siguiente artículo veremos cómo instalar OpenVPN, una aplicación de código abierto para VPN, en Ubuntu (Varía casí nada entre versiones).
Y aún con más de una decada trabajando con muchos tipos de redes no pretendo ser un experto en TCP/IP y seguridad o que este sea un tratado sobre el tema así que no puedo ofrecer asistencia técnica sobre el tema pero estoy que tendremos a varios especialistas que podrán aportar en los comentarios.
Instalar OpenVPN en Ubuntu paso a paso
Vale, aquí los pasos que seguí para instalar OpenVPN en un cliente y un servidor, ambos corriendo con Ubuntu 7.10 aunque el procedimiento debe ser muy parecido en otras distribuciones. Gracias a Javier Albarracín, Bruno Kamiche y César Villegas por los tips.
Primero definamos algunos puntos:
Servidor: es el equipo que aceptará las conexiones de los clientes a través de la VPN. En mi ejemplo usará el IP x.y.z.w (reemplaza por el IP público de tu servidor) y tiene como nombre servo.
Cliente: el equipo que se conectará al servidor a través de la VPN. Lo llamaremos cliento.
Red privada: la red que definiremos en nuestra VPN, usaremos 10.8.0.0 por lo que tendremos IP's como 10.8.0.1, 10.8.0.2, etc.
Todos los comandos deben ser ejecutados por root o través de sudo.
Los comandos que debes escribir están en negrita.
Para comentar una línea en openvpn.conf usa # al inicio de la línea.
Lo primero es instalar OpenVPN:
Enlace oficial: http://openvpn.net/
sudo apt-get install openvpn
OpenVPN se instala tanto en el cliente como en el servidor, el archivo de configuración que usaremos al iniciar OpenVPN más adelante definirá el rol de cada equipo.
Ahora comenta todas las líneas en /etc/default/openvpn y añade:
AUTOSTART="openvpn"
Esto le dice a OpenVPN cuál archivo de configuración predeterminado utilizará al iniciar el servicio. Los archivos de configuración se guardan en /etc/openvpn y usan la extensión .conf por lo que la instrucción de arriba le dice a OpenVPN que use /etc/openvpn/openvpn.conf, es un archivo que aún no existe y que crearemos en un momento.
Ahora el servicio OpenVPN puede ser iniciado, detenido o reiniciado en la forma usual, veamos:
Iniciar OpenVPN:
/etc/init.d/openvpn start
Detener OpenVPN:
/etc/init.d/openvpn stop
Reiniciar OpenVPN:
/etc/init.d/openvpn restart
Cada vez que se cambian parámetros en /etc/openvpn/openvpn.conf se debe reiniciar OpenVPN.
Crear claves y certificados
Pero antes de continuar crearemos los certificados y claves de seguridad. Todo esto se hace en el servidor como root. Ejecuta:
cd /etc/openvpn/
Y ahora copia el directorio easy-rsa a /etc/openvpn:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/ .
Recuerda que seguimos en el directorio /etc/openvpn. Ahora editaré el archivo vars con nuestro editor favorito (reemplaza vi con el que tú prefieras):
vi easy-rsa/vars
Comenta esta línea:
#export D=pwd
Añade esta:
export D=/etc/openvpn/easy-rsa
Y modifica los siguientes parámetros:
export KEY_COUNTRY=PE
export KEY_PROVINCE=LI
export KEY_CITY=Lima
export KEY_ORG="Nombre-OpenVPN"
export KEY_EMAIL="Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo."
Graba y cierra el archivo.
Ahora ejecuta:
. ./vars
Importante, eso es un punto, un espacio y luego otro punto y seguido por /vars. Muchos lo olvidan.
A continuación:
./clean-all
El siguiente comando crea la autoridad de certificados (CA) usando los parámetros arriba definidos, solo deberás añadir Common Name, yo usé OpenVPN-CA. Este paso usa OpenSSL y si no lo tenías en tu servidor deberás instalarlo primero con:
sudo apt-get install openssl
Ahora sí:
./build-ca
Ahora creamos las claves, primero para el servidor:
./build-key-server server
Esta parte es muy importante. Cuando build-key-server te solicite Common Name escribe server, el mismo parámetro que le diste al comando.
Hay dos preguntas más: Sign the certificate? [y/n] y 1 out of 1 certificate requests certified, commit? [y/n], responde afirmativamente en ambos casos.
Y ahora la clave para el cliente:
./build-key client1
Recuerda usar client1 como Common Name, al igual que el parámetro que usaste para build-key.
Si vas a tener más clientes puedes repetir este último paso para client2, client3, etc.
Ahora genera parámetros Diffie Hellman:
./build-dh
Ahora debes tener un nuevo directorio con claves y certificados en tu servidor: /etc/openvpn/easy-rsa/keys. Para configurar tu primer cliente copia los siguientes archivos de servo a cliento:
ca.crt
client1.crt
client1.key
Lo ideal es usar un canal seguro, yo prefiero scp con autenticación RSA (tema para otro artículo), ejecutando algo como esto en el cliente:
scp alexis@servo:ca.crt .
scp alexis@servo:client1.crt .
scp alexis@servo:client1.key .
Estos comandos asumen que copiaste los archivos al directorio personal del usuario alexis en el servidor y les asignaste permisos de lectura. Luego debes moverlos a /etc/openvpn en el cliente.
Los archivos de configuración: openvpn.conf
Aún en el cliente crea un archivo llamado openvpn.conf en /etc/openvpn y escribe lo siguiente en él:
dev tun
client
proto tcp
remote x.y.z.w 1194
resolv-retry infinite
nobind
user nobody
group nogroup
# Try to preserve some state across restarts.
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
# Set log file verbosity.
verb 3
No olvides reemplazar x.y.z.w por el IP público de tu servidor.
Ahora en el servidor crea un archivo openvpn.conf en /etc/openvpn y escribe lo siguiente en él:
dev tun
proto tcp
port 1194
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
user nobody
group nogroup
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
#status openvpn-status.log
#verb 3
client-to-client
push "redirect-gateway def1"
#log-append /var/log/openvpn
comp-lzo
En mi primeras pruebas tuve conexiones muy lentas y me ayudó desactivar la compresión en cliente y servidor comentando esta línea:
#comp-lzo
Y finalmente configura IP forwarding e iptables para NAT en el servidor:
echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Puedes verificar que la regla fue escrita correctamente con un listado:
sudo iptables -L -t nat
Si tienes un Firewall deberás desactivarlo para probar y luego crear reglas que permitan que el tráfico de tu VPN pase.
Si quieres remover todas las reglas si cometiste un error con:
sudo iptables -F -t nat
Reiniciar OpenVPN en ambos equipos, cliente y servidor, y deberías estar listo.
Si ahora ejecutas ifconfig y route -n deberías ver una nueva interfaz, tun0, en cliente y servidor.
Puedes confirmar que hay conexíon haciendo ping entre ambos usando los IP de las interfaces tun0, por ejemplo:
ping 10.8.0.1
Ahora tu cliente está conectado al servidor a través de OpenVPN y puedes navegar en forma segura a través del IP del servidor.
Consultas:
* QuickStart de OpenVPN http://openvpn.net/index.php/documentation/howto.html#quick
* Ayuda de OpenVPN para Ubuntu: https://help.ubuntu.com/community/VPNServer
* Ayuda sobre IPTables para Ubuntu https://help.ubuntu.com/community/IptablesHowTo
* Openvpn server configuration http://www.juanpablo.netne.net/index.php/en/manuales-linux/red-privada-virtual-openvpn/item/58
Fuente:
http://www.ventanazul.com/articulos/instalar-openvpn-ubuntu-y-usar-hulu
-
Seguridad
- Conexión Segura NFS en Linux, Tunelizar NFS sobre SSH y Configuración de NFS sobre SSH para Mayor Seguridad
- Utilizar ssh sin contraseña con ssh-keygen y ssh-copy-id
- Millones de teléfonos móviles podrían ser vulnerables a la vigilancia del gobierno chino
- Cómo limitar las conexiones SSH a la red local en Linux
- Los televisores inteligentes son como un «caballo de Troya digital» en los hogares
- Snort para Windows, detección de Intrusos y seguridad.
- Detección de Intrusiones con las herramientas: BASE y Snort.
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Configuración con Ejemplos de Snort para Windows, detección de intrusiones
- ¿El gobierno de EE. UU. ignoró la oportunidad de hacer que TikTok fuera más seguro?
- ¿Qué es SSH y cómo se utiliza? Los conceptos básicos de Secure Shell que necesitas saber
- Asegurar memcached del servidor, para evitar amplificar ataques DDoS
- Consejos de Seguridad para Pagos Móviles en España: Protege tus Transacciones con Estos Consejos Prácticos
- 22 herramientas de seguridad de servidores Linux de código abierto en 2023
- 8 hábitos que deben tomar los teletrabajadores altamente seguros