Wednesday, March 28, 2007

Split-horizon DNS

Энэ нийтлэлийг бичье гэж бодсоор их удлаа. Анх санаа нь Голомт банкны DNS бичлэгийг хараад төрсөн билээ.

Episode 1: Тэр үед 2005 оны 5 сард дөнгөж ажилд ороод байсан би, танайхаас Голомт банкруу мэйл явуулж чадахгүй байна гэсэн хэрэглэгчийн гомдолыг хүлээж авлаа. Эхлээд учраа сайн олохгүй нилээд материал уншиж судалсны эцэст Голомт банкны DNS бичлэг нэг домэйн нэр дээр нилээд олон A бичлэгийг дотоод, гадаад IP холин цувуулан бичсэн байлаа. Манай мэйл серверээс DNS resolution хийхэд дотоод IP нь гарч ирээд мэйл явуулж чадахгүй байсан бололтой. Нилээд хэдэн утас эргэдэж байж Голомтын DNS бичлэгийг хариуцдаг админ-тай нь ярилаа. Тэгвэл зүгээр, ингэвэл дээр гэж хэлж чадахаар юм надад үнэндээ байсангүй. "Гадаад IP-тай A бичлэгээ, дотоод IP-тайгийнхаа дээр нь тавьчиж болохгүй юу?" гэж хэлж байснаа санаж байна. Мэдээж Голомтынхон ямар нэг арга хэмжээ аваагүй, тэр хэрэглэгч дахин утасдаж байсан санагдана. Тэр үед миний хийх гэж оролдсон ганц алхам бол өөрийн DNS Cache сервер дээр Голомтын golombank.com домэйныг гадаад IP-руу нь шууд зааж өгөх гэсэн оролдлого байлаа. Тэр үед DNS системийн талаар үнэндээ ямар ч мэдлэг байгаагүй болохоор нөгөө хэрэглэгч маань ч утасдахаа больж, би ч энэ талаар таг мартав.

Episode 3: 2006 оны 9 сард, Улаанбаатарт болсон APNIC DNS Workshop... DNS-ын ойлгомжгүй олон асуудлууд байсныг хичээл заасан багшаасаа асууж нэг санаа амрав. Мэдээж Голомт банкны бичлэгийг асуухаа мартсангүй. "Манай нэг хэрэглэгч дотоод IP-гаа гадаад DNS дээрээ биччихээд байх юм. Энэ болохгүй биз дээ?" гэж асуухад минь, "It is stupid thing to annouce your private IP to the world." гэж хариулж байсан билээ. Хичээл дууссаны дараа шалгатал Голомтын DNS бичлэг хэвээрээ л байсан санагдана. Хичээл заалгасан хүн чинь юу гэж зүгээр байхав дээ. Zone transfer хийх гэж оролдсон, болоогүй. Гэхдээ сонирхолтой мэдээлэл нилээд олсон. Би сүлжээний хакер биш л дээ, үнэндээ энэ мэдээллээр юу хийхээ ч өөрөө ойлгоогүй, зүгээр л сонирхол татаж байлаа. dns, mail, web нь бүгд (Голомт банк мэдээж олон домэйнтэй байх, зөвхөн golomtbank.com-н хувьд) нэг IP-руу заагдсан байсан. 192.168.0.8 байсан шиг санаж байна. Мэдээж бүхэл бүтэн банк юм чинь энэ олон сервис нэг сервер дээр байна гэж байхгүй л дээ, proxy сервер биз гэсэн яриа манай ажлынхны дунд өрнөлөө.

Episode 4: 2006 оны 12 сар... Дөлөө, Нүүнээ хоёртой буу халж байсан, Голомт банкны DNS бичлэгийн талаар яриа өрнөлөө. (Ярих бодит жишээтэй байх сайхан юм :) ) "Дотоод сүлжээндээ DNS cервер хэрэгтэй байгаа л юм бол дотооддоо тусад нь DNS тавьчиж болдоггүй юм байх даа" гэсэн миний саналын хариуд Дөлөө "Request ирж байгаа IP-наас нь хамаарч BIND гадаадад нэг мэдээлэл, дотоодод өөр мэдээлэл өгч чадна." гэж байна. "BIND уу? Чадахгүй." гэж Нүүнээ бид 2 зөрөөд... барьдаг дээрээ туллаа.

Episode 2: SANS-н сургалтанд суухдаа split-horizon DNS зохион байгуулж, дотоод DNS мэдээллээ гаднаас хэрхэн хамгаалах талаар анх олж сонслоо.

Episode 5: Саяхан Голомт банкны бичлэгийг шалгаад орхисон, харин дотоод IP-нууд нь алга болчиж... Админууд нь нэг арга хэмжээ авсан бололтой.

Episode 6: ... гэж бодоод дөнгөж сая шалгатал, яг ч бас үгүй юм байна.

www.golomtbank.com 202.170.65.8 (A)
mail.golomtbank.com 202.170.65.8 (A)

> golomtbank.com
Server: [202.170.65.8]
Address: 202.170.65.8
golomtbank.com nameserver = glmt.golomtbank.com
glmt.golomtbank.com internet address = 192.168.1.4
glmt.golomtbank.com internet address = 202.170.65.8

DNS нь дотоод IP-гаа зарласан хэвээр байна. Байгууллагын дотоод сүлжээнээс хандаж байгаа болохоор гарч ирж байгаа байж магадгүй.

