FESOL/201801/especializacion/proyectos/Intranet

De FESOL. Proyectos de Software Libre ULS
Saltar a: navegación, buscar

Presentación

UNIVERSIDAD LUTERANA SALVADOREÑA

FACULTAD DE CIENCIAS DEL HOMBRE Y LA NATURALEZA


Logo.jpg


TEMA: Intranet Escolar con servicios de Firewall, Filtro Web, Proxy Web Transparente, DHCP, DNS, LDAP, Web y Almacenamiento de fácil instalación.


PRESENTADO POR:

Heriberto de Jesús Claros Parada

Nahum de Jesús Villafranco Nolasco

DOCENTE: ING. MANUEL VILLATORO

Palabras clave

Bash, Cliente, Dhcp, Dns, Dominios, Firewall, Ip, Lan, Ldap, Proxy, Red, Script, Servidor, Ssh.

Introducción

El presente proyecto consiste dar a conocer a fondo la configuración de diversos servicios que conforman una Intranet como una necesidad de herramienta y dispositivos tecnológicos inmersos en el área de la informática ya que en algunas instituciones o empresas llámense estas públicas o privadas las redes aparecen con información de manera privada para el debido funcionamiento de las mismas, se debe de considerar contar con los servidores básicos útiles y necesarios de Intranet para una mayor eficiencia y eficacia. Es por ello que como estudiantes de la Universidad Luterana Salvadoreña cursando la especialidad en Servidores LINUX, tomamos a bien desarrollar la investigación para poner en práctica los conocimientos de la misma y aquellos que se conocieron en el recorrido de la carrera; Además se muestra el uso correcto y el funcionamiento debido, de una Red Intranet la instalación de la misma y su respectiva configuración con los servidores DHCP,DNS,FIREWALLS,PROXY WEB Y LDAP, no dudamos que este proyecto será de gran utilidad para conocimientos no solo de los investigadores sino también para las y los estudiantes de informática.


PRESENTACIÓN:

Archivo:Presentacion Intranet.odp

BROCHURE:

Archivo:Brochure Intranet.pdf

Marco Teórico

¿Qué es una Intranet?

Intranet es el nombre que se le da a la red corporativa interna de una empresa u organización, a la cual solo pueden acceder los empleados de la misma dentro de la propia estructura informática de la compañía, y se utiliza para aprovechar los servicios disponibles en ella como páginas, aplicaciones y todo otro recurso que necesiten para llevar a cabo sus tarea.

Las intranets son la mejor solución disponible para que los empleados de una compañía trabajen de forma mancomunada y centralizada, ya que al compartir los mismos recursos base como documentos, informes, planillas, videos, audios y demás, nunca podrán manejar información que está desactualizada, y por lo tanto el resultado global será óptimo y sin datos erróneos o inconsistencias. Además es un importante ahorro en materia de almacenamiento de datos, ya que los usuarios no tienen que tener información almacenada en sus propias computadoras. En terminos simples una Intranet es un sistema de red privado que permite compartir recursos entre sus miembros. La Intranet existe en las empresas prácticamente desde los propios inicios de Internet, de hecho, lo primero que existía era una Intranet privada montada por ciertas universidades con el fin de compartir información académica y artículos científicos, la apertura de esta Intranet al resto del mundo provocó el nacimiento de lo que hoy en día llamamos Internet.

Servicios que utiliza

SERVIDOR DHCP

Para que cada sistema conectado a una red esté identificado de forma correcta, tiene que tener una dirección IP única. Esta dirección se puede configurar manualmente en cada host o de forma automática y dinámica, mediante el protocolo DHCP (Dynamic Host Configuration Protocol o Protocolo dinámico de configuración de host).

¿Que es y para que sirve un servidor DHCP?
Funcionamiento De servidor DHCP

Cuando un sistema es conectado en red, el protocolo DHCP se encarga de atribuirle automáticamente una dirección IP única. Al mismo tiempo, DHCP suministra una serie de parámetros de red como la dirección del gateway, la dirección del servidor , etc. El protocolo DHCP hace que la tarea del administrador de red bastante más fácil, pues la configuración es centralizada, y no distribuida en cada host o puesto.

¿Como funciona?

El servidor DHCP escucha las peticiones de parámetros de red de los equipos que se encuentran configurados para obtenerlas automáticamente.  Así pues un equipo recibe del servidor DHCP la dirección IP, la máscara de red, la puerta de enlace, los servidores DNS y cualquier otro parámetro de red que se requiera. Estos parámetros los entrega el servidor DHCP con un tiempo de vida, conocido tomo “lease-time”, después del cual el cliente DHCP debe solicitar nuevos parámetros al servidor DHCP.

SERVIDOR DNS

¿Que es el servidor DNS?

Son las siglas en inglés de Domain Name System (Sistema de Nombres de Dominio). Este sistema correlaciona el nombre de un equipo en internet con una dirección IP y viceversa. Por ejemplo, gracias ha el sabemos que el servidor cuyo nombre es: www.debian.org tiene la dirección IP 213.129.232.18 y viceversa.

Funcionamiento De servidor DNS

Siempre que se utiliza un nombre para designar a un servidor, como sucede con www.debian.org , éste debe traducirse en la forma de una dirección IP única del mismo servidor. Este proceso se conoce como resolución y es efectuado gracias al Domain Name System () (o en español, Sistema de Nombres de Dominios). Este sistema está constituido por una red global de servidores, organizados en un árbol, donde cada servidor contiene una tabla de asociaciones entre los nombres de los servidores y sus respectivas direcciones IP. Cómo funciona el DNS Supongamos que se pretende contactar el servidor www.google.com. El sistema iniciará una serie de contactos entre otros sistemas diversos, para encontrar cuál es la dirección asociada a la dirección pretendida. Una versión muy simplificada sería la siguiente: posiblemente, el sistema tendrá que contactar a su servidor de , que a su vez, contactará los servidores de tope para indagar acerca del dominio “google.con”, y enseguida contactar el servidor de google para saber la dirección IP de www.google.com. Aunque cada investigación o resolución tarda sólo milisegundos, la visualización de una página web en un browser puede resultar bastante penalizada por este proceso. Especialmente, cuando es posible que varios elementos de la página estén alojados en diversos servidores, cuyas direcciones deban ser resueltas individualmente.

