Geyik bölümü (Okumasanızda olur):
Evlilikten sonra uzunca bir süre blog da bir şeyler paylaşmadığımı fark ettim, paslanmış moddan çıkıp yeniden sahalara dönmek için ufak bir idman olsun diye bu yazı ile başlıyorum…
Neden BIND versiyon bilgisini saklıyoruz:
Malum artık kimse tek tek sunucu tarayıp sistem zafiyeti araştırmıyor, bu işleri botlara bıkartık. Botlar bizim için IP adreslerin deki servisleri tarıyor, işletim sistemi, serviste çalışan uygulama isimleri, hatta uygulama versiyonunu bile alıp DB ye atıyor.
Gün oluyor x uygulamasının y versiyonunda kritik bir zafiyet çıkıyor, zafiyet publish edilir edilmez bizim hacker abilerimiz DB ye baglanıp bir select çekiyorlar, xxxx tane bu versiyonu kullanan sunucu var, başlıyorlar sunuculara exploit ile erişmeye… Anlayacağınız exploit publish edildikten sonra belki dakikalar, belki saatler içerisinde exploit denemeleri gelmeye başlıyor.
Durum böyle olunca biz sistem yöneticileri içinde uygulama adı, versiyon bilgisi v.b. gizlemek önem arz ediyor.
Lafı bırakıp işimize bakalım :
Bind dns sunucusunda versiyon bilgisini dig komutu ile ögrenebiliriz,
[important]
[root@myserver ~]# dig version.bind chaos txt @1.1.1.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> version.bind chaos txt @localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1184
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;version.bind. CH TXT
;; ANSWER SECTION:
version.bind. 0 CH TXT “9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1”
;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Aug 28 10:55:06 2014
;; MSG SIZE rcvd: 95
[/important]
Aynı sunucu da bind versiyonunu öğrenmek için named -v komutunu çalıştıralım,
[important][root@myserver ~]# named -v
BIND 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1[/important]
Gördüğünüz gibi sunucuda root da olsak, uzaktaki bir bot da olsak aynı veriye ulaşabiliyoruz.
yukarıda bahsetmiş olduğum nedenlerden dolayı bu bilgiye dışarıdan erişimi engellemek gerekiyor, bunun için named.conf dosyasına bir satır ekleme yapmak gerekiyor.
[important]
options {
…
…
version “version was hidden”;
};
[/important]
named.conf daki options bölümü içerisine version “….”; şeklinde bilgi eklemeniz yeterli.
bu işlem sonrasında bind servisini restart ederek yeniden dışarıdan sorgumuzu gerçekleştiriyoruz.
[important]
[root@myserver ~]# service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
[root@myserver ~]# dig version.bind chaos txt @1.1.1.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> version.bind chaos txt @localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53319
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;version.bind. CH TXT
;; ANSWER SECTION:
version.bind. 0 CH TXT “version was hidden”
;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Aug 28 11:06:14 2014
;; MSG SIZE rcvd: 75
[/important]
gördüğünüz gibi sistemimize botlar gelse de artık bizden versiyon bilgisi alamıyor, db den select çektiğinde bizim IP adresimiz listelenmiyor ve sunucumuz üzerinde exploit denemeleri yapılmıyor..