logotipo

img_google
Linux la revolución ya comenzo
Enlaces y mini how to todo referido al mundo GNU/Linux
Enlaces en ventana nueva


Acerca de Clerigo
Soy aficionando a Linux desde hace mas de 8 años, he probado todo tipo de distribucion y me gustaria compartir con todos ustedes mis experiencias en este mundo y que ustedes compartan las suyas conmigo.-
Sindicación
 
Configuracion de OpenVPN
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



Bien, ahora con un super script que de 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 funciona, 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:

a)openvpn –verb 6 –config /etc/openvpn/tunel.conf
b)/etc/init.d/openvpn restart.


Agradecimientos a Ubuntu-es el portal de Ubuntu en Español