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

miércoles, 11 de diciembre de 2013

Proxy (Squid + Dansguardian) - Debian



Lo primero que debemos de hacer es actualizar los repositorios
#apt-get update

Luego configuramos las interfaces del servidor. La eth0 está conectada a Internet y la eth1 está conectada a la Red local.
# nano /etc/network/interfaces


Ahora vamos a descargar el Squid y una vez instalado verificamos que este funcionando. 
# apt-get install squid
# service squid status


Para la configuración del servidor proxy tenemos el fichero squid.conf, pero como este tiene tanta información y puede ser algo confuso cambiamos de nombre el fichero squid.conf por squid.conf.original y creamos uno nuevo.

#mv /etc/squid/squid.conf /etc/squid/squid.conf.original
#nano /etc/squid/squid.conf

El fichero creado debe quedar con una configuración básica como la que parece en las imágenes.
NOTA: OJO con el orden ya que es muy importante para su funcionamiento.
PDT: El servidor proxy puede ser transparente (no es necesario configurar cliente por cliente) colocando el comando http_port 3128 transparent


Ahora vamos a descargar el Dansguardian para filtrar la paquetería Web


Luego de instalar el dansguardian, vamos a editar su fichero de configuración: (es recomendable trabajar con un analizador/filtrador de virus como lo es el Clamav o editar en este fichero virusscan= on)
#nano /etc/dansguardia/dansguardian.conf

En la linea donde dice UNCONFIGURED la dejamos CONFIGURE o comentamos toda la linea con #. Esto se hace para que el servicio pueda arrancar.


En cada parámetro aparecen unas indicaciones para el funcionamiento del Dansguardian, estos se configuran según la necesidad.


Esta linea hay que des-comentarla para poder ver los registros que se transmiten al filtrar los ficheros, estos registros son configurables para mostrar la información de cada usuario al acceder al Internet


Como podemos ver en la siguiente imagen, tanto la aplicación de filtrado de paquetes como el proxy deben de ser especificados para que se realice un adecuado proceso.


Según mi necesidad al momento de sacar los registros


El Dansguardian viene con varios idiomas al momento de procesar y sacar informes de lo ejecutado


En está imagen podemos ver una variedad de directorios y ficheros los cuales son específicos para un buen filtrado en la Web


Archivos de filtros en /etc/dansguardian/list

bannedphraselist
contiene una lista de frases prohibidas. Las frases deben estar entre <>. Por defecto incluye una lista ejemplo en inglés. Las frases pueden contener espacios. Se puede también utilizar combinaciones de frases, que si se encuentran en una página, serán bloqueadas.

bannedmimetypelist
contiene una lista de tipos MIME prohibidos. Si una URL devuelve un tipo MIME incluido en la lista, quedará bloqueada. Por defecto se incluyen algunos ejemplos de tipos MIME que serán bloqueados.

bannedextensionlist
contiene una lista de extensiones de archivos no permitidas. Si una URL termina con alguna extensión contenida en esta lista, será bloqueada. Por defecto se incluye un archivo ejemplo que muestra como denegar extensiones.

bannedregexpurllist
contiene una lista de expresiones regulares3 que si se cumplen sobre la URL ésta será bloqueada.

bannedsitelist
contiene una lista de sitios prohibidos. Si se indica un nombre de dominio todo él será bloqueado. Si se quiere sólo bloquear partes de un sitio hay que utilizar el archivo bannedurllist. También se pueden bloquear los sitios indicados exeptuando los dados en el archivo exceptionsitelist. Existe la posibilidad de descargarse listas negras tanto de sitios como de URLs y situarlas en los archivos correspondientes. Están disponibles enhttp://dansguardian.org/?page=extras.

bannedurllist
permite bloquear partes específicas de un sitio web. bannedsitelist bloquea todo el sitio web y ésta sólo bloquea una parte.

banneduserlist
lista de los nombres de usuario que estarán bloqueados.

En mi caso voy a utilizar el Dansguardian, me dirijo al fichero bannedsitelist y a lo ultimo del fichero coloco las paginas a denegar. (No es necesario colocar http:// ni www.)
facebook.com
twitter.com
hotmail.com

Ahora hay que crear las políticas de manejo de paquetes con el IPTABLES, para que la paquetería vaya de un puerto al otro y logre realizarse el filtrado.
Este es un script de manipulación de prueba y ensayo


Estos son los comandos que no se logran ver bien. Los 2 primeros son los paquetes de Internet redireccionados al servidor proxy y el ultimo es del servidor proxy al dansguardian

iptables -t nat -A PREROUTING -i eth1 -s 192.168.2.0/24 -d 0.0.0.0/0.0.0.0 -p tcp --dport 80 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -i eth1 -s 192.168.2.0/24 -d 0.0.0.0/0.0.0.0 -p tcp --dport 433 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3128 -j REDIRECT --to-port 8080

###############################################################################
Otra forma de filtrar las paginas Web es por medio del Squid, en la 4 linea podemos ver como se especifica la ruta de un fichero en el control de acceso (acl pag_prohibidas url_regex "/etc/squid/denegadas"), en este fichero van a estar las paginas y las palabras claves las cuales se van a denegar gracias a la ultima linea que dice http_access deny pag_prohibidas.

NOTA: Estos se debe hacer con el debido enrutamiento con IPTABLES



En la siguiente imagen se muestra un ejemplo:

 ################################################################################

Por ultimo vamos a reiniciar los servicios
Servidor Proxy  >>  #service squid restart / reload
Servidor dansguardian  >>  #service dansguardian restart / reload

Ahora solo será colocar un cliente en la misma red que el servidor proxy y en el navegar configurar el proxy, ingresamos las paginas de facebook, twitter y hotmail; Y podremos ver como el dansguardian filtra las paginas
Ej. facebook


En el servidor podemos ver los LOGs.
tail -l 20 /var/log/squid/access.log   >> Squid
tail -l 20 /var/log/squid/store.log  >>  Squid
tail -l 20 /var/log/dansguardian/access.log  >> Dansguardian

La siguiente imagen pertenece al Dansguardian y podemos ver que el host 192.168.2.10 intento ingresar a las 3 paginas bloqueadas y el servidor 192.168.1.2 con ayuda del Dansguardian los bloqueo.






jueves, 5 de diciembre de 2013

Certificados con OpenSSL - Debian

Con estos certificados podremos crear una autoridad, con la cual todo servicio, aplicación y/o usuario estará relacionado con nuestra organización.

1. Actualizamos los repositorios.
#apt-get update

2. Instalar los paquetes de OpenSSL.
#apt-get install openssl


3. Creamos un directorio (#mkdir miCA) donde van a estar los certificados nuevos de la organización. (Esto por una mejor seguridad y un mejor orden, ya que por lo general toda configuración de certificados se guardan en directorios por defecto).
Luego de crear el directorio ingresamos en el y procedemos a crear el nuevo CA (#/usr/lib/ssl/misc/CA.pl -newca)


4. Ahora encontraremos ficheros importantes, como el certificado de la AC  y su clave  privada. (Cada que se vaya a realizar una FIRMA a un certificado, debemos digitar está clave)

Certificado de la AC  >>> (/etc/miCA/demoCA/cacert.pem)
Clave de la AC  >>>  (/etc/miCA/demoCA/private/cakey.pem)


En general, el certificado de la autoridad de certificación (cacert.pem) deberá poseerlo cualquier usuario que desee comprobar la autenticidad de otros certificados firmados digitalmente por nuestra autoridad de certificación.

Creación de Certificados Firmados.

1. Ingresamos a nuestro directorio miCA y seguimos los siguientes pasos:
#openssl req -new -keyout newkey.pem -out newreq.pem -days 365



2. Ahora vamos a transferir dichos ficheros a un certificado.
#cat newkey.pem newreq > new.csr


3. Cuando se ejecuto la solicitud openssl req , este nos pidió la información del usuario que será propietario del certificado.



Los ficheros creados son:
newkey.pem     >>>  Clave del usuario
newreq.pem     >>>  Solicitud de Certificado
newcert.pem  >>>  Certificado X.509 del usuario firmado por la AC

NOTA: Es posible que tengamos que convertir los certificados a formatos aceptados por sistemas operativos comerciales (MS Windows), para ello podremos ejecutar los siguientes comandos:

PEM a formato DER (Windows)
#openssl x509 -in cacert.pem -out cacert.cer -sha1 -outform DER 

PEM a formato P12 (Windows)
#openssl pkcs12 -export -in newcert.pem -inkey newkey.pem -certfile demoCA/cacert.pem -out newcert.p12

jueves, 28 de noviembre de 2013

VPN - Debian

1. Vamos a actualizar los repositorios
#aptitude update

2. Instalar la aplicación
#aptitude install openvpn

3. Vamos a activar y luego a probar que este funcionando la interfaz TUN


4. Copiar los archivos de la aplicación al directorio /etc/openvpn y ingresaremos al directorio 2.0
#cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/  /etc/openvpn/


5. Editar el  fichero /etc/openvpn/2.0/vars

Cambiar:
export EASY_RSA="`pwd`"
por:
export EASY_RSA="/etc/openvpn/2.0"

Cambiar:
export KEY_COUNTRY=pais_del_vpn
export KEY_PROVINCE=departamento_del_vpn
export KEY_CITY=ciudad_del_vpn
export KEY_ORG=nombre_de_la_vpn ó servidor
export KEY_EMAIL=nombre@mi-dominio.com
export KEY_CONFIG='/etc/openvpn/2.0/whichopensslcnf $EASY_RSA'




6. Vamos a dar permisos al fichero vars y a ejecutar la limpieza para configurar el certificado de Autoridad


7. Editar la localización del Certificado
Cambiar:
"$EASY_RSA/pkitool" --interact --initca $*
Por:
"/etc/openvpn/easy-rsa/2.0/pkitool" --interact --initca $*


8. Crear el Certificado de Autoridad
#source vars
# ./clean-all
#./build-ca

Country Name (2 letter code) [CO]: CO
State or Province Name (full name) [ANT]: ANT
Locality Name (eg, city) [Medellin]: MED
Organization Name (eg, company) [RPO.CO]: RPO.CO
Organizational Unit Name (eg, section) [VPN]: VPN
Common Name (eg, your name or your server's hostname) [VPN CA]: ADMIN
Name []:
Email Address [usuario@dominio.com]:admin@rpo.co

9. Ahora editar el certificado del servidor
# ./build-key-server servidor


10. Ahora vamos con el primer usuario (./build-key usuario), para los demás usuarios seguimos este paso
#./build-key admin




12. Vamos a crear los parámetros DF (Diffie Hellman)


13. Visualizemos la creacion de los certificados, sesiones y claves en el directorio /etc/openvpn/2.0/keys/


14. (OPCIONAL) Copiamos los datos principales del directorio /etc/.../keys a /etc/openvpn


15. Hay que crear el fichero openvpn.conf donde estarán las especificaciones del servicio

A) definimos la interfaz a utilizar, protocolo (TCP o UDP) y puerto.
B) definimos los fichero de certificación y autenticidad del servidor
C) definimos que no habrán usuarios ni grupos privilegiados y el rango de direcciones de la red local
D) definimos parámetros que ayudaran a mantener la conexión después de cada reinicio de servicio
E) definimos el parámetro que nos proveerá de buena información
F) definimos los parámetros que ayudan a mantener una vía activa, detallando lo que viaja en la red, ubicando la info en un fichero especifico y el compacto de los paquetes que circulan



16. Ahora seguiremos los siguientes pasos, para activar el reenvio de datos, para asegurarnos de que el TUN este activo y para enjaular los usuarios que manejan windows.



17. Ahora iniciamos el servicio


#service openvpn restart (reiniciar por si se realizan cambios en la configuración)
#service openvpn stop (detener es servicio VPN)

18. Verificando que el servicio VPN se este ejecutando
MENSAJE DEL SISTEMA (podemos ver al final el sequence complete)

VISUALIZACIÓN DE LA INTERFAZ TUN0 (podemos ver que se asigno una IP del rango) 
El servidor tiene en estos momentos 3 interfaces: eth0 (Conexión a Internet), eth1 (Conexión a Red Local) y TUN0 (Creada para la VPN)

VISUALIZACIÓN DEL PUERTO

Instalación de los clientes (Windows)


1. Descargamos e instalamos el cliente de:


Luego de descargado lo ejecutamos:

 





2. Una vez todo listo copiamos los archivos ca.crt, admin.crt, admin.key y admin.csr en:
A) C:/Archivosdeprogramas/openvpn/config este directorio se encuentra oculto y sirve para dar seguridad al proceso. 
B) C:/Archivosdeprogramas/Openvpn technologies/Openvpn Client/  más simplemente, igualmente funciona con todos los ficheros en el mismo lugar.




3. Luego de instalar el adonet instalamos por defecto el cliente vpn para windows y creamos un archivo llamado: "Nombre_Cliente".ovpn, para mi caso será steven.ovpn:

#Contenido de steven.ovpn
dev tun
client
proto tcp
remote 10.0.1.2 1122
(Tipo_cliente 'remote' - IP_servidor_eth1 - Puerto de transmición)
resolv-retry infinite
nobind
user nobody
group nogroup

persist-key
persist-tun
ca ca.crt
cert admin.crt
key admin.key
comp-lzo

verb 3

NOTA: En la instalación del OpenVPN para Windows hay un ejemplo del cliente, yo lo copie y lo re-configure, pero solo se necesita la información arribe presente.

           

4. Lo situamos en la ubicación correcta:



5. Ejecutamos el OpenVPN Client, seleccionamos en Connection Profiles



6. Cuando damos click acá nos sale este cuadro y seleccionamos Local File 


7. Seleccionamos el usuario creado, en mi caso steven.ovpn


8. Damos click en guardar [Save]


9. Click en el botón naranja, luego de esto empezara a cargar la conexión y no s dará un dirección IP que este contenida en la red VPN (El rango debe ser especifico al cual se puede acceder a internet), en mi caso hice una diferente para identificar la red a la cual me estoy conectando.


10. Con el CMD podemos verificar que ya estamos conectados, siempre y cuando estemos en el mismo rango de red.


11. En el fichero especificado en la creación del servidor, podemos ver los procesos realizados y detallados, gracias a la verbosidad [verb 3]