PG 7454
PG 7454
PG 7454
FACULTAD DE INGENIERÍA
CARRERA DE INGENIERÍA ELECTRÓNICA
PROYECTO DE GRADO
SERVIDOR DNS ADMINISTRADO CON TECNOLOGÍA
WEB BASADO EN SOFTWARE LIBRE – APLICACIÓN
MINISTERIO DE ECONOMÍA Y FINANZAS PÚBLICAS
LA PAZ - BOLIVIA
2020
UNIVERSIDAD MAYOR DE SAN ANDRÉS
FACULTAD DE INGENIERIA
LICENCIA DE USO
i
Agradecimientos
ii
GLOSARIO
ActionScript: Lenguaje de programación que viene con Macromedia Flash para
crear scripts.
ActiveX: Programa creado por Microsoft para controlar la interactividad en las
páginas web.
Applet: Programa en lenguaje Java que se utiliza en las páginas web para
conseguir efectos especiales.
Caché: Memoria volátil que borra la información cuando se apaga el ordenador.
Clave: Código de signos utilizados para cifrar datos y garantizar la privacidad.
Cliente: Elemento de un sistema de información que requiere un servicio.
Compilación: Transformar un programa escrito en un lenguaje, en otro
programa creado en lenguaje de máquina.
Consola de Comandos: Es una herramienta que permite escribir comandos para
llevar a cabo una determinada acción, hay consolas que vienen instaladas por
defecto en los Sistemas Operativos como Mac OS, Windows y Linux por ende
puedes ejecutar comandos para realizar alguna tarea dentro de estos Sistemas
Operativos.
Criptografía: Ciencia que estudia la manera de cifrar y descifrar mensajes.
Distribución: Conjunto de software específico compilado y configurado.
Dominio: Nombre equivalente a una dirección de internet.
Entidad: Representación de un objeto o concepto del mundo real que se describe
en una base de datos.
Firewall: Software o hardware que permite asegurar que se respete la política de
seguridad de una red de datos.
Hardware: Conjunto de componentes que conforman la parte física de una
computadora.
Hash: Algoritmo matemático que transforma cualquier dato en una serie de
caracteres de longitud fija.
Hipermedia: (HIPERtexto multiMEDIA) Organización de información textual,
visual, gráfica y sonora a través de vínculos que crean asociaciones entre
información relacionada dentro del sistema.
Host: Dispositivo de usuario dentro de un sistema informático.
Interfaz de Usuario: Medio que permite a una persona comunicarse con una
máquina.
Internet: Red Global que utiliza los protocolo TCP/IP.
Licencia: Documento que autoriza el derecho de uso de un bien a otra persona u
organización.
Linux: Es el núcleo del sistema cuya denominación es GNU/Linux.
Ordenador: Sinónimo de computadora o computador.
iii
Paquete: Programas que se distribuyen conjuntamente donde cada uno requiere
de los demás para su funcionamiento.
Perl: Lenguaje de programación muy utilizado para la elaboración de
aplicaciones CGI (Imagen Generada Por Computadora).
Plug-in: Programa que extiende las capacidades del navegador web de un modo
específico.
Programación: Definir una serie de procesos para resolver un problema.
Protocolo: Conjunto de normas y/o procedimientos para la transmisión de datos.
Python: Lenguaje interpretado orientado a objetos que se caracteriza por su
claridad y versatilidad.
Recursivo: que se repite o aplica indefinidamente.
Red de Datos: Infraestructura que posibilita la transmisión de información a
través del intercambio de datos.
Script: conjunto de instrucciones escrito para un intérprete de comandos con
algún lenguaje de scripts.
Servidor: Dispositivo de un sistema que resuelve las peticiones de otros
elementos del sistema, denominados clientes.
Sistema: Conjunto de elementos interrelacionados y regidos por normas propias,
de modo tal que pueden ser vistos y analizados como una totalidad.
Software: Conjunto de programas, instrucciones y reglas informáticas que
permiten ejecutar tareas en una computadora.
Tabla: objeto o entidad que se identifica a través de sus atributos.
Tecnología: Aplicación de un conjunto de conocimientos y habilidades con el
objetivo resolver un problema.
Transacción: Interacción con una estructura de datos.
Web: Término utilizado para referirse a la World Wide Web, considerado un
sistema de intercambio de información estandarizado.
iv
LISTADO DE ACRÓNIMOS
ADV (Abstract Data View) Vista de Datos Abstracta.
AJAX (Asynchronous JavaScript And XML) JavaScript y XML asíncronos.
AMD Advanced Micro Device.
ARM Advanced RISC Machine.
BD base de datos
CPU unidad de procesamiento central
CSS Hojas de estilo en cascada
DHTML (Dynamic HTML) HTML Dinamico.
DHTML HTML Dinámico.
DNS Sistema de Nombres de Dominio
DNSSEC extensiones de seguridad del sistema de nombres de dominio
DS (Dad Son) Registro de recurso que relaciona un servidor padre y su hijo.
E-R Entidad –Relación
GNU (GNU’s Not Unix) GNU no es Unix.
GPL (General Public License) Licencia Pública General.
HDM metodología de desarrollo de Hipermedia
HTML Lenguaje de marcado de Hipertexto
HTML5 HTML versión 5
HTTP Protocolo de Transferencia de Hypertexto
HTTPS Protocolo Seguro de Transferencia de Hypertexto
IBM International Business Machines Corporation.
IP (Internet Protocol) Protocolo de Internet
IWEB Ingeniería Web.
IXFR Protocolo de Transferencia de Zona Incremental
JS JavaScript.
KSK (Key Signing Key) clave de firma de clave
LAMP Linux Apache Mysql Linux
LDD Lenguaje de definición de datos
LMD Lenguaje de manipulación de datos
MEFP Ministerio de Economía y Finanzas Públicas.
MIPS Microprocessor without Interlocked Pipeline Stage.
NIC tarjeta de interfaz de Red
NS (Name server) Registro de recurso para registrar el nombre del servidor.
OO Orientado a objetos
OOHDM (Object Oriented Hypermedia Design Method) Método de Diseño de
Hipermedia Orientado a Objetos.
OSI (Open System Interconection) Modelo de interconexión de sistemas
abiertos.
PHP (PHP: Hypertext Preprocessor) Preprocesador de Hipertexto.
v
PHP Páginas de Hypertexto Preprocesadas
PPC Power PC.
RAM memoria de acceso aleatorio.
RFC (Request For Comments) solicitud de comentarios.
RNDC (Remote Name Daemon Control) Control de dominio de nombres
remoto.
SGBD Sistema Gestor de Bases de Datos.
SOHDM (Scenario-based Object-oriented Hypermedia Design Methodology)
Metodología de diseño de Hipermedia Orientada a Objetos Basada en
Escenarios.
SQL Lenguaje de consulta estructurada.
TCP (Transmission Control Protocol) Protocolo de Control de Transmisión.
TTL (time to live) Tiempo de vida.
UWE (UML-based Web Engineering) Ingeniería Web basada en UML.
VBScript Visual Basic Script Edition.
W3C World Wide Web Consortium.
WAE (Web Application Extension) Extensión de la aplicación Web para UML.
WSDM (Web Site Design Method) Método de Diseño de Sitios Web.
XHTML HTML extensible.
XML (Extensible Markup Languaje) Lenguaje de Marcado Extensible.
ZSK (Zone Signing Key) clave de firma de zona.
vi
ÍNDICE DE CONTENIDO
vii
2.1.4.5. Servidor de Reenvío ............................................................................................ 10
2.5.1. MariaDB................................................................................................................. 27
viii
2.5.2. Modelos de Datos ................................................................................................... 28
3.3.2. Diseño del Sistema de Administración y Configuración del Servicio DNS .......... 54
ix
3.3.3. Diagramas de Secuencia del Sistema ..................................................................... 80
x
ÍNDICE DE TABLAS
TABLA 4-4. Cálculo de Líneas de Código Totales del Sistema ................................... 106
xi
ÍNDICE DE CUADROS
xii
ÍNDICE DE FIGURAS
xiii
FIGURA 3-7. Interfaz de Adición de Direcciones IP Permitidas .................................. 44
xiv
FIGURA 3-29. Interfaz de Creación de Zona Maestra Directa..................................... 58
FIGURA 3-43. Interfaz de Respaldo de la Base de Datos del Sistema DNS ................. 65
xv
FIGURA 3-48. Interfaz de Creación de una Clave TSIG............................................... 67
FIGURA 3-49. Clave Creada para Transacciones Firmadas entre Servidores ........... 68
FIGURA 3-50. Interfaz de Asociación de un Servidor con una Clave TSIG ............... 68
FIGURA 3-51. Asociación de la Dirección IP con una Clave TSIG creada ................. 68
FIGURA 3-52. Asociación de la IP del Servidor Externo con la clave TSIG. .............. 69
FIGURA 3-61. Muestra de los Archivos que Contienen los Registros DS para
Enviar a la Zona Principal o Zona Padre ........................................................................ 75
xvi
FIGURA 3-66. Diagrama de Contextos Navegacionales para el Uso de RNDC .......... 78
FIGURA 3-67. Interfaz de Estado del Servicio DNS y Ventana de Resultado ............. 79
xvii
FIGURA 3-81. Diagrama de Secuencias para la Restauración del Sistema de
Administración y Configuración de DNS ........................................................................ 87
FIGURA 3-85. Diagrama de Secuencias del Estado del Servicio DNS ......................... 90
FIGURA 3-91. Interfaz de Acceso para la Creación de una Zona Maestra Directa ... 98
FIGURA 3-92. Campos de llenado Formulario de una Zona Maestra Directa ........... 98
FIGURA 3-94. Interfaz de Edición de una Zona Maestra Directa ............................. 100
FIGURA 3-95. Interfaz de Permisos de una Zona Maestra Directa ........................... 100
xviii
FIGURA 3-98. Archivo de Zona Maestra Directa Generada con el Sistema ............. 101
xix
Resumen
xxi
Summary
This Degree Project proposes the development of an administration system for a DNS
server for intuitive use and with advantages over existing systems using web technology
and free software tools.
Initially the necessary requirements for the development of the system were identified.
The free software tools used for system development are Debian as an Operating
System; Apache as a web server; MariaDB as Database Management System; PHP,
HTML5, JavaScript and CSS as languages for the development of web applications and
BIND as the DNS service to be managed. The system was developed by applying the
OOHDM Object Oriented Hypermedia Design method.
System Administration is based on the use of data forms and buttons that execute
specific tasks. The developed system allows working with the IPv4 and IPv6 protocol;
allows configuration of recursive and authoritative DNS servers; creation, editing and
elimination of zones; diagnostic tools; user administration and restriction of
simultaneous access; account with password authentication of users; restricted access to
the system by lists of IPv4 and IPv6 addresses; the interchange of data between client
and web server will be through the Secure HTTP protocol; logout due to inactivity with
a configurable time; DNS activation DNSSEC Secure and consequently the creation and
renewal of ZSK and KSK keys; also implements the use of signed TSIG transactions for
zone transfers between master-slave servers; the console remote control of the DNS
service is configured to be managed only locally and using the RNDC key created;
allows backups independent of the configuration of the user administration system and
the DNS service management system.
The system developed is intuitive to use with many security and functionality
advantages using web technology and free software tools. Consequently, the system
developed has the GNU GPL version 3 free software license.
xxii
Keywords: DNS, web, free software, authentication, system
xxiii
Capítulo I: Introducción y Generalidades
1.1. Antecedentes
Todos los usuarios de internet cuentan con la opción de utilizar servidores DNS
proporcionados por el proveedor de internet, o servidores públicos; sin embargo, si se
cuenta con un nombre de dominio propio, una práctica recomendable es implementar un
servidor DNS propio, esto ayuda en cierta medida a descongestionar el tráfico de red
hacia internet, a mejorar la velocidad de conexión y la disponibilidad del servicio.
El uso de licencias representa un costo para cualquier empresa y actualmente existe una
variedad de software propietario en el mercado para implementar el servicio DNS, y se
debe pagar por las licencias de este servicio.
Por otro lado existen soluciones gratuitas para las distintas distribuciones de Linux, que
ofrecen software libre para la administración del servicio DNS con características
similares a las versiones comerciales y bastante potentes, pero con el inconveniente de
no contar con una interfaz sencilla de operar, o con falencias en sus características
respecto de otros más completos, lo que origina la necesidad de un entorno de
administración más sencillo para las distintas características de un Servidor DNS en una
red de datos.
Conforme pasan los años, surgen nuevas herramientas y tecnologías para lograr una
mayor adaptabilidad de los servicios a las necesidades de red empresariales, habiendo
hoy en día varias opciones para la administración del servicio de DNS, desde
implementaciones de software con características básicas, hasta software de
administración avanzada.
1
1.2. Descripción del Problema
Los obstáculos para lograr una administración eficaz de un Servidor DNS, mediante el
uso de software libre disponible en el mercado, es que en su mayoría no cuentan con una
interfaz sencilla de operar y presentan falencias de seguridad.
También se debe tomar en cuenta que en la gestión 2019 se tiene previsto implementar
DNS Seguro (DNSSEC) en los dominios .bo; este hecho trae consigo, nuevas y más
frecuentes tareas de administración del servicio DNS. [5]
Asimismo, el Artículo 2 del DS N° 3251 de 12 de Julio de 2017, señala que “…el Plan
de Implementación de Software Libre y Estándares Abiertos son aplicables por todos los
niveles de Gobierno del Estado Plurinacional de Bolivia…”. [1]
2
1.3. Objetivos
1.4. Justificación
La presente propuesta permitirá hacer un uso eficaz del tiempo y reducir la cantidad de
errores de sintaxis durante la configuración y administración del servicio DNS. Lo que
permitirá al administrador abarcar nuevas tareas de administración en mejora de la
seguridad de las tareas inherentes al servicio DNS, tales como la implementación de las
3
extensiones de seguridad DNSSEC y las transferencias de zona firmadas con claves
TSIG.
El uso de programas con licencia de software libre, por medio del código abierto,
posibilitan estudiar su funcionamiento y hacer mejoras de forma periódica,
implementando nuevas características que los adaptan mejor a las necesidades y que
mejoran la seguridad de los sistemas.
4
protocolo HTTP Seguro. Se protegerán las sesiones de los usuarios mediante cierres de
sesión, después de cierto tiempo de inactividad. Se implementará un botón para activar
el uso de DNSSEC, para brindar integridad y autenticidad a los datos consultados. Se
implementará un botón para habilitar las transacciones firmadas TSIG, entre pares de
servidores, para las transferencias de zona. El control remoto del servicio DNS (RNDC)
será configurado para ser administrado solamente de forma local y mediante la clave
RNDC creada.
Las copias de respaldo del sistema desarrollado permitirán respaldar por separado la
base de datos del sistema de administración de usuarios y por otro lado del sistema de
administración del servicio DNS y de forma independiente permitirá respaldar las claves
ZSK y KSK, junto a los Registros de Recurso DS correspondientes a la habilitación de
DNSSEC.
Debido a que el sistema de administración del servicio DNS plantea la creación de una
interfaz web, que reemplace la administración por consola, en servidores DNS que ya se
encuentran en funcionamiento; el cálculo de los requerimientos de hardware del
servidor que brinda el servicio DNS, queda fuera del alcance de este proyecto, debido a
que depende del tipo de servidor recursivo o autoritativo, y las funcionalidades a
implementar, así como de la redundancia en la topología de la red y el número estimado
de clientes que realizan las consultas, sin embargo se proporcionarán ciertas
recomendaciones, que coadyuvaran al correcto funcionamiento del servicio en las
distintas implementaciones.
Como parte del sistema de administración web del servicio DNS desarrollado, se
entregará un manual de administración, explicando el uso y funcionalidades del mismo.
5
Por motivos de confidencialidad, por parte del Ministerio de Economía y Finanzas, para
la etapa de pruebas de funcionamiento, el sistema desarrollado será implementado en un
servidor virtual, con las recomendaciones y requisitos de hardware mínimos.
Entre los sistemas operativos libres que se encuentran disponibles para servidores, los
fuertemente conocidos e implementados debido a su estabilidad son Centos y Debian;
la herramienta de software para la administración del servidor DNS mediante tecnología
web es Apache, junto a los lenguajes de desarrollo web PHP, HTML5, JavaScript y
CSS; la herramienta de gestión de bases de datos que utiliza lenguaje SQL es MariaDB
y el paquete de software de servicio DNS se denomina BIND. El conjunto de estas
herramientas de software libre, harán posible el desarrollo del sistema planteado.
6
Capítulo II: FUNDAMENTOS TEÓRICOS
DNS cubre la necesidad de recordar fácilmente los nombres de todos los servidores
conectados a Internet.
Los datos almacenados en un servidor DNS, se identifican por los nombres de dominio
que están organizados como un árbol. Cada nodo del árbol, recibe una etiqueta. El
nombre de dominio del nodo es la concatenación de todas las etiquetas en la ruta,
desde el nodo actual hasta el nodo raíz. Esto se representa en forma escrita como una
cadena de etiquetas enumeradas de derecha a izquierda y separadas por puntos. Una
etiqueta solo necesita ser única dentro de su dominio principal. [4]
Una etiqueta está formada por una cadena alfanumérica y el guion medio ‘-’ como único
símbolo permitido, un mínimo de 1 carácter y un máximo de 63 caracteres de longitud
comenzando por una letra. La concatenación de todas las etiquetas, tiene una longitud
máxima total de 255 caracteres. [3]
Los datos asociados con cada nombre de dominio, se almacenan en forma de registros de
recursos (RR).
7
La jerarquía DNS tiene una estructura de árbol invertido y tiene distintos niveles.
Después de la raíz simbolizada por un punto “.”, están los dominios de nivel superior o
TLDs (Top-Level Domain) y los dominios de segundo y tercer nivel (véase FIGURA 2-
1). [2]
2.1.3. Zonas
Una zona es un punto de delegación en el árbol DNS. Consta de las hojas de un nodo del
árbol de dominios para las cuales un servidor de nombres tiene información completa y
sobre la que tiene autoridad. Un punto de delegación está marcado por uno o más
registros NS en la zona principal, que deben coincidir con registros NS equivalentes en
la raíz de la zona delegada. [4]
El servidor autoritativo donde se guarda la copia maestra de los datos de la zona se llama
servidor principal maestro, o simplemente servidor primario. Este servidor carga los
8
contenidos de la zona desde un archivo local editado por el administrador, este archivo
se denomina archivo de zona o archivo maestro. [4]
Los servidores esclavos, conocidos como servidores secundarios, cargan los contenidos
de la zona desde otro servidor, utilizando un proceso de replicación conocido como
transferencia de zona. Generalmente, los datos se transfieren directamente desde un
servidor maestro primario, pero también es posible transferirlos desde otro servidor
esclavo. [4]
Es un servidor autoritativo para una zona, pero no figura en los registros NS de la zona,
es decir, que están ocultos. Se pueden emplear para mantener una copia local de una
zona para acelerar el acceso a los registros de la zona o para asegurarse de que la zona
esté disponible, incluso si no se puede acceder a todos los servidores "oficiales" de la
zona. [4]
9
FIGURA 2-2. Consulta DNS mediante Servidor Recursivo o de Caché
Fuente: Elaboración Propia
El servidor de nombres puede actuar simultáneamente como maestro para algunas zonas,
como esclavo para otras zonas y como servidor de caché (recursivo) para un conjunto de
clientes locales. Sin embargo, dado que las funciones del servicio de nombres
autoritativo y el servicio de nombres recursivo están lógicamente separados, a menudo
es ventajoso ejecutarlos en máquinas de servidor separadas. [4]
10
FIGURA 2-3. Tipos de Servidores DNS
Fuente: Gráfico tomado de la página web [6]
De las implementaciones mostradas sobre los 500 dominios más visitados en internet, se
pueden identificar que existen 3 tipos de servidores con licencia de software propietaria:
Microsoft
PowerDNS
UltraDNS
Licencia ISC (Internet Systems Consortium) para versiones anteriores a BIND 9.11.0 y
licencia de software libre Mozilla MPL2.0 (Mozilla Public License) para versiones
posteriores [7].
11
2.1.7. Tipos de Registros DNS
Todos los RR tienen el mismo formato de nivel superior (véase FIGURA 2-4).
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
NAME
TYPE
CLASS
TTL
RDLENGTH
RDATA
FIGURA 2-4. Formato de Registro de Recurso
Fuente: Gráfico tomado de RFC [3]
Dónde:
NAME es un nombre de dominio al que pertenece este registro de recursos.
TYPE son dos octetos que contienen uno de los códigos de tipo RR. Este campo
especifica el significado de los datos en el campo RDATA.
CLASS son dos octetos que especifican la clase de los datos en el campo
RDATA.
TTL es un entero sin signo de 32 bits que especifica el intervalo de tiempo (en
segundos) que el registro de recursos se puede almacenar en caché antes de que
se deba descartar. Los valores de cero se interpretan en el sentido de que el RR
solo se puede utilizar para la transacción en curso y no se debe almacenar en
caché.
RDLENGTH un entero de 16 bits sin signo que especifica la longitud en octetos
del campo RDATA.
RDATA una cadena de longitud variable de octetos que describe el recurso. El
formato de esta información varía según el TIPO y la CLASE del registro de
recursos. Por ejemplo, si el TYPE es A y la CLASE es IN, el campo RDATA es
una dirección de Internet ARPA de 4 octetos.
Existe una gran cantidad de RR válidos, de los cuales no todos se aprovechan, debido a
obsolescencia o próxima implementación (véase CUADRO 2-1).
12
A Una dirección de host. En la clase IN, esta es una dirección IP de 32 bits. Descrito en RFC
1035.
AAAA Dirección IPv6. Descrito en RFC 1886.
CNAME Identifica el nombre canónico de un alias. Descrito en RFC 1035.
DNSKEY Almacena una clave pública asociada con una zona DNS firmada.
Descrito en RFC 4034.
DS Almacena el hash de una clave pública asociada a una zona DNS firmada. Descrito en RFC
4034.
HINFO Identifica la CPU y el sistema operativo utilizados por un host. Descrito en RFC 1035.
MX Identifica un intercambio de correo para el dominio con un valor de preferencia de 16 bits
(menor es mejor) seguido del nombre de host del intercambio de correo. Descrito en RFC
974, RFC 1035.
NS El servidor de nombres autorizado para el dominio. Descrito en RFC 1035.
NSEC Se usa en DNSSECbis para indicar de forma segura que los RR con un nombre de propietario
en un determinado intervalo de nombre no existen en una zona e indican qué tipos de RR
están presentes para un nombre existente. Descrito en RFC 4034.
NSEC3 Se usa en DNSSECbis para indicar de forma segura que los RR con un nombre de propietario
en un determinado intervalo de nombre no existen en una zona e indican qué tipos de RR
están presentes para un nombre existente. NSEC3 difiere de NSEC en que previene la
enumeración de zonas, pero es más costoso desde el punto de vista computacional tanto para
el servidor como para el cliente que NSEC. Descrito en RFC 5155.
NSEC3PA Se usa en DNSSECbis para indicarle al servidor autoritario qué cadenas NSEC3 están
RAM disponibles para usar. Descrito en RFC 5155.
PTR Un puntero a otra parte del espacio de nombre de dominio.
Descrito en RFC 1035.
RRSIG Contiene datos de firma DNSSECbis. Descrito en RFC 4034.
SOA Identifica el inicio de una zona de autoridad. Descrito en RFC 1035.
SPF Contiene la información del marco de políticas del remitente para un dominio de correo
electrónico dado. Descrito en RFC 4408.
SRV Información sobre servicios de red conocidos (reemplaza a WKS). Descrito en RFC 2782.
TXT Registros de texto. Descrito en RFC 1035.
Existen tres clases de RRs que actualmente son válidos en el DNS (véase CUADRO2-
2).
IN Internet.
CH Chaosnet, un protocolo LAN creado en el MIT a mediados de la década de 1970.
Rara vez se utiliza para su propósito histórico, pero se reutiliza para las zonas de información del
servidor integradas de BIND, por ejemplo, version.bind.
HS Hesiod, un servicio de información desarrollado por el Proyecto Athena del MIT. Se usa para
compartir información sobre varias bases de datos de sistemas, como usuarios, grupos, impresoras,
etc.
13
2.1.8. Formato del Mensaje DNS
Todas las comunicaciones que implican una consulta y una respuesta DNS, se llevan en
un formato único de mensaje. El formato de mensaje de nivel superior se divide en 5
secciones (véase FIGURA 2-5).
HEADER Cabecera con varios campos
QUESTION Pregunta para el servidor de nombres
ANSWER Registro de Recurso respondiendo la pregunta
AUTHORITY Registro de Recurso apuntando hacia una autoridad
ADDITIONAL Registro de Recurso con información adicional
FIGURA 2-5. Formato de Mensajes DNS
Fuente: Figura tomada de RFC [2]
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ID
QR Opcode AA TC RD RA Z RCODE
QDCOUNT
ANCOUNT
NSCOUNT
ARCOUNT
FIGURA 2-6. Formato de la Cabecera del Mensaje DNS
Fuente: Figura tomada de RFC [3]
Dónde:
ID es un identificador de 16 bits asignado por el programa que genera cualquier
tipo de consulta.
QR es un campo de un bit que especifica si este mensaje es una consulta (0) o
una respuesta (1).
OPCODE es un campo de cuatro bits que especifica el tipo de consulta en este
mensaje. Este valor lo establece quien origina la consulta y se copia en la
respuesta. Los valores son:
0 una consulta estándar (QUERY)
1 una consulta inversa (IQUERY)
14
2 una solicitud de estado del servidor (STATUS)
3-15 reservado para uso futuro
AA es una Respuesta Autoritativa.
TC (Truncamiento), este bit especifica que este mensaje se truncó debido a una
longitud mayor que la permitida en el canal de transmisión.
RD (Recursión deseada), este bit se puede establecer en una consulta y se copia
en la respuesta.
RA (Recursión disponible), este bit se establece o borra en una respuesta e indica
si el soporte de consultas recursivas está disponible en el servidor de nombres.
Z Reservado para uso futuro, hasta la llegada de DNSSEC. Debe ser cero en
todas las consultas y respuestas. Sin embargo, si se establece el bit DO
(DNSSEC OK), indica una solicitud que utiliza DNSSEC cuando se implementa.
RCODE (Código de respuesta): este campo de 4 bits se establece como parte de
las respuestas.
QDCOUNT es un entero de 16 bits sin signo que especifica el número de
entradas en la sección de preguntas.
ANCOUNT es un entero de 16 bits sin signo que especifica el número de
registros de recursos en la sección de respuestas.
NSCOUNT es un entero de 16 bits sin signo que especifica el número de
registros de recursos del servidor de nombres en la sección de registros de
autoridad.
ARCOUNT es un entero de 16 bits sin signo que especifica el número de
registros de recursos en la sección de registros adicionales.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
QNAME
TYPE
QCLASS
FIGURA 2-7. Formato de la Sección de Pregunta del Mensaje DNS
Fuente: Figura tomada de RFC [3]
Dónde:
15
QNAME es un nombre de dominio representado como una secuencia de
etiquetas.
QTYPE es un código de dos octetos que especifica el tipo de la consulta.
QCLASS es un código de dos octetos que especifica la clase de la consulta.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
NAME
TYPE
CLASS
TTL
RDLENGTH
RDATA
FIGURA 2-8. Formato de la Sección de Respuesta del Mensaje DNS
Fuente: Figura tomada de RFC [3]
Dónde:
NAME es un nombre de dominio al que pertenece este registro de recursos.
TYPE son dos octetos que contienen uno de los códigos de tipo RR. Este campo
especifica el significado de los datos en el campo RDATA.
CLASS son dos octetos que especifican la clase de los datos en el campo
RDATA.
TTL es un entero sin signo de 32 bits que especifica el intervalo de tiempo (en
segundos) que el registro de recursos se puede almacenar en caché antes de que
se deba descartar.
RDLENGTH un entero de 16 bits sin signo que especifica la longitud en octetos
del campo RDATA.
RDATA una cadena de longitud variable de octetos que describe el recurso.
16
2.1.9. Puerto de DNS
El Sistema de nombres de dominio (DNS) fue diseñado en una época en que Internet era
un lugar confiable. El protocolo en sí proporciona poca protección contra respuestas
maliciosas o falsificadas. Las Extensiones de Seguridad del Sistema de Nombres de
Dominio DNS (DNSSEC) responde a esta necesidad, agregando firmas digitales a los
datos de DNS, para que se pueda verificar la integridad de cada respuesta de DNS y
autenticidad. En el mundo ideal cuando DNSSEC esté completamente implementado,
cada respuesta DNS puede ser validada y confiable. [8]
17
b) DNSKEY: DNSSEC se basa en la criptografía de clave pública para la autenticidad e
integridad de los datos. En general, existen dos categorías de claves utilizadas en
DNSSEC, la clave de firma de zona (ZSK) que se usa para proteger todos los datos de la
zona, y la clave de firma de clave (KSK) se utiliza para proteger otras claves.
c) DS: El registro de DS es información verificable generada a partir de una de las
claves públicas DNSKEY del hijo, que una zona principal publica sobre una zona que se
denomina hijo.
Todos los registros de recursos de d) NSEC, e) NSEC3 y f) NSEC3PARAM tratan con
el problema de probar que algo no existe.
18
FIGURA 2-9. Validación DNSSEC de 12 Pasos
Fuente: Basada en la figura tomada del texto [8]
1. El servidor recursivo de validación consulta al servidor de nombres example.org
sobre el registro A de www.example.org.
2. La zona example.org responde con la respuesta a la consulta del registro A, más la
RRSIG para el registro A.
3. El servidor recursivo de validación requiere claves criptográficas. Así que solicita
el DNSKEY para example.org.
4. El servidor de nombres example.org responde con los registros DNSKEY y
RRSIG. El DNSKEY se usa para verificar las respuestas recibidas en #2.
5. El servidor recursivo de validación consulta al padre .org por el registro de DS
para example.org.
6. El servidor de nombres .org responde con los registros DS y RRSIG. El registro
DS se usa para verificar las respuestas recibidas en #4.
19
7. El servidor recursivo de validación solicita a los servidores de nombres autorizados
de .org sus claves criptográficas DNSKEY, con el fin de verificar las respuestas
recibidas en #6.
8. El servidor de nombres .org responde con DNSKEY y RRSIG. El DNSKEY se usa
para verificar las respuestas recibidas en #6.
9. El servidor recursivo de validación solicita a la raíz (padre de .org) información
verificable que guarda sobre su hijo, entonces consulta al padre (raíz) por el
registro de DS para .org.
10. El servidor de nombres de raíz envía la información verificable de .org y responde
con registros DS y RRSIG. El registro DS se usa para verificar las respuestas
recibidas en #8.
11. El servidor recursivo de validación solicita al servidor de nombres raíz sus claves
criptográficas DNSKEY para verificar las respuestas recibidas en #10.
12. El servidor de nombres de la raíz envía claves DNSKEY y RRSIG, en este punto,
el DNSKEY se usa para verificar las respuestas recibidas en #10.
Entonces, una vez que se reciben las respuestas en #12, el servidor recursivo de
validación toma la respuesta recibida y la compara con la clave que ya tiene en un
archivo de forma local, y estas dos deben coincidir. Esto se conoce como "cadena de
confianza" en DNSSEC.
20
FIGURA 2-10. Generación de Firma Digital
Fuente: Figura tomada del texto [8]
El servidor recursivo de validación conoce la función hash utilizada, por lo que puede
tomar el mensaje de texto sin formato y ejecutarlo a través de la misma función hash
para generar un valor hash “X”. El servidor recursivo de validación también puede
obtener la clave pública, descifrar la firma digital y recuperar el valor de hash original,
valor de hash “Y”. Si los valores hash “X” e “Y” son idénticos, la respuesta se verifica
(véase FIGURA 2-11), lo que significa que esta respuesta provino del servidor
autorizado, y el contenido se mantuvo intacto durante el tránsito. [8]
21
2.1.11. Transacciones Firmadas
El protocolo de transferencia de zona incremental (IXFR) es una forma para que los
servidores esclavos transfieran solo datos modificados, en lugar de tener que transferir
toda la zona. El protocolo IXFR se especifica en RFC 1995. [4]
El Software Libre es el que se difunde bajo una licencia libre, es decir, que permita al
usuario el ejercicio de las siguientes libertades [10]:
22
los componentes que hacen posible su funcionamiento. El acceso al código
fuente es una condición necesaria e imprescindible.
Redistribuir copias del software.
Distribuir copias de las versiones modificadas a terceros. El acceso al código
fuente es una condición necesaria e imprescindible.
Esta distribución admite varios tipos de procesadores para 32 y 64 bits, entre ellos
AMD, ARM, MIPS, PPC e IBM S390. Es una de las distribuciones más antiguas y
actualmente es el proveedor de distribución basado en un grupo mundial de voluntarios
más grande y se compone completamente de software libre.
Debian se inició en agosto de 1993 por Ian Murdock, fue patrocinado por el Proyecto
GNU de “The Free Software Foundation”, la organización iniciada por Richard
Stallman y asociada con la Licencia Pública General (GPL), por un año, desde
Noviembre de 1994 hasta Noviembre de 1995. [11]
23
FIGURA 2-12. Esquema Básico de una Aplicación Web
Fuente: Elaboración propia
Las tecnologías que se suelen emplear para programar el cliente web son [24]:
HTML
CSS
DHTML
Lenguajes de script: JavaScript, VBScript, JScript, ActionScript, etc.
ActiveX
Applets programados en lenguaje Java.
Tecnologías que necesitan un plug-in en el navegador: Adobe Acrobat Reader,
Autodesk MapGuide, Live Picture PhotoVista, Macromedia Flash, etc.
24
El puerto estándar para el protocolo HTTP es el TCP/80 y para el protocolo HTTPS el
puerto TCP/443.
HTML5 es la quinta y principal versión actual del estándar HTML, e incluye XHTML.
CSS es el lenguaje para describir la presentación de las páginas web, incluye los colores,
el diseño y las fuentes. Permite adaptar la presentación a diferentes tipos de dispositivos,
como pantallas grandes, pantallas pequeñas o impresoras. CSS es independiente de
HTML y se puede utilizar con cualquier lenguaje de marcado basado en XML. [13]
25
2.4. Servidor web
26
Actualmente los SGBD relacionales están en plena transformación para adaptarse a tres
tecnologías fuertemente relacionadas: la multimedia (imagen y sonido), la orientación a
objetos (OO), y la web e Internet.
MySQL ha sido indiscutiblemente durante años el sistema gestor de base de datos más
popular. Mucho ha tenido que ver con ello la proliferación de sistemas LAMP (Linux,
Apache, MySQL, PHP/ Python/ Perl) utilizados para la implementación de sitios web.
2.5.1. MariaDB
27
2.5.2. Modelos de Datos
El modelo de datos entidad-relación (E-R) está basado en una percepción del mundo real
que consta de una colección de objetos básicos llamados entidades, y de relaciones entre
estos objetos. Las entidades se describen en una base de datos mediante un conjunto de
atributos. [15]
28
FIGURA 2-14. Ejemplo de Diagrama E-R
Fuente: Elaboración propia
En el modelo relacional se utiliza un grupo de tablas para representar los datos y las
relaciones entre ellos. Cada tabla está compuesta por varias columnas, y cada columna
tiene un nombre único. A continuación, se presenta un ejemplo de base de datos
relacional consistente en tres tablas: la primera muestra los clientes de un banco, la
segunda muestra las cuentas, y la tercera muestra las cuentas que pertenecen a cada
cliente. [15]
29
número-cuenta saldo
c-100 5000
c-205 1500
c-320 2300
id-cliente número-cuenta
571 c-100
579 c-205
455 c-320
Una interrelación puede asociar dos o más entidades. El número de entidades que asocia
una interrelación es el grado de la interrelación. Las interrelaciones de grado dos se
denominan también interrelaciones binarias. Todas las interrelaciones de grado mayor
que dos se denominan, en conjunto, interrelaciones n-arias. Así pues, una interrelación
n-aria puede tener grado tres y ser una interrelación ternaria, o puede tener grado cuatro
y ser una interrelación cuaternaria, etc. [17]
30
interrelaciones binarias, expresa el número de ocurrencias de una de las entidades con
las que una ocurrencia de la otra entidad puede estar asociada según la interrelación. [17]
Una interrelación binaria entre dos entidades puede tener tres tipos de conectividad [17]:
Las interrelaciones n-arias, igual que las binarias, pueden tener diferentes tipos de
conectividad. Las interrelaciones ternarias pueden tener cuatro tipos de conectividad:
M:N:P, M:M:1, N:1:1 y 1:1:1. [17]
31
2.5.4.2. Lenguaje de Manipulación de Datos
El diseño de una base de datos consiste en definir la estructura de los datos que debe
tener la base de datos de un sistema de información determinado. En el caso relacional,
esta estructura será un conjunto de esquemas de relación con sus atributos, dominios de
atributos, claves primarias, claves foráneas, etc. [17]
Conviene descomponer el proceso del diseño en varias etapas y en cada una de ellas se
obtiene un resultado intermedio que sirve de punto de partida de la etapa siguiente. En la
última etapa se obtiene el resultado deseado.
2) Etapa del diseño lógico: en esta etapa se parte del resultado del diseño
conceptual, que se transforma para adaptarse a la tecnología que se debe
emplear.
El diseño lógico de una base de datos relacional, se hace tomando como punto de
partida un diseño conceptual expresado con el modelo E-R.
32
3) Etapa del diseño físico: en esta etapa se transforma la estructura obtenida en la
etapa del diseño lógico, con el objetivo de conseguir una mayor eficiencia;
además, se completa con aspectos de implementación física que dependerán del
SGBD.
2.6.1. PHP
PHP es un lenguaje interpretado del lado del servidor que surge dentro de la corriente
denominada código abierto. Se caracteriza por su potencia, versatilidad, robustez y
33
modularidad. Al igual que ocurre con tecnologías similares, los programas son
integrados directamente dentro del código HTML. [22]
PHP es rápido y está optimizado para ser utilizado con Apache. La comunidad de PHP
es una de las más grandes de todos los lenguajes de programación, lo que significa, que
existen libros, cursos de capacitación, foros y miles de publicaciones en sitios web de
soporte. [20]
PHP es utilizado por el 79% de todos los sitios web como lenguaje de programación del
lado del servidor. [21]
34
intervienen mayormente el cliente definiendo los requerimientos y los usuarios
definiendo como quieren interactuar con el sistema.
Cada metodología cumple una serie de requisitos que abarcan diferentes aspectos (véase
CUADRO 2-4).
Requerimientos Metodologías
WSDM SOHDM OOHDM UWE WAE IWEB
DATOS x x x x x x
INTERFAZ DE USUARIO x x x x x
NAVEGACIONALES x x x x
PERSONALIZACION x x
TRANSACCIONALES x x
NO FUNCIONALES x x x x x x
OOHDM fue creado como una extensión del Modelo de Diseño de Hipermedia (HDM),
y a diferencia de éste introduce el modelado orientado a objetos en el desarrollo de
hipermedia.
Las etapas del método OOHDM son desarrolladas en un proceso de diseño incremental,
iterativo y basado en prototipos.
35
Posee actividades separadas que permiten obtener diseños modulares y reusables.
36
Capítulo III: DESARROLLO DEL PROYECTO
Adicionalmente se debe instalar el software del servicio DNS a administrar, que para el
presente caso es BIND, también se hará uso del paquete openssl para implementar el
protocolo HTTP Seguro, para el intercambio de datos entre cliente y servidor web.
38
Interfaz de Red: Es poco probable que se necesite actualizar la tarjeta de
interfaz de red (NIC) a menos que se cuente con un hardware realmente obsoleto.
Debido a que los paquetes de DNSSEC son más grandes que un paquete DNS normal, es
probable que en algunos casos se utilice TCP en lugar de UDP, durante las consultas. [8]
DNS sobre TCP: se debe verificar la conectividad a través del puerto TCP 53, lo
que podría implicar un cambio en la lista de control de acceso ACL o firewall
DNS sobre UDP: un firewall puede suponer un tamaño para los paquetes UDP
de DNS y rechazar paquetes DNSSEC debido a su mayor tamaño. Por lo tanto,
se debe hacer una verificación durante una consulta con el objetivo de garantizar
la respuesta.
39
La interfaz de usuario está conformada por el Sistema de Administración y
Configuración del servicio DNS y el Sistema de Administración de Usuario, donde
cada uno cuenta con su propia Base de Datos (Véase FIGURA 3-2).
40
FIGURA 3-3. Jerarquía de Páginas Web del Sistema
Fuente: Elaboración Propia
41
A. Atributos del Sistema de Administración de Usuarios:
i. Acceso al sistema por dirección IP o de red.
ii. Acceso al sistema mediante autenticación por contraseña y prevención de
ingresos de forma simultánea.
iii. Registro y eliminación de usuarios del sistema.
iv. Intercambio de datos seguro entre cliente y servidor web, mediante
HTTPS.
v. Cierre de sesión después de cierto tiempo de inactividad.
vi. Copia de respaldo del sistema administración de usuarios.
42
3.3. Diseño de Ingeniería
2) Diseño Conceptual
Dirección de
IP permitida
RED o IP
43
En base al modelo relacional se puede expresar el diagrama de clases
navegacionales y el diagrama de contextos navegacionales y estructuras
de acceso como parte del diseño Navegacional.
IP Permitida
id int(2)
IP_Red varchar(42)
FIGURA 3-5. Diagrama de Clases Navegacionales para la Autenticación
Fuente: Elaboración propia
Conexión
Permitida Adición de
La Conexión al Sistema es Interfaz de Página Principal del Configuracion del
Direcciones IP o de
Permitida? autenticacion Sistema Sistema
Red Permitidas
Aviso de Conexión
Rechazada
44
FIGURA 3-8. Direcciones IP y de Red Permitidas para Acceder al
Sistema
Fuente: Elaboración propia
45
Inicio
Leer usuario
y contraseña
Encriptar
contraseña con un
hash
si
si
El usuario asociado al contraseña
Inicia sesión
es “admin”?
no
si Aviso del
El sistema está
usuario que
ocupado por otro
ocupa el
usuario?
sistema
no
Inicia sesion
Fin
46
2) Diseño Conceptual
Modelo Relacional
47
FIGURA 3-12. Diagrama de Clases Navegacionales para la Autenticación
Fuente: Elaboración propia
Verificación de
Interfaz de Usuario y Inicio de Sesión
autenticacion Ocupación del Autorizado
Sistema
48
Cuando se detecta que otro usuario se encuentra utilizando el sistema, se
informa oportunamente, el nombre de dicho usuario y se reenvía a la
página de autenticación. A continuación, se muestra el mensaje
informativo de estado de ocupación:
49
FIGURA 3-17. Interfaz de Eliminación de Usuario
Fuente: Elaboración propia
50
FIGURA 3-19. Resultado de la Implementación de HTTPS
Fuente: Elaboración propia
1) Obtención de Requerimientos
Se necesita un algoritmo que verifique si se excedió el tiempo de sesión
establecido.
51
Inicio
Leer Tiempo
Máximo de Sesión
si
Hora Actual de Sesión > (Hora de inicio de Sesión +
Tiempo Máximo de Sesión)
Sesión
no caducada
Fin
2) Diseño Conceptual
3) Diseño Navegacional
El diseño navegacional se basa en la entidad “Tiempo de Sesión” del
diseño conceptual y se genera el diagrama de clases navegacionales y
diagrama de contextos navegacionales:
52
id INT (1)
tiempo_sesion INT (2)
53
recuperar la configuración de la BD de Usuarios, como se muestra a
continuación:
54
1) Requerimientos
Una zona maestra directa es una entidad compuesta de varios atributos
que se almacenan en el archivo de zona, tales como: Nombre de dominio,
Correo electrónico, serial, TTL genérico, TTL SOA, Refresh, Retry,
Expire, Negative caché TTL.
Cada zona almacena registros sobre los que tiene autoridad, y cada uno
de ellos está compuesto por atributos característicos, tales como: Nombre
de Registro, TTL, Tipo, Prioridad y Dato.
2) Diseño Conceptual
Una vez identificadas las entidades y sus atributos se pueden construir las
relaciones e implementarlas en el sistema. A continuación, se muestra la
construcción de la base de datos de la zona maestra directa del sistema:
55
3) Diseño Navegacional
Modelo Relacional:
PermTransNotif PermConsulta
Id_PTN (int) Id_PC (int)
ID_ZonaMaestraDirecta2 (int) ID_ZonaMaestraDirecta1 (int)
IP_permitida (varchar 42 bytes) IP_permitida (varchar 42 bytes)
56
Zona Maestra Directa
Editar Zona Dominio
Maestra Directa Correo
TTL genérico
Serial
- Permisos de Transferencia
TTL SOA
y Notificación
Refresh
- Permisos de Consulta
Resumen de Zonas Retry
Expire
Negative Cache TTL
DNSSEC
57
FIGURA 3-29. Interfaz de Creación de Zona Maestra Directa
Fuente: Elaboración propia
58
FIGURA 3-31. Interfaz de Edición de Zona Maestra Directa y Adición de
Registros
Fuente: Elaboración propia
59
II. Configuración de Servidores DNS Recursivos, Zonas de Reenvío y Soporte
para el Uso de Direcciones IPv6.
1) Obtención de Requerimientos
2) Diseño Conceptual
Servidor
Recursivo
Usar
Servidor
Reenviador
Lista Servidores
60
Dominio
Zona de
Reenvío
IP
3) Diseño Navegacional
61
FIGURA 3-35. Diagrama de Clases Navegacionales para el Servidor
Recursivo
Fuente: Elaboración propia
Servidor Recursivo
Zona de Reenvío
62
4) Diseño de Interfaz Abstracta e Implementación
63
FIGURA 3-40. Interfaz de Creación de Zona de Reenvío
Fuente: Elaboración propia
1) Obtención de Requerimientos
2) Diseño Conceptual
Crear BD de
respaldo
Restaurar BD
Respaldo DNS
Descargar BD
Subir Archivo
de BD
64
3) Diseño Navegacional
Respaldo y
Recuperación del
Página Principal del sistema de
Sistema administración y
configuración de
DNS
1) Obtención de Requerimientos
65
FIGURA 3-44. Firma de Transacciones mediante TSIG
Fuente: Elaboración propia
Para la implementación se debe realizar la configuración para cada par de
servidores. A continuación, se muestran los requerimientos para su
implementación:
2) Diseño Conceptual
- Algoritmo de cifrado
Crear Clave - Longitud de Clave
Asociar Clave
Clave TSIG
Exportar Clave
Importar Clave
66
3) Diseño Navegacional
Clave
TSIG
Para asociar una dirección IPv4 o IPv6 se anota dicha dirección y junto a ella
se debe seleccionar de una lista desplegable la clave creada, luego se
presiona el botón “ASOCIAR”, como se muestra a continuación:
68
De esta operación resulta un vínculo entre la IP del Servidor Secundario con
una Clave TSIG, como se muestra en la siguiente imagen:
1) Obtención de Requerimientos
Los atributos necesarios para la implementación de DNSSEC son:
Crear y Eliminar Claves ZSK y KSK.
Renovar Claves ZSK y KSK.
Firmar una Zona con las claves creadas.
Quitar Firma de Zona.
Exportar e Importar una Clave ZSK o KSK.
Opción de Uso de NSEC o NSEC3.
2) Diseño Conceptual
Creación de Claves
La firma de zona implica la creación de un par de claves ZSK y un par de
claves KSK. Es decir, que tanto para ZSK y KSK, existe una clave privada y
una clave pública respectivamente.
Para la creación de claves ZSK y KSK se toma en cuenta dos atributos
esenciales:
Tipo de Algoritmo: RSASHA256, RSASHA512, ECDSAP256SHA256
y ECDSAP384SHA 384.
69
Longitud de Clave: de 1024 a 4096 bits.
Renovación de claves
70
dnssec-keygen -a Algoritmo_Clave -b Longitud_Clave -i
Días_Prepublicación -A Fecha_Activación Nombre_Dominio
- Algoritmo de cifrado
Crear Clave - Longitud de Clave
Quitar Firma de
Zona
Exportar Clave
Importar Clave
Uso de NSEC o
NSEC3
71
3) Diseño Navegacional
Crear Claves
Renovar Claves
72
FIGURA 3-56. Interfaz de Creación de Claves ZSK y KSK
Fuente: Elaboración propia
Una vez que se elige el Algoritmo y la Longitud, se presiona el botón
“Crear ZSK”.
73
Indicador de Firma de Zona
74
FIGURA 3-60. Interfaz de Renovación de Clave KSK
Fuente: Elaboración propia
VI. Uso de RNDC para Tareas de Monitoreo del Estado del Sistema y
Diagnóstico del Servicio DNS.
El servicio DNS puede ser administrado de modo local y de modo remoto, con la
ayuda de RNDC (Remote Name Daemon Control), a través de una clave que
75
debe ser copiada en el archivo de configuración del equipo local y equipos
remotos. En este caso por motivos de seguridad, RNDC se encuentra configurado
de forma local y deshabilitado para la administración remota de DNS, debido a
que el servicio web proporciona el servicio de administración remota con las
medidas de seguridad necesarias.
1) Obtención de Requerimientos
76
FIGURA 3-62. Configuración de Clave para RNDC
Fuente: Elaboración propia
Luego la clave creada se añade en la configuración que controla el acceso a
la administración del servicio DNS:
Registros del
Sistema
- Hora del Sistema
- Tiempo de Servicio
Diagnóstico del
Estado del Sistema - Estado de recursos de Hadware
Servicio DNS - Información de Red
- Estado de la Red
77
3) Diseño Navegacional
Configuración de Crear/Renovar
Seguridad Clave RNDC
78
4) Diseño de Interfaz Abstracta e Implementación
79
3.3.3. Diagramas de Secuencia del Sistema
ingresar IP
consulta duplicidad
responde consulta
consulta datos de IP
Paquete superior::Administrador
envía datos IP
escribe en la configuración
80
Sistema Operativo (DEBIAN)
Servidor Web Servicio DNS (BIND) SGBD (MariaDB)
Confirmación
Consulta Duplicidad
Confirmación
Paquete superior::Administrador
Administrador verifica contraseña
Confirmación
Mensaje Exitoso
81
iv. Intercambio de datos seguro entre cliente y servidor web, mediante
HTTPS.
El cifrado de datos entre cliente y servidor se realiza únicamente entre el
dispositivo de cliente y el servidor web, durante cualquier uso del
sistema.
v. Cierre de sesión después de cierto tiempo de inactividad.
actualiza datos
Paquete superior::Administrador
Administrador
envía datos
82
vi. Copia de respaldo del sistema administración de usuarios.
Reemplaza la BD
Paquete superior::Administrador
Administrador
83
3.3.3.2. Diagramas de Secuencia del Sistema de Administración y
Configuración del servicio DNS
Llenado de formulario
consulta duplicidad de dominio
confirma
Paquete superior::Administrador
Usuario almacena datos
envía datos
84
Sistema Operativo (DEBIAN)
Servidor Web Servicio DNS (BIND) SGBD (MariaDB)
Editar Zona
envía datos
Consulta Duplicidad
confirma
almacena datos
actualiza interfaz
solicita datos de zona
envía datos
Guardar
85
II. Configuración de servidores DNS recursivos, zonas de reenvío y soporte
para el uso de direcciones IPv6.
envía datos
Modifica configuración
confirma
almacena datos
actualiza interfaz
solicita datos de zona
envía datos
Guardar
86
III. Copia de respaldo del sistema de administración y configuración de DNS.
Paquete superior::Administrador
Usuario
Reemplaza la BD
Mensaje Exitoso
87
IV. Uso de transacciones firmadas entre servidores mediante TSIG.
88
V. Uso de DNSSEC y respaldo de claves ZSK y KSK.
llenar formulario
Crear clave ZSK o KSK
solicita generar clave
Firmar zona
consulta existencia de claves
PaqueteUsuario
superior::Usuario
confirma existencia
almacena estado de firma de zona
comando de firma de zona
89
VI. Uso de RNDC para tareas de monitoreo del estado del sistema y
diagnóstico del servicio DNS.
interfaz de herramientas
interfaz de herramientas
Visualización de Respuesta
90
Sistema Operativo (DEBIAN)
Servidor Web Servicio DNS (BIND) SGBD (MariaDB)
interfaz de herramientas
comprobar zona
Verificar configuración
PaqueteUsuario
superior::Usuario
respuesta
Visualización de Respuesta
91
3.4. Licencia del Sistema
Debian:
Apache:
MariaDB:
92
PHP:
Para una selección apropiada de una licencia para el software resultante en el presente
proyecto se toma en cuenta la información contenida en línea, en la URL
https://choosealicense.com/, donde la selección de la licencia para este proyecto se
efectúa en función de tres situaciones:
93
3.4.1. Licencia Pública General GNU v3.0
Los permisos de ésta sólida licencia están condicionados a poner a disposición el código
fuente completo de obras con licencia y modificaciones, que incluyen obras más grandes
que utilizan una obra con licencia, bajo la misma licencia. Los avisos de copyright y
licencia deben conservarse.
94
3.5. Implementación del Sistema
Memoria RAM: Se necesita al menos 150 MB, por parte del Sistema
Operativo cuando el sistema se encuentra instalado y en funcionamiento. El
resto sería aprovechado por los Registros de Recurso consultados. Por lo
tanto, se recomienda tener entre 250 MB a 500MB de Memoria RAM de
acuerdo al número de clientes del servicio DNS.
Memoria en Disco: El sistema operativo Debian instalado ocupa alrededor
de 1GB de espacio en disco y el sistema de administración de DNS
desarrollado ocupa 60 MB. Considerando que el sistema desarrollado permite
almacenar registros de los eventos, relacionados a las solicitudes del servicio
DNS, se necesitan 12MB adicionales, por lo que con un Disco Duro de 4GB,
bastaría para cubrir los requerimientos de almacenamiento.
CPU: Después de múltiples pruebas en máquinas virtuales se llegó a la
conclusión de que es necesario al menos un núcleo de 2GHz para las
validaciones de DNSSEC.
95
Requisitos Mínimos de un Servidor Autoritativo:
Memoria RAM: El servidor autoritativo no almacena una gran cantidad de
Registros de Recurso en su memoria como un servidor recursivo, y solo
necesita almacenar la zona firmada cuando DNSSEC se encuentra activado.
Por lo tanto, se necesita al menos 250 MB de memoria RAM tomando en
cuenta que el sistema operativo ya ocupa 150 MB aproximadamente, para su
funcionamiento.
Memoria en Disco: Utilizando el mismo análisis de requerimientos que para
un servidor recursivo y considerando el almacenamiento de zona se necesitan
al menos 4GB.
CPU: De forma análoga al servidor recursivo, para firmar una zona se
necesita un núcleo de al menos a 2GHz.
96
Configuración para una Dirección de Red de Prueba
97
Las pruebas de funcionamiento del Sistema de Administración de Usuarios, pueden ser
revisados en su totalidad en el ANEXO A, de la sección de ANEXOS.
98
FIGURA 3-93. Zona Maestra Directa Creada
Fuente: Elaboración propia
99
Edición de una Zona Maestra Directa y Permisos de Consultas DNS
En esta etapa se puede añadir los Registros de Recurso de la Zona.
100
FIGURA 3-96. El Sistema Informa que los Datos de Zona se Cargaron
Exitosamente
Fuente: Elaboración propia
101
FIGURA 3-99. Consulta al Servidor por el Host “www.ejemplo.gob.bo”
con la herramienta “dig”
Fuente: Elaboración propia
102
Capítulo IV: EVALUACIÓN CUANTITATIVA DEL
PROYECTO
Parámetro de Tiempo de
Tiempo Total Estimado
Tiempo Trabajo
1 día 10 [horas]
[ ] [ ] [ ]
[ ]
[ ] [ ] [ ]
1 semana 6 [días]
[ ]
1 mes 4 [semanas]
El tiempo total de horas empleadas en el desarrollo del proyecto está conformado tanto
por el tiempo de aprendizaje de los distintos lenguajes de programación (PHP, MySQL,
Linux, Apache, HTML, CSS, JavaScript, BIND), así como el tiempo de desarrollo,
implementación, pruebas del proyecto, y elaboración de un manual de administración
del sistema, entregado al Ministerio de Economía y Finanzas Públicas.
103
4.2. Cantidad de Líneas de Código Desarrolladas
Cantidad de Líneas
Sub Módulo Líneas de Código Totales
de Código
Actualizar Password 69
Cambio de Password 46
Conexión BD Usuarios 12
Eliminar Usuario 20
Formulario de Usuario 94
Líneas de Código
Index 52
Login 89
Logout 12
Registro de Usuario 66
Subir Usuario 76
Tiempo de Sesión 18
104
Cantidad de Líneas Líneas de Código
Sub Módulo
de Código Totales
Conexión BD DNS 21
Configurar TSIG 245
Configuración General 104
Crear Esclavo 93
Crear Esclavo Inverso 134
Crear Llaves 515
Crear Llave Esclava 498
Crear Maestro 136
Crear Maestro Inverso 170
Crear Reenvío 119
Declarar Zona 259
Dirección Ipv4 Inversa 155
Dirección Ipv6 Inversa 201
DNSSEC 115
Editar Maestro 378
Editar Maestro Inverso 293 Líneas de
Editar Recursivo 380 Código
Editar Reenvío 116
Gráficos Monitoreo 97
Herramientas 453
Info Recursos 252
Eliminación 681
Permisos Zona Directa 139
Permisos Zona Esclava Directa 211
Permisos Zona Esclava Inversa 208
Permisos Zona Inversa 135
Renovar Llaves 539
Respaldo BD DNS 240
Respaldo para DNS 4
Resumen de Zonas 169
Subir BD DNS 76
Subir Key 124
Subir TSIG 139
105
Cantidad de Líneas de
Módulo Líneas de Código Totales
Código
Sistema de Administración de
837
Usuarios
Sistema de Administración y Líneas de
7399 Código
Configuración del Servicio DNS
Barra de Navegación 169
106
Capítulo V: CONCLUSIONES Y
RECOMENDACIONES
5.1. Conclusiones
1. Se utilizó Apache como servidor web; MariaDB como SGBD; y PHP, HTML,
JavaScript y CSS como lenguajes de desarrollo web, los cuales se instalan sobre
el sistema operativo Debian, para administrar el servicio DNS instalado con
Bind, así mismo se utiliza Openssl, para proveer un canal seguro de
comunicación. Y se establecieron las recomendaciones de hardware necesarias
para implementar las distintas funciones del sistema.
107
4. Se realizó la implementación en un servidor virtual de pruebas, y se identificaron
como requerimientos mínimos del sistema: 350 MB de Memoria RAM, 4GB de
espacio en Disco y 1 núcleo de 2 GHz.
5.2. Recomendaciones
Para disponer de integridad y autenticidad de los datos consultados ya sea como servidor
recursivo o autoritativo, se recomienda hacer uso de DNSSEC.
108
BIBLIOGRAFÍA
[1]. BOLIVIA. 2017. “Decreto Supremo N° 3251” Artículo 2. 12 de Julio de 2017. 8p
[en línea]: <https://www.agetic.gob.bo/pdf/documentos/DS-3251.pdf > [consulta: 20
Noviembre 2018].
[2]. IETF. 1987. “RFC 1034: Domain Names – Concepts And Facilities” [en línea]
<https://tools.ietf.org/html/rfc1034 > [consulta: 12 Diciembre 2018].
[3]. IETF. 1987. “RFC 1035: Domain Names – Implementation and Specification” [en
línea] < https://tools.ietf.org/html/rfc1035 > [consulta: 12 Diciembre 2018].
[4]. INTERNET SYSTEM CONSORTIUM. 2018. “BIND 9 Administrator Reference
Manual” [en línea] California, USA. Internet System Consortium Inc.
<https://downloads.isc.org/isc/bind9/9.11.5-P1/> [consulta: 15 Diciembre 2018].
[5]. ADSIB. 2019. “En marcha despliegue de DNSSEC en el ccTLD .bo” [en línea]
<https://www.bolnet.bo/En-marcha-despliegue-de-DNSSEC-en> [consulta:10 Abril
2019]
[6]. ULTRATOOLS. 2016. “Statistics top 500 Domains DNS Server Types” [en línea]
<https://www.ultratools.com/statistics > [consulta: 10 Diciembre 2018].
[7]. INTERNET SYSTEM CONSORTIUM. 2018. “Licencia ISC - Mozilla Public
License” [en línea] <https://www.isc.org/downloads/software-support-policy/isc-
license/> [consulta: 10 Diciembre 2018].
[8]. INTERNET SYSTEM CONSORTIUM. 2017. “Bind Dnssec Guide. [en línea]
<https://ftp.isc.org/isc/dnssec-guide/dnssec-guide.pdf> [consulta: 12 Diciembre
2018].
[9]. LWN Feature Article. 1999-2019. “The LWN.net Linux Distribution List” [en línea]
<https://lwn.net/Distributions/ > [consulta: 1 Noviembre 2018].
[10]. ADSIB. 2018. “Políticas de Implementación y Gestión del Repositorio Estatal de
Software Libre” [en línea] ADSIB-SL-POLT-001, La Paz, Bolivia
<https://softwarelibre.gob.bo/auth/login > [consulta: 12 Diciembre 2018].
[11]. Debian. 2019. “A Brief History of Debian” [en línea]
<https://www.debian.org/doc/manuals/project-history/index.en.html#contents>
[consulta: 1 Enero 2019].
[12]. W3C Working Group. 2016. “JAVASCRIPT WEB APIS” [en línea]
<https://www.w3.org/standards/webdesign/script.html> [consulta: 1 Noviembre
2018].
[13]. W3C Working Group. 2018. “HTML Y CSS” [en línea]
<https://www.w3.org/standards/webdesign/htmlcss> [consulta: 1 Noviembre 2018].
[14]. NETCRAFT. 2019. “June 2019 Web Server Survey” [en línea]
<https://news.netcraft.com/archives/2019/06/17/june-2019-web-server-survey.html>
[consulta: 25 Junio 2019].
[15]. SILBERSCHATZ, A., KORTH, H.F., SUDARSHAN, S. 2002. “Fundamentos
de Bases de Datos”. 4ª. Edición. Madrid, España. McGraw-Hill/Interamericana de
España. 770p. [consulta: 5 Enero 2019].
[16]. MILLÁN, M.E. 2012. “Fundamentos de Bases de Datos”, Edición Digital 2017.
Cali, Colombia. Programa Editorial/Universidad del Valle. 154p.
109
[17]. CAMPS, R. et al. 2005. “Bases de Datos”. Barcelona, España. Editorial Eureca
Media. 460p. [consulta: 10 Enero 2019].
[18]. DB-ENGINES. 2019. “DB-Engines Ranking” [en línea] <https://db-
engines.com/en/ranking> [consulta: 11 Enero 2019].
[19]. MARIADB. 2019. “MariaDB versus MySQL – Compatibility” [en línea]
<https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/> [consulta: 15
Enero 2019].
[20]. ROCHKIND, M. 2013. “Expert PHP and MySQL”. Boulder, Colorado. Editorial
Apress, 329. [consulta: 15 Enero 2019].
[21]. W3TECHS. 2019. “Usage Statistics and market share of PHP for websites” [en
línea] <https://w3techs.com/technologies/details/pl-php/all/all> [consulta: 5 enero
2019].
[22]. COBO, A. et al. 2005. “PHP y MySQL Tecnologías para el Desarrollo de
Aplicaciones Web”. España. Editorial Diaz de Santos. 504p. [consulta: 5 Febrero
2019].
[23]. MOLINA, J. et al. 2018. “Comparación de Metodologías en Aplicaciones Web”
[en línea] Revista 3CTecnología. 14 de marzo de 2018. Volumen 7, Número 1,
Edición 25 <http://dx.doi.org/10.17993/3ctecno.2018.v7n1e25.1-19> [consulta: 5
Febrero 2019].
[24]. CHOOSE A LICENSE. 2019. “GNU General Public License v3.0” [en línea]
<https://choosealicense.com/licenses/gpl-3.0/> [consulta: 10 Febrero 2019].
110
ANEXO A: PRUEBAS DE FUNCIONAMIENTO DEL
SISTEMA Y RESULTADOS OBTENIDOS
111
Pruebas de Funcionamiento para el Sistema de
Administración de Usuarios
a. Acceso al Sistema por dirección IP o de Red
Por defecto el sistema no lleva configurado ninguna regla restrictiva para el
acceso por dirección IP o de Red, debido a que puede ser implementado en
distintos rangos de Red, y posteriormente realizar las restricciones respectivas.
Configuración para una Dirección de Red de Prueba
112
FIGURA 3. Acceso Restringido al Servidor para una Dirección no
Configurada en la lista de direcciones IP o de Red permitidas
Fuente: Elaboración propia
113
FIGURA 5. Ingreso al Sistema Exitoso del Usuario “admin”
Fuente: Elaboración propia
Prueba de un Segundo Ingreso con el Usuario “jperez”
114
c. Registro y Eliminación de Usuarios del Sistema
El registro y eliminación de Usuarios del sistema es accesible únicamente por el
usuario “admin”.
Prueba de Registro para el usuario “sbolivar”
115
d. Intercambio de datos seguro entre cliente y servidor web, mediante HTTPS
Prueba de Ingreso con el Protocolo HTTP.
116
e. Cierre de Sesión después de Cierto Tiempo de Inactividad
Con el tiempo de sesión configurado, una vez excedido el tiempo establecido, se
cierra la sesión del usuario, debido a la inactividad de la página actual en la que
se encuentre.
117
FIGURA 16. BD de Usuarios Creada
Fuente: Elaboración propia
118
Pruebas de Funcionamiento para el Sistema de
Administración y Configuración del Servicio DNS
A. Creación, Edición y Eliminación de Zonas Maestras y Esclavas; así como
sus Zonas Directas e Inversas, para Servidores DNS Autoritativos y
Configuración de Clientes Permitidos para Consultas DNS
Creación de una Zona Maestra Directa
119
FIGURA 20. Zona Maestra Directa Creada
Fuente: Elaboración propia
120
FIGURA 3-22. Interfaz de Permisos de una Zona Maestra Directa
Fuente: Elaboración propia
122
B. Configuración de Servidores DNS Recursivos, Zonas de Reenvío y Soporte
para el Uso de Direcciones IPv6
123
FIGURA 30. Consulta al Servidor Recursivo sobre el Host Externo
“www.isc.org”
Fuente: Elaboración propia
124
FIGURA 32. Configuración de una Zona de Reenvío
Fuente: Elaboración propia
125
FIGURA 35. Consulta al Servidor Configurado sobre el Host
“www.ejemplo.gob.bo” ubicado en otro Servidor
Fuente: Elaboración propia
126
D. Uso de Transacciones Firmadas entre Servidores mediante TSIG
Para demostrar su uso debemos configurar un par de servidores, para lo cual
teniendo el servidor maestro ya configurado (con la IP 192.168.100.7), es
necesario configurar un servidor esclavo en otro servidor (con IP
192.168.100.100) y verificar que las transacciones utilizan TSIG.
127
FIGURA 40. Configuración de Permisos de una Zona Esclava
Directa
Fuente: Elaboración propia
128
FIGURA 43. Carga de un Archivo de Clave TSIG al Servidor
Maestro
Fuente: Elaboración propia
129
FIGURA 46. Consulta del Host “www.ejemplo.gob.bo” al Servidor
Maestro
Fuente: Elaboración propia
130
E. Uso de DNSSEC y respaldo de claves ZSK y KSK
Creación de Claves
131
Firmar una Zona Maestra Directa
132
FIGURA 54. Consulta al Servidor Autoritativo y Respuesta sobre el
Host “www.ejemplo.gob.bo” sin las Firmas Digitales tras desactivar
la Firma de Zona
Fuente: Elaboración propia
FIGURA 55. Archivo de Clave KSK con las Claves Pública y Privada
y los Registro DS
Fuente: Elaboración propia
FIGURA 56. Archivo de Clave ZSK con las Claves Pública y Privada
Fuente: Elaboración propia
133
FIGURA 57. Botón que Permite la Carga de Claves ZSK y KSK al
Sistema
Fuente: Elaboración propia
134
FIGURA 59. Interfaz para el Cambio de NSEC a NSEC3 para la
Prueba de no Existencia
Fuente: Elaboración propia
Para renovar una clave ZSK, se toma en cuenta que la renovación de una
clave KSK, es bastante similar, con la diferencia en que en que esta última
implica el envío de un archivo que contiene los Registros DS, a la zona
padre, que en este caso sería “.gob.bo”.
135
Antes de renovar la Clave ZSK se muestra las claves actuales del dominio:
FIGURA 61. Consulta del Dominio por las Claves Públicas de ZSK y
KSK y sus Firmas de la Zona “ejemplo.gob.bo”
Fuente: Elaboración propia
136
FIGURA 62. Interfaz de Renovación de Clave que Muestra los
Metadatos de Tiempo de la Clave ZSK Actual
Fuente: Elaboración propia
137
FIGURA 63. Clave ZSK Actual con Fechas de Inactivación y
Eliminación y Clave ZSK Nueva Próxima a Activarse
Fuente: Elaboración propia
FIGURA 64. Nueva Clave ZSK y Clave ZSK Antigua sin Botón de
Eliminación hasta que la Fecha de Inactivación se Cumpla
Fuente: Elaboración propia
138
FIGURA 65. Fig. Nueva Clave ZSK Pre-Publicada Sin Firma Digital
Hasta su Fecha de Activación
Fuente: Elaboración propia
139
F. Uso de RNDC para tareas de monitoreo del estado del sistema y diagnóstico
del servicio DNS
Estado del Servicio de DNS
140
FIGURA 69. Resultado de la Consulta de Logs del Sistema
relacionados al servicio DNS
Fuente: Elaboración propia
Estado del Sistema
141
FIGURA 73. Resultado de la Consulta “info Red”
Fuente: Elaboración propia
142
Estado de Zonas Maestras y Archivos de Configuración
143
FIGURA 79. Resultado de la Consulta “Check Conf” con Resultado
Exitoso
Fuente: Elaboración propia
144
ANEXO B: DIAGRAMA DE BLOQUES DEL
SISTEMA
145
FIGURA 1. Diagrama de Bloques del Sistema de Administración Web
Fuente: Elaboración propia
146