LDAP

¿Que es LDAP?

LDAP (Protocolo compacto de acceso a directorios) es un protocolo estándar que permite administrar directorios, esto es, acceder a bases de información de usuarios de una red mediante protocolos TCP/IP.

Funcionamiento De servidor LDAP

Las bases de información generalmente están relacionadas con los usuarios, pero, algunas veces, se utilizan con otros propósitos, como el de administrar el hardware de una compañía.


El objetivo del protocolo LDAP, desarrollado en 1993 en la Universidad de Michigan, fue reemplazar al protocolo DAP (utilizado para acceder a los servicios de directorio X.500 por OSI) integrándolo al TCP/IP. Desde 1995, DAP se convirtió en LDAP independiente, con lo cual se dejó de utilizar sólo para acceder a los directorios tipo X500. LDAP es una versión más simple del protocolo DAP, de allí deriva su nombre Protocolo compacto de acceso a directorios.


¿Cómo funciona LDAP?

El servicio de directorio LDAP se basa en un modelo cliente-servidor. Uno o más servidores LDAP contienen los datos que conforman el árbol del directorio LDAP o base de datos troncal. el cliente ldap se conecta con el servidor LDAP y le hace una consulta. El servidor contesta con la respuesta correspondiente, o bien con una indicación de dónde puede el cliente hallar más información (normalmente otro servidor LDAP). No importa con qué servidor LDAP se conecte el cliente: siempre observará la misma vista del directorio; el nombre que se le presenta a un servidor LDAP hace referencia a la misma entrada a la que haría referencia en otro servidor LDAP. Es ésta una característica importante de un servicio de directorios universal como LDAP.

PROXY

¿Qué es un proxy?

Funcionamiento De servidor PROXY

Un servidor proxy (cuya traducción literal es “representante“) es una interfaz de comunicación en una red que actúa como mediadora entre dos sistemas informáticos. La tarea básica de un servidor proxy es hacerse cargo, como delegado, de las peticiones de los clientes en un servidor y de transmitirlas con la dirección IP adecuada al ordenador de destino. En este tipo de comunicación no existe una conexión directa entre el remitente y el destinatario. En ocasiones, ni el sistema al que se le hacen las peticiones ni el ordenador de destino saben que hay un proxy de por medio. Los servidores proxy pueden funcionar en dos sentidos. Por un lado, un proxy de reenvío (forward proxy) sirve para proteger a una red cliente frente a influencias de Internet. Si el sistema de destino, por ejemplo, un servidor web, está protegido por medio de un servidor proxy intercalado, se puede hablar en este caso de un proxy inverso (reverse proxy).


¿Como funciona?


   1. El cliente realiza una petición (p. ej. mediante un navegador web) de un recurso de Internet (una página web o cualquier otro archivo) especificado por una URL.
   2. Cuando el proxy caché recibe la petición, busca la URL resultante en su caché local. Si la encuentra, contrasta la fecha y hora de la versión de la página demanda con el servidor remoto. Si la página no ha cambiado desde que se cargo en caché la devuelve inmediatamente, ahorrándose de esta manera mucho tráfico pues sólo intercambia un paquete para comprobar la versión. Si la versión es antigua o simplemente no se encuentra en la caché, lo captura del servidor remoto, lo devuelve al que lo pidió y guarda o actualiza una copia en su caché para futuras peticiones.

SERVIDOR WEB

¿Que es un servidor web?

Funcionamiento De servidor WEB

Los servidores web (también conocidos como servidores HTTP) son un tipo de servidores utilizados para la distribución (entrega) de contenido web en redes internas o en Internet (“servidor” hace referencia al verbo “servir”). Como parte de una red de ordenadores, un servidor web transfiere documentos a los llamados clientes (del inglés clients), por ejemplo, una página web a un explorador.

En general, la pregunta “qué es un servidor web” puede referirse a dos cosas: al software del servidor (es decir, al programa en sí) y al equipo en el que el software del servidor web se está ejecutando. Cuando se trata de este último, se habla del host (un host puede alojar múltiples soluciones de software para servidores web). A continuación, nos referiremos explícitamente a alguno de estos significados, ya sea al software de servidor web/software servidor HTTP (o programa) o al host.


¿Cómo funcionan los servidores? Cada servidor Web, y cada computadora conectada a Internet, posee asignada una dirección de IP única, irrepetible, que lo identifica en la red, incluyendo tu móvil o la PC que tienes en tu casa. La dirección de IP puede pensarse como los datos del remitente en una carta postal. Cuando deseas ver un sitio Web, tu móvil, PC o tableta envía un pedido desde tu dirección de IP hacia la dirección IP del servidor que aloja los archivos del sitio en cuestión. Entonces, el servidor Web responde devolviendo los datos a la dirección IP solicitante. Esto es lo que pasa todo el tiempo que estamos navegando un sitio en Internet.

FIREWALL

¿Que es un firewall?

Funcionamiento De FIREWALL

Un firewall o cortafuegos es un dispositivo de hardware o un software que nos permite gestionar y filtrar la totalidad de trafico entrante y saliente que hay entre 2 redes u ordenadores de una misma red.

Si el tráfico entrante o saliente cumple con una serie de Reglas que nosotros podemos especificar, entonces el tráfico podrá acceder o salir de nuestra red u ordenador sin restricción alguna. En caso de no cumplir las reglas el tráfico entrante o saliente será bloqueado.

