Mostrando entradas con la etiqueta seguridad. Mostrar todas las entradas
Mostrando entradas con la etiqueta seguridad. Mostrar todas las entradas

viernes, 10 de junio de 2016

Ncat: Escaneando puertos, abriendo shells remotas & volcando discos remotos.








Seguimos con Netcat, esta vez vamos a ver tres puntos concretos como menciona el título de la entrada. En primer lugar veremos como podemos realizar un volcado de disco remoto, esto es aplicable a carpetas más concretas y demás. Cuando estamos dentro de un sistema remoto o simplemente queremos mandar un volcado del sistema nos basta con dejar una orden pendiente con Netcat y ejecutar en el ordenador que querámos la orden Netcat para recibir dicho volcado por ejemplo.

En primero lugar ejecutamos la orden en el sistema que queremos extraer la información en este caso un sistema con ip "192.168.1.12" y aclaramos esa orden al puerto "8080". Sería como la siguiente orden.

dd if=/dev/sda | nc 192.168.0.1 9000
Una vez tenemos hecho esto ejecutamos la siguiente orden en el sistema que queramos volcar la información como muestra la siguiente orden.

nc -l -p 9000 | dd of=/dev/sda

Ahora tenemos el volcado de información en nuestro sistema. Netcat también nos ofrece la posibilidad de ejecutar shells remotas, es decir ejecutar una shell de otro sistema desde el nuestro con todo lo que ello conlleva. Lo que haremos es dejar en el sistema remoto un shell a la escucha mediante la orden "nc -l -p 8080 -e /bin/bash" y en el sistema donde queramos usar esa shell remota " nc direcionipremota 8080".



Por último veremos como escanear puertos mediante la orden "nc -v -w 1 localhost -z 1-3000". Donde escanearemos nuestro propio sistema en busca de puertos abiertos en este caso del 1-3000. En nuestro caso vemos que descubre un puerto abierto el 22.






martes, 7 de junio de 2016

LinkendIn, filtrado de contraseñas: Se siguen cometiendo los mismos errores.








Hemos visto en estos últimos años muchos ataques a la red social de trabajo como es LinkendIn en los cuales se han conseguido las contraseñas de los usuarios desde el 2012 hasta hoy en día. En el último ataque de este año 2016, LinkedIn fue vulnerada y se consiguieron 100 millones de usuarios & contraseñas de esta red social. Hoy os mostramos las contraseñas más usadas, para que nos demos cuenta que aún seguimos cometiendo los mismos errores.





Después de echarle un vistazo nos damos cuenta que aún los usuarios siguen utilizando las mismas contraseñas vulnerables, fáciles de usar y que con un simple ataque de fuerza bruta podríamos deducir (en muchos casos con probar 123456). Kaspersky por ejemplo nos da la posibilidad de ver en cuanto tiempo nuestra contraseña caería en manos de un amigo de lo ajeno mediante su web de comprobación de contraeñas seguras.

Volviendo a los ataques sufridos a Linkedin, es importante estar al tanto de estos ataques para cambiar inmediatamente las contraseñas vulneradas y no solo eso, las demás que puedan coincidir de otros lugares/web/redes sociales también porque también habrán sido vulneradas. Se debe de hacer todo esto porque se conoce que están siendo vulneradas cuentas de otros lugares haciendo los datos obtenidos de ataques como estos. También decir la a la cantidad de información que han podido acceder de toda tu vida laboral en definitiva se ha obtenido muchísima información de los usuarios mas allá de los usuarios/contraseñas que podría ser utilizada para ataques dirigidos.

Por último os dejamos un consejo para nuestras contraseñas, ¡tomemos medidas!. Haciendo uso de una serie de medidas como muestra la imagen extraída de la oficina de seguridad del internauta podemos protegernos mejor.









martes, 31 de mayo de 2016

Analizando vunerabilidades web: Uniscan








Son muchas las veces que nos piden que analicemos paginas webs en busca de vulnerabilidades o que hagamos uso de estas para contemplarlas como una de las opciones de puerta de acceso en los test de intrusión. Para ello hay muchas herramientas las cuales hablaremos más adelante, hoy vamos a echar un vistazo a uniscan.

