Actualizado el 26 de Octubre del 2020 (Publicado el 16 de Abril del 2017)
2.276 visualizaciones desde el 16 de Abril del 2017
49,3 KB
23 paginas
Creado hace 22a (04/02/2003)
vpn
VPN − VIRTUAL PRIVATE NETWORK
REDES PRIVADAS VIRTUALES
1. QUE ES UNA VPN?
El término VPN se refiere a una Red Privada Virtual (Virtual Private Network), la cual utiliza
Internet como mecanismo de transporte, manteniendo la seguridad de los datos en la VPN.
La configuración más común de VPN es a través de una red interna principal y nodos remotos
usando VPN para lograr el acceso completo a la red central. Los nodos remotos son comunmente
oficinas remotas o empleados trabajando en casa. También pueden vincularse dos redes más
pequeñas para conformar una red simple, incluso más grande.
2. COMO TRABAJA?
Para construir una VPN se crea un túnel seguro entre las dos redes y se realiza enrutamiento IP a
través de él.
\ \
−−−−−−−− / / −−−−−−−−
Remote ______| Client |______\ Internet \_____| Server |______ Private
Network | Router | / / | Router | Network
−−−−−−−− \ \ −−−−−−−−
/ /
Client
Router
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
| /−> 10.0.0.0/255.0.0.0
\ |
Remote | |−−> 172.16.0.0/255.240.0.0 |−−> Tunnel >−−−\ |
Network >−−−|−−|−−> 192.168.0.0/255.255.0.0 /
|−−|−−−−> Internet
192.168.12.0 |
| | |
| \−−−−−> 0.0.0.0/0.0.0.0 −−> IP Masquerade >−− / |
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Server Router
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
| /−>
1/23
vpn
10.0.0.0/255.0.0.0 \ |
| /−−> Tunnel >−−|−−> 172.16.0.0/255.240.0.0
|−−|−−−−> Private
Internet >−−|−−| \−−> 192.168.0.0/255.255.0.0 /
| Network
|
| |
172.16.0.0/12
| \−−−−−> 0.0.0.0/0.0.0.0 −−−−−>
/dev/null | 192.168.0.0/16
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
El diagrama anterior muestra como debería configurarse la red. El enrutador cliente es una caja
Linux que actúa como gateway o firewall para la red remota. Como se observa, la red remota usa la
red local 192.168.12.0. Para un diagrama simple, se libera la información de enrutamiento local en
los enrutadores. La idea básica es enrutar el tráfico a todas las redes privadas (10.0.0.0, 172.16.0.0 y
192.168.0.0) a través del túnel. La configuración que se muestra aquí es sólo una opción. Esto hace
que aunque la red remota pueda ver la red privada, la red privada no necesariamente puede ver la
red remota. Con el fin de que esto ocurra se debe especificar que las rutas sean bidireccionales.
En el diagrama también se puede notar que todo el tráfico emergente del enrutador cliente sale de él,
es decir, todo desde una dirección IP. Se podrían enrutar números reales desde el interior de la red,
pero eso conlleva a toda clase de problemas de seguridad.
2.1 SSH y PPP
El sistema descrito para implementar VPN usa SSH y PPP. Básicamente se emplea SSH para crear
un túnel de conexión y después usa PPPD para correr tráfico TCP/IP a través de él (esto significa
que enmascara el túnel). Esto le permite a PPPD comunicarse a través del SSH como si fuera una
línea serial. En el lado del servidor, PPPD corre como el shell de los usuarios en la sesión SSH,
completando el enlace. Después de esto, todo lo que se necesita hacer es el enrutamiento.
Sistemas VPN alternativos
Otros mecanismos para configurar una VPN:
PPTP
PPTP es un protocolo de Microsoft para VPN. Está soportado bajo linux, pero se sabe que tiene
serios problemas de seguridad. Su uso está cubierto en Linux VPN Masquerade HOWTO.
IP Sec
IP Sec es un conjunto de protocolos diferente de SSH.
2/23
vpn
CIPE
CIPE es un sistema de encriptación de red a nivel de kernel que puede ser más apropiado para
instalaciones empresariales.
2.2 SERVIDOR
Seguridad
La seguridad es muy importante para una VPN. Se necesita mantener algunas cosas en mente
mientras se está configurando el servidor.
Adaptación de los demonios
Se puede utilizar un servidor web para descargar un par de archivos necesarios para configurar las
nuevas máquinas para accesar la VPN. Si realmente se quiere correr diferentes servidores en el
gateway, se deben tener en cuenta las restricciones de acceso solo para esas máquinas en la red
privada.
No deben permitirse passwords. Aunque suene ilógico, todas las autenticaciones en esta máquina se
deben hacer mediante el sistema de autenticación de claves públicas de ssh. Así, sólo con esas
claves se puede hacer acceso. Además es mucho más difícil recordar una clave binaria de 530
caracteres de longitud.
Cómo se hace?
Se debe editar el archivo /etc/passwd. El segundo campo contiene el password o alternativamente
'x', indicando que el sistema de autenticación se encuentra en el archivo /etc/shadow. Lo que se hace
es cambiar ese campo con '*'. Esto significa que el sistema de autenticación que hay no es con
password y que no se debe permitir ninguno. El archivo /etc/passwd debería verse así:
...
nobody:x:65534:100:nobody:/dev/null:
mwilson:x:1000:100:Matthew Wilson,,,:/home/mwilson:/bin/bash
joe:*:504:101:Joe Mode (home),,,:/home/vpn−users:/usr/sbin/pppd
bill:*:504:101:Bill Smith (home),,,:/home/vpn−users:/usr/sbin/pppd
frank:*:504:101:Frank Jones
(home),,,:/home/vpn−users:/usr/sbin/pppd
...
Acceso de usuarios
El acceso de los usuarios se hace a través del esquema de autenticación de ssh que indica cómo
pueden accesar los usuarios al sistema mientras se mantiene un alto nivel de seguridad.
Configuración de sshd
3/23
vpn
Se deben configurar las siguientes opciones. La idea es deshabilitar la autenticación de password y
la autenticación de rhosts. Las siguientes opciones se deben establecer en el archivo
/etc/sshd_config:
PermitRootLogin yes
IgnoreRhosts yes
StrictModes yes
QuietMode no
CheckMail no
IdleTimeout 3d
X11Forwarding no
PrintMotd no
KeepAlive yes
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
UseLogin no
Restricción de usuarios
Además de permitir a algunos usuarios acceder al sistema, también hay que asegurarse de que no
accedan recursos privados. Esto se puede hacer fácilmente sólo permitiéndoles correr el pppd.
Utilización de sudo
Existe un pequeño programa llamado sudo que permite la administración de un sistema Unix para
conceder a ciertos usuarios la capacidad de correr ciertos programas como root. Esto es necesario en
este caso ya que pppd debe correr como root. Se necesitará el uso de este método si se quiere
permitir que los usuarios accesen al shell.
Si se decide no permitir a los usuarios tener acceso al shell, entonces el mejor camino es lograr que
el shell sea el pppd. Esto se hace en el archivo /etc/passwd. El último campo del archivo /etc/passwd
es el shell de usuario. No hay que hacer nada especial para trabajar con el pppd, pues cuando un
usuario se conecta, éste se corre como root. Esta es la configuración más simple, así como la más
segura. Es ideal para sistemas corporativos y a gran escala.
Funcionamiento en red
Hay que asegurarse de que los usuarios no solo tengan acceso al sistema, sino también a la red. Esto
puede hacerse utilizando las reglas del uso de firewalls del kernel de Linux y las tablas de
enrutamiento. Utilizando la ruta y los comandos ipfwadm se puede configurar el kernel para
manejar el tráfico en la red en la forma apropiada.
Kernel
4/23
vpn
Con el fin de configurar correctamente el kernel se debe asegurar que las siguientes opciones están
activadas en adición al funcionamiento básico de la red.
Ejemplo para kernel 2.0:
CONFIG_FIREWALL
CONFIG_IP_FORWARD
CONFIG_IP_FIREWALL
CONFIG_IP_ROUTER
CONFIG_IP_MASQUERADE (optional)
CONFIG_IP_MASQUERADE_ICMP (optional)
CONFIG_PPP
Ejemplo para kernel 2.2:
CONFIG_FIREWALL
CONFIG_IP_ADVANCED_ROUTER
CONFIG_IP_FIREWALL
CONFIG_IP_ROUTER
CONFIG_IP_MASQUERADE (optional)
CONFIG_IP_MASQUERADE_ICMP (optional)
CONFIG_PPP
Reglas de filtro
Primero, se escriben la reglas de filtro del firewall que permita a los usuarios accesar a las redes
internas mientras se les restringe el acceso a Internet. Esto es lógico, pues ellos ya tienen acceso a
Internet y si se les permite usar el túnel para accesar la red, se estaría derrochando el ancho de banda
y el procesador.
Las reglas de filtro dependen de la red interna que se esté utilizando. Se debe permitir que el tráfico
entrante desde las VPNs a la red interna ingrese. Esto se puede hacer utilizando la herramienta
ipfwadm en kernel 2.0 o ipchains en kernel 2.2.
Para establecer las reglas con ipfwadm se debe utilizar las siguientes opciones:
# /sbin/ipfwadm −F −f
# /sbin/ipfwadm −F −p deny
# /sbin/ipfwadm −F −a accept −S 192.168.13.0/24 −D 172.16.0.0/12
Para establecer las reglas con ipchains se debe utilizar las siguientes opciones:
# /sbin/ipchains −F forward
# /sbin/ipchains −P forward DENY
# /sbin/ipchains −A forward −j ACCEPT −s 192.168.13.0/24 −d
172.16.0.0/12
Enrutamiento
A continuación hay que indicarle al kernel dónde enviar los paquetes.
5/23
vpn
Se enruta todo el tráfico destinado para las redes privadas en la interface interna, y los demás
tráficos en la interface externa. La especificación de comandos de enrutamiento depende de las
redes internas que se están utilizando
Comentarios de: VPN - VIRTUAL PRIVATE NETWORK REDES PRIVADAS VIRTUALES (0)
No hay comentarios