Por lo tanto a partir de la definición podemos asegurar que con un firewall bien configurado podemos evitar intrusiones no deseadas en nuestra red y ordenador así como también bloquear cierto tipo de tráfico saliente de nuestro ordenador o nuestra red.

¿Como funciona?

El firewall normalmente se encuentra en el punto de unión entre 2 redes. En el caso que podéis ver en la captura de pantalla se halla en el punto de unión de una red pública (internet) y una red privada. Así mismo también vemos que cada una de las subredes dentro de nuestra red puede tener otro firewall, y cada uno de los equipos a la vez puede tener su propio firewall por software. De esta forma, en caso de ataques podemos limitar las consecuencias ya que podremos evitar que los daños de una subred se propaguen a la otra. Lo primero que tenemos que saber para conocer el funcionamiento de un firewall es que la totalidad de información y tráfico que pasa por nuestro router y que se transmite entre redes es analizado por cada uno de los firewall presentes en nuestra red. Si el tráfico cumple con las reglas que se han configurado en los firewall el trafico podrá entrar o salir de nuestra red.

Si el tráfico no cumple con las reglas que se han configurado en los firewall entonces el tráfico se bloqueará no pudiendo llegar a su destino.

Materiales

3 computadoras

1- Servidor Debian Stretch 9.4 de 64 bits (opcional) y 2- Clientes con Debian Stretch 9.4 de 32-64 bits (opcional)

1-swith

3-cables de red

Conexión a Internet

INFRAESTRUCTURA

Infraestructura.png


VIRTUAL BOX:

VirtualBox es un hipervisor que se utiliza para ejecutar sistemas operativos en un entorno especial, llamado máquina virtual, corriendo sobre un sistema operativo ya existente. VirtualBox está en constante desarrollo y las nuevas características se implementan continuamente. Viene con una interfaz gráfica basada en Qt, así como herramientas de línea de órdenes SDL y headless para la gestión y ejecución de máquinas virtuales.

Con el fin de integrar las funciones del sistema anfitrión en los sistemas huéspedes, incluyendo carpetas compartidas y portapapeles, aceleración de vídeo y un modo de integración de ventanas fluido, se proporcionan complementos huéspedes (guest additions) para algunos sistemas operativos invitados.

DEBIAN 9.4:

Debian o Proyecto Debian (en inglés: Debian Project) es una comunidad conformada por desarrolladores y usuarios, que mantiene un sistema operativo GNU basado en software libre. El sistema se encuentra precompilado, empaquetado y en formato deb para múltiples arquitecturas de computador y para varios núcleos.

IPTABLES 1.6.0:

Iptables es un poderoso firewall integrado en el kernel de Linux y que forma parte del proyecto netfilter. Iptables puede ser configurado directamente, como también por medio de un frontend o una GUI. iptables es usado por IPv4, en tanto que ip6tables es usado para IPv6. CRON: En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab. El nombre cron viene del griego chronos (χρόνος) que significa "tiempo".

DNSMASQ 2.76:

Dnsmasq proporciona servicios como caché DNS y como servidor DHCP. Como un servidor de nombres de dominio (DNS), puede almacenar en caché las consultas DNS para mejorar las velocidades de conexión a los sitios visitados anteriormente, y, como un servidor DHCP, dnsmasq puede ser utilizado para proporcionar direcciones IP internas y rutas a los equipos de una LAN. Uno, o ambos de estos servicios, se pueden implementar. dnsmasq es considerado ligero y fácil de configurar; está diseñado para su uso en un ordenador personal o para su uso en una red con menos de 50 ordenadores. También viene con un servidor PXE.

SARG 2.3.10: Es una herramienta que te permite ver con detalle la actividad de todos los equipos y/o usuarios dentro de la red de área local (LAN), registrada en la bitácora del proxy, provee mucha información acerca de las actividades de usuarios de Squid: tiempo, bytes, sitios, etc.


WEBMIN: Es una herramienta de configuración de sistemas accesible vía web para sistemas Unix, como GNU/Linuxy OpenSolaris. Con él se pueden configurar aspectos internos de muchos sistemas operativos, como usuarios, cuotas de espacio, servicios, archivos de configuración, apagado del equipo, etcétera, así como modificar y controlar muchas aplicaciones libres, como el servidor web Apache,PHP,MySQL,DNS,Samba,DHCP, entre otros.


SQUID 3.5.23:

Squid es un servidor proxy para web con caché. Es una de las aplicaciones más populares y de referencia para esta función, software libre publicado bajo licencia GPL. Entre sus utilidades está la de mejorar el rendimiento de las conexiones de empresas y particulares a Internet guardando en caché peticiones recurrentes a servidores web y DNS, acelerar el acceso a un servidor web determinado o añadir seguridad realizando filtrados de tráfico.


EPOPTES:

Es una aplicación de software libre de gestión y motorización de aulas de ordenadores, usada especialmente en la enseñanza, ya que permite a un profesor tomar el control del aula para realizar demostraciones a los estudiantes. Está disponible para el sistema operativo Linux.

APACHE 2.4.25:

Apache es un servidor web HTTP de código abierto para plataformas Unix-like (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual. En sus inicios se basaba en el código de NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Actualmente es el servidor web más usado en todo el mundo, superando en 2009 los 100 millones de sitios web, el 70% del total. Está desarrollado y mantenido por una comunidad de usuarios en torno a la Apache Software Foundation.

OPENLDAP 2.4.44:

OpenLDAP es una implementación libre y de código abierto del protocolo Lightweight Directory Access Protocol (LDAP) desarrollada por el proyecto OpenLDAP. Está liberada bajo su propia licencia OpenLDAP Public License. LDAP es un protocolo de comunicación independiente de la plataforma. Muchas distribuciones GNU/Linux incluyen el software OpenLDAP para el soporte LDAP. Este software también corre en plataformas BSD, AIX, HP-UX, Mac OS X, Solaris, Microsoft Windows (NT y derivados, incluyendo 2000, XP, Vista), y z/OS.

POTGRESQL 9.6:

Es un sistema de gestión de bases de datos relacional orientado a objetos y libre, publicado bajo la licencia PostgreSQL

Como muchos otros proyectos de código abierto, el desarrollo de PostgreSQL no es manejado por una empresa o persona, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma desinteresada, altruista, libre o apoyados por organizaciones comerciales. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group).

