Fandom

Scratchpad

SOcomVPN

219,358pages on
this wiki
Add New Page
Discuss this page1 Share

http://openvpn.net/

Mini cómo de openvpn en debian sarge

El objetivo de este mini manual de openvpn son varios:

  • Comunicar 2 redes alejadas para compartir datos
  • Reducir costes de adsl
  • Proteger los datos que van a circular por esta red virtual, ya que la encriptacion wep no es del todo segura.

Podemos dar varios niveles de seguridad a nuestra vpn ,todo depende de lo importante que sean los datos para nosotros,pero nos hemos decantado por el uso de certificaciones comerciales de opevpn.

Empezemos a luchar como los hombres.

1)Instalacion del paquete openvpn

Tan sencillo como apt-get install openvpn , lo hemos de instalar tanto el cliente como en el servidor.

Debemos asegurarnos que tenemos el controlador tun/tap instalado en el kernel,aunque si tenemos un kernel 2,4,27 o superior, casi seguro que lo tenemos, pero vamos a comprobar si estamos en lo cierto con el comando modprobe -l | grep ‘ tun/tap’ o con lsmod .

2)Fichero de configuracion del servidor

Está en /etc/openvpn y lo hemos llamado tunel.conf y es asi:

vim /etc/openvpn/tunel.conf
status openvpn-status.log
log openvpn.log
verb 6
server 10.0.0.0 255.255.255.0 “esta es la red de ip`s virtuales”
ifconfig-pool-persist ipp.txt
dh /etc/openvpn/dh1024.pem
client-config-dir /etc/openvpn/cld
ca /etc/openvpn/keys/mi-ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dev tun
comp-lzo
port 50000
ifconfig 10.0.0.10 10.0.0.83
route 192.168.121.0 255.255.255.0 “red del servidor”
push “route 192.168.120.0 255.255.255.0″ “red del cliente”

2.1)Instalacion de openssl para generar certificados.

apt-get install openssl

Nuestro fichero quedo de la siguiente manera:

HOME = .
RANDFILE = $ENV::HOME/.rnd
oid_section = new_oids
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem# The private key
RANDFILE = $dir/private/.rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
default_days = 3650 # duracion para 10 años
default_crl_days= 30 # how long before next CRL
default_md = md5 # which md to use.
preserve = no # keep passed DN ordering
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
string_mask = nombstr
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = ES #pais
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = LasPalmas #Provincia
localityName = Locality Name (eg, city)
localityName_default = GALDAR #Localidad
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Excmo. Ayuntamiento de Gáldar #nombre de tu organizacion
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default = Dpto. NNTT #nombre de la unidad organizativa
commonName = Common Name (eg, YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
emailAddress_default = tu email
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
basicConstraints=CA:FALSE
# This is OK for an SSL server.
# nsCertType = server
nsComment = “OpenSSL Generated Certificate”
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
# Extensions for a typical CA
# PKIX recommendation.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = CA:true
[ crl_ext ]
authorityKeyIdentifier=keyid:always,issuer:always

Con esto ya rularia el fichero de coonfiguracion

Bien, ahora con un super script que se curro Eduardo vamos a generar todos los certificados.

#!/bin/sh
# Pa’ asegurarnos que partimos de un directorio “Limpio”
d=./keys
if test $d; then
rm -rf $d
fi
mkdir $d
chmod go-rwx $d
touch $d/index.txt
echo “01″ > $d/serial
# Generar Certificado de Entidad Certificadora (CA)
openssl req -nodes -new -x509 -keyout mi-ca.key -out mi-ca.crt -days 3650
echo “Generado Certificado (CA)”
chmod 0600 mi-ca.key
# Generar Certificado del Servidor (server)
echo “A Generar Certificado del Servidor”
openssl req -nodes -new -keyout server.key -out server.csr
echo “Certificado del Servidor generado”
chmod 0600 server.key
# Firmar Certificado del Servidor
echo “Firmando el Certificado del Servidor”
openssl ca -out server.crt -in server.csr -outdir $d -cert mi-ca.crt -keyfile mi-ca.key -config mi-openssl.cnf
# Generar Certificado del primer cliente (client1)
echo “A Generar certificado del primer cliente”
openssl req -nodes -new -keyout client.key -out client.csr
echo “Certificado del Primer Cliente generado”
chmod 0600 client.key
# Firmar Certificado del primer cliente
echo “Firmando el Certificado del Primer Cliente”
openssl ca -out client.crt -in client.csr -outdir $d -cert mi-ca.crt -keyfile mi-ca.key -config mi-openssl.cnf
# Er’ fichero Diffie Hellman
echo “Creando fichero Diffie Hellman”
openssl dhparam -out dh1024.pem 1024
echo “Fichero DH Generado.”
chmod 0600 dh1024.pem
# Coloca los ficheros dentro del directorio $d
echo “Reubicando los archivos en $d”
mv mi-ca.* $d
mv server.* $d
mv client.* $d
mv dh1024.* $d

y con esto ya tenemos todos los certificados hechos, tanto para el cliente como para el servidor.

3)El cliente.

Hemos de instalar como dije antes el paquete openvpn y tambien el paquete openssl.

El fichero de configuracion del cliente tambien se llamara tunel.conf y su localizacion es la misma que la del servidor.

Vim /etc/openvpn/tunel.conf
client
remote 192.168.111.2”ip publica del server”
ca /etc/openvpn/keys/mi-ca.crt
cert /etc/openvpn/keys/client.crt
key /etc/openvpn/keys/client.key
dev tun
comp-lzo
user nobody
group nogroup
port 50000

Por ultimo y para terminar lo que es la parte de configuracion hemos de copiar en el directorio /etc/openvpn/keys/ del cliente los certificados generados anterior mente con el script de Eduardo, concretamente hemos de pasarle los siguientes:

mi-ca.crt, client.key y el client.crt

Bueno ahora solo nos queda arrancar la vpn a ver si rula, pero si queremos que se arranque siempre que encendamos la maquina vamos a hacer un pequeño script , que pondremos en el arranque.

ArrancandoVpn.sh
#!/bin/sh
openvpn –daemon –verb 0 –config
/etc/openvpn/tunel.conf
#fin del script

Ahora le damos permisos de ejecucion chmod 755 ArrancandoVpn.sh y lo metemos en el arranque con update-rc.d ArrancandoVpn.sh defaults ,esto lo que hara sera ponerlo en cada uno de los rc´s.

Bien solo nos queda arrancar la vpn y lo podemos hacer de dos formas:

* openvpn –verb 6 –config /etc/openvpn/tunel.conf
* /etc/init.d/openvpn restart.

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random wikia