Lemat, strona domowa

chrootowanie binda

ISC Bind jest uważany za najbardziej dziurawą usługę dla linuxa (patrz http://www.sans.org/top20/ ). W tym artykule omówię sposób na zamknięcie binda w jailu.

Potrzebny stuff:
źródło binda z www.isc.org (w tym przypadku użyłem 9.2.3, 9.3.0)

Przepis dotyczy dystrybucji Mandrake 9.1 (9.2 i 10 też są podatne - tylko wersje bibliotek z katalogu /lib są inne)
binda będziemy zamykali w /var/named i jest on katalogiem bieżącym dla wszystkich poleceń umieszczonych w tym dokumencie.

1) do pliku /etc/ld.so.conf dopisujemy:

/usr/local/lib
/usr/lib

i uruchamiamy ldconfig

2) Przygotowanie katalogu.

Jeżeli w systemie nie mamy usera named to tworzymy go:

# groupadd named
# useradd -g named -c "system user for bind" -s /bin/false -d /var/named named

Tworzymy następującą strukturę katalogów i kopiujemy odpowiednie pliki:

./bin/false
./etc/group (zostawiamy tylko wpis dot. grupy named)
./etc/passwd (zostawiamy tylko wpis dot. usera named)
./etc/shadow (zostawiamy tylko wpis dot. usera named)
./etc/ld.so.cache
./etc/localtime
./etc/protocols
./etc/resolv.conf
./etc/services
./etc/named.conf
./lib/ld-2.3.1.so
./lib/libc-2.3.1.so
./lib/libdl-2.3.1.so
./lib/libnsl-2.3.1.so
./lib/libpthread-0.10.so
./var/named/named.ca
./var/named/named.local

Oraz symlinki:

./lib/ld-linux.so.2
./lib/libc.so.6
./lib/libdl.so.2
./lib/libnsl.so.1
./lib/libpthread.so.0

Tworzymy następujące katalogi i ustawiamy właściciela na named:named
./var/log/
./var/run/named/

Jeżeli w ./var/named będziemy trzymali strefy typu slave to  również zmieniamy właściciela tego katalogu.

Tworzymy katalog ./dev oraz:

# cd dev
# mknod null c 1 3
# mknod random c 1 8
# chmod 666 *

3) kompilacja

# cd katalog_z_rozpakowanymi_żródłami
# ./configure --prefix=/var/named/usr --sysconfdir=/var/named/etc --localstatedir=/var/named/var --enable-threads --with-libtool --disable-ipv6 --enable-libbind
# make
# make install

to co się znajdzie w katalogu ./usr/bin kopiujemy do /usr/bin
to co się znajdzie w katalogu ./usr/lib kopiujemy do /usr/lib
 

4) zmiany w syslogu.

w pliku /etc/sysconfig/syslog umieszczamy (zmieniamy) linię:

SYSLOGD_OPTIONS="-m 0 -a /var/named/dev/log"

i restartujemy /etc/init.d/syslog restart

5) Pliki konfiguracyjne.

w pliku /etc/sysconfig/named dopisujemy:

ROOTDIR="/var/named"

A plik /etc/init.d/named można pobrać stąd (zmiany dotyczą dopisania ${ROOTDIR} przed poleceniami oraz parametru -c /etc/named.conf ).

6) Możliwe problemy.

Jeżeli bind się nie uruchamia to zaglądamy do pliku /var/log/syslog
Należy sprawdzić

  • czy katalog ./var/run/named ma możliwość zapisu dla usera named
  • czy przekopiowaliśmy wszystkie wyszczególnione pliki z katalogu /lib
  • czy w ./dev są opisane pliki
  • czy named jest uprawniony do odczytu wszystkich plików w /var/named (nie musi mieć prawa do zapisu, i nawet nie powinien)

Kernele z serii 2.6 kiepsko współpracują z bindem.

sypiąc błędami:
process `named' is using obsolete setsockopt SO_BSDCOMPAT

Na stronie http://www.hants.lug.org.uk/cgi-bin/wiki.pl?LinuxHints/RedHat_2.4_To_2.6_Kernel_Upgrade znalazłem przepis:

w pliku  /lib/isc/unix/socket.c w linii 1347 (bind 9.3.1)

#if defined(USE_CMSG) || defined(SO_BSDCOMPAT)
int on = 1;

trzeba zmienić na:

#if defined(USE_CMSG)
int on = 1;

a następnie znaleźć i zakomentować (1432-1444) 

/* Nick
#ifdef SO_BSDCOMPAT if (setsockopt(sock->fd, SOL_SOCKET, SO_BSDCOMPAT, (void *)&on, sizeof on) < 0) { isc__strerror(errno, strbuf, sizeof(strbuf)); UNEXPECTED_ERROR(__FILE__, __LINE__, "setsockopt(%d, SO_BSDCOMPAT) %s: %s", sock->fd, isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, ISC_MSG_FAILED, "failed"), strbuf); /* Press on... /* } #endif */
Data utworzenia : 2003-10-29, data aktualizacji :2005-07-12
Skomentuj ten tekst
2006-06-03 22:04:55DrOOcik
Spokojnie, to tylko mała sugestia
]bo u Was biją murzynów? Tak, za lenistwo i rutynę. A poważnie: nie twierdzę, że bind jest do bani, tylko po co tyle kombinacji? Jak się chce czuć bezpiecznym to polecam djbdns jako dobra alternatywa dla binda. Bernstein to niegłupi gość (qmail na przykład - choć wolę postfisia). Dla niezdecydowanych polecam porównanie mówiące o co mi chodzi: http://new.foo-baz.com/pl/index.php?year=2004&monthnum=09&day=06&p=4 Sendmail też nie jest zły, prawda? Ale sery to ja lubię na kanapce :-) Nie mówiąc o tym, jak go ukroić, by wyglądał jak nałeży (konfiguracja - kto próbował, ten wie).
2006-06-02 01:07:54DrOOcik
A może inny DNSowiec?
Ślicznie, tylko po co? djbdns
Odp.: bo u Was biją murzynów?
[Nospam-PL.NET]
UWAGA lisy roznoszą wściekliznę!
Protected by spf
© Lemat 2004 - ∞ engine:Lemat
info@seminar.pl.ua przedstawicielstwo@tiscali.it