MOODLE 3.5:

Moodle es una plataforma de aprendizaje diseñada para proporcionarle a educadores, administradores y estudiantes un sistema integrado único, robusto y seguro para crear ambientes de aprendizaje personalizados. Usted puede descargar el programa a su propio servidor web, o pedirle a uno de nuestros Moodle Partners que le asista.

Moodle está construido por el proyecto Moodle, que está dirigido y coordinado por el Cuartel General Moodle, que está soportada financieramente por una red mundial de cerca de 80 compañías de servicio Moodle Partners (Socios Moodle).

Manuales

PASOS DE INSTALACIÓN MANUAL

CREACION DEL AMBIENTE DE TRABAJO

-Descargamos la imagen ISO de Debian 9 del sitio web https://www.debian.org/index.es.html para realizar su instalación en Virtualbox

- Instalamos Debian sin interfaz gráfica para el servidor y con entorno de escritorio para los clientes

- En el servidor habilitamos dos adaptadores de red uno en modo adaptador puente y el segundo en red interna, la cual utilizaremos para establecer comunicación con los demás clientes, los cuales también estarán en modo adaptador puente.

Virtualbox.png


-Editamos los repositorios y luego los actualizamos con el comando
apt update


Administrador.png


-Consultamos el nombre de las interfaz de red del servidor con el comando
ip add
para luego definir sus respectivas
ip
estáticas

Servidor.png

- Establecemos una
ip
estática a cada interfaz de red editando el archivo
/etc/network/interfaces
quedando de la siguiente forma

Interfaz.png


-Activamos y desactivamos las configuraciones que hemos establecidos con los comandos

if down enp0s3, ifdown enp0s8
ipup enp0s3, ifup enp0s8

En el caso de las maquinas clientes no les estabecemos una ip estatica ya que el servidor dhcp se encargara de asignarles una

NATEO PARA COMPARTIR INTERNET

- Realizamos un proceso de nateo para compartir el acceso a internet de la interfaz
enp0s3 a la enp0s8,
creamos un
bash script “nat.sh
y lo guardamos en el directorio /home con el siguiente contenido

Nateo.png

- Para que el script se ejecute en cada reinicio editamos el archivo
/etc/crontab
en el cual especificamos que se ejecutara como
root
en cada reinicio el
script
creado anteriormente

Reinicio.png

INSTALAR Y CONFIGURAR SERVIDOR DHCP Y DNS

Para configurar el servidor DHCP y DNS utilizarecemos el software DNSMASQ el cual integra los dos servicios. Para ello debemos instalar los siguientes paquetes:

# apt install dnsmasq dnsutils
-Configurar dnsmasq como servidor dhcp primero estableceremos en cual interfaz resolverá las peticiones de los clientes que soliciten un direccion IP, editaremos el archivo de configuración
“nano /etc/dnsmasq.conf”.

- Descomentamos el parametro interface y establecemos la interfaz en la cual resolvera peticiones.

Interface.png


-Dnsmasq por defecto tiene desactivado el servidor dhcp, para activarlo descomentamos el parámetro
“dhcp-range”
y establecemos el rango de ip que necesitaremos y el tiempo de arrendamiento

Inter.png

-Reiniciamos dnsmasq para que funcione el servidor dhcp con el comando

“/etc/init.d/dnsmasq restart”


- Añadimos todos los registros que necesitemos dentro del archivo
“/etc/hosts”


Restar.png

- Finalmente reiniciamos nuestro servidor DNS con el comando
“/etc/init.d/dnsmasq restart”

Dns.png


-Verificamos el funcionamiento de el servidor dns con el comando
“dig intranet.edu.sv”

Funcion.png

INSTALACION DE SERVIDOR PROXY Y FILTROWEB

Para la instacion del servidor proxy utilizaremos squid el cual nos proporcionara un servicio de proxy http-https transparente, ya que es uno de los mas utilizados actualmente,

Necesitaremos instalar los siguientes paquetes

apt-get -y install devscripts build-essential fakeroot debhelper dh-autoreconf cdbs

apt-get -y build-dep squid

apt-get -y install libdbi-perl libssl1.0-dev

apt-get -y install squid-langpack

- Creamos un directorio donde descargaremos squid

mkdir -p build/squid3

- Accedemos al directorio que creamos con el comando

cd build/squid3


- Descargamos el codigo fuente de squid con los siguientes comandos

wget http://http.debian.net/debian/pool/main/s/squid3/squid3_3.5.23-5.dsc
wget http://http.debian.net/debian/pool/main/s/squid3/squid3_3.5.23.orig.tar.gz
wget http://http.debian.net/debian/pool/main/s/squid3/squid3_3.5.23-5.debian.tar.xz

-Descomprimimos los paquetes descargados con el siguiente comando

dpkg-source -x squid3_3.5.23-5.dsc


-Editamos el archivo rules
“nano squid3-3.5.23/debian/rules

Install.png


-En este listado añadimos las siguientes lineas para habilitar el uso de certificados ssl

--enable-ssl \
--enable-ssl-crtd \
--with-openssl \

-Compilamos el codigo fuente de squid para obtener un paquete .deb

