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 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, gnu/linux

Generar un certificado de revocación con cifrado asimétrico

¿Qué es un certificado de revocación con gpg?

Un certificado de revocación significa que ya no es válido porque por ejemplo el que creo la clave privada la olvido, la ha perdido…

Al no ser valido hay que lo único que se pierde es la llave pública, por consiguiente, cualquiera que la tenga, sabrá la clave pública, pero no la privada, tampoco podrá generar falsas firmas, descifrar mensajes…

Partiendo del código gpg -k para saber la llave pública (11A1A720)

1 poniendo gpg -k

Hay que poner el comando gpg -a –output certificado.asc –gen-revoke 11A1A720

2 certificado revocado

Al decir, sí, nos dan unas cuantas razones.

3 causas del certificado

Elegimos la que queramos y nos saldrá si queremos poner un comentario.

4 comentario

Antes de terminar nos pedirá una contraseña (es la que habíamos elegido al crear la clave privada)

5 contraseña

Acordarse de:

1 poniendo gpg -k

Al terminar te dirá que se ha creado el certificado de revocación y hay que guardarlo en lugar seguro (el certificado de revocación es lo mismo que el ejemplo anterior de intercambiando claves públicas, pero con la excepción que es más seguro)

6 poniendo la clave privada

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.

Publicado en debian, gnu/linux, redes

Elegir Rango de direcciones en Debian servidor para Debian cliente

Voy a explicar como poner un rango de direcciones en Debian servidor para Debian cliente:

Entrar en Debian servidor en /etc/dhcp/ y después entrar en dhcpd.conf.

Dirección completa: /etc/dhcp/dhcpd.conf

Voy a poner un ejemplo de direcciones privadas por si alguien quiere practicar.

rango de ejemplo

En la consola poner:

Poner systemctl restart networking para cambiar los cambios al cambiar la ip.

systemctl stop isc-dhcp-server para detener el dhcp.

systemctl start isc-dhcp-server para iniciar dhcp.

systemctl restart isc-dhcp-server para reiniciarlo.

Nota importante: si hay algún fallo se puede poner:

systemctl status isc-dhcp-server y te dice donde están los fallos.

2º Ahora se entra en Debian cliente (para que funcione tienen que tener Debian servidor y Debian cliente al mismo tiempo ejecutándose).

En Debian cliente poner systemctl restart networking  para reiniciar la ip.

Poner ifconfig para ver si ha salido bien  (para ver si sale la ip).

 Importante:

El Debian cliente tiene que tener  iface eth0 inet dhcp en /etc/network/interfaces

(lo del dhcp tiene que estar puesto para que sea ip dinámica y se cambie sola la ip en el rango que se le diga).

Para verificar que todo ha salido bien se pone ifconfig por consola.

Y si a alguien no le sale el comando dhcpd -t te dice donde están los fallos.

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

Publicado en debian, gnu/linux, internet, redes

Debian cliente con dhcp (ip dinámica)

Para que el Debian servidor se comunique con el Debian cliente (véase ejemplo anterior de Debian servidor con ip fija ya que esto es una continuación del anterior) hay que hacer una serie de pasos:

Para que el Debian cliente se comunique con el servidor hay que poner en el cliente el DHCP para que coja las ips del servidor (depende lo que quieras hacer se pone dhcp, o no, pero yo en este caso pondré como se pone en el Debian cliente el dhcp y ya avanzaré poco a poco lo básico).

Hay que entrar en el editor de textos y entrar en /etc/network/interfaces y saldrá esta línea iface eth0 inet static, ahora lo único que hay que cambiar es:

iface eth0 inet static por iface eth0 inet dhcp y ya estaría configurado para que el cliente este en dhcp y coja las ips que más adelante cambiaré en el servidor y el cliente las utilizara.

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