Uniscan no es más que un escáner de búsqueda de vulnerabilidades que viene implementado en Kali Linux, pero que también podemos descargar en este enlace de sourceforge. Una vez tenemos acceso al mismo ya sea descargado o implementado en Kali Linux, lo primero que haremos es empaparnos de las opciones que nos da mediante la orden "uniscan -h".





Una vez ya estemos documentados haremos uso de los ejemplos en concreto el primero. Y mediante la orden "uniscan -u http://www.webaescanear.com -qweds" iniciaremos el escaneo de dicha web. Una vez esto acabe que llevará un tiempo variable dependiendo del tamaño de la web se generará un documento ".html" en el que se detallará un informe del análisis. Este fichero se encuentra en el directorio "report" de la aplicación, que en el caso de Kali Linux en "/usr/share/uniscan/report/" como se muestra en la imagen.




Ahora abriremos el fichero de la con un navegador y comprobaremos lo encontrado, que en nuestro ejemplo es nada.






Como vemos en el ejemplo vemos los análisis que realiza y que no se encuentra nada, en el caso de este ejemplo el análisis tardar una 1:20 para realizar el análisis completo. Como dato que este reporte haya salido sin encontrarse ninguna vulnerabilidad no quiere decir que no podamos encontrar de otras maneras.





jueves, 10 de marzo de 2016

Ncat: Abriendo puertos a la escucha e iniciar un chat.









Como mencionamos anteriormente, veríamos ejemplos sobre Netcat para ver lo que nos ofrece y en esta entrada en el blog comenzamos con ello. Lo primero antes de nada es decir el entorno que usaremos en adelante para las pruebas y ejemplos que no será mas que dos máquinas cliente/servidor con S.O. derivados de Debian, pero también usaremos entornos Windows para estos ejemplos.

Hoy vamos a ver como podemos dejar a la escucha un puerto abierto para recibir conexiones o por ejemplo iniciar un chat entre ellos. Lo primero es ver la sintáxis de ncat. 

nc [-options] hostname port[s] [ports]
nc -l -p port [-options] [hostname] [port]

Ahora procederemos abrir el puerto que quedará a la escucha para el cliente mediante la orden "nc -l -p 8080" donde -l es listen(a la escucha) -p es el puerto en el que se quedará a la escucha y abierto( 8080). Una vez ejecutado ahora desde el cliente lanzaremos el comando para conectarnos al puerto en concreto "nc [ip del destino] 8080". Ahora en la siguiente imagen (a la izquierda el cliente y a la derecha el servidor) vemos como hemos entablado la conexión e iniciamos la conversación entre ambos. Como dato estas conversaciones van en texto en blanco sin ningún tipo de cifrado.




Es un primer ejemplo sencillo para que veamos la facilidad y potencial de Netcat.



miércoles, 2 de marzo de 2016

Google hacking: Site crawling







Hoy en una entrada más de Google Hacking veremos como lo que se llama site crawling, en definitiva veremos como con Google podremos analizar la estructura de una web. Por ejemplo veremos un ejemplo con la web "www.madrid.es" si hacemos un simple "site:madrid.es" nos saldrán todas las estructuras indexadas por google de la misma, pero si ahora hacemos una exclusión del tipo "site:madrid.es -site:www.madrid.es" veremos que hemos excluido gran parte y hemos mostrados otros.







Y podríamos seguir excluyendo "site:madrid.es -site:www.madrid.es -site:www.decide.madrid.es" y así sucesivamente excluyendo lo que quisiéramos hasta dar con servicios u segmentos del dominio mas interesantes. Todo esto nos lo facilitan múltiples scripts  que incluso podríamos desarrollar nosotros mismos. 





viernes, 26 de febrero de 2016

Ncat: ¿Que es netcat?








Hoy y en adelante vamos a ver detenidamente que es y ejemplos sobre netcat. En las siguientes entradas veremos ejemplos prácticos en los que veremos y pondremos en práctica esta herramienta básica para cualquier IT.

