Servidor DNS

  • Configuramos el fichero “/etc/bind/named.conf.options” y añadimos las siguientes líneas:
        listen-on { any; };
        allow-transfer { none; };
        recursion yes;
        allow-recursion { any; };

*Configuramos el DNS local, la DMZ y externa en el fichero de configuración /etc/bind/named.conf.local:

view interna {
	match-clients { 10.0.1.0/24; 127.0.0.1; };
	allow-recursion { any; };

	zone "alexgv.gonzalonazareno.org" {
		type master;
		file "db.alexgv.interna";
	};

        zone "1.0.10.in-addr-arpa" { 
                type master;
                file "db.1.0.10";
        };

        zone "16.172.in-addr.arpa" { 
                type master;
                file "db.16.172";
        };

	include "/etc/bind/zones.rfc1918";
	include "/etc/bind/named.conf.default-zones";
};

view dmz {
        match-clients { 172.16.0.0/16; };

        zone "alexgv.gonzalonazareno.org" {
                type master;
                file "db.alexgv.dmz";
        };

        zone "1.0.10.in-addr-arpa" {
                type master;
                file "db.1.0.10";
        };

        zone "16.172.in-addr.arpa" {
                type master;
                file "db.16.172";
        };

        include "/etc/bind/zones.rfc1918";
        include "/etc/bind/named.conf.default-zones";
};

view externa {
	match-clients { 172.22.0.0/16; 192.168.202.2/32; };
	
	zone "alexgv.gonzalonazareno.org" {
		type master;
		file "db.alexgv.externa";
	};

        include "/etc/bind/zones.rfc1918";
        include "/etc/bind/named.conf.default-zones";
};
  • Y en el fichero “/etc/bind/named.conf” debemos comentar esta línea:
//include "/etc/bind/named.conf.default-zones";

Crearemos los archivos db, lo hacemos en la carpeta “/var/cache/bind/"

db.alexgv.interna

$TTL    86400
@       IN      SOA     apolo.alexgv.gonzalonazareno.org. admin.alexgv.gonzalonazareno.org. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      apolo.alexgv.gonzalonazareno.org.

$ORIGIN alexgv.gonzalonazareno.org.

zeus	IN      A       10.0.1.1
ares	IN      A       10.0.1.101
apolo	IN      A       10.0.1.102
hera	IN      A       172.16.0.200
www     IN      CNAME   hera
bd      IN      CNAME   ares

db.alexgv.dmz

$TTL	86400
@       IN      SOA     apolo.alexgv.gonzalonazareno.org. admin.alexgv.gonzalonazareno.org. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      apolo.alexgv.gonzalonazareno.org.

$ORIGIN alexgv.gonzalonazareno.org.

zeus    IN      A       172.16.0.1
ares    IN      A       10.0.1.101
apolo   IN      A       10.0.1.102
hera    IN      A       172.16.0.200
www     IN      CNAME   hera   
bd      IN      CNAME   ares

db.alexgv.externa

$TTL    86400
@       IN      SOA     zeus.alexgv.gonzalonazareno.org. admin.alexgv.gonzalonazareno.org. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      zeus.alexgv.gonzalonazareno.org.
@	IN	MX 10	zeus.alexgv.gonzalonazareno.org.

$ORIGIN alexgv.gonzalonazareno.org.

zeus	IN	A	172.22.0.169
www     IN      CNAME   zeus   
bd      IN      CNAME   zeus

Ahora crearemos los archivos de las resoluciones inversas en la misma ruta

db.1.0.10

$TTL    86400
@       IN      SOA     apolo.alexgv.gonzalonazareno.org. admin.alexgv.gonzalonazareno.org. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      apolo.alexgv.gonzalonazareno.org.

$ORIGIN 1.0.10.in-addr.arpa.

1	IN	PTR	zeus.alexgv.gonzalonazareno.org.
101	IN	PTR	ares.alexgv.gonzalonazareno.org.
102	IN	PTR	apolo.alexgv.gonzalonazareno.org.

db.16.172

$TTL    86400
@       IN      SOA     apolo.alexgv.gonzalonazareno.org. admin.alexgv.gonzalonazareno.org. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      apolo.alexgv.gonzalonazareno.org.

$ORIGIN 16.172.in-addr.arpa.

200.0	IN	PTR	hera.alexgv.gonzalonazareno.org.
1.0	IN	PTR	zeus.alexgv.gonzalonazareno.org.
  • Si quisieramos asegurarnos de que no tenemos ningún error de sintáxis podemos usar esto:
