03 diciembre 2013

VPN PARA TONTOS

==CONFIGURACION PRINCIPAL==

 Este es el diagrama del laboratorio:





DETALLES DE HARDWARE PARA EL SERVIDOR:
Maquina virtual en Virtual Box
Centos 6.4 32 bits minimal
512mb ram
2.4ghz 1 solo nucleo
10gb de espacio

nota:  esta configuracion puede utilizarse para conectar equipos por una red LAN interna y para redes WAN.

DETALLES DE LOS EQUIPOS A VIRTUALIZAR
SERVIDOR VPN (EL QUE ACEPTA LAS CONEXIONES)
eth0: 192.168.80.5
tap0:10.8.0.1

CLIENTE LINUX
192.168.80.10
tap0 dhcp 10.8.0.0/24


CLIENTE WINDOWS
ip 192.168.80.2
tap0: dhcp 10.08.0.0/24



1) INSTALACION

-revisamos si ya tenemos los paquetes instalados
rpm -qa | grep openvpn

-agregar el rpm de sourceforce
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
i686 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
x86_64 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

# cd /etc/yum.repos.d
# wget http://repos.openvpn.net/repos/yum/conf/repos.openvpn.net-CentOS6-snapshots.repo

-luego de agregar los repositorios instalamos openvpn
yum install openvpn easy-rsa

-verificamos que el directorio este creado y vacio
ls /etc/openvpn

-verificamos que el demonio este en su ruta
ls /etc/rc.d/init.d/openvpn
    r
-verificamos que todos los archivos de configuracion este disponibles
ls /usr/share/doc/openvpn-2.2.2

-revisar que el easy-rsa se haya instalado
ls /usr/share/easy-rsa/


#-verisamos si el dispositivo esta creado
#cat /etc/net/tun

listado archivos de configuracion y directorios
/etc/openvpn        archivo de config
/usr/share/doc/openvpn-2.2.2    documentacion
/etc/rc.d/init.d/openvpn    demonio
/usr/share/openvpn/plugin    plugins
/etc/openvpn/openvpn-status.log logfie

-CONFIGURACION

-nos movemos al directorio de los archivos de configuracion.  copiamos los archivos de configuracion haca el directorio
cd /usr/share/doc/openvpn-2.2.2

-listamos los archivos de la carpeta antes de copiar
ls easy-rsa/

-listamos los archivos antes de copiar
ls /etc/openvpn

