A FreeBSD alapértelmezés szerint a BIND (Berkeley
Internet Name Domain) egyik verzióját tartalmazza,
amely a névfeloldási (Domain Name System,
DNS) protokoll egyik elterjedt
implementációja. A DNS
protokollon keresztül tudunk az
IP-címekhez neveket rendelni és
fordítva. Például a www.FreeBSD.org
névre a FreeBSD Projekt
webszerverének IP-címét
kapjuk meg, miközben a ftp.FreeBSD.org
pedig a
hozzá tartozó FTP szerver
IP-címét fogja visszaadni.
Ehhez hasonlóan a fordítottja is
megtörténhet, vagyis egy
IP-címhez is kérhetjük a
hálózati név feloldását. A
névfeloldási kérések
kiszolgálásához nem feltétlenül
szükséges névszervert futtatni a
rendszerünkön.
A FreeBSD jelen pillanatban alapból a BIND9 névszervert tartalmazza. A benne szereplő változata több biztonsági javítást, új állományrendszeri kiosztást és automatizált chroot(8) beállítást is magában foglal.
Az interneten keresztüli névfeloldást legfelső szintű tartományoknak (Top Level Domain, TLD) nevezett hitelesített tövek némileg bonyolult rendszerén alapszik, valamint más egyéb olyan névszervereken, amelyek további egyéni információkat tárolnak és táraznak.
A BIND fejlesztését jelenleg az Internet Systems Consortium (http://www.isc.org/) felügyeli.
A leírás megértéséhez be kell mutatnunk néhány névfeloldással kapcsolatos fogalmat.
Fogalom | Meghatározás |
---|---|
Közvetlen névfeloldás (forward DNS) | A hálózati nevek leképezése IP-címekre. |
ős (origin) | Egy adott zóna állományban szereplő tartományra vonatkozik. |
named, BIND | A FreeBSD-n belüli BIND névszerver különböző megnevezései. |
Névfeloldó (resolver) | Az a program a rendszerben, amelyhez a hálózaton levő gépek a zónák adatainak elérésével kapcsolatban fordulnak. |
Inverz névfeloldás (reverse DNS) | Az IP-címek leképzése hálózati nevekre. |
Gyökérzóna (root zone) | Az interneten található zónák hierarchiájának töve. Minden zóna ebbe a gyökérzónába esik, ahhoz hasonlóan, ahogy egy állományrendszerben az állományok a gyökérkönyvtárba. |
Zóna (zone) | Egy különálló tartomány, altartomány vagy a névfeloldás azon része, amelyet egyazon fennhatóság alatt tartanak karban. |
Példák zónákra:
A gyökérzónára a
leírásokban általában
.
néven szoktak hivatkozni.
A org.
egy legfelső szintű
tartomány (TLD) a
gyökérzónán belül.
A minta.org.
a
org.
TLD
tartomány alatti zóna.
A 1.168.192.in-addr.arpa
egy olyan
zóna, amelyek a 192.168.1.*
IP-címtartományban
szereplő összes címet jelöli.
Mint láthatjuk, a hálózati nevek
balról kiegészülve pontosodnak. Tehát
például a minta.org.
sokkal pontosabb
meghatározás, mint a org.
, ahogy
az org.
magánál a
gyökérzónánál jelent
többet. A hálózati nevek felosztása
leginkább egy állományrendszerhez
hasonlítható, például a /dev
könyvtár a
gyökéren belül található,
és így tovább.
A névszerverek általában két alakban jelennek meg. Egyikük a hitelesített névszerver, a másikuk a gyorsítótárazó névszerver.
Egy hitelesített névszerverre akkor van szükségünk, ha:
a világ többi része felé akarunk hiteles névfeloldási információkat szolgáltatni;
regisztráltunk egy tartományt
(például minta.org
) és az alatta
levő hálózati nevekhez is
szeretnénk IP-címeket
rendeltetni;
a IP-címtartományunkban szükség van inverz névfeloldási bejegyzésekre (amely IP-címből ad meg hálózati nevet) is;
a kérések teljesítéséhez egy tartalék avagy második, alárendelt (slave) névszerver kell.
A gyorsítótárazó névszerverre akkor van szükségünk, ha:
egy helyi névfeloldó szerver felhasználásával fel akarjuk gyorsítani az egyébként a külső névszerver felé irányuló kérések kiszolgálását.
Amikor valaki lekérdezi a www.FreeBSD.org
címét, akkor
a névfeloldó először
általában a kapcsolatot rendelkezésre
bocsátó internet-szolgáltató
névszerverét kérdezi meg és onnan
kapja meg a választ. Egy helyi,
gyorsítótárazó névszerver
használata esetén azonban egy ilyen
kérést csak egyszer kell kiadni a külső
névszervernek. Ezután már minden
további ilyen kérés el sem hagyja a
belső hálózatunkat, mivel a válasz
szerepel a gyorsítótárban.
FreeBSD alatt a BIND démon nyilvánvaló okokból named néven érhető el.
Állomány | Leírás |
---|---|
named(8) | A BIND démon. |
rndc(8) | A névszervert vezérlő segédprogram. |
/etc/namedb | A BIND által kezelt zónák adatait tároló könyvtár. |
/etc/namedb/named.conf | A démon konfigurációs állománya. |
Attól függően, hogy miként
állítjuk be az adott zónát a
szerveren, a hozzá tartozó állományok
a /etc/namedb
könyvtáron belül a master
, slave
vagy dynamic
alkönyvtárban
foglalnak helyet. Az itt tárolt
állományokban levő névfeloldási
információk alapján válaszol a
névszerver a felé intézett
kérésekre.
Mivel a BIND alapból elérhető a rendszerben, viszonylag könnyen be tudjuk állítani.
A named alapértelmezett beállítása szerint egy chroot(8) környezetben futó egyszerű névfeloldást végző szerver, amely a helyi IPv4 interfészen (127.0.0.1) fogadja a kéréseket. Ezzel a beállítással a következő parancson keresztül tudjuk elindítani:
#
/etc/rc.d/named onestart
Ha engedélyezni akarjuk a
named démont minden egyes
rendszerindításkor, tegyük a
következő sort az /etc/rc.conf
állományba:
Értelemszerűen az
/etc/namedb/named.conf
tele van olyan
beállítási lehetőségekkel,
amelyek meghaladják ennek a leírásnak a
kereteit. Ha viszont kíváncsiak vagyunk a
FreeBSD-ben a named
indításához használt
beállításokra, akkor az
/etc/defaults/rc.conf
állományban nézzük meg
named_
változókat és olvassuk át az
rc.conf(5) man oldalt. Emellett még a 11.7. szakasz - Az rc használata FreeBSD alattt is hasznos lehet elolvasni.*
A named
beállításait tartalmazó
állományok pillanatnyilag az /etc/namedb
könyvtárban
találhatóak és hacsak nem egy egyszerű
névfeloldóra tartunk igényt, akkor a
használata előtt módosítanunk is kell.
Itt ejtjük meg a beállítások nagy
részét.
Ahogy arról a megjegyzésekben is szó
esik, úgy tudjuk aktiválni a
gyorsítótárat, ha megadjuk a
forwarders
beállítást.
Normális körülmények között
a névszerver az interneten az egyes
névszervereket rekurzívan fogja keresni
egészen addig, amíg meg nem találja a
keresett választ. Az iménti
beállítás
engedélyezésével azonban
először a szolgáltató
névszerverét (vagy az általa
kijelölt névszervert) fogjuk megkérdezni, a
saját
gyorsítótárából. Ha a
szolgáltató kérdéses
névszervere egy gyakran használt, gyors
névszerver, akkor ezt érdemes
bekapcsolnunk.
Itt a 127.0.0.1
megadása nem működik.
Mindenképpen írjuk át a
szolgáltatónk névszerverének
IP-címére.
A named.conf
állományban tehát így adhatunk meg
közvetlen és inverz alárendelt
zónákat.
Minden egyes újabb kiszolgált
zónához az egy új bejegyzést kell
felvenni a named.conf
állományban.
Például a minta.org
címhez
tartozó legegyszerűbb ilyen bejegyzés
így néz ki:
Ez egy központi zóna, ahogy arról a
type
mező, vagyis a típusa is
árulkodik. Továbbá a
file
mezőben láthatjuk, hogy a
hozzá tartozó információkat az
/etc/namedb/master/minta.org
állományban tárolja.
Az alárendelt esetben a zónához tartozó információkat a zóna központi szerverétől kapjuk meg és megadott állományban mentjük el. Ha valamiért a központi szerver leáll vagy nem érhető el, akkor az alárendelt szerver az átküldött zóna információk alapján képes helyette kiszolgálni a kéréseket.
A minta.org
címhez tartozó példa központi
zóna állomány (amely az
/etc/namedb/master/néven.org
érhető el) tartalma az alábbi:
A „.”-ra végződő
hálózati nevek abszolút nevek, míg
minden más „.” nélküli
név az ősére vezehető vissza
(tehát relatív). Például az
ns1
névből az
ns1.
keletkezik.minta.org
A zóna állományok felépítése a következő:
A névfeloldásban leggyakrabban alkalmazott rekordok típusai:
a zóna fennhatóságának kezdete
egy hitelesített névszerver
egy gép címe
egy álnév kanonikus neve
levélváltó
mutató a tartománynévre (az inverz feloldás használja)
minta.org.
a tartomány neve, amely egyben a zóna őse
ns1.minta.org.
a zóna elsődleges/hitelesített névszervere
admin.minta.org.
a zónáért felelős
személy neve, akinek az e-mail
címét a „@”
behelyettesítésével kapjuk meg.
(Tehát a <admin@example.org>
címből admin.example.org
lesz.)
2006051501
az állomány sorozatszáma. Ezt
a zóna állomány
módosításakor mindig
növelnünk kell. Manapság a
rendszergazdák a sorozatszámot
ééééhhnnvv
alakban adják meg. A
2006051501
tehát azt jelenti,
hogy az állományt 2006. május
15-én módosították
utoljára, és a 01
pedig
arra utal, hogy aznap először. A
sorozatszám megadása fontos az
alárendelt névszerverek
számára, mivel így tudják
megállapítani, hogy a zóna mikor
változott utoljára.
Ez egy NS bejegyzés. A zónához tartozó minden hitelesített névszervernek lennie kell legalább egy ilyen bejegyzésének.
Az A rekord egy gép nevét adja meg. Ahogy a
fenti példából is kiderül, az
ns1.minta.org
név a
192.168.1.2
címre
képződik le.
Ez a sor 192.168.1.1
címet rendeli az aktuális őshöz, amely
jelen esetünkben az example.org
.
A kanonikus neveket tároló rekordokat
általában egy gép álneveihez
használjuk. Ebben a példában a
www
a „főgép” egyik
álneve, amely itt éppenséggel a minta.org
(192.168.1.1
) tartományneve. A
CNAME rekordok mellé más típusú
rekordokat ugyanarra a hálózati névre
soha ne adjunk meg.
Az MX rekord adja meg, hogy milyen levelező szerverek
felelősek a zónába érkező
levelek fogadásáért. A levelezes.minta.org
a levelező
szerver hálózati neve, ahol a 10 az adott
levelező szerver prioritása.
Több levelező szerver is megadható 10-es,
20-as stb. prioritásokkal. A minta.org
tartományon
belül először mindig a legnagyobb MX
prioritással rendelkező levelező szervernek
próbáljuk meg továbbítani a
leveleket (a legkisebb prioritási
értékkel rendelkező rekord), majd
ezután a második legnagyobbnak stb.
egészen addig, amíg a levelet tovább nem
küldtük.
Az in-addr.arpa zóna állományok (inverz DNS) esetén ugyanez a felépítés, kivéve, hogy a PTR típusú bejegyzések szerepelnek az A és CNAME helyett.
Ez az állomány írja le tehát a kitalált tartományunkon belül az IP-címek és hálózati nevek összerendelését.
Érdemes megemlíteni, hogy a PTR rekordok jobb oldalán álló nevek mindegyikének teljes hálózati névnek kell lennie (vagyis „.” karakterrel kell végződnie).
A gyorsítótárazó névszerver az a névszerver, amely elsődleges feladata a rekurzív kérések kiszolgálása. Egyszerűen továbbítja a beérkező kéréseket, majd megjegyzi azokat, így később közvetlenül tud válaszolni.
Habár a névfeloldás szempontjából a BIND a legelterjedtebb, a biztonságosságával azért akadnak gondok. Gyakran találnak benne potenciális és kihasználható biztonsági réseket.
A FreeBSD azonban a named démont automatikusan egy chroot(8) környezetbe helyezi. Emellett még léteznek további más védelmi mechanizmusok is, amelyek segítségével el tudjuk kerülni a névfeloldást célzó esetleges támadásokat.
Sosem árt olvasgatni a CERT által kiadott biztonsági figyelmeztetéseket és feliratkozni a FreeBSD security notifications levelezési lista címére, hogy folyamatosan értesüljünk az interneten és a FreeBSD-ben talált különböző biztonsági hibákról.
Ha valamilyen gondunk támadna, akkor esetleg próbálkozzunk meg a forrásaink frissítésével és a named újrafordításával.
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.