root@freston:/var/cache/bind# named-checkconf
  • IPV6 da conflictos, así que podemos deshabilitarlo en el fichero “/etc/default/bind9”
# run resolvconf?
RESOLVCONF=yes

# startup options for the server
OPTIONS="-4 -u bind"
  • Reiniciamos el servicio de DNS
debian@apolo:~$ sudo systemctl restart bind9

debian@apolo:~$ sudo systemctl status bind9
* named.service - BIND Domain Name Server
     Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-02-02 09:55:21 CET; 1min 23s ago
       Docs: man:named(8)
   Main PID: 1775 (named)
      Tasks: 5 (limit: 529)
     Memory: 18.7M
        CPU: 98ms
     CGroup: /system.slice/named.service
             `-1775 /usr/sbin/named -f -u bind

Feb 02 09:55:21 apolo named[1775]: zone 168.192.in-addr.arpa/IN/externa: loaded serial 1
Feb 02 09:55:21 apolo named[1775]: zone alexgv.gonzalonazareno.org/IN/externa: loaded serial 1
Feb 02 09:55:21 apolo named[1775]: all zones loaded
Feb 02 09:55:21 apolo named[1775]: running
Feb 02 09:55:21 apolo named[1775]: managed-keys-zone/externa: Key 20326 for zone . is now trusted (accep>
Feb 02 09:55:21 apolo named[1775]: resolver priming query complete
Feb 02 09:55:21 apolo named[1775]: managed-keys-zone/dmz: Key 20326 for zone . is now trusted (acceptanc>
Feb 02 09:55:22 apolo named[1775]: resolver priming query complete
Feb 02 09:55:22 apolo named[1775]: managed-keys-zone/interna: Key 20326 for zone . is now trusted (accep>
Feb 02 09:55:22 apolo named[1775]: resolver priming query complete
  • Vamos a hacer las comprobaciones necesarias en cada máquina:
  1. El servidor DNS con autoridad sobre la zona del dominio tu_nombre.gonzalonazareno.org.

Interna

debian@zeus:~$ dig alexgv.gonzalonazareno.org

; <<>> DiG 9.16.22-Debian <<>> alexgv.gonzalonazareno.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26327
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 673e0e7f90f0376a0100000061fa47a7b129b2cb088a4078 (good)
;; QUESTION SECTION:
;alexgv.gonzalonazareno.org.	IN	A

;; AUTHORITY SECTION:
alexgv.gonzalonazareno.org. 86400 IN	SOA	apolo.alexgv.gonzalonazareno.org. admin.alexgv.gonzalonazareno.org. 1 604800 86400 2419200 86400

;; Query time: 0 msec
;; SERVER: 10.0.1.102#53(10.0.1.102)
;; WHEN: Wed Feb 02 09:58:15 CET 2022
;; MSG SIZE  rcvd: 130

Externa

alejandrogv@AlejandroGV:~$ dig @172.22.0.169 alexgv.gonzalonazareno.org

; <<>> DiG 9.16.27-Debian <<>> @172.22.0.169 alexgv.gonzalonazareno.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30846
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 2a3b27dcd4272d99010000006272345416d34b06d6eea5e3 (good)
;; QUESTION SECTION:
;alexgv.gonzalonazareno.org.	IN	A

;; AUTHORITY SECTION:
alexgv.gonzalonazareno.org. 86400 IN	SOA	zeus.alexgv.gonzalonazareno.org. admin.alexgv.gonzalonazareno.org. 1 604800 86400 2419200 86400

;; Query time: 0 msec
;; SERVER: 172.22.0.169#53(172.22.0.169)
;; WHEN: Wed May 04 10:07:48 CEST 2022
;; MSG SIZE  rcvd: 130
  1. La dirección IP de zeus.

Interna

[usuario@hera ~]$ dig +short zeus.alexgv.gonzalonazareno.org
172.16.0.1

usuario@apolo:~$ dig +short zeus.alexgv.gonzalonazareno.org
10.0.1.1

Externa

alejandrogv@AlejandroGV:~$ dig +short zeus.alexgv.gonzalonazareno.org
172.22.0.169
  1. Una resolución de www.

Interna

usuario@ares:~$ dig +short www.alexgv.gonzalonazareno.org
hera.alexgv.gonzalonazareno.org.
172.16.0.200

Externa

alejandrogv@AlejandroGV:~$ dig +short www.alexgv.gonzalonazareno.org
hera.alexgv.gonzalonazareno.org.
  1. Una resolución de bd.

Interna

debian@apolo:~$ dig +short bd.alexgv.gonzalonazareno.org
ares.alexgv.gonzalonazareno.org.
10.0.1.101

Externa

alejandrogv@AlejandroGV:~$ dig +short bd.alexgv.gonzalonazareno.org
ares.alexgv.gonzalonazareno.org.
  1. Un resolución inversa de IP fija en cada una de las redes.
debian@zeus:~$ dig +short -x 10.0.1.101
ares.1.0.10.in-addr.arpa.

debian@zeus:~$ dig +short -x 172.16.0.200
hera.16.172.in-addr.arpa

Servidor web

  • Para que podamos acceder debemos habilitar en el firewall los puertos 443, 80 y 53
[usuario@hera ~]$ sudo firewall-cmd --permanent --add-port=443/tcp
success
[usuario@hera ~]$ sudo firewall-cmd --permanent --add-port=80/tcp
success
[usuario@hera ~]$ sudo firewall-cmd --permanent --add-port=53/udp
success
[usuario@hera ~]$ sudo firewall-cmd --reload
success
  • En Rocky los directorios sites-avaiable y sites-enabled no se crean por defecto, los crearemos nosotros:
[usuario@hera ~]$ sudo mkdir /etc/httpd/sites-enabled /etc/httpd/sites-available
  • Ahora entraremos al fichero de configuración “/etc/httpd/conf/httpd.conf” para añadir sites-avaiable como nueva ruta añadiendo una nueva linea.
IncludeOptional	sites-enabled/*.conf

Directamente pasaremos a la configuración de un virtualhost

[usuario@hera ~]$ cat /etc/httpd/sites-available/pagina.conf
<VirtualHost *:80>
    ServerName www.alexgv.gonzalonazareno.org
    DocumentRoot /var/www/alexgv

    <Proxy \"unix:/run/php-fpm/www.sock|fcgi://php-fpm\">
        ProxySet disablereuse=off
    </Proxy>

    <FilesMatch \.php$>
        SetHandler proxy:fcgi://php-fpm
    </FilesMatch>

    ErrorLog /var/www/alexgv/log/error.log
    CustomLog /var/www/alexgv/log/requests.log combined
</VirtualHost>
  • Creamos el vínculo en sites-enabled y las carpetas necesarias en “/var/www/”
[hera@hera sites-available]$ sudo ln -s pagina.conf ../sites-enabled/
[hera@hera sites-available]$ sudo mkdir -p /var/www/alexgv/log
  • Selinux nos dará problemas con los nuevos directorios, por ello debemos ejecutar los siguientes comandos y reiniciar el servicio httpd
[usuario@hera ~]$ sudo semanage fcontext -a -t httpd_log_t "/var/www/alexgv/log(/.*)?"
[usuario@hera ~]$ sudo restorecon -R -v /var/www/alexgv/log
Relabeled /var/www/alexgv/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0
[usuario@hera ~]$ sudo setsebool -P httpd_unified 1
[usuario@hera ~]$ sudo systemctl restart httpd
  • Comprobemos que funciona

info

Servidor Base de datos.

Usaremos el gestor mariadb

usuario@ares:~$ sudo apt install mariadb-server

Y una vez instalado debemos configurarlo para permitir el uso de usuarios remoto accediendo al fichero /etc/mysql/mariadb.conf.d/50-server.cnf y modificando la línea bind-address tal como aparece a continuación

    bind-address            = 0.0.0.0

Ahora vamos a entrar y crear un usuario que usaremos remotamente.

    usuario@ares:~$ sudo mysql -u root -p

    MariaDB [(none)]> CREATE USER 'ale'@'172.16.0.200' IDENTIFIED BY 'ale';
    Query OK, 0 rows affected (0.009 sec)

Crearemos una base de datos y daremos a nuestro usuario remoto privilegios sobre ella

    MariaDB [(none)]> CREATE DATABASE prueba;
    Query OK, 1 row affected (0.010 sec)

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON prueba.* TO 'ale'@'172.16.0.200'
        -> ;
    Query OK, 0 rows affected (0.001 sec)

Ahora vayamos a centos, y lo primero que haremos será instalar el cliente de mariadb

    [usuario@hera ~]$ sudo dnf install mariadb

Y procedemos a acceder al servidor mariadb con las credenciales que usamos anteriormente

[usuario@hera ~]$ mysql -u ale -p -h bd.alexgv.gonzalonazareno.org
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 43
Server version: 10.3.34-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Vamos a comprobar que funciona simplemente listando las bases de datos que tenemos

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| prueba             |
+--------------------+
2 rows in set (0.006 sec)