cd squid3-3.5.23 && dpkg-buildpackage -rfakeroot -b


-Instalamos los siguientes paquetes .deb generados

dpkg --install squid-common_3.5.23-5_all.deb
dpkg --install squid_3.5.23-5_${ARCH}.deb
dpkg --install squidclient_3.5.23-5_${ARCH}.deb

- Para evitar que se dañen las configuraciones debido a alguna actualizacion congelamos la actualización de squid con el siguiente comando

apt-mark hold squid squid-common

CONFIGURACION DE SQUID

-Creamos un basckup del archivo de configuracion de squid con el siguiente comando

cp “/etc/squid/squid.conf” “/etc/squid/squid.conf.bk”

-Realizamos las siguietes configuraciones del servidor


acl clients src 192.168.10.0/24 # especificamos la red de la intranet


  1. regex filtro web
acl regexProhibidos url_regex -i "/etc/squid/filtros/regexProhibidos" #filtramos contenido no adecuado
  1. filtrando Busquedas
http_access deny regexProhibidos # denegamos el acceso a al contnido prohibido

http_access allow localhost
http_access allow clients
http_access deny all
http_port 3128 intercept #intecerptamos el trafico  del puerto 3128 en el cual redirigimos el trafico 
#del puerto 80 y en el 3129 el trafico del puerto 443 en el cual utilizamos certificado ssl  
https_port 3129 intercept ssl-bump cert=/etc/squid/ssl_cert/myCA.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4mb

sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4mb
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
shutdown_lifetime 5
access_log stdio:/var/log/squid/access.log #guardamos el log de acceso el cual sera utilizado por SARG

- Creamos el archivo regexProhibidos, y definimos palabras claves que deseamos que no tengan acceso con:

nano etc/squid/regexProhibidos

facebook pornografica xxx Instagram

CREACION DE CERTIFICADOS SSL

Para la creacion de certificados ssl debemos tener instalado el paquete openssl, el cual instalamos con el siguiente comando

apt install openssl -y

-Creamos un directorio para guardar los certificados generados y le asignamos permisos

mkdir /etc/squid/ssl_cert
chmod 700 /etc/squid/ssl_cert
cd /etc/squid/ssl_cert/

-Utilizamos el comando siguiente para crear la llave ssl y el certificado

openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout myCA.pem -out myCA.pem
openssl x509 -in myCA.pem -outform DER -out myCA.der

-Inicializamos la base de datos de certificados ssl

/usr/lib/squid/ssl_crtd -c -s /var/lib/ssl_db

- Cambiamos el dueño de el directorio ssl_cert y ssl_db

chown -R proxy:proxy /etc/squid/ssl_cert/
chown -R proxy:proxy /var/lib/ssl_db/
    1. NOTA##

El certificado myCA.der debera copiarse a todos los clientes y añadirse al navegador

- Reiniciamos el servidor squid

#service squid restart

-Redireccionamos el trafico del puerto 80 y 443 con las siguientes reglas de iptable

iptables -A INPUT -j ACCEPT -p tcp --dport 3128 -m comment --comment "squid http proxy"
iptables -A INPUT -j ACCEPT -p tcp --dport 3129 -m comment --comment "squid https proxy"
iptables -t nat -A PREROUTING -s 192.168.10.0/24 -p tcp --dport 80 -m comment --comment "transparent http proxy" -j DNAT --to-destination 192.168.10.250:3128
iptables -t nat -A PREROUTING -s 192.168.10.0/24 -p tcp --dport 443 -m comment --comment "transparent https proxy" -j DNAT --to-destination 192.168.10.250:3129

En estas reglas iptable aceptamos el trafico del puerto 3128 y 3129 el cual es redireccionado de los puertos 80 y 443, de esta forma todo el trafico de los clientes pasa a traves del servidor proxy y es posible filtrar su contenido y ser un proxy transparente.


CONFIGURACIÓN DE CLIENTES

El servidor squid configurado anteriormente a sido de forma transparente es decir que los clientes no requieren una configuracion para poder acceder a internet a traves de dicho servidor, sin embargo en el caso de las paginas web con protocolo HTTPS se requiere un certificado de autenticidad, el cual generamos en el servidor y se encuentra dentro del directorio
“/etc/squid/ssl_cert/myCA.der”
, el cual debemos copiar a los clientes para añadirlo a los navegadore.

Si tratamos de acceder a internet sin integrar el certificado el navegador nos mostrara una ventana como la siguiente:

Conexion.png

Para integrar el certificado primedo debemos copiarlo a nuestros clientes usando el comando scp

# scp /etc/squid/ssl_cert/myCA.der usuario@ipCliente/home/

- En el caso de Firefox accedemos a preferencias > avanzadas > certificados

Avanzadas.png

- Seleccionamos la opción “Ver Certificados” e ingresamos en la sección “Autoridades”

Certificados.png


-Seleccionamos la opción importar y dentro del directorio personal buscamos el certificado “myCA.der” al seleccionarlo nos mostrara la siguiente ventana donde marcaremos la opción confiar en esta CA para identificar sitios web

Descargar.png

- Seleccionamos aceptar y podemos actualizar nuestro navegador para navegar con normalidad utilizando el proxy transparente.

Segura.png

INSTALACIÓN SERVIDOR WEB Y SARG

Para la implementación de servidor web utilizaremos APACHE, para realizar su instalacion utilizamos el siguiente comando:

  1. apt install apache2

Al finalizar la ejecucion de ese comando tendremos instalado nuestro servidor web, en el cual implementaremos SARG para generar reportes de acceso en squid.

-Utilizaremos el siguiente comando para instalarlo

# apt install sarg ttf-dejavu

-El archivo de configuracion de sarg se encuentra en “/etc/sarg/sarg.conf” , crearemos un backup con el siguiente comando

# cp /etc/sarg/sarg.conf  /etc/sarg/sarg.conf.bk

