Cum să securizezi serverul tău DNS (BIND/named) pe Debian și RHEL Linux
Serverele DNS (Domain Name System) joacă un rol esențial în funcționarea internetului. Totuși, dacă nu sunt securizate, acestea pot deveni o țintă pentru atacuri precum spoofing DNS, amplificare sau otrăvire a cache-ului. Acest ghid descrie pașii esențiali pentru a securiza serverul tău DNS utilizând BIND (Berkeley Internet Name Domain) pe sistemele Debian și RHEL Linux.
1. Actualizează sistemul și pachetele
Menținerea serverului actualizat este prima linie de apărare împotriva vulnerabilităților. Rulează următoarele comenzi pentru a te asigura că sistemul și BIND sunt la zi:
Pe sistemele Debian:
sudo apt update && sudo apt upgrade
Pe sistemele RHEL:
sudo yum update
2. Configurează controlul accesului
Restricționează cine poate face interogări către serverul tău DNS editând fișierul de configurație named.conf
. Definește intervalele de IP-uri de încredere utilizând allow-query
.
Exemplu:
acl "trusted" {
192.168.1.0/24;
10.0.0.0/8;
};
options {
allow-query { trusted; };
};
3. Dezactivează recursivitatea (dacă nu este necesară)
Dacă serverul tău DNS este doar autoritar (nu rezolvă domenii externe), dezactivează recursivitatea pentru a preveni abuzurile.
options {
recursion no;
};
4. Implementează DNSSEC
DNSSEC (Domain Name System Security Extensions) adaugă autentificare criptografică interogărilor DNS, prevenind atacurile de spoofing și otrăvirea cache-ului.
Pași pentru a activa DNSSEC:
- Generează chei pentru zona ta utilizând
dnssec-keygen
. - Semnează fișierul zonei cu
dnssec-signzone
. - Configurează BIND pentru a încărca fișierul semnat al zonei.
Exemplu:
dnssec-enable yes;
dnssec-validation auto;
5. Restricționează transferurile de zonă
Asigură-te că transferurile de zonă sunt limitate la serverele secundare de încredere prin specificarea adreselor IP:
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-transfer { 192.168.1.2; };
};
6. Limitează rata interogărilor DNS
Previne abuzurile prin atacuri de amplificare DNS implementând limitarea ratei interogărilor. Adaugă următoarele în fișierul named.conf
:
rate-limit {
responses-per-second 10;
window 5;
};
7. Rulează BIND în chroot (opțional)
Executarea BIND într-un mediu chroot izolează serverul de restul sistemului, îmbunătățind securitatea.
Pași pentru a rula BIND în chroot:
- Instalează pachetul
bind-chroot
(pe RHEL) sau configurează manual (pe Debian). - Editează
/etc/named.conf
pentru a indica directorul chroot. - Repornește serviciul BIND.
8. Activează logarea și monitorizează traficul DNS
Configurează logarea pentru a detecta modele neobișnuite și a depana problemele. Adaugă următoarele în named.conf
:
logging {
channel default_debug {
file "/var/log/named.log";
severity dynamic;
};
category default { default_debug; };
};
Monitorizează traficul folosind instrumente precum tcpdump
sau dnstop
.
9. Folosește un firewall pentru a proteja serverul DNS
Restricționează accesul la porturile DNS (53) doar pentru IP-urile de încredere folosind iptables
sau firewalld
.
Exemplu cu iptables:
iptables -A INPUT -p udp --dport 53 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j DROP
Exemplu cu firewalld:
firewall-cmd --add-service=dns --zone=trusted --permanent
firewall-cmd --reload
10. Auditează și întărește periodic serverul DNS
Revizuiește periodic configurațiile serverului DNS și logurile. Instrumente precum lynis
te pot ajuta să identifici potențiale vulnerabilități:
sudo lynis audit system
Concluzie
Securizarea serverului DNS este esențială pentru a asigura siguranța și fiabilitatea infrastructurii tale. Urmând pașii de mai sus, poți reduce semnificativ vulnerabilitățile și te poți proteja împotriva atacurilor DNS obișnuite. Actualizează și auditează regulat serverul pentru a menține o securitate solidă.
Linkuri relevante: