Notice: query (INSERT INTO lemat_stats_browser (day,browser,ilosc,internal) VALUES ('2024-04-19','Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)',1,'2')) failed at /home/lemat/lemat.priv.pl/stats.php:151: Array ( [0] => 22001 [1] => 1406 [2] => Data too long for column 'browser' at row 1 ) in /home/lemat/lemat.priv.pl/panel_adm/dbclass.inc.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at /home/lemat/lemat.priv.pl/panel_adm/dbclass.inc.php:15) in /home/lemat/lemat.priv.pl/stats.php on line 174
chrootowanie binda - Lemat, strona prywatna
Lemat, strona prywatna

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ć


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

Komentarze:

DrOOcik
2006-06-03 22:04:55
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).
DrOOcik
2006-06-02 01:07:54
A może inny DNSowiec?
Ślicznie, tylko po co? djbdns
Odpowiedź Lemata:
bo u Was biją murzynów?
Protected by spf
[Nospam-PL.NET]
Seti@Home
www.php.net
© Lemat 2004 - ∞