- Editamos el archivo y realizamos las siguientes configuraciones


title "Squid Reporte de Usuarios"
temporary_dir /tmp
output_dir /var/www/html/squid-reports
resolve_ip yes
index yes

- Creamos el directorio “/var/www/html/squid-reports”, en este directorio sarg generara el archivo index.html de los reportes de acceso

# mkdir /var/www/html/squid-reports

-Cambiamos el dueño del directorio para evitar problemas de permisos con el comando

chown -R www-data.www-data /var/www/html/squid-reports

- Para generar los reportes utilizamos el comando “sarg -x” sin embargo cada vez que necesitemos un reporte tendremos que ejecutar el comando, esto lo podemos automatizar utilizando crontab, crearemos un script “reporte.sh” y lo guardaremos dentro del directorio “/etc” con el siguiente comando.

echo "

#!/bin/bash 
sarg -x" > /etc/reporte.sh

- Ahora programaremos la ejecucion de el script en cada reinicio utilizando crontab con el comando siguiente.

echo "@reboot root bash /etc/reporte.sh" >> /etc/crontab
-Finalmente podremos abrir nuestro navegador e ingresamos ala url
“localhost/squid-reports”
y veremos la siguiente pagina

Sarg.png

-En esta interfaz podremos obtener el reporte de acceso de todos los usuarios de nuestra red ordenados por periodos de tiempo

Squid.png

INSTALACION DE WEBMIN

Webmin. Interfaz basada en Web para administración de sistemas Unix. Usando cualquier navegador Web moderno, se puede configurar cuentas de usuarios, Apache, DNS, archivos compartidos y mucho más. Para instalar webmin necesitamos descargar el paquete .deb desde su pagina web oficial http://www.webmin.com/

Webmin.png

-En la seccion de descarga elegmos la opción Debian Package y esperamos a que finalice la descarga, una vez finalizada la descarga instalamos las siguientes dependencias y luego instalamos el paquete que descargamos.

# apt install apt-show-versions libauthen-pam-perl
# dpkg --install webmin_all.deb

- Una vez finalizada la instalacion podremos acceder a la interfaz web de webmin ingresando a la URL

“https://server:10000/”

Login.png

INSTALACION DEL SERVIDOR LDAP

LDAP posee un instalador muy interactivo donde nos solicita datos para su configuracion, pero para realizar una instalacion mas automatizada realizamos la instalacion de la siguiente forma:

- Creamos un archivo debconf con las respuestas a los datos que son solicitados por slapd durante la instalacion, utilizando el siguiente comando, en el cual cambiaremos los datos, necesarios como los password, el dns, el tipo de base de backend a utilizar .

cat > /root/debconf-slapd.conf << 'EOF'
slapd slapd/password1 password admin
slapd slapd/internal/adminpw password admin
slapd slapd/internal/generated_adminpw password admin
slapd slapd/password2 password admin
slapd slapd/unsafe_selfwrite_acl note
slapd slapd/purge_database boolean false
slapd slapd/domain string server.intranet.edu.sv
slapd slapd/ppolicy_schema_needs_update select abort installation
slapd slapd/invalid_config boolean true
slapd slapd/move_old_database boolean false
slapd slapd/backend select MDB
slapd shared/organization string Escuela
slapd slapd/dump_database_destdir string /var/backups/slapd-VERSION
slapd slapd/no_configuration boolean false
slapd slapd/dump_database select when needed
slapd slapd/password_mismatch note
EOF

-Le indicamos a debian que realice una instalacion no interactiva con los siguiente comandos

export DEBIAN_FRONTEND=noninteractive
cat /root/debconf-slapd.conf | debconf-set-selections
apt install ldap-utils slapd php php-ldap php-xml -y

-Para instalar phpldapadmin debemos descargalos de los repositorios de debian buster debido a que no se encuentra disponible para debian strech

https://packages.debian.org/buster/all/phpldapadmin/download

-Una vez descargado lo instalamos con el comando:

dpkg --install phpldapadmin.deb
- Al finalizar la instalacion del paquete podremos ingresar a la url
“http://localhost/phpldapadmin”

- Ahora solo faltaria la creacion de la unidad organizativa, grupos y usuarios en ldap, lo cuales seran.

Unidad Organizativa = Usuarios
Grupos = Profesores, Alumnos
Usuarios = Profesor1, Alumno1

y crearemos un archivo para cada uno utilizando el comando touch

touch u_organizativa.ldif grupos.ldif usuarios.ldif
nano u_organizativas.ldif

Nano.png

nano grupos.ldif

Grupo.png

nano usuarios.ldif

Usuarios.png

-Para añadir todos estos datos a LDAP utilizaremos el comando ldapadd de esta forma:


ldapadd -x -D ${ADMINLDAP} -w admin -f ./script_intranet/ldap/u_organizativas.ldif
ldapadd -x -D ${ADMINLDAP} -w admin -f ./script_intranet/ldap/grupos.ldif
ldapadd -x -D ${ADMINLDAP} -w admin -f ./script_intranet/ldap/usuarios.ldif
- Podemos verificar su correcto funcionamiento accediendo a
phpldapadmin
.


EPOPTES

Para monitorear los equipos clientes utilizamos el software Epoptes, los pasos de instalacion son los siguientes

SERVIDOR

- Instalamos el software administrador con el comando

# apt install epoptes

- Debemos añadir los usuarios al grupo epoptes, para ello utilizamos el comando

# gpasswd -a Intranet epoptes


CLIENTES

En los clientes debemos instalar el paquete epoptes-client

# apt install epoptes-client

- Una vez finalizada la instalacion ejecutamos el comando siguiente, para establecer la conexión entre los clientes y el servidor

epoptes-client -c