Нэмээд хэлчихэд golomtbank.com домэйнд MX бичлэг байхгүй, 2 authoritative/бүрэн эрхт DNS сервер зарласан хэдий ч glmt1.golomtbank.com-202.170.65.9 нь ерөөсөө ажилладаггүй юм билээ.

Episode 7: Уг нь split-horizon DNS, DNS view-н талаар энд бичих ёстой байлаа. Ойлгоогүй зүйлс бас байгаа тул дараагийн нийтлэлдээ гүйцээе.

PS: Голомт банкыг шүүмжилсэн өнгө аястай нийтлэл болсон бол хүлцэл өчье. Аргагүй толгойд яваад байсан болохоор энд жишээ болгон бичлээ. Дээрх мэдээллийг хялбархан nslookup хийгээд олж авч болно.

Monday, March 26, 2007

DomainKeys - Спамаас хамгаалах арга

Yahoo болон Gmail-рүү явуулсан мэйлүүд BULK-руу орчихоод байвал DomainKey-г хэрэглэж эхлэх цаг болсоных ч байж мэднэ!

Саяхнаас yahoo.co.jp домэйнтой мэйл хаягтай болсон билээ. Хэрэглэж байхдаа нэг анзаарвал зарим мэйл From талбартаа, мэйл хаягныхаа доод талд "
DomainKeys は、このメールが yahoo.com から送信されたことを確認しました。" гэсэн бичиг байна. Монголоор "Энэ мэйл yahoo.com-с ирсэн болохыг DomainKeys шалган тогтоов ." гэсэн үг л дээ. Монголд байхад л DomainKeys гээд яригдаад байсан, нээрээ ингээд хэрэглээд эхэлчихсэн юм байх даа гэсэн бодол толгойд орж ирж байна. Wiki-дээд орхисон Yahoo бүр 2004 оноос хойш DomainKeys ашиглах болсон гэж байна. Хэрэв тийм бол яагаад анзаарайгүй байдаг билээ?...

yahoo.com-ын мэйлүүдэд From хэсэгт мэйл хаягны өмнө "дугтуйн дээрх түлхүүрний тэмдэг" байнуу? Дээр нь хулганаар очвол "This sender is DomainKeys verified" гэж гарч ирж байгаа биз...

DomainKeys гэж юу вэ?
DomainKeys гэдэг нь мэйл үнэхээр "From" хэсэгт бичигдсэн домэйноос ирсэн байнуу гэдгийг шалган тогтоох зориулалттай нэг төрлийн шинэ протокол юм. Хялбарханаар тайлбарлавал: явуулж байгаа тал нь гарын үсгээ зурна, хүлээн авч байгаа тал нь түүнийг шалгана гэсэн үг юм.

Хэрхэн ажиллах вэ?
DomainKeys-г ашиглахын тулд эхлээд private/public хос түлхүүр үүсгэх ёстой. Private түлхүүрийг MTA өөртөө хадгалж, гадагшаа явуулж байгаа бүх мэйлийн header дотор бичнэ. Public хэсгийг админ өөрийн DNS zone file-д,
_domainkey дэд домэйны TXT бичлэг дотор тавьсанаар, хүлээн авч байгаа мэйл сервер энэ түлхүүрийг авч гарын үсгийг шалгах боломжтой болно. Өөрөөр хэлбэл public түлхүүрийг нийтэд тараахдаа DNS hierarchy-г ашиглаж байна гэсэн үг юм. DNS бичлэгийг зөвхөн тухайн домэйны эзэн өөрчлөх эрхтэй тул хос түлхүүрийг заавал гадны CA(Certificate Authority)-р баталгаажуулах шаардлагагүй болсон давуу талтай.

DomainKey-р баталгаажсан мэйлийн header ямар байдаг бол? гэсэн сониуч зандаа хөтлөгдөж байгаа бол мэйлийн full header-г нь нэг нээгээд хараарай.
DomainKey-Signature гэсэн талбар нэмэгдсэн байгаа:

DomainKey-Signature: a=rsa-sha1; c=nofws;
d=gmail.com; s=beta;
h=received:message-id:date:from:to:subject:cc:mime-version:content-type;


Хэрхэн хэрэглэх вэ?
Yahoo, Gmail бүгд DomainKey-г хэрэглээд нэгэнт эхэлчихсэн тул, та эдгээр домэйнуудруу мэйл явуулахын тулд ядаж гарын үсгээ зураад явуулах хэрэгтэй болох байх даа. Одоо яах вэ гэж санаа зовох хэрэггүй. Өргөн хэрэглэгддэг MTA-уудын хувьд patch/шинэ хувилбар/plugin аль хэдийнэ гарчихсан, аваад хэрэглэх л үлдэж дээ:

- Sendmail milter implementation - http://sourceforge.net/projects/dk-milter
- Qmail patch qmail-dk - http://www.qmail.org/top.html
- Exim version - http://duncanthrax.net/exim-experimental
болон бусад MTA-н талаар DomainKeys төслийн хуудаснаас орж үзнэ үү.


Холбоосууд:
1. Yahoo Anti-Spam Resource Center-с гаргасан танилцуулга - http://antispam.yahoo.com/domainkeys
2. Yahoo-гаас санхүүжүүлж буй нээлттэй эхийн DomainKeys төсөл - http://domainkeys.sourceforge.net
3. Wikipedia - http://en.wikipedia.org/wiki/DomainKeys