Ncat tiene ya muchos años pero es una de las primeras herramientas que usé cuando me pidieron que iniciara un chat entre dos máquinas mediante un terminal y de las que sigo usando, Netcat nos permite abrir puertos sencillamente y asociar una shell a este. Después de esto nos permite jugar con esto de múltiples maneras transferencia de ficheros, chats, usarlo para que nos de la hora del mismo servidor, mensajes.

Antes de nada como siempre tendremos que leer algo de ncat en wikipedia por ejemplo:
Netcat es una herramienta de red que permite a través de intérprete de comandos y con una sintaxis sencilla abrir puertos TCP/UDP en un HOST (quedando netcat a la escucha), asociar una shell a un puerto en concreto (para conectarse por ejemplo a MS-DOS o al intérprete bash de Linux remotamente) y forzar conexiones UDP/TCP (útil por ejemplo para realizar rastreos de puertos o realizar transferencias de archivos bit a bit entre dos equipos). Fue originalmente desarrollada por Hobbit en 1996 y liberada bajo una licencia de software libre permisiva (no copyleft, similar a BSD, MIT) para UNIX. Posteriormente fue portada aWindows y Mac OS X entre otras plataformas. Existen muchos forks de esta herramienta que añaden características nuevas como GNU Netcat o Cryptcat.
Una vez tenemos una idea clara de lo que es netcat y que es lo que nos ofrece acabaremos mirando un pequeño vistazo como siempre al manual de netcat mediante "man netcat".





En siguientes entradas veremos más en profundidad casos prácticos en los que veremos lo que netcat nos ofrece y podemos hacer con él.

miércoles, 24 de febrero de 2016

Atop, monitorizando la carga en nuestro servidor Linux.






Hoy vamos a hablar de un monitor de sistema el cual nos es más que permitirá monitorizar el sistema, crear logs del mismo con reportes de actividad de los procesos de nuestro servidor Linux y el cual es básico para centralizar todos las cargas de trabajo de nuestro servidor.. 

Atop es un monitor interactivo que nos permite ver los usos de los recursos de todos los procesos, ver la utilización de los discos,adaptadores de red, cpu, memoria y un largo etcétera de posibilidades. Para instalarlo como nosotros hacemos uso de debian nos basta con "sudo aptitude atop" si tenemos otra distribución variaría. Una vez instalado lo iniciamos mediante "sudo atop".




Como vemos en la imagen se nos despliega la interfaz de terminal con todos los procesos y recursos monitorizados. Ahora vamos a dar un repaso los acrónimos que se nos muestran:

PRC: Este línea contiene el total de tiempo consumido de la CPU por el sistema (sys), el usuario (user), el total de los procesos presentes en este momento (proc), el total de número de entradas en ese momento(run), dormidos interrumpibles(tslpi), dormidos ininterrumpibles(tslpu), el número de procesos zombies(zombie), numero de llamadas clonadas del sistema(clones) y el numero de procesos finalizado durante el intervalo de resfresco (exit).

CPU: Esta línea contiene el porcentage de tiempo de CPU que usa en modo kernnel por todos los procesos (sys), en modo usuario (user) por todos los procesos activos (incluidos los procesos iniciados con un valor mas largo de cero), el manejo de las interrupciones(irq), también el porcentaje de tiempo de CPU no usada mientras no hay procesos esperando entrar o salir de disco(idle), tambien mientras un proceos espera a entrar o salir (wait), en casos de multiprocesador hay una línea adicional por cada uno de los procesador individuales.

CPL: Esta línea contiene la información sobre la carga de CPU, el numero de entradas que son permitidas para iniciarse en la CPU o también la espera de entrada/salida del disco, el número de cambios de contexto (csw), el número de servicios interrupidos(intr) y el numero de CPUs disponibles.

MEM: Esta línea contiene información relatada al consumo de memoria, como el total de la cantidad de la memoria física(tot), la cantidad de memoria libre(free), la cantidad de memoria uso cache(cache), la cantidad  memoria usada por el sistema de ficheros metadatos (buff) y la cantidad memoria usada por el kernel malloc's(slab).

SWP: Esta línea contiene la cantidad total de swap en el disco (tot), y la cantidad del espacio libre(feee), la convinación de la memoria virtual.

