Strona 1 z 1

Własny, bezpieczny serwer DNS

: 08 sty 2016, 17:50
autor: steo
Z pozdrowieniami dla Ziemian.

Artykuł Krang tłumaczy, pisze na temat Domain Name System, bo Ziemianie mało o nim wiedzą, o DNS w Cebuli a zarazem dlatego, że Krang tworząc PinkOS sam potrzebował dodatkowych informacji.

Zacznijmy konfigurację własnego serwera DNS.
Aby sobie taki postawić, nie musisz wiedzieć jak DNS działa, tak jak Krang. Wystarczy, że przeczytasz od początku do końca. Jupikajej motherfucker!

Co daje Ci ten Tut?
-Stworzysz własny serwer DNS (cached – dobry przeciw atakom DNS Hijacking)
-Zapobiegniesz wyciekom DNS dla adresów .onion i .i2p


Wymagania:
Nie za dużo:
-Dystrybucja Linuksa np. Fedora. (dla innych np. Debian etc. będzie to samo tylko trochę gdzie indziej będą pliki i minimalnie inne komendy)
-Znajomość podstawowych poleceń systemu Linuks.


Rozdział 1: Instalacja niezbędnego oprogramowania
Krang proponuje zainstalować DNS serwer o nazwie BIND.

Kod: Zaznacz cały

# yum install bind bind-utils
Rozdział 2: Konfiguracja BIND
Konfiguracja BIND znajduje się w: /etc/named.conf
Musisz edytowac ten plik jako root i wkleić do niego to co poniżej krang wklepał.

Kod: Zaznacz cały

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; };
recursion yes;

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};

logging {
channel default_debug {
file "/dev/null";
severity dynamic;
};
channel default_stderr {
file "/dev/null";
severity dynamic;
};
channel default_syslog {
file "/dev/null";
severity dynamic;
};
channel null {
file "/dev/null";
severity dynamic;
};
};

zone "." IN {
type hint;
file "named.ca";
};

include "/etc/named.rfc1912.zones";

zone "onion" IN {
type master;
file "named.empty";
allow-update { none; };
};

zone "i2p" IN {
type master;
file "named.empty";
allow-update { none; };
};
To zmodyfikowana wersja konfiguracji w porównaniu co do domyślnej z Fedory.
Najważniejsze w tym wszystkim jest to aby pozwolić tylko na zapytania z localhost (IPv4 127.0.0.1 or IPv6 ::1)

Plik dump-file może wskazywać na /dev/null ponieważ tworzy się tylko wtedy gdy wykonasz polecenie rndc dumpdb to samo ma się do statistics-file (rndc stats). Powinny nie istnieć i nie zostaną utworzone jeśli nie uruchomisz powyższej komendy.

Opcja directory ustawia główny katalog dla wszystkich plików konfiguracji. Dla przykładu plik “named.ca jest w directory+”named.ca” = “/var/named/named.ca” i zawiera listę serwerów root o które zapytasz. Jeśli chcesz zobaczyć nową listę wpisz:

Kod: Zaznacz cały

$ dig @e.root-servers.net . ns
Uaktualniaj plik named.ca ręcznie. Krang nie poleca aktualizować te listy zbyt często. Wystarczy raz na rok!

Rozdział 3: Startujemy serwer


Aby uruchomić serwer wpisz:

Kod: Zaznacz cały

# service named start
skrypt dostepny dla Redhato-pochodnych dystrybucji, w innym wypadku użyj

Kod: Zaznacz cały

/etc/init.d/named start
Jeśli tak jak Krangowi pojawi się Twoim ludzkim oczom napis:

Kod: Zaznacz cały

Starting named: [ OK ]
to znaczy, że jesteś mądrą ludzką kreaturą i wszystko działa.

Rozdział 4: Testowanie serwera
Aby sprawdzić czy serwer działa poprawnie wejdź do terminala jako zwykły user i uruchom kilka zapytań o rozwiązanie nazwy DNS.

Kod: Zaznacz cały

$ dig @127.0.0.1 thepiratebay.org
dostaniesz odpowiedź:

Kod: Zaznacz cały

;; Query time: 767 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Dec 22 21:47:09 2010
;; MSG SIZE rcvd: 122
Ważne aby upewnić się, że wartość SERVER w odpowiedzi DNS jest ustawiona na 127.0.0.1
Ponownie wykonaj zapytanie a powinieneś otrzymać odpowiedź:

Kod: Zaznacz cały

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Dec 22 21:47:39 2010
;; MSG SIZE rcvd: 122
Teraz widzisz, że “Query time” wynosi 0 a to dlatego, bo pierwszy wynik zapytania DNS został wrzucony do cache.

Rozdział 5
Jeśli masz zamiar wykorzystać swój komputer jako TOR EXIT NODE przeczytaj sekcję A; jeśli jako TOR CLIENT to i A i B hahahaha!

