Lemat, strona prywatna

Stawiamy własny serwer DNSBL (RBL) - Mandriva

Ostatnio zauważyłem, że bind zeżarł mi 100MB pamięci operacyjnej, winnym okazało się oczywiście trzymanie pliku strefy z zakresami adresów typu DUHL (odziedziczonych z Rangersa i SORBSa).

Skoro bind nie nadaje się kompletnie do trzymania dużych (kilka/naście/dziesiąt/set) tysięcy zakresów) stref, a takie właśnie wchodzą w grę jak robimy własnego DNSBLa to można użyć do tego celu albo rbldnsa D. J. Bernsteina albo rbldnsd by Michael Tokarev (kurtka, dopełniacz?). Ja użyłem tego drugiego, przy czym moim zadaniem było postawienie go na jednej maszynie razem z bindem (jakby nie było konflikt na porcie 53). Rozwiązaniem jest postawienie rbldnsa na aliasie interfejsu lo. Poniższy przepis jest aktualny dla dystrybucji Mandriva 2006.

Najpierw ściągamy źródło i kompilujemy i instalujemy: 

./configure --disable-ipv6
make
cp rbldnsd /usr/sbin
cp -p rbldnsd.8 /usr/man/man8/
cp -p debian/rbldnsd.default /etc/sysconfig/rbldnsd
cp -p debian/rbldnsd.init /etc/init.d/rbldnsd
chmod +x /etc/init.d/rbldnsd
mkdir -p -m 0755 /var/lib/rbldns
groupadd  rbldns
useradd -r -d /var/lib/rbldnsd -M -c "rbldns Daemon" -g rbldns -s /sbin/nologin rbldns
/sbin/chkconfig --add rbldnsd

Następnie należy zrobić alias na interfejsie lo (utworzyć interfejs lo:0 i przypisać do niego adres IP 127.0.0.2). W tym celu tworzymy plik /etc/sysconfig/network-scripts/ifcfg-lo:0 z zawartością (to ten fragment instrukcji jest zależny od dystrybucji linuxa - Mandriva, Fedora):

DEVICE=lo:0
IPADDR=127.0.0.2
NETMASK=255.255.255.255
NETWORK=127.0.0.0
BROADCAST=127.0.0.2
ONBOOT=yes
NAME=loopback
NO_ALIASROUTING=yes

następnie możemy wykonać:

/etc/sysconfig/network-scripts/ifup-aliases lo

który nam ten dodatkowy interfejs podniesie, czy tak się stanie sprawdzamy poleceniem ifconfig.

Oczywiście do takiego interfejsu za chwilkę przyczepi się named, dlatego w /etc/named.conf w sekcji options trzeba mu tego (nasłuchiwania na adresie 127.0.0.2) zakazać:

options {
        listen-on { !127.0.0.2; any; };
        ...
        };

oprócz tego możemy od razu wpisać sobie aby named wszelkie pytania o naszego RBLa kierował do naszego RBLa czyli do 127.0.0.2:

zone "rbl.tld" {
type forward;
forward only;
forwarders {
       127.0.0.2;
};
};

Następnie tworzymy plik /var/lib/rbldns/tld (plik do pobrania stąd) z zawartością:

$TTL 86400
$SOA 1d ns1.tld. root..tld. 2006101400 43200 900 604800 86400
$NS 1d 127.0.0.1
$DATASET ip4trie:dynamic dynamic @
:127.0.0.2:Dynamic/residential IP spam source (dial-up or DSL line). Please use your ISP's SMTP.

i tu dalej adresy IP w postaci CIDR

Powyższy plik zawiera definicję stref:

Plik jest co jakiś czas uaktualniany. Także albo zaglądajcie na stronę albo udostępnię rsynca.

Do pliku /etc/sysconfig/rbldnsd dodajemy linię:

RBLDNSD="- -u rbldns:rbldns -r /var/lib/rbldnsd -b 127.0.0.2 -4 -f rbl.tld:combined:tld"

i w tym momencie możemy przeładować binda /etc/init.d/named reload i zastartować RBLDNSa /etc/init.d/rbldnsd start

aby przetestować, czy wszystko się udało możemy użyć polecenia dig, najpierw bezpośrednio pytamy rbldnsd (niepotrzebe linie wycięte, 83.27.1.1 to neostrada):

# dig 1.1.27.83.dynamic.rbl.tld @127.0.0.2 -t any

;; ANSWER SECTION:
1.1.27.83.rbl.tld.      86400   IN      A       127.0.0.2
1.1.27.83.rbl.tld.      86400   IN      TXT     "Dynamic/residential IP spam source (dial-up or DSL line). Please use your ISP's SMTP."

a potem możemy sprawdzić, czy bind ładnie się z nim połączy:

# dig 1.1.27.83.dynamic.rbl.tld -t any

;; ANSWER SECTION:
1.1.27.83.dynamic.rbl.tld. 86400 IN     TXT     "Dynamic/residential IP spam source (dial-up or DSL line). Please use your ISP's SMTP."
1.1.27.83.dynamic.rbl.tld. 86400 IN     A       127.0.0.2


Data utworzenia : 2006-10-20, data aktualizacji :2012-03-03

Skomentuj ten tekst

Komentarze:

birkoff
2010-08-11 15:30:55
wtedy nie trzeba aliasu
wtedy juz nie trzeba nawet tworzyc aliasu do lo0.
Piotr
2008-06-26 12:15:59
rbldnsd na innym porcie
Jakby komuś nie chciałby się uruchomić rbldnsd na porcie 53(jakoby port już zajęty) to wystarczy dodać w pliku konfiguracyjnym inny port na którym ma nasłuchiwać np. -b 127.0.0.2/1053 A w named.conf: forwarders { 127.0.0.2 port 1053; }; Oczywiście jeśli mamy bind'a 9.
Protected by spf
[Nospam-PL.NET]
Seti@Home
www.php.net
© Lemat 2004 - ∞