DSK: Esta línea contiene información sobre la utilización del disco, el porcentaje de tiempo que la unidad esta esperando respuesta (busy), el numero de solicitudes de lectura(read), el número de peticiones de lectura emitidas(write), el número de KiBytes por lectura(KiB/r), el número de KiBytes por escritura(KiB/w), el número de MiBytes por segundo de rendimiento por lecturas (MBr/s), el número de MiBytes por segundo de rendimiento por escritura(MBw/s), la media de espera (avq), la media de numero de milisegundos necesarios por una búsqueda(avio) por búsqueda, latencia y transferencia de datos.

NET: Esta es la información realatada a la utilización de red (TCP/IP), una de estas líneas muestra la actividad de la capa de transporte(TCP y UDP), una línea es la capa IP y una linea por cada interfaz activa.

Esta información del sistema está acompañada por la información del nivel de proceso, información que indica detalles relacionados con los procesos de utilización de los recursos que cambian durante el ultimo intervalo de tiempo( 10 segundos por defecto).

Un importante punto a mencionar son los colores usados por atop (rojo, cian y otros) para indicar el nivel critico del consumo de recursos, como ejemplo un uso excesivo o crítico se indicaría con color rojo.

En cuánto a los comandos interactivos, se puede controlar la salida de información desde el teclado. Por ejemplo, escribiendo m par amostrar la memoria usada, d para ver el uso de la memoria. n para ver la información relacionada al red, v para mostrar las características de los procesos, c la línea de comandos de los procesos, etc... En la siguiente imagen vemos un ejemplo de la opción v.




En definitiva Atop es una herramienta muy util que nos provee de un bucle de actualización de la información sobre la carga de trabajo de nuestro servidor y sus recursos. Como siempre podemos ver más exaustivamente los comandos de configuración en 'man atop'.

miércoles, 3 de febrero de 2016

SCP: Copiando de manera segura.








Anteriormente en las entradas sobre ssh SCP  o secure copy no es mas que un medio para transferencia de ficheros entre host usando el protocolo SSH ( secure shell). Con ello podremos realizar nuestras copias de manera segura.

Ahora vamos a ver las diferentes maneras de usarlo:

· De local a remoto:

scp archivolocal usuario@ipdelservidor:/ruta/destino/del/archivodestino

· De remoto a local:

scp usuario@ipdelservidor:/ruta/archivoremoto /ruta/para/el/nuevo/archivo

· De remoto a remoto:

scp usuario@ipdelservidor1:/ruta/en/servidor1/archivo1usuario2@ipdelservidor2:/ruta/en/servidor2

· Para la copia recursiva de directorios usaremos -r como en los dos siguientes ejemplos:

scp -r archivolocal usuario@ipdelservidor:/ruta/destino/del/archivodestino

scp -r usuario@ipdelservidor:/ruta/archivoremoto /ruta/para/el/nuevo/archivo

Mediante scp podremos hacer copias seguras, compartir esos certificados de manera segura añadiendo la capa de seguridad que nos proporciona ssh. 






martes, 22 de diciembre de 2015

Google hacking: Búsqueda de frases exactas & búsquedas por extensión.








En esta entrada veremos dos opciones que se pueden combinar estas dos opciones y son perfectas para las búsquedas concretas como puede ser un fichero de configuración o un simple libro de formación o un manual de cualquier hardware, etc. Lo primero será ver las búsquedas concretas mediante el uso de las comillas.

Ahora pongamos un ejemplo estamos búscando un modelo en concreto este "UTM 50", del cual necesitamos información en concreto el manual para hacernos con el manejo del mismo. Pues con tan solo usando el parámetro filetype para buscar por extensiones de pdf, y poniendo entre comillas el modelo podremos afinar la búsqueda a lo que necesitamos.

· Ejemplo "UTM 50" filetype:pdf , como vemos nos muestra todos los enlaces con los manuales en pdf que nos facilitará la búsqueda.






· Ejemplo filetype:cfg "radius" (pass|passwd|password) , en este ejemplo somos un poco más malos y buscamos ficheros de configuración de radius con contraseñas y etc. Hacemos uso del valor | que significa lo mismo que OR. Como vemos nos puede servir para lo más inocente como para buscar vulnerabilidades en los ambientes que administramos.

















