Publicado en debian

DNS hacer un servidor primario y secundario en Debian paso a paso con bind9

Voy a enseñar a hacer un servidor con Debian paso a paso.

(Si alguien la fastidia, en el virtualbox es recomendable hacer una instantánea para no fastidiarla y así volver atrás donde dejo la instantánea).

(Necesitamos 2 máquinas y para eso las llamaré usuario servidor y usuario cliente y las enseñare a hacer en virtualbox paso a paso).

bind9 incrementa el protocolo dns (para las consultas) y es el servidor de referencia para otras implementaciones.

dig sirve para saber la información que saco de la dns que estoy consultando.

Hay 2 zonas:

zona directa y zona inversa (haré las 2).

(usuario servidor)

1º Entramos con el usuario servidor.

Para tener Internet en virtualbox es necesario activarlo primero y para eso una vez que se ha puesto la ISO (el sistema operativo) hay que darle a:

1º botón derecho en la ISO que se tenga instalada.

2º darle a configuración.

3º después a «red» y dentro de «red» en el adaptador 1 tiene que estar habilitado «adaptar el adaptador de red».

4º A continuación en la pestaña «conectado a:» hay que darle a «NAT» para que tenga Internet la máquina virtual.

 

Estos son algunos comandos bind9:

Para la instalación de bind9: apt-get install bind9

Para iniciar el servicio bind9: systemctl start bind9

Para detener el servicio bind9: systemctl restart bind9

Para reiniciar el servicio bind9: systemctl reload bind9

Para saber si bind9 está funcionando: systemctl status bind9

Solo Ficheros principales de bind9

/etc/bind/named.conf es el fichero de configuración principal.

/etc/bind/named.conf.options especifica las opciones generales para el funcionamiento de la bind.

/etc/bind/named.conf.local es el fichero que tiene las opciones específicas para nuestra instalación.

/etc/bind/named.conf.default-zones contiene la definición de las zonas por defecto para la instalación (tiene las definiciones de localhost y de 127.0.0.1).

/etc/bind/db tiene los ficheros con definiciones de las zonas que ha instalado Debian.

Toda o casi toda la Configuración:

Los comentarios comienzan con doble barra: «//».

Los comentarios empiezan por punto y coma «;».

Las líneas acaban en « (punto y coma).

Las secciones se agrupan usando llaves «{ }».

Los archivos de zona tienen otro formato.

Los registros ocupan una sola línea.

Las variables se indican con el símbolo «$» (dólar).

Ahora empezaré