Al finalizar los pasos ejecutamos el software epoptes en nuestro servidor y nos mostrara la siguiente ventana donde podremos administrar a nuestros clientes

Epoptes.png

SERVIDOR SAMBA

Para compartir impresoras y crear un directorio que este disponible para todos los usuarios de nuestra red realizamos los siguientes pasos

SERVIDOR

- En el servidor debemos instalar el paquete de samba y cups para compartir las impresoras, utilizando el siguiente comando

# apt-get -y install libcups2 samba samba-common cups

- Realizamos un backup del archivo de configuracion con el siguiente comando

#cp /etc/samba/smb.conf /etc/samba/smb.conf.bk

- La carpeta a compartir la crearemos con el siguiente comando y le asignaremos los siguientes permisos

mkdir /mnt/Compartidos
chmod 777 -R /mnt/Compartidos
chown -R root:users /mnt/Compartidos
chmod -R ug+rwx,o+rx-w /mnt/Compartidos

- El archivo de configuracion lo dejaremos de la siguiente forma para especificar que se compartiran las impresoras y sus controladores ademas de el directorio compartido

[global]
   workgroup = WORKGROUP
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
[Documentos]
   comment = Directorio Compartido Intranet
   path = /mnt/Compartidos 
   force group = users
   create mask = 0660
   directory mask = 0771
   browsable =yes
   writable = yes
   guest ok = yes

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no

- Para finalizar la configuracion del servidor debemos reiniciar el servicio samba con el siguiente comando

# /etc/init.d/samba restart

CLIENTES

- En los clientes debemos instalar el paquete smbclient

# apt install smbclient

- Al finalizar la instalacion podemos dirigirnos a nuestro administrador de archivos ya se thunar , caja nautilus o el de su preferencia, y accedemos a network o buscar en la red, dependiendo de su Administrador, y nos mostrara una ventana como la siguiente con nuestro servidor

Red.png

- Accedemos a nuestro servidor en este caso “SERVER” y encontraremos nuestro directorio compartido y un directorio con los driver de nuestra impresora

Comparticiones.png


INSTALACION AUTOMATIZADA

Para realizar la instalacion automatizada utilizando los script bash se deben seguir los siguientes pasos:

SERVIDOR

- Descargar el Script de Instalación automatizada de el siguiente enlace

https://github.com/HerickGClaros/Script_Intranet

- Ingresar en el directorio intranet y ejecutar el siguiente comando

# sh install.sh

- El script comenzara a ejecutarse y le solicitara identificar cual sera la interfaz de red que tendra acceso a internet y cual estara conectada la red para brindar los servicios, debera responder utilizando los numeros que identifican a la interfaz.

- En la etapa de configuracion del servidor proxy se crea un certificado de autenticidad, para ello se le solicitaran los siguientes datos.


Config.png

- Debera esperar a que finalice la ejecucion del script, el cual al finalizar mostrara los datos necesarios para la administracion del servidor

Datos.png

CLIENTES

- Para configurar los clientes simplemente debera ejecutar el script clientes.sh y esperar a que finalice la instalacion

# sh clientes.sh

NOTA Para ver una demo de Instalación y funcionamiento dirigirse a los siguientes enlaces

https://www.youtube.com/watch?v=ryiGRoADuBI&t=8s https://www.youtube.com/watch?v=9jEbyMxrzpc


COMPARACIÓN Este proyecto tiene similitud con "DILADELE WEB FILTER", el cual es un proyecto que incluye lo siguientes componentes, - Proxy SQUID Transparente HTTP HTTPS - Filtro WEB SAFETY - Antivirus CLAMAV - LDAP - Active directory - Interfaz Web para realizar la administración

Aspectos a comparar:' - Forma de Instalación - Componentes - Precio

Diadele, realiza su instalación a través de script bash los cuales deben ejecutarse en un orden establecido solicitan una mayor intervención del administrador, sin embargo las funcionalidades principales como los son el filtro web y active directory, no se encuentran disponibles en la versión personal, para activar dichas funcionalidades es necesario adquirir una versión SOHO, Small Business, Academic/Educational o Enterprise cuyos precios rondan entre los 199 y 500 Euros, dependiendo de la cantidad de equipos en las que se instalara, sin embargo esta alternativa no cuenta con dhcp ni dns los cuales se deben instalar y configurar previamente, ademas de eso no posee herramientas educativas como una wiki o moodle.


Costo del Proyecto

A continuación, se presenta los costos de los recursos, que se determinaron se utilizaron para el desarrollo del proyecto.

Costo.jpg

Métodos

A Continuación se detallan las caracteristicas que se tomaron en cuenta para comparar nuestro proyecto con diladele Web Safety

Resultados.png

Resultados

Una vez finalizada la instalación a través del script realizamos los siguientes test para verificar el funcionamiento de los servicios

- Verificacion del status de DNSMASQ

Statusdnsmasq.jpg

- Verificación de status del servidor WEB APACHE

Apachestatus.jpg

- Verificación del status SQUID

Statussquid.jpg

- Verificación de funcionamiento filtro WEB

Estadofiltroweb.jpg

Baneofiltroweb.jpg

- Verificación funcionamiento LDAP

Funcionamientoldap.jpg

- Verificación funcionamiento WIKI

Wiki.jpg

- Verificacón funcionamiento EPOPTES

Epoptes1.jpg

- Verificación funcionamiento moodle

Moodle.jpg