martes, 15 de diciembre de 2015

Nmap: Detectando impresoras



Como hemos visto anteriormente a lo largo de las entradas de nmap este tiene la versatilidad de poder amoldarse a nuestras necesidades. Por ejemplo en este caso veremos como nos puede servir para la detección de impresoras, muchas veces nuestros clientes se conectan a la red empresarial y tenemos que detectar donde se encuentra la impresora o simplemente nosotros mismos tenemos que detectarla. Esta búsqueda de la dirección ip de la misma la tenemos que hacer a mano, pero siempre tenemos la posibilidad de detectar en que ip está la impresora mediante nmap.

Lo primero que tenemos que ver, los puertos donde podemos buscar las impresoras, estos pueden ser:

9100 - Servicio de impresión RAW de la mayoría de las impresoras.
515   - Puerto LPR/LPD de la mayoría de las impresoras.
631   - El puerto IPP para la mayoría de impresoras modernas y servidores de impresión CUPS.

Con todo esto ya podemos lanzar la petición de detección de impresoras la cual exportaremos a un fichero xml llamado "printer.xml".

nmap -p 9100,515,631 192.168.1.0/24 -oX printer.xml

La clase de red y el rango de dirección IP lo tendremos que modificar en función del tipo de red en el que nos encontremos. Una configurada y lanzada la orden revisaremos el fichero "printer.xml" en busca de las direcciones de las impresoras.





jueves, 10 de diciembre de 2015

Google hacking: Antes de nada un poco de Info.








Google es una herramienta que nos permite realizar búsquedas de todo tipo, pero lo que no se sabe es que exprimiendo al máximo sus capacidades nos permite a nosotros los IT realizar una serie de tareas que nos facilita nuestro trabajo ya sea en materia de seguridad como puede ser en realizar una simple búsqueda. 

A la hora de realizar búsquedas con Google podemos hacer uso de múltiples operadores para realizar búsquedas que nos facilitarán nuestro trabajo como IT. Los operadores de búsqueda son palabras que puedes añadir a las búsquedas para restringir los resultados. Los operadores como se muestran en la siguiente imagen son varios.







Mediante estos operadores podremos especificar las búsquedas centrándonos en páginas webs, partes de la web o tipo de información especifica. Además de todo esto tenemos la posibilidad de utilizar signos y símbolos que nos darán si cabe más aún la posibilidad de de especificar la búsquedas.








En definitiva mediante el buscador que diariamente usamos podemos explotar una potente herramienta de búsqueda que nos dará la capacidad de realizar búsquedas y obtener acceso e información mediante el buscador. En las siguientes entradas de "Google Hacking" podremos ver ejemplos donde exprimiremos al máximo las posibilidades de este potente buscador.







miércoles, 2 de diciembre de 2015

GPG (GnuPG): Cifrado simétrico sobre Linux







Hoy en día el cifrado de las comunicaciones en el ámbito empresarial es de vital importancia ya que cualquiera con pocos conocimientos podría estar a la escucha de nuestras comunicaciones y estar leyendo o captando todas nuestras comunicaciones. El cifrado GPG nos permitirá que aunque se capten estas comunicaciones solo el destinatario o alguien con la clave ( cifrado simétrico) pueda mostrar el contenido de las comunicaciones en definitiva es un poner una capa más de seguridad en nuestras comunicaciones que muchas veces contienen información sensible ( datos bancarios, identidades, etc..).

GPG o GnuPG es un herramienta de cifrado con soporte simétrico y asimétrico que viene a ser un reemplazo a PGP. Lo usos que le podemos dar GPG son mediante el terminal o aplicaciones gráficas pero también es aplicable para cifrar emails mediante pluggins en navegadores y gestores de correo. GPG viene implementado en múltiples sistemas como OpenBSD, GNU/Linux, etc.


Su funcionamiento es sencillo:



GPG cifra los mensajes usando pares de claves individuales asimétricas generadas por los usuarios. Las claves públicas pueden ser compartidas con otros usuarios de muchas maneras, un ejemplo de ello es depositándolas en los servidores de claves. Siempre deben ser compartidas cuidadosamente para prevenir falsas identidades por la corrupción de las claves públicas. También es posible añadir una firma digital criptográfica a un mensaje, de esta manera la totalidad del mensaje y el remitente pueden ser verificados en caso de que se desconfíe de una correspondencia en particular.
GnuPG también soporta algoritmos de cifrado simétricos, por ejemplo CASTS.
GPG no usa algoritmos de software que están restringidos por patentes, entre estos se encuentra el algoritmo de cifrado IDEA que está presente en PGP casi desde sus inicios. En su lugar usa una serie de algoritmos no patentados como ElGamalCAST5Triple DES (3DES), AES y Blowfish. También es posible usar IDEA en GPG descargando un plugin extra, sin embargo este puede requerir una licencia para usuarios de algunos países en donde esté patentada IDEA.
GPG es un software de cifrado híbrido que usa una combinación convencional de criptografía de claves simétricas para la rapidez y criptografía de claves públicas para el fácil compartimiento de claves seguras, típicamente usando recipientes de claves públicas para cifrar una clave de sesión que es usada una vez. Este modo de operación es parte del estándar OpenPGP y ha sido parte del PGP desde su primera versión.



Y después de un poco de teoría una practica simple de cifrado simétrico con GPG sobre Kali Linux, como dato importante los datos cifrados simetricamente son atacables mediante fuerza bruta, conviene introducir una contraseña alfanumérica robusta.

Lo primero que haremos es crear el fichero con su texto y comprobamos que se puede leer el texto creado mediante la orden cat:

echo "texto cifrado" > texto_cifrado.txt
cat texto_cifrado.txt

Ahora procedemos a hacer un cifrado simétrico nos pedirá que le asignemos una única contraseña y se nos genera un txt que sera texto_cifrado.txt.gpg y comprobamos que no se puede leer como antes medienate la orden cat:

gpg -c texto_cifrado.txt
cat texto_cifrado.txt.gpg

Por último desciframos el mensaje cifrado simétricamente mediante la contraseña anteriormente asignada:

gpg -d texto_cifrado.txt.gpg 

Como dato final hacemos lo mismo con una contraseña mal puesta y comprobamos que no se descifra. En la siguiente imagen esta descrito todo el proceso.





Como dato final las claves simétricas tienen dos problemas la retransmisión de las claves entre el emisor y receptor. Para solucionar esto se puede organizar sistemas de distribución seguros de claves simétricas. Por otro lado es muy importante la robustez de la contraseña ya que los ataques de fuerza bruta han evolucionado forma increíble usando sistemas de Cloud Computing para descifrar las claves en menos tiempo.


martes, 24 de noviembre de 2015

Buscando direcciones email: theharverster





Muchas veces como IT tenemos que obtener direcciones email de dominios en los que estamos evaluando la seguridad y la fuga de información. Una parte importante de estas evaluaciones es la llamada information gathering (recopilación de información) que es la que nos va permitir montar el proceso de explotación y la búsqueda de vulnerabilidades. Para la búsqueda de direcciones email tenemos TheHarvester el cual nos permite buscar información sobre un dominio.

Para hacer uso de él usaremos Kali, una plataforma de auditoria y seguridad informática.

Abriremos el terminal y ejecutaremos "theharvester" si nos mostrará las opciones, la explicación de las mismas.





Ahora ejecutaremos un ejemplo para buscar emails sobre un dominio aleatorio.





Como vemos se nos mostrarán las dirección y los propios servidores. Este programa para obtener emails, subdominios, host, nombres de empleados, puertos abiertos desde recursos públicos, nos facilitará nuestro trabajo en este apartado de obtención de información.



martes, 17 de noviembre de 2015

Securizando nuestras conexiones: Instalando y configurarando OpenVPN









Como IT una parte importante es la seguridad y esta hay que tomársela bastante en serio y para el ámbito empresarial más aún. En el mundo empresarial son muchas las ocasiones en que sus empleados trabajan en remoto fuera de la intranet, ya sea por trabajo a pie de calle, porque  su estructura empresarial no está centralizada en un lugar concreto en definitiva, a la hora de trabajar con sus sistemas y redes se tienen que vale de conexiones remotas que no son ni seguras ni estables y es aquí donde entra VPN.

Una VPN o red privada virtual nos permite tener una conexión estable, segura, fiable e incluso más rápida que otro tipo de conexiones remotas. Este tipo de conexión nos permite trabajar  a través de la WAN como si estuviéramos en la propia LAN y esto lo permite creando un túnel de conexión desde nuestro cliente hasta la red interna permitiendo trabajar al cliente remoto de una manera local y segura.





Para poner en práctica todo esto nos vamos a valer de un servidor Debian  y de OpenVPN. Antes de empezar la instalación recomiendo que visitéis los enlaces puestos a lo largo de la entrada y que os empapéis bien de los conocimientos previos, también es recomendable la web de OpenVPN que está en perfecto inglés como se ha de esperar. Vuelvo a repetir OpenVPN no es una instalación sencilla, requiere de conocimientos previos para poder llevar a cabo su correcta instalación, configuración y puesta en marcha.

1.- Instalación: Actualizamos el sistema e instalamos OpenVPN.

sudo apt-get update
sudo apt-get install openvpn

2.- Configuración: Comenzamos con la configuración de ficheros y generación de certificados necesarios.

Copiamos ficheros:

cp –r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa

Nos movemos al directorio easy-rsa:

cd /etc/openvpn/easy-rsa

Editamos el fichero vars:

vim /etc/openvpn/easy-rsa/vars

Dejamos esta línea así:

export KEY_SIZE=2048

Ponemos los valores siguientes:

export KEY_COUNTRY="ES"
export KEY_PROVINCE="SE"
export KEY_CITY="Seville"
export KEY_ORG="TEST"
export KEY_EMAIL="mail.mydomain"
export KEY_EMAIL="mail@host.domain
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=changeme
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234

Generamos los certificados dentro del directorio easy-rsa, esto puede variar en el tiempo de exportación en función del tamaño del key:

source ./vars
./clean-all

./build-ca

Generamos el certificado del server:

./build-key-server saw

Ahora generamos el certificado del cliente:

./build-key

Generamos la clave HMAC:

openvpn --genkey --secret ta.key
cp ta.key keys

cp -r easy-rsa/keys/ .

Modificamos la configuración VPN para poner el servidor en funcionamiento:

vim /etc/openvpn/server.conf

Dejamos el archivo como aparece a continuación:

port 1194
proto tcp
dev tun

#Nuevos certificados
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/saw.crt
key /etc/openvpn/keys/saw.key
dh /etc/openvpn/keys/dh2048.pem
tls-auth /etc/openvpn/keys/ta.key 0

#rangos de direcciones
server 192.168.1.50 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"

#DNS 
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

client-to-client
keepalive 10 120

cipher AES-256-CBC # Triple-DES
comp-lzo

max-clients 5

user nobody
group nogroup
tcp-nodelay
persist-key
persist-tun

log /var/log/openvpn.log
status /var/log/openvpn-status.log

verb 3
mute 20
#client-config-dir ccd

Habilitamos el bit de forwarding:

echo 1 > /proc/sys/net/ipv4/ip_forward

Eliminamos decomentamos la linea "net.ipv4.ip_forward=1"en el fichero "/etc/sysctl.conf":

vim /etc/syscrl.conf

Cargamos el módulo tun:

modprobe tun

Después de esto habilitamos el servicio y lo arrancamos:

/etc/init.d/openvpn start

Añadimos la siguiente línea de comando para iptables:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s "192.168.88.0/24" -j ACCEPT
iptables -A FORWARD -j REJECT

iptables -t nat -A POSTROUTING -s "192.168.1.0/24" -j MASQUERADE

Finalmente guardar las reglas:

iptables-save


Finalmente vuelvo a recordar que para montar un servidor de este tipo debemos de tener unos conocimientos previos, esta guía es una mera muestra de como montarlo. Para llevarlo a acabo se deben tener conocimientos preestablecidos sobre redes, sistemas operativos, VPN y OpenVPN.