despre compartiment
Aici puteti gasi articole in romana despre instalarea, configurarea si administrarea unor servicii precum si a intregului sistem.
login
articole
24.08.03 02:13Instalarea si securizarea DNS - bind 9.
Ultima modificare: 16.06.05 07:39
Conform statisticii unor security teams, 63% din toate dns serverele internetului sunt setate prost din punct de vedere al securitatii.

Prost - in sensul ca se poate primi fisierul zonei (e permis transferul pentru toti) - aceasta
informatie fiind foarte importanta pentru securitatea zonei, pe baza caruia se poate construi
schema retelei interne a sistemului cercetat, fiindca avem acces la toata informatia despre
infrastructura retelei cercetate (hosturi, ipuri, mail servere, pseudonimele hosturilor).

Mai jos vreau sa prezint instalarea si securizarea cat de cat a unui DNS server.


Downloadam ultima versiune a serverului bind, la moment 9.2.2, de pe acest site.
Instalarea:
tar -xzvf bind-9.2.2.tar.gz
cd bind-9.2.2
CC="gcc"
CFLAGS="-O3 -march=i686 -funroll-loops -fomit-frame-pointer"
./configure
--prefix=/usr
--exec-prefix=/usr
--sysconfdir=/etc
--localstatedir=/var
--mandir=/usr/share/man
--with-openssl=/usr/include/openssl
--with-libtool
--disable-ipv6
--enable-threads

Dupa ce am compilat si instalat bind-ul , urmeaza configurarea sa .
Mai jos voi prezenta configurarea unui dns server recursiv pentru reteaua 192.168.1.0/24 si primary master pentru domeniul example.com, care va rula intr-un mediu chroot sub user-ul named.
Cream directoriile necesare rularii serviciului in mediu chroot:
mkdir /chroot /chroot/dns /chroot/dns/etc /chroot/dns/var
Adaugam userul named si grupul named, fara shell (pentru a nu rula serviciul ca root)
groupadd named
useradd -d /chroot/dns -s /sbin/nologin -g named named
chown -R named:named /chroot/dns

Cream fisierul /chroot/dns/etc/named.conf
touch /chroot/dns/etc/named.conf
si il deschidem cu redactorul preferat.
# cream ACL-urile (access control list)
# lista retelelor private , cu exceptia retelei noastre

acl spoof { 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; !192.168.1.0/24;};

# reteaua noastra
acl lan { 192.168.1.0/24;};

# principalele optiuni
options {
# directorul implicit
directory "/etc";
# pid-ul procesului named
pid-file "named.pid";
#ascundem versiunea reala a serverului de la "hax0rii" care vor aparea numaidecat:
version "ns-server.1b";
#Numarul maxim al cererilor recursive simultane. Implicit are valoarea 1000.
#Daca aveti putin RAM pe server, micsorati aceasta valoare functie de
#cat RAM avetim sttind ca fiecare cerere consuma aproximativ 20 kb de memorie.
recursive-clients 100;
# forwardam toate cererile fara raspuns catre dns-ul ISP-ului
forwarders {
195.138.124.37;
195.138.124.18;
};

# permitem cererile recursive numai de la reteaua noastra
# o cerere recursiva este acea , raspunsul la care nu se gaseste in zona deservita de server,
# sau in cash-ul acestuia, serverul fiind nevoit sa faca recursia pe intreaga ierarhie DNS.
allow-recursion {
192.168.1.0/24;
};

# permitem ca cererile sa se efectuieze doar din reteaua locala
# mai tarziu vom permite tuturor celorlalti sa acceseze date din zona
# example.com
allow-query { 192.168.1/24; };
# interzicem orice cerere avand ca sursa retele private
# protejandu-ne de atacuri tip spoof
blackhole { spoof; };
};

# zona root
# fisierul il puteti gasi aici
zone "." IN {
type hint;
file "db.cache";
};

#zona example.com - exemplu

zone "example.com" IN {
type master;
file "example.com";
allow-update { localhost; key key1; };

# specificam name serverul slave, si ii permitem numai lui

# sa transfere intreaga informatie despre zona

allow-transfer { 192.168.1.2; };

# permitem tuturor sa acceseze zona respectiva

allow-query { any; };
};


Urmeaza sa cream cheia key1 specificata anterior:
cd /etc
dnssec-keygen -a hmac-md5 -b 128 -n HOST key1.
cat *.private | grep Key
Key: CfI7hwAgH76qs+dXkPPaqg==

Adaugam la named.conf urmatoarele randuri:

key "key1" {
algorithm hmac-md5;
secret "CfI7hwAgH76qs+dXkPPaqg==";
};

controls {
inet 127.0.0.1 allow { localhost; } keys { "key1"; };
};

server 127.0.0.1 {
keys { "key1"; };
};

si cream fisierul /etc/rndc.conf (nu /chroot/dns/etc/rndc.conf ! ) cu urmatorul continut:

key "key1" {
algorithm hmac-md5;
secret "CfI7hwAgH76qs+dXkPPaqg==";
};

options {
default-key "key1";
default-server localhost;
default-port 953;
};


Verificam configuratia fisierului named.conf cu ajutorul utilitarului named-checkconf

named-checkconf /chroot/dns/etc/named.conf

Daca totul e ok, putem starta serviciul named, prin comanda:

named -u named -t /chroot/dns -g

Parametrul -u specifica userul sub care ruleaza dns serverul, daca nu o facem sub alt user ca root, degeaba mai facem chroot, fiindca userul root poate scapa de aceasta restrictie, iar parametrul -t specifica calea pe care named o va considera ca / (root) pentru el iar cu ajutorul parametrului -g (rulam serverul cu acest parametru doar prima data) putem observa eventualele erori.
A ramas doar sa adaugati aceasta comanda la scripturile de initiere a sistemului.
Autor: GRisha
Comentarii: 5

26.11.03 03:35GRisha
Am uitat sa adaug ca named in chroot nu permite reancarcarea modificarilor aduse unei zone, cu ajutorul rndc reload.
Daca a trecut cineva peste asta, contact me, ma voi stradui in cel mai scurt timp sa gasesc o solutie mai delicata & la o revizuire o bag aici.

25.10.05 09:43TMT
Foarte bun articol! :)

Multumesc GRisha! Continua tot asa :)

10.11.05 19:54sergix
bun articol dar totusi eu sunt un incepator si incerc sa pricep cat mai multe.dupa ce evoluez am sa revin supra articolului ca este foarte intresant

17.04.06 05:38Ohne
Daca imi ziceti si mie va rog cum ajung sa trec peste aceasta comanda ca sunt cam incepator si nu prea le am cu asa ceva dar sincer am incercat si eu putin sa vad ce iese .....
sincer nu pot sa trec de aceaste comenzi
# cream ACL-urile (access control list)
# lista retelelor private , cu exceptia retelei noastre
acl spoof { 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; !192.168.1.0/24;};
# reteaua noastra
acl lan { 192.168.1.0/24;};



care imi da mesajul asta cand actionez comanda
-bash-2.05b# acl spoof { 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; !192.168.1.0 /24;};
acl spoof { 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; ls.168.1.0/24;};
-bash: syntax error near unexpected token `}'
-bash-2.05b# acl spoof { 10.0.0.8; 172.16.0.12; 192.168.0.16; ls.168.1.24;};
-bash: syntax error near unexpected token `}'
-bash-2.05b# acl spoof { 10.0.0.8; 172.16.0.12; 192.168.0.16; ls.168.1.24
dece nu ma lasa sa trec peste proces nu stiu....sau poate ca nu stiu ca configurez aceasta linie..

Sper sa ma ajutati si pe mine....in aceasta problema..... va multumesc

08.08.08 14:43VictorBumbu
este un articol bun, eu pe el am incercat sa fac bind sub Fedora si RedHat...

Adauga Comentariu:
Nume:
E-mail:
Cometariu:
 
counter
Informatia de pe site este prezentata "AS IS" si nimeni NU garanteaza veridicitatea sa
Hosting si intretinerea site-ului - REMSYS © 2003-2007