Domeka
07.02.2012., 15:42:13 *
Welcome, Guest. Please login or register.

Login with username, password and session length
 
   Home   Help Search GoogleTagged Contact Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: BIND: promjene u Lennyju  (Read 420 times)
0 Members and 1 Guest are viewing this topic.
The MasteR
Administrator
Full Member
*****

Karma: +20/-0
Offline Offline

Gender: Male
Posts: 168



View Profile WWW
« on: 10.08.2009., 16:36:06 »

Nakon svake nadogradnje poslužitelja neminovno je da poneki od servisa treba ponovno podesiti, odnosno iskonfigurirati. Razlog ovome je nepostojanje automatizirane procedure koja će postavke, primjerice, freeradiusa 1.x prebaciti u postavke za freeradius 2.x. O nekoliko čimbenika ovisi što je bolje, ostaviti staru konfiguraciju ili uzeti novu pa prebaciti relevantne dijelove iz stare. No, o tome sada nećemo pisati, nego ćemo se ograničiti na promjene u konfiguraciji BIND-a u Lenny distribuciji, koje su neke sistem-inženjere zatekle nespremne jer su odgovorili da žele zadržati staru konfiguraciju, a ponašanje DNS servisa se promijenilo.

Problem se manifestira tako da DNS poslužitelj iznenada počinje odbijati upite s nekih vaših mrežnih segmenata, ili IP adresa koje rabite. U logovima se mogu pronaći unosi poput ovog:

Code:
Jul 28 13:02:03 stroj named[27283]: client 193.198.XXX.3#7308: query (cache) 'server.domena.hr/A/IN'
  denied
Jul 28 13:02:03 stroj named[27283]: client 161.53.XXX.YYY#32925: query (cache) 'domena.hr/A/IN'
  denied
Jul 28 13:02:07 stroj named[27283]: client 87.253.32.130#36614: query (cache) 'stroj.domena.hr/AAAA/IN'
  denied
Jul 28 13:02:07 stroj named[27283]: client 91.124.47.34#23295: query (cache) 'domena.hr/MX/IN' denied

Vidimo da se nekim klijentima odbija upit za autorativnim podacima (to su podaci o vašim zonama i svim zonama za koje ste sekundar), a isto se događa i kad upite šalje profesorov laptop koji se fizički nalazi na drugoj lokaciji u drugom mrežnom segmentu.

Što se promijenilo, pa kod nadogradnje nismo mijenjali konfiguraciju? Odgovor se nalazi u datoteci /usr/share/doc/bind9/NEWS.Debian.gz (ne možemo dovoljno naglasiti koliko je korisno pročitati datoteke u /usr/share/doc direktoriju, barem za najbitnije servise!).

Maintaineri kažu:

Code:
As of bind 9.4, allow-query-cache and allow-recursion default to the builtin acls 'localnets' and
'localhost'. If you are setting up a  name server for a network, you will almost certainly need to
change this.

Komentar se odnosi na dvije-tri najbitnije zabrane u BIND-u: allow-query, allow-query-cache i allow-recursion. Do inačice BIND-a 9.4, sve tri su bile potpuno otvorene, dakle svi su klijenti mogli postavljati upite bilo kojeg tipa. Ovo je dovelo do ozbiljnih sigurnosih problema, pa je vaš DNS poslužitelj mogao biti upotrijebljen u DoS napadu, ili se preko njega moglo saznati koje stranice posjećuju vaši korisnici (uvjetno rečeno).

Iako to nigdje nije napisano u konfiguraciji, default u BIND-u iz Lennyja je:

Code:
allow-query { any; };
allow-recursion { localhost; localnets; };
allow-query-cache { localhost; localnets; };

Dakle, rekurzivni upiti i upiti iz cachea su ograničeni samo na "localhost" i "localnets". Po imenu možemo zaključiti o čemu se radi, i ujedno gdje je problem: BIND ne može znati da imate još nekoliko mrežnih segmenata kojima želite omogućiti neometane upite. On može samo pronaći konfiguraciju na postojećim mrežnim sučeljima i po tome se ravnati.

Što trebamo učiniti: našim korisnicima trebamo omogućiti sve upite, a ograničiti upite za sve ostale. Kako danas situacija nije jednostavna (mrežno gledajući), najlakše je promjene napraviti preko pristupnih lista (ACL-ova). Obično je dovoljno u named.conf.local (ili named.conf.options) dodati:

Code:
acl "trusted" {     
  161.53.XXX.YYY/24;     
  193.198.XXX.0/26;     
  localhost;     
  localnets;
};

Code:
options {
  ...     
  allow-query { any; };
  allow-recursion { trusted; };
  allow-query-cache { trusted; };
   ...
};

Ovime smo kreirali ACL "trusted", gdje ćemo upisati sve mreže kojima vjerujemo, a to su naravno svi segmenti mreža nad kojima imamo nadzor, ili eventualno segmenti kakvog domaćeg ISP-a, ukoliko vaši korisnici to zahtijevaju i rabe vaš DNS umjesto DNS od tog providera.

Definicija pristupne liste mora biti izvan "options {}" bloka, dok allow-* direktive mogu biti navedene u globalnom kontekstu, ili za svaku zonu pojedinačno. Obično želimo imati samo jednu konfiguraciju, pa allow-* direktive samo dopišite unutar "options {}" bloka.

Nakon toga samo treba restartati DNS poslužitelj. Svi bi DNS upiti vaših korisnika sada trebali biti odgovoreni, a u logovima i dalje pisati da je drugim klijentima zabranjen pristup (nekim vrstama upita). Možda bi za vas bilo dobro da napravite fail2ban pravilo koji će klijente koji naprave previše upita unutar nekog vremena, jednostavno blokirati preko iptables pravila.
« Last Edit: 10.08.2009., 16:36:50 by The MasteR » Logged

Bavim se mreznom implementacijom - sistemac - Linux, CCNA, CCNP
Pages: [1]   Go Up
  Print  
GoogleTagged: named fail2ban denied client query

 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC | Sitemap Valid XHTML 1.0! Valid CSS!
Page created in 0.063 seconds with 23 queries.

Google visited last this page 01.02.2012., 22:16:32