Para seguir hace falta tener el virtualbox en la red interna (se va como lo puse antes y en vez de elegir NAT se pone «red interna» (sin Internet ya que no quiero salir al exterior para el ejemplo ya que pondré ips privadas).

Obtener e Instalar el bind9

apt-get install bind9

Para poner ip fija en el servidor:

Entrar en: /etc/network/interfaces y poner por ejemplo:

etc.network.interfaces

Se tiene que reiniciar la red, que es la que hemos cambiado anteriormente con la ip fija.

Se pone el comando systemctl restart networking (tarda unos segundos, tened paciencia).

Una vez que hemos cambiado la ip si queremos verificado hay que darle a ifconfig

Para verificar que sale la ip fija que hemos puesto hay que poner en el terminal ifconfig.

ejemplo:

(Está puesta la foto de ejemplo para que se detecte donde está puesta la ip).

ifconfig

Para cambiar el dns, cada máquina tiene que tener 1 distinto.

A continuación hay que entrar en /etc/resolv.conf

ejemplo:

dns

DNS es por ejemplo cuando entramos en una página web (ejemplo http://www.google.es) si nos gusta la página tendríamos que aprendernos su IP, en vez de aprendernos su ip (ejemplo 255.255.255.255) como es más complicado, la dns lo cambia a nombres para que sea más cómodo identificar las páginas web.

Para cambiar el nombre del host

Ejemplo:

nombre del host servidor1 usuario1

Ahora para que se ponga «usuario1» hay que reiniciar. (es opcional cambiar lo que se tenga en /etc/hostname porque si se cambia en este caso saldría en la consola «root@usuario1)

En Fordwarders

Ahora necesitamos entrar en el servidor reenviador (forwarders) (cuando recibe una consulta, si no es capaz de resolverlo, se lo pregunta a otros servidores).

Para ello hay que entrar en /etc/bind/named.conf.options y donde pone forwarders poner 192.168.254.254.

Ejemplo:

forwarders

A continuación con el comando named-checkconf (dirección para comprobar) sirve para ver si está todo bien escrito (ejemplo: si falta un «;» ).

No hay problema si cometemos un fallo, se puede comprobar con named-checkconf (dirección que queremos comprobar)

Screenshot_20

Solemos cometer fallos y para eso está el named-checkconf, para corregirlo diciéndole donde están los fallos (en el ejemplo anterior el fallo era el punto y coma «;»).

Al poner el punto y coma correctamente como se puede comprobar no sale ningún fallo.

named-checkconf sin fallo

Aplicar cambios

Como hemos hecho unos cuantos cambios usamos systemctl restart bind9 para que se reinicie y se apliquen los cambios.

Resolución directa:

(En la zona directa le da el nombre a partir de la ip).

Para cambiar la zona de resolución directa hay que entrar en:

/etc/bind/named.conf.local

Ejemplo:

Resolución directa

zone «usuario1.ejemplo» es el nombre que le queramos poner.

Interfiere el type master se refiere que es el servidor principal.

File «/etc/bind/db.usuario1.ejemplo» es la ruta que crearemos ahora.

allow-transfer se refiere a donde queremos enviar los datos en el caso de que la anterior máquina no tenga la cache dns de algún dato que alguien busque.

10.0.8.237 se refiere a la ip que enviará los datos.

Después de hacer lo anterior tenemos que crear la dirección

/etc/bind/db.usuario1.ejemplo

(Dentro de /etc/bind, copiamos el archivo «db.local«, le damos a pegar, y lo único que ahora hay que hacer es modificar los registros de abajo que están en rojo a la hora de modificar «db.usuario1.ejemplo«).

Screenshot_6

Para verificar que la ruta está bien puesta (me refiero a la ruta «/etc/bind/db.usuario1.ejemplo») sin fallos de sintaxis hay que poner:

named-checkzone localhost (ruta del archivo)

Screenshot_4

Es importante poner donde está, por eso se pone «localhost» (refiriéndose al propio ordenador).

Si todo ha salido bien te tiene que salir un «ok».

Screenshot_5

A continuación esta parte la pondré de ejemplo (en db.usuario1.ejemplo) pero hay que añadir los registros que cada uno necesite (registro A,  MX, CNAME…) es decir que cada uno la modifica como quiera, yo voy a poner un ejemplo solamente.

Ahora que ya la hemos creado entramos y ponemos:

(Donde pone «MX 1» el 1 se refiere que es el servidor que manda)

Screenshot_2

En «ns1.usuario1.ejemplo.» he puesto el «.» porque ahí se acaba (si no pusiera el punto seguiría. Ejemplo: ns1.usuario1.ejemplo.continua.bastante) (se añade el punto para decirle que no siga)

Nos tenemos que fijar en los nombres @ A IN NS MX CNAME

@ Se refiere que se los envía a todos.

A se refiere al host (asocia el nombre de dominio con la ip)

IN se refiere a Internet

NS se refiere al servidor de nombres

MX se refiere al servidor de correo y el 1 se refiere al número de mi servidor

CNAME es el alias que va a llevar mi dirección

Ahora para dar de alta una zona hay que poner:

systemctl restart bind9

o

systemctl reload bind9

Para verificar que todo funciona correctamente es aconsejable poner systemctl status bind9 y te dirá en rojo, los fallos y la dirección.

(cuando está bien te sale (all zones loaded) y abajo sale «running).

Para verificar que todo está correctamente después de reiniciar el bind9 y ver que supuestamente todo está correcto, es aconsejable usar «nslookup» para verificar que todo está bien.

Veremos como se usa nslookup:

Como se puede ver en la imagen de abajo hay que entrar en el terminal y poner nslookup

Screenshot_1

Después hay que poner «set query=ANY» para verificar que todo está correctamente y te tiene que salir algo como esto (si no te sale es que hay algo mal)

screenshot_3.png

Ya se acabó la zona directa

AHORA LA ZONA INVERSA

(Seguimos con usuario1).

Ahora tenemos que activar la zona inversa, para ello vamos a:

/etc/bind/named.conf.local

Y añadimos la segunda fila (recordad que en la primera fila tenía esto).

Resolución directa

Todo junto quedaría así:

resolucion inversa

named-checkconf /etc/bind/named.conf.local para ver si está bien escrito lo de dentro de ese archivo. (si no sale nada es que está bien la sintaxis y si hay algo mal hay que arreglar el fallo).

Screenshot_8

Es hora de crear el archivo de la zona inversa (/etc/bind/db.10.0.8).

Screenshot_7

Se copia un archivo, se pega y se pone algo como esto (similar) (hay que modificar lo que está en rojo).

¿Cómo saber si se tiene bien la parte inversa?

Hay que poner la ip y tiene que salir como en la foto de abajo.

Screenshot_15

Para descubrir la parte inversa hay que poner la ip (en este caso 10.0.8) y el número que se pone en la parte inversa como se puede comprobar en la parte de arriba (la ip 10.0.8.5).

screenshot_161.png

AHORA EL USUARIO2

(Usaré otro Debian como usuario2).

Resolución directa e inversa

(Se sigue usando la red «red interna» para el ejemplo).

Ahora se abre otra máquina en virtualbox que sería el usuario2.

Instalando bind9 (para instalarlo hay que tener Internet)

En la consola poner: apt-get install bind9.

Poniendo ip fija en el cliente

Entrar en /etc/network/interfaces para ponerle la ip fija.

Ejemplo:

ip fija usuario2

nombre del host

/etc/hostname

nombre del host usuario2

cambiar servidor dns

Hay que entrar en /etc/resolv.conf

Ejemplo:

cambio servidor dns

Hay que entrar en el  fichero /etc/bind/named.conf.local para que el usuario1 se comunique con el usuario2.

Ahora hay que añadir las 2 zonas (directa e inversa).

(La ip 10.0.8.5 se refiere que le envía los datos al servidor que tiene esa ip)

Ejemplo:

zona directa e inversa usuario2

En la zona directa de «db.usuario1.ejemplo» solo hay que modificar lo que está en rojo.

Screenshot_11

En la zona inversa de «db.10.0.8» solo hay que modificar lo que está en rojo.

Screenshot_17

Comprobemos la zona directa e inversa con nslookup

zona directa:

Tiene que salir la ip de la zona directa pero con la ip del cliente y los datos del servidor «usuario1.ejemplo«

Screenshot_18

zona inversa

Para saber la zona inversa del cliente hay que poner la ip del servidor (10.0.8.5) y automáticamente sale la ip del cliente y se verifica que está todo correctamente.

Screenshot_19

Si hay algún fallo journalctl -f  te lo dice o systemctl status bind9

Por último, para ver si todo está bien hay que entrar en /var/cache/bind y se tienen que crear solos 2 archivos binarios (db.usuario1.ejemplo y db.10.0.8)   que has creado antes (las transfiere del usuario1 al usuario2). (en la dirección /var/cache/bind).

(Para que funcione tienen que tener las 2 máquinas virtualbox abiertas a la vez para que se comuniquen).

Con el cliente después de poner systemctl restart bind9 se tiene que comprobar que se han copiado correctamente en /var/cache/bind y como se puede comprobar están los 2 archivos copiados en el cliente

Screenshot_12

Si se quiere verificar que todo está correctamente, se puede visualizar lo que hay dentro de cada 1. (se puede visualizar con el comando «cat» pero está encriptado y no se puede abrir).

Veamos el ejemplo con db.usuario1.ejemplo (en el caso de que haya salido correctamente se tiene que poder visualizar usuario1.ejemplo)

screenshot_14.png

Veamos el ejemplo con db.10.0.8 (en el caso de que haya salido correctamente se tiene que poder visualizar usuario1.ejemplo pero con in-add.arpa que se refiere al inverso).

Screenshot_13

Espero que os guste, un saludo a todo el mundo y si os ha gustado comentarlo.

Publicado en gnu/linux

Estructura común del sistema de ficheros de Gnu/Linux

Estructura de ficheros de Gnu/Linux.

/bin  Para los comandos binarios esenciales del usuario.

Ejemplo:

rmdir Borra las carpetas.

mkdir Crea carpetas.

chmod Cambia los privilegios de las carpetas.

/boot se trata de los ficheros de configuración de arranque.

Es decir: tiene lo necesario para que arranque el ordenador (contiene archivos estáticos).

/dev contiene los archivos de dispositivos.

Ejemplo: Discos Duros, memorias, cdrom…

/etc ficheros de configuración y arranque del sistema. (especifica la configuración del sistema de almacenamiento).

Ejemplo:

En este sitio se ejecutan scripts que se ejecutan al encenderse el sistema.

/home directorio de todos los usuarios.

Ejemplo:

Si se crea un usuario en «cuentas de usuario» el usuario  que se haya creado por defecto tiene una carpeta creada (cuando se activa el usuario) con su nombre dentro de «home».

/lib son las librerías del sistema. (contiene las bibliotecas compartidas comunes y módulos del kernel)

Ejemplo:

Es como si fueran las dlls de Windows.

/media es el punto de montaje de los medios extraíbles.

Ejemplo:

Cuando se pone el USB el /media lo reconoce y lo monta en /media

Cuando se inserta un CD-ROM se monta en /media.

/mnt punto de montaje de sistemas de ficheros montados temporalmente.

Ejemplo:

Sirve para montar particiones y discos duros temporales en el sistema (hace lo mismo que /media).

/opt es una ubicación para instalar aplicaciones de terceros (paquetes de software de aplicación).

/sbin binarios del sistema.

/srv  contiene Información del sistema sobre los servicios que ofrece (son los datos de los servicios prestados por el sistema).

/tmp aquí se guardan los ficheros temporales (es un directorio temporal).

Por consiguiente cuando se reinicia el ordenador todo lo que hay en /tmp se borran los datos que hay dentro.

/usr utilidades y aplicaciones de usuario (utilidades y aplicaciones de multi-usuario).

Es el padre de otros directorios que también son importantes como por ejemplo:

/usr/bin

/usr/sbin

/usr/include

/usr/lib

/usr/local

/usr/share

/usr/src

/var  contiene información de los cambios del sistema una vez que el sistema ha sido instalado (son archivos variables y contiene datos que cambian cuando el sistema se ejecuta normalmente).

/root es el directorio «home» pero del usuario root (administrador).

/proc archivos con información de procesos. (sistema virtual de ficheros del kernel que documentan el estado de procesos, como archivos de texto).

Gracias por mirar el blog, si te ha ayudado coméntalo.

Publicado en Criptografía

Firmar gpg -b (la firma aparece en un fichero aparte)

El documento y la clave van separados y firmados (Esto es útil para cuando se quiere firmar un archivo binario, como ficheros comprimidos, ejecutables…)

Esto es útil para cuando se quiere firmar un archivo binario, como ficheros comprimidos, ejecutables…

Creamos un archivo, yo en este caso he puesto «hola3».

A continuación se pone gpg -b -a (nombre del archivo).

gpg -b -a hola3

Se ha creado un archivo «hola3.asc»

Para verificar la firma hay que poner gpg –verify (nombre del archivo.asc)

verificar firma

 

 

 

 

Publicado en Criptografía

firma digital gpg -s (el fichero se comprime (binario) y es ilegible).

 Con la clave privada del usuario. El fichero se comprime (binario) y es ilegible.(cifra el documento y la clave juntos)

Primero creamos un archivo, yo en este caso lo he creado con el nombre «hola2»

Despues ponemos gpg -s (nombre del archivo creado) ( te lo crea en binario)

Si por un casual no queremos que salga en binario hay que poner gpg -s -a (nombre del archivo creado) (al poner -a no te lo crea en binario)

El fichero como se puede comprobar es ilegible

ilegible

Por último para verificar la firma se pone gpg –verify (nombre del archivo.gpg)

verificar firma gpg -s

Publicado en Criptografía

Firma digital con gpg –clearsign (el documento no es cifrado)

El documento no es cifrado y cualquiera lo puede leer y solo sería necesario usar  gpg (con su correspondiente comando) para verificar la firma.

Voy a enseñar como poner una firma con gpg –clearsign (el documento no sale cifrado y cualquiera lo puede ver).

Para empezar por ejemplo vamos a la capeta personal y creamos un archivo, por ejemplo «hola»

A continuación para que el archivo  se firme pero  no se cifre se pone gpg –clearsign (nombre del archivo). (yo en este caso he puesto hola)

(para completarlo te pedira que crees una contraseña)

gpg --clearsign hola

Para verificarlo podemos entrar en el archivo creado con la extension asc (en mi caso hola.asc) y ponerle algo para posteriormente verificarlo.

gpg --clearsign hola modificado

Lo he modificado añadiendole «hola» y para verificar la firma se pone  gpg –verify (nombre puesto anteriormente.asc) (tambien pueden terminar con extensión sgn)

gpg --verify hola asc

 

Publicado en Criptografía

Firma digital con gpg

Voy a enseñar como se hace la firma digital con gpg.

Hay 3 clases de firmas digitales con gpg:

Poniendo gpg –clearsign el documento no es cifrado y cualquiera lo puede leer y solo sería necesario usar gpg para verificar la firma.

Usando gpg -s con la clave privada del usuario. El fichero se comprime (binario) y es ilegible.

Utilizando gpg -b para que la firma aparezca en un fichero aparte. Esto es útil para cuando se quiere firmar un archivo binario, como ficheros comprimidos, ejecutables…

Gracias por mirar el blog, si te ha gustado coméntalo.

Publicado en Criptografía

Cifrado asimétrico Intercambiando Claves públicas con gpg

Esta vez voy a enseñar como intercambiar las claves publicas y claves privadas con gpg

Antes de empezar vamos a donde queremos dejar el archivo (en el caso de que no nos movamos por defecto en Ubuntu te deja en la carpeta personal).

Yo aconsejo que para hacer este ejemplo nos vayamos a la carpeta /tmp (ya que en esta carpeta cualquier usuario puede entrar (son archivos temporales) y cuando se reinicia el ordenador se borra lo que haya dentro de esa carpeta).

Primero hay que poner el comando gpg –gen-key para crear el archivo con la contraseña.

Lo haré con esta clave pública. (11A1A720)

Ejemplo:

1 poniendo gpg -k

Para saber las claves privadas gpg –list-secret-keys y para saber las claves publicas gpg -k)

Antes de enviar la clave pública a otro usuario debemos exportarla.

Para eso se usa el comando gpg -a –export -o (ruta donde queremos poner nuestro documento y con la terminación del documento con la llave pública).

Tiene que salir algo como esto si ha salido bien al abrir el archivo creado en tmp.

3 resultado de llave publica (caracteres)

Ejemplo:

2 ruta a exportar

Nota importante: si se está en tmp no hace falta poner el directorio, solo se pone el nombre del archivo ejemplo: gpg -a –export -o ejemplo55

Le estamos diciendo que:

-a para que no salga en binario

–export para que lo exporte (para que lo deje en otro sitio).

-o para guardarlo directamente en un fichero (si no se usara «-o» saldría en pantalla).

/tmp es el sitio donde yo quiero dejar el archivo (he elegido la carpeta temporal para que al crear un usuario desde el mismo ordenador pueda coger la llave pública).

ejemplo55 (es el nombre que quiero yo que se llame el archivo con la llave pública).

11A1A720 llave pública.

Al poner el comando de arriba se ha creado en /tmp el archivo ejemplo55

Ahora entramos con un segundo usuario. (otra cuenta).

Ponemos gpg –import /tmp/ejemplo55 (el archivo ejemplo55 tiene que tener un candado y sale esta imagen como que está bien).

4 pasando clave publica al segundo usuario

–import de donde lo cogemos

/tmp archivo temporal

ejemplo55 es la llave publica

Ahora con el usuario 2 (empecé explicando con el 1) voy a crear un mensaje para que se lo envíe al usuario 1.

1º Se crea un fichero de texto y se pone algo dentro (yo he puesto dentro «código secreto«).

2º Se pone el comando gpg –encrypt (nombre del archivo) (recomiendo ir a tmp para que sea más cómodo). (se pone el comando y te pedirá un código donde pone «acabe con una línea vacía», ese código es la llave pública (hay que poner una vez el código y luego no hace falta poner nada, se le da a intro).

Ejemplo del comando:

5 encriptando con --encrypt (nombre del archivo) y llave publica despues

Con el 1º usuario si todo ha salido bien en la consola se pone:

gpg -d y dirección del archivo que antes hemos encriptado con la llave pública y nos tiene que pedir contraseña

6 abriendo fichero con gpg -d direccion del archivo

Y tiene que salir algo parecido a esto:

7 codigo resuelto despues de meter contraseña

Importante: si alguien se equivoca con las llaves y tiene muchas, para borrarlas basta con poner:

(Primero hay que borrar la clave privada y después la pública en ese orden)

gpg –delete-secret-key seguido de: nombre apellidos, correo electrónico o comentario (elegir uno de los 3).

y después poner gpg –delete-key seguido de: Nombre Apellidos, correo electrónico o comentario. (elegir uno de los 3).

(para borrar las claves primero hay que borrar la clave privada (gpg –delete-secret-key) y luego la pública (gpg –delete-key)

Publicado en Criptografía

Cifrado asimétrico

Para el cifrado simétrico hacen falta 2 claves:

Clave pública y clave privada.

La clave pública es la que cualquiera la puede ver.

La clave privada es la que no hay que compartir con nadie.

Para saber como ver la clave pública hay que poner gpg -k

Gracias por mirarlo, si te ha gustado coméntalo.