Sekcja A: Tor Exit Node
Wklepujemy:

Kod: Zaznacz cały

# echo -ne "nameserver 127.0.0.1\n" > /etc/resolv.conf
Jeśli BIND ustawiony jest jako usługa i kilka innych programów nadpisuje plik resolve.conf na starcie (tak jak np. klient DHCP) to musisz dopisać powyższą linijkę na samym dole w pliku skryptu: /etc/rc.d/rc.local aby zawsze podmieniał plik resolv.conf podczas uruchamiania systemu. Inna opcja to rekonfiguracja klienta DHCP (jeśli go używasz).

Sekcja B: Klient TOR.
Konfiguracja NetworkManagera lub czegokolwiek co tam używasz człowieku aby wskazać serwer DNS na 127.0.0.1. Wystarczy adres serwera DNS pozostałe pola mogą pozostać puste.
Możesz też ręcznie edytować plik /etc/resolv.conf

Graficzny interfejs odpala się:

Kod: Zaznacz cały

$ system-config-network
i wybiera Network Card (np. eth0) klika edit.
Wprowadza Primary DNS i Secondary DNS na 127.0.0.1
OK
File->Save and close the Network Configuration Tool.
Restart usługi:

Kod: Zaznacz cały

# service network restart
lub dla Debiana np.

Kod: Zaznacz cały

/etc/init.d/network restart
Rozdział 6: Zwalczanie przecieków DNS
Nawet przy zwykłej instalacji serwera BIND może dojść do wycieków DNS.
Wpisz:

Kod: Zaznacz cały

$ dig @127.0.0.1 jakikolwiek-cebulowy-adres.onion
Otrzymamy error NXDOMAIN (czyli taki 404 haha, że niby nie znaleziono)
jednak zapytanie o adres zostało rozesłane do całego internetu. Tylko po to by dowiedzieć się, że taki adres nie istnieje.
Jeśli dokonałeś jakiejś pomyłki w konfiguracji oprogramowania, przy wysłaniu zapytania DNS serwer BIND pozwoli wyciec adresowi o który pytałeś.
Aby uniknąć takiej sytuacji, możesz skonfigurować BIND tak aby blokował wszystkie zapytania DNS wysłane dla stron .onion.

Idziemy do /var/named/named.empty i musi on wyglądać tak:

Kod: Zaznacz cały

$TTL 3H
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
a dzięki 2 wpisom w konfiguracji, którą skopiowałeś na początku tego artykułu:
czyli końcówka /etc/named.conf

Kod: Zaznacz cały

zone "onion" IN {
type master;
file "named.empty";
allow-update { none; };
};

zone "i2p" IN {
type master;
file "named.empty";
allow-update { none; };
};
wszystko będzie dobrze.
Wklep:

Kod: Zaznacz cały

# service named restart
W WireShark możesz zobaczyć:

Kod: Zaznacz cały

$ dig honeybee.onion
...
onion. 10800 IN SOA onion. rname.invalid. 0 86400 3600 604800 10800
...
że żaden pakiet nie został wysłany. “rname.invalid” – jak w pliku konfiguracyjnym.

Rozdział 7: limity pamięci


Informacje “cache” jakie przetrzymuje BIND, trzyma w pamięci RAM a nie na dysku. To wszystko dla podwyższenia prywatności.
Zkaszowane elementy zostają usunięte gdy wygasną, jednak domyślnie nie ma, żadnego ograniczenia dla limitu do jakiego może się rozrosnąć nasz cache.
Jeśli chcesz ustawić limit pamięci dla cache zapytań DNS w BIND musisz dodać do konfiguracji opcję:

Kod: Zaznacz cały

options {
...
max-cache-size 16M;
...
}
Opcja ta przydatna jest tylko dla TOR EXIT NODE. Do zastosowań prywatnych nie ma znaczenia.

Powyższy tutorial jest częścią książki, którą pisze Krang o anonimowości w sieci!
Joł joł joł moi czarni bracia. Miłego popołudnia.

steo uznał, że po co ma się produkować, skoro to już jest? Ale! Żeby wszystko było elegalnco i legalnie, steo podaje link (taki dla kumatych):
Wchodzimy w cebulę i na technodrome Kranga i doklepujemy: blog/index.php/wlasny-bezpieczny-serwer-dns/ i tak oto otrzymujemy oryginał.

Odpowiedzialność prawną za ten artykuł ponosi administrator forum.haker.edu.pl/ :mrgreen:

Re: Własny, bezpieczny serwer DNS

: 11 sty 2016, 17:54
autor: Kenjin
W sumie nic odkrywczego ale ciekawy jest aspekt wplecenia w to TORa. Swoja droga nie rozumiem czemu nie zostały skonfigurowane reverse Zone'y tylko forward?