Servidor: DNS
- Primero habilitamos el internet en el servidor
- Copiamos el archivo para crear un respaldo
cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bak.16.05.2022
- el archivo contiene
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
empty-zones-enable no;
query-source address * port 53;
// allow-notify {181.193.87.3; };
//forwarders {
//0.0.0.0;
//8.8.8.8;
//8.8.4.4;
//};
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
// listen-on-v6 { any; };
allow-query {any; };
listen-on {127.0.0.1; 181.193.87.2; };
// allow-transfer {none };
allow-recursion {none; };
recursion no;
};
- Modificamos
*******************************************
//forwarders {
//0.0.0.0;
//8.8.8.8;
//8.8.4.4;
//};
X
forwarders {
//0.0.0.0;
8.8.8.8;
8.8.4.4;
};
*******************************************
allow-recursion {none; };
recursion no;
X
allow-recursion {any; };
recursion yes;
*******************************************
- recargamos el servicio
/etc/init.d/bind9 restart
- habilitamos los PING, para esto abrimos el archivo
nano /etc/sysctl.conf
- Y comentamos la linea
net.ipv4.icmp_echo_ignore_all = 1
X
#net.ipv4.icmp_echo_ignore_all = 1
- recargamos
sysctl --system
sysctl -p
- habilitarlo en iptables listamos la reglas
iptables -L
- Y podemos ver que tenemos bloqueos
Chain ufw-before-input (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ufw-logging-deny all -- anywhere anywhere state INVALID
DROP all -- anywhere anywhere state INVALID
DROP icmp -- anywhere anywhere icmp destination-unreachable
DROP icmp -- anywhere anywhere icmp source-quench
DROP icmp -- anywhere anywhere icmp time-exceeded
DROP icmp -- anywhere anywhere icmp parameter-problem
DROP icmp -- anywhere anywhere icmp echo-request
ACCEPT udp -- anywhere anywhere udp spt:bootps dpt:bootpc
- Las modificamos
iptables --policy OUTPUT ACCEPT / DROP
- Actualizamos el servidor
apt-get update
- Creamos una llave
dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST certbot.
- Esto produce una clave pública y una privada en archivos separados, los archivos se nombran con el nombre de la clave, el número de algoritmo y la huella digital de la clave. Los archivos clave son propiedad de root y están en el grupo «bind».
- resultado
Kcertbot.+165+25215
- Comprobamos
ls -la
#Resultado
-rw-r--r-- 1 root bind 116 jun 16 11:48 Kcertbot.+165+25215.key
-rw------- 1 root bind 232 jun 16 11:48 Kcertbot.+165+25215.private
- Coloque la siguiente configuración en el archivo /etc/bind/named.conf.certbot . Este archivo de configuración configura la clave que certbot usará para enviar actualizaciones a BIND. También configura una zona para el subdominio «_acme-challenge», que Let’s Encrypt consultará durante la emisión de un certificado comodín (como parte de su desafío DNS01). Al tener el subdominio en su propia zona, podemos enviarle actualizaciones sin alterar ninguna de las entradas en el dominio principal. Aquí, el texto mydomain.com debe reemplazarse con su propio nombre de dominio raíz. Si va a requerir un certificado para cada uno de los múltiples dominios, replique la cláusula de zona para cada dominio, reemplazando el nombre del dominio en cada uno según sea necesario.
nano /etc/bind/named.conf.certbot
- Agregamos el contenido
key "certbot." {
algorithm hmac-sha512;
secret "private key from the file Kcertbot.+165+?????.private";
};
zone "_acme-challenge.mydomain.com" {
type master;
file "/var/lib/bind/db._acme-challenge.siua.ac.cr";
check-names warn;
update-policy {
grant certbot. name _acme-challenge.siua.ac.cr. txt;
};
};
- El texto citado en la cláusula secreta se reemplaza con la clave privada en el archivo «.private», generado anteriormente, asegurándose de conservar las comillas. Asegúrese de incluir la
check-names warn;
- Sin él, BIND rechazará el guión bajo en el dominio «_acme-challenge», que es un requisito de Let’s Encrypt, y la zona DNS no se iniciará, lo que generará errores cuando se intente actualizarla. Es una buena idea monitorear /var/log/syslog la primera vez que se reinicia BIND, de modo que se pueda verificar la salida de BIND para asegurarse de que todas las zonas, especialmente aquellas que contienen «_acme-challenge», estén cargadas.
- Abrimos el archivo
cat Kcertbot.+165+25215.private
- Copiamos la clave
- Y abrimos el archivo
nano /etc/bind/named.conf.certbot
- Y modificamos
secret "private key from the file Kcertbot.+165+?????.private";
X
secret "jexxrr4D99APdmVjhiv+N6mFySMYd5rXoY3haYpJixOVb6HyB8tZ...lZ16RIX+8SGdg==";
- El archivo debe ser propiedad de root y estar en el grupo de vinculación. Por lo general, debe ser inaccesible para proteger la clave privada, pero el grupo de vinculación debe poder leerlo. Los comandos para hacer esto son:
chown root:bind /etc/bind/named.conf.certbot
chmod 640 /etc/bind/named.conf.certbot
- Ahora necesita crear un archivo de zona, /var/lib/bind/db._acme-challenge.siua.ac.cr, para cada dominio. El contenido de cada archivo de zona debe ser el siguiente. Mantenemos el archivo en /var en lugar de /etc , ya que BIND lo actualizará y algunas distribuciones usan AppArmor para restringir que los programas escriban en /etc .
nano /var/lib/bind/db._acme-challenge.siua.ac.cr
- Agregamos el contenido
$TTL 43200 ; 12 hours
_acme-challenge.siua.ac.cr. IN SOA siua.ac.cr. admin.siua.ac.cr. (
2022051601 ; serial
28800 ; refresh (8 hours)
7200 ; retry (2 hours)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns2.siua.ac.cr.
NS ns.siua.ac.cr.
TXT "127.0.0.1"
- Como antes, el texto mydomain.com debe reemplazarse con su propio nombre de dominio raíz. El texto second.net debe reemplazarse con el nombre de dominio de su servidor DNS secundario. Se supone que su servidor DNS principal es la instancia BIND con la que estamos trabajando actualmente. También se supone que su dirección de correo electrónico del hostmaster es hostmaster#mydomain.com .
- BIND debe poder escribir en cada archivo de zona. Los comandos para configurar los permisos necesarios (repetir para cada archivo) son:
chown root:bind /var/lib/bind/db._acme-challenge.siua.ac.cr
chmod 664 /var/lib/bind/db._acme-challenge.siua.ac.cr
- al archivo de zona de cada dominio (normalmente llamado /etc/bind/db.mydomain.com ). Recuerde reemplazar mydomain.com con su propio nombre de dominio. Si está utilizando vistas, la línea tendrá que ir dentro del archivo de zona para la vista que es visible para los servidores de Let’s Encrypt en Internet. Por ejemplo, si tiene una vista para su LAN y otra vista para Internet, la línea tendrá que ir en el archivo de zona para la vista de Internet.
- Abrimos el archivo
nano /etc/bind/db.siua.ac.cr
- Agregamos la resolución
_acme-challenge IN NS siua.ac.cr.
- Finalmente, debemos incluir nuestro archivo de configuración de nivel superior en el archivo de configuración para BIND. Agregue la línea:
- Abrimos el archivo
- }
nano /etc/bind/named.conf
- Agregamos
include "/etc/bind/named.conf.certbot";
- Reiniciamos el servicios
/etc/init.d/bind9 restart
- Puede omitir esta sección, o si es conservador, puede usar las técnicas de esta sección para verificar que la actualización dinámica de DNS esté funcionando antes de integrarla con certbot .
- Verifique que la configuración para BIND sea correcta emitiendo el comando:
named-checkconf
- ejecutamos
nsupdate -k /etc/bind/Kcertbot.+165+25215
server ns.siua.ac.cr
update add _acme-challenge.siua.ac.cr 86400 TXT 192.168.1.1
send
- Ahora consulta el servidor DNS para ver si se ha actualizado con el registro TXT según lo solicitado:
dig @ns.siua.ac.cr _acme-challenge.siua.ac.cr txt
- Nuevamente, asegúrese de que mydomain.com se reemplace con su propio dominio y se apliquen las mismas advertencias al nombre del servidor de nombres (en el argumento que comienza con ‘@’) como para el comando nsupdate anterior. Debería ver el registro TXT «_acme-challenge.midominio.com 86400 TXT 192.168.1.1»aparecerá en la sección de respuesta de la salida de excavación si la actualización funciona correctamente.
- Ahora elimine el registro del servidor DNS:
nsupdate -k /etc/bind/Kcertbot.+165+25215
server ns.siua.ac.cr
update delete _acme-challenge.siua.ac.cr 86400 TXT 192.168.1.1
> send
- Y use dig como antes para verificar que el registro TXT se haya ido.
Pendiente de confirmar
- Abrimos el dns y agregamos
;---------------------------- ACME para LETSENCRIPT ---------------------------
_acme-challenge.siua.ac.cr 1 IN TXT FFe3N5oKcIUNSKdNR1nGBOHAIQWHjCX471eOAJVvg0A
- Le instalamos apt
aptitude install apt
- Actualizamos el serial y recargamos el servicio
/etc/init.d/bind9 restart
- esperamos unos 15 minutos y luego ejecutamos, para comprobar que el registro se creo correctamente
dig _acme-challenge.siua.ac.cr +short txt
- ejecutamos
dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST letencrypt Kletsencrypt.+165+15583
Servidor: Proxy
- Ejecutamos
apt install certbot python3-certbot-apache python3-certbot-dns-rfc2136 -y
- Si no encuentra el paquete python3-certbot-dns-rfc2136 es por que no teien los backports en sources.list entonces los agregamos
nano /etc/apt/sources.list
- Agregamos
deb http://ftp.debian.org/debian stretch-backports main contrib non-free
- Actualizamos
apt update
- Volvemos a instalar
apt install certbot python3-certbot-apache python3-certbot-dns-rfc2136 -y
- Coloque la siguiente configuración en el archivo /etc/letsencrypt/dns_rfc2136_credentials.txt . El nombre del servidor DNS debe reemplazarse con el nombre de su propio servidor DNS. Si usa vistas en su DNS, tome nota de la advertencia sobre las vistas internas y externas en la sección anterior y asegúrese de usar un nombre de dominio o una dirección IP que haga que certbot acceda a la vista externa de su servidor DNS. El textoclave privada del archivo Kcertbot.+165+?????.privatedebe reemplazarse con el texto exacto de la clave secreta que se colocó en la cláusula clave en el archivo /etc/bind/named.conf.certbot . Esta vez no debes usar comillas.
- Abrimos el archivo
nano /etc/letsencrypt/dns_rfc2136_credentials.txt
- Agregamos este contenido
# Target DNS server
dns_rfc2136_server = ns.siua.ac.cr
# Target DNS port
dns_rfc2136_port = 53
# TSIG key name
dns_rfc2136_name = certbot.
# TSIG key secret
dns_rfc2136_secret = jexxrr4D99APdmVjhiv+N6mFySMYd5rXoY3haYpJixOVb6HyB8tZr.....Qz4QavyylZ16RIX+8SGdg==
# TSIG key algorithm
dns_rfc2136_algorithm = HMAC-SHA512
- El archivo /etc/letsencrypt/dns_rfc2136_credentials.txt debe configurarse para que solo el root pueda leerlo, para proteger la clave secreta que contiene. Usa los comandos:
chown root:root /etc/letsencrypt/dns_rfc2136_credentials.txt
chmod 600 /etc/letsencrypt/dns_rfc2136_credentials.txt
Obtener certificados comodín: Proxy
- ejecutamos
certbot --manual -d "siua.ac.cr" -d "*.siua.ac.cr" --server https://acme-v02.api.letsencrypt.org/directory certonly
/usr/bin/certbot certonly --dns-rfc2136 --dns-rfc2136-credentials /etc/letsencrypt/dns_rfc2136_credentials.txt -d siua.ac.cr -d *.siua.ac.cr
- Resultado
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for siua.ac.cr
http-01 challenge for siua.ac.cr
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.
Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.siua.ac.cr with the following value:
FFe3N5oKcIUNSKdNR1nGBOHAIQWHjCX471eOAJVvg0A
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
NO presiones la tecla Enter todavía
Devuelta termina 1
- ENTER
- RESULTAOD
Create a file containing just this data:
yqUd9I1FhcFJtnjAaY_thXbaQVzCXRV1E-x8qMZLJCI.0L6oZ2FXvZnCkPVaJNNAWIYnnDucD1EiRRJNUsnL4QY
And make it available on your web server at this URL:
http://siua.ac.cr/.well-known/acme-challenge/yqUd9I1FhcFJtnjAaY_thXbaQVzCXRV1E-x8qMZLJCI
(This must be set up in addition to the previous challenges; do not remove,
replace, or undo the previous challenge tasks yet.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
terminal www.siua.ac.cr
- Nos conectamos al servidor que tiene la paǵina de la siua
ssh root@www.siua.ac.cr -p 44
- Creamos el directorio
mkdir -p /var/www/html/Sitios/siua.ac.cr/.well-known/acme-challenge
- Creamos el archivo
nano /var/www/html/Sitios/siua.ac.cr/.well-known/acme-challenge/yqUd9I1FhcFJtnjAaY_thXbaQVzCXRV1E-x8qMZLJCI
- Y agregamos el contenido
yqUd9I1FhcFJtnjAaY_thXbaQVzCXRV1E-x8qMZLJCI.0L6oZ2FXvZnCkPVaJNNAWIYnnDucD1EiRRJNUsnL4QY
- De vuelta en tu primer terminal, haz clic en la tecla ‘Enter’ en tu teclado para continuar. Verificará el archivo que acabas de agregar, luego nuevamente te indicará que crees el registro TXT. Como ya has creado este registro TXT, vuelva a hacer clic en ‘Enter.