-copiamos todos loas archivos
mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa/* /etc/openvpn/

-confirmamos que todos los archivos se copiaron
ls /etc/openvpn

-nos movemos a al carpeta de los ejemplos de configuracion
cd sample-config-file

-copiamos el archivo de configuracion hacia su nueva ruta
cp server.conf /etc/openvpn/

-nos movemos hacia el directorio easy-rsa v2 en etc
cd /etc/openvpn/easy-rsa/2.0/

-editamos el archivo vars y agregamos la rusa del rsa
vi vars
-----------------------------------------------------------
######cambiamos este parametro
export EASY_RSA="pwd"
######por este de abajo:
export EASY_RSA="/etc/openvpn/easy-rsa/2.0"
-----------------------------------------------------------

copiamos los archivos cnf
cp openssl-1.0.0.cnf openssl.cnf

-cambiamos los permisos a los archivos de este directorio
chmod 755 *

- no se para que sirve esto
./vars

-creamos el directorio donde guardaremos las llaves
mkdir keys

-cargamos los valores de vars
source vars

-limpiamos cualquier rastro de algun certificado antes de proceder a crear cualquier certificado primario
./clean-all


-CREACION DE CERTIFIVADOS

-creamos los certificados y las llaves privadas
./build-ca

-----------------------------------------------------------
country KH
full name PP
city Phnom Penh
organization name RUPP
organization name IT
common name: jeong
name -none
email: tland12@gmail
-----------------------------------------------------------

-listamos la llaves creadas
ls keys/
nos apareceran ca.crt y ca.key

-creamos la llave para el servidor
NOTA: OJO NOCAMBIAR EL NOMBRE SERVER!
./build-key-server server

-----------------------------------------------------------
country KH
full name PP
city Phnom Penh
organization name RUPP
organization name IT
common name: server
name -none
email: tland12@gmail

challenge pass: enter
optional company name: enter
sing the certificate: yes!
1 certificado requiere un certificador: yes
-----------------------------------------------------------

-verificamos que se crearan nuevos archivos
ls keys/

-creamos la llave del cliente en windows y el equipos en linux
OJO: CON EL NOMBRE CLIENT SE GENERARA UN ARCHIVO CON EL MISMO NOMBRE.  ESTOS ARCHIVOS HAY QUE COPIARLOS EN EL CLIENTE Y LUEGO SE ESCRIBE IGUALITO EN EL ARCHIVO DE CONFIGURACION
EJE:  SI EN VEZ DE CLIENTE PONEMOS WIN-2003, ASI MISMO SE GENERARA UN NUEVO ARCHIVO LLAMADO WIN-2003.CRT,KEY Y CSR.  EN EL ARCHIVO DE CONFIG DEL CLIENTE ASI SE LLAMARAN LOS CERTIFICADOS.
./build-key client

-----------------------------------------------------------
country KH
full name PP
city Phnom Penh
organization name RUPP
organization name IT
common name: client
name -none
email: tland12@gmail

challenge pass: enter
optional company name: enter
sing the certificate: yes!
1 certificado requiere un certificador: yes
-----------------------------------------------------------

-verificamos que se crearan nuevos archivos
ls keys/
client.crt y client.key y client.csr

./build-key windows
-----------------------------------------------------------
country KH
full name PP
city Phnom Penh
organization name RUPP
organization name IT
common name: windows
name -enter
email: tland12@gmail

challenge pass: enter
optional company name: enter
sing the certificate: yes!
1 certificado requiere un certificador: yes
-----------------------------------------------------------

-verificamos que se crearan nuevos archivos
ls keys/
window.crt y windows.key y window.csr

-creamos el parametro diffie-hellman
./build-dh      o tambien openssl dhparam -out dh1024.pem 1024

-verificamos que se creo el archivo dh1024.pem
ls keys/
dh1024.pem


-copiamos la configuracion al /etc
cp /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/server.conf

y lo sobre escribimos

-editamos el archivo de config
vi /etc/openvpn/server.conf

-----------------------------------------------------------
port 1194    #puerto que sera utilizado para comunicar los clientes con el servidor
proto udp    #tipo de protoloco que se utilizara para la conexion
dev tun        #tipo de interfaz: tun: linux-linux y tap0 linux-linux-windows documentacion
#---- Seccion de llaves -----
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt    #archvo de la autoridad certificadora
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt    #el certificado del servidor
key /etc/openvpn/easy-rsa/2.0/keys/server.key    #llave del servidor
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem    #
#----------------------------
server 10.8.0.0 255.255.255.0            #asignacion del rango de las ips que utilizaran en el tunel vpn
push "route 10.8.0.0 255.255.255.0"    #
ifconfig-pool-persist ipp.txt        # archivo de registro de las direcciones ips de los cleinte que esten conectados al tunel vpn
keepalive 10 120        #los paquetes se manejan cada 10 segundos y la conexion esta abajo sin no aparece ninguna resp en 120 seg.
;client-to-client        #los clientes solo pueden ver el servidor.
comp-lzo            #activa la compresion en vpn, si se realiza esta operacion en el servidor tambien se debe de hacer en el cliente.
persist-key            #
persist-tun           
max-clients 100            #maximo de clientes
;user nobody            #descomentar si se conectaran usuarios de windows, tambien el goup
;group nobody            #decomentar si se conectaran usuarios de windows, tambien user nobody
status openvpn-status.log    #almacena los eventos y los datos de las conexiones. se puede modificar para que guarde con el nombre del servidor el log
verb 4                #nivel para que se guarde algun dato en el log.
-----------------------------------------------------------

-iniciamos y detenemos el servicio
service openvpn start
service openvpn stop

-iniciamos el servidor de manera manual para ver los mensajes verbose y tener mas datos antes de finalizar la instalacion
openvpn --config server.conf

-en otra terminal entramos y verificamos que la interface tap0 tiene la ip 10.8.0.1
ipconfig tap0

-agregamos el servicio al listado de servicios que inician por defecto
chkconfig openvpn on

-revisamos este reenviando paquetes el servidor
vi /etc/sysctl.conf
net.ipv4.ip-forward=0  ; si esta asi hacemos el siguiente comando

-le indicamos al servidor que puede reenviar paquetes de una interface a otra
echo 1 > /proc/sys/net/ipv4/ip_forward

-volvemos a revisar que este cambiado el parametro a 1
vi /etc/sysctl.conf
net.ipv4.ip-forward=1

-ver los cambios
sysctl -p

-guardamos los cambios
sysctl -w

-agregamos al iptables que todas las conexiones de tap0 entren
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A OUTPUT -oi tap+ -j ACCEPT



-INSTALACION Y CONFIGURACION DE LOS CLIENTES


-LINUX

-revisamos si ya esta instalado el openvpn
rpm -qa | grep openvpn

-si no esta instalado procedemos a instalarlo
yum install openvpn

-copiamos el archivo de configuracion
cp /usr/share/doc/openvpn-2.2.2/sample-config-files/client.conf /etc/openvpn/
cp /usr/share/doc/openvpn-2.2.2/sample-config-files/client.crt /etc/openvpn/
cp /usr/share/doc/openvpn-2.2.2/sample-config-files/client.key /etc/openvpn/

-editamos la configuracion
cd /etc/openvpn/
vi client.conf


OJO: LA RUTA DE LOS CERTIFICADOS CRT Y KEY DEBEN DE COLOCARSE IGUAL QUE COMO SE GENERARON ANTERIORMENTE.
-----------------------------------------------------------
client        #configuracion de un cliente
dev tun        #interface
proto udp    #protocoo de transmision
remote 172.16.101.166 1194    #la ip del servidor
;user nobody       
;groud nobody
float   
resolv-retry infinite
nobind
persist-key
persist-tun
#------ LLAVES Y CERTIFICADOS --------
ca /etc/openvpn/keys//ca.crt
cert /etc/openvpn/keys/client.crt
key /etc/openvpn/keys/client.key
#-------------------------------------
ns-cert-type server
comp-lzo        #compresion de la comunicacion
verb 3            #modo de recoleccion de datos
-----------------------------------------------------------


scp root@server:/etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn

-verificamos que se haya copiado
ls /etc/openvpn

-arrancamos el server manual para ver todo de forma verbose
openvpn --config client.conf

-verificamos que la ip sea 10.8.0.2
ifconfig tap0

-verificamos que haya comunicacion
ping 10.8.0.1


-WINDOWS
descargar el openvpn-install-2.3.0-I005-i686.exe de la pagina openvpn.net

copyamos el ca.crt y el windows.crt y key desde el servodr a:
c:\program files (x86)\openvpn\config\ca.crt window.crt window.key

editamos el archivo
c:\program files (x86)\openvpn\config\client.ovpn

-----------------------------------------------------------
remote 192.168.80.5 1194
dev tap
ca ca.crt
cert window.crt
key window.key
-----------------------------------------------------------

nota: tenemos que copiar los archivos por ftp o por samba

-conectamos el programa por el inicono de abajo

-revisamos la confexion
ipconfig /all


ping 10.8.0.1
ping 10.8.0.2


-AGREGANDO HOST QUE VIENEN DESDE INTERNET

en el servidor editamos el archivo de configuracion
vi /etc/openvpn/server.conf

push "route 192.168.56.0 255.255.255.0 ip-gatw\eway"


-en el cliente hacemos una prueba con:
route -n ip-serv


-AGREGANDO AUTENTICACION POR USUARIOS
en el servidor editamos el archivo de configuracion y agregamos el pluging:
vi /etc/openvpn/server.conf
-----------------------------------------------------------
;server-brigde
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
-----------------------------------------------------------

-reiniciaos el servicio
service openvpn restart

-en el cliente
vi /etc/openvpn/client.conf

-----------------------------------------------------------
auth-user-pass
-----------------------------------------------------------

-arrancamos el server manual para ver todo de forma verbose
openvpn --config client.conf

-nos pedira usuario y contrasena
#investigar k usuario y contrasena es

-verificamos que se haya creado la conexion tag0
ifconfig

-probamos la comunicacion desde el cliente
ping 10.8.0.1

-probamos la comunicacion desde el server
ping 10.8.0.2



-AGREGAMOS UNA INTERFACE PARA MANTENIMIENTO

-en el server:
vi /etc/openvpn/server.conf
 
-----------------------------------------------------------
management localhost 7505
-----------------------------------------------------------

service openvpn restart
telnet localhost 7505


-PUSHING DHCP OPTIONS TO CLIENTS
-en el server:
vi /etc/openvpn/server.conf

-----------------------------------------------------------
push "dhcp-option DNS 10.8.0.4"
push "dhcp-option DNS 10.8.0.5"
----------------------------------------------------------
-