Recomendaciones

  • Utilizar una instalación limpia del servidor Debían STRETCH
  • No modificar permisos de archivos y directorios creados y utilizados en la instalación utilizando el script
  • La wiki solamente contiene los datos de WIKISOURCE y WIKIBOOK no contiene la wikipedia debido a su peso sin embargo desde kiwix se encuentra disponible la opción para descargarla.
  • El filtro web contiene una base de datos de expresiones regulares muy amplia de mas de 9000 palabras, sin embargo una parte es en ingles y muy probablemente no filtre el contenido deseado, pero pueden integrarse mas palabras editando los archivos que se encuentran en el directorio /etc/squid/filtros/
  • Establecer una copia de documentos o archivos de las configuraciones que garanticen la seguridad de los mismos.
  • Analizar profundamente los dígitos o palabras usadas para bloquear accesos de páginas donde se le permita al usuario el no acceder a las paginas restringidas.
  • Al finalizar la instalación del script tanto en servidor como en los clientes, es necesario integrar los certificados de autenticidad en los navegadores a utilizar, de lo contrario no tendrá acceso a muchos sitios web.

Glosario de Términos

Apache:

Es un poderoso servidor web, cuyo nombre proviene de la frase inglesa “a patchy server” y es completamente libre, ya que es un software Open Source y con licencia GPL. Una de las ventajas más grandes de Apache, es que es un servidor web multiplataforma, es decir, puede trabajar con diferentes sistemas operativos y mantener su excelente rendimiento.

Bash:

Es un programa nformático, cuya función consiste en interpretar órdenes, y un lenguaje de consola. Es una shell de Unix compatible con POSIX y el intérprete de comandos por defecto en la mayoría de las distribuciones GNU/Linux, además de macOS.

Certificado:

Son una medida de confianza adicional para las personas que visitan y hacen transacciones en su página web, le permite cifrar los datos entre el ordenador del cliente y el servidor que representa a la página.

Cron:

Es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). El nombre cron viene del griego chronos (χρόνος) que significa "tiempo".

Crontab:

El archivo de texto en donde se guarda todas las tareas programadas por cron. Crontab verifica las fechas y horas en que se debe ejecutar el script o el comando, los permisos de ejecución y los realiza en el background.

Dhcp:

El protocolo de configuración dinámica de host (en inglés: Dynamic Host Configuration Protocol, también conocido por sus siglas de DHCP) es un servidor que usa protocolo de red de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes

Dns:

El sistema de nombres de dominio (DNS, por sus siglas en inglés, Domain Name System) es un sistema de nomenclatura jerárquico descentralizado para dispositivos conectados a redes IP como Internet o una red privada. Este sistema asocia información variada con nombre de dominio asignado a cada uno de los participantes.

Firewall:

Es una parte de un sistema o una red que está diseñada para bloquear el acceso no autorizado, permitiendo al mismo tiempo comunicaciones autorizadas. Se trata de un dispositivo o conjunto de dispositivos configurados para permitir, limitar, cifrar o descifrar el tráfico entre los diferentes ámbitos sobre la base de un conjunto de normas y otros criterios.


Interface:

Se conoce como la interfaz de usuario al medio que permite a una persona comunicarse con una máquina. Por lo tanto, es una conexión entre dos máquinas de cualquier tipo, a las que proporciona un soporte para la comunicación a diferentes estratos.

Intranet:

Es una red informática que utiliza la tecnología del protocolo de Internet para compartir información, sistemas operativos o servicios de computación dentro de una organización. Suele ser interna, en vez de pública como internet, por lo que solo los miembros de esa organización tienen acceso a ella.

Ip: Es un número que identifica, de manera lógica y jerárquica, a una Interfaz en red (elemento de comunicación/conexión) de un dispositivo (computadora, tableta, portátil, smartphone) que utilice el protocolo P o (Internet Protocol), que corresponde al nivel de red del modelo TCP/IP.

Ldap:

Son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero/Simplificado de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red.

Proxy:

En una red informática, es un servidor —programa o dispositivo—, que hace de intermediario en las peticiones de recursos que realiza un cliente (A) a otro servidor (C).

Script:

Es un programa usualmente simple, que por lo regular se almacena en un archivo de texto plano. Los guiones son casi siempre interpretados, pero no todo programa interpretado es considerado un guion. El uso habitual de los guiones es realizar diversas tareas como combinar componentes, interactuar con el sistema operativo o con el usuario.

Servidor:

Es una aplicación en ejecución (software) capaz de atender las peticiones de un cliente y devolverle una respuesta en concordancia. Los servidores se pueden ejecutar en cualquier tipo de computadora, incluso en computadoras dedicadas a las cuales se les conoce individualmente como «elservidor».

Servidor web: Es un programa informático que procesa una aplicación del lado del servidor, realizando conexiones bidireccionales o unidireccionales y síncronas o asíncronas con el cliente y generando o cediendo una respuesta en cualquier lenguaje o Aplicación del lado del cliente.

Ssh:

(Secure SHell, en español: intérprete de órdenes seguro) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder servidores privados a través de una puerta trasera (también llamada backdoor).

Ssl:

"Secure Sockets Layer". SSL Definición, Secure Sockets Layer es un protocolo diseñado para permitir que las aplicaciones para transmitir información de ida y de manera segura hacia atrás.

Terminal:

Es un dispositivo electrónico o electromecánico que se utiliza para interactuar con un(a) computador(a). La función de un terminal está confinada a la exhibición y entrada de datos; un dispositivo con una significativa capacidad local programable de procesamiento de datos puede ser llamado un "terminal inteligente" o cliente pesado.

Virtualbox:

Es un software de virtualización para arquitecturas x86/amd64. Actualmente es desarrollado por Oracle Corporation como parte de su familia de productos de virtualización. Por medio de esta aplicación es posible instalar sistemas operativos adicionales, conocidos como «sistemas invitados», dentro de otro sistema operativo «anfitrión», cada uno con su propio ambiente virtual.


Referencias Bibliográficas

  • [Solucionado] Opción o comando para saber si un archivo está | command-line. (n.d.). Retrieved July 7, 2018, from

https://www.enmimaquinafunciona.com/pregunta/69825/opcion-o-comando-para-saber-si-un-archivo-esta-vacio