Następna strona Poprzednia strona Spis treści

6. Inne programy, które może musisz uaktualnić albo "załatać".

Pomimo, iż pakiet Shadow Suite posiada zastępcze programy dla większości programów, które potrzebują dostepu do haseł, to prawie w każdym systemie są jeszcze dodatkowe programy, które potrzebują dostępu do haseł.

Jeśli masz dystrybucję Debian (a nawet jeśli nie masz), możesz znaleźć źródła programów, które muszą być przerobione pod tym adresem.

Reszta tej sekcji opisuje jak uaktualnić programy: adduser, wu_ftpd, ftpd, pop3d, xlock, xdm i sudo tak, aby obsługiwały przesłonięte hasła.

Aby dowiedzieć się jak zrobić obsługę przesłoniętych haseł w jakimkolwiek innym programie zobacz sekcję Obsługa przesłanianych haseł w programach w C. (Programy te i tak muszą być uruchomione z bitem "SUID" dla "root-a" albo grupy shadow, aby rzeczywiście mieć dostęp do haseł.)

6.1 Program adduser z dystrybucji Slackware.

Dystrybucja Slackware (i pewnie inne) zawiera interaktywny program służący do dodawania nowych użytkowników - /sbin/adduser. Wersję tego programu obsługującą przesłonięte hasła można pobrać np. z ftp.icm.edu.pl z katalogu /pub/Linux/sunsite/system/admin/accounts/.

Ja zalecam używanie programów, które są dostarczane wraz z pakietem Shadow Suite (useradd, usermod, i userdel) zamiast adduser z dystrybucji Slackware. Co prawda nauczenie się jak się nimi posługiwać zabiera trochę czasu, ale opłaca się to ponieważ masz o wiele większą kontrolę i mają one poprawne blokowanie plików (file locking) /etc/passwd i /etc/shadow - adduser tego nie robi.

Więcej informacji w następnej sekcji - Wprowadzanie pakietu Shadow Suite do użycia..

Ale jeśli już musisz go mieć, oto co musisz zrobić:

tar -xzvf adduser.shadow-1.4.tar.gz
cd adduser
make clean
make adduser
chmod 700 adduser
cp adduser /sbin

6.2 Serwer wu_ftpd.

Wraz z większością dystrybucji Linux-a przychodzi serwer wu_ftpd. Jeśli twoja dystrybucja nie instaluje domyślnie pakietu Shadow Suite, to twój serwer wu_ftpd nie będzie skompilowany z obsługą przesłoniętych haseł. wu_ftpd jest odpalany z inetd/tcpd jako proces "root-a". Jeśli twój demon wu_ftpd jest starą wersją, to będziesz chciał ją uaktualnić tak czy inaczej ponieważ stare wersje mają pewien błąd, który kompromituje konto "root". (Więcej informacji znajdziesz na Stronie Domowej Bezpieczeństwa na Linuxie).

Na szczęście musisz tylko zdobyć żródła tego programu i skompilować go z włączoną obsługą "Shadow password".

Jeśli nie masz systemu ELF, to serwer wu_ftpd możesz znaleźć na SUNSite Polska - nazywa się wu_ftpd-2.4-fixed.tar.gz

Jak już ściągniesz te źródła, to wtedy napisz:

cd /usr/src
tar -xzvf wu-ftpd-2.4-fixed.tar.gz
cd wu-ftpd-2.4-fixed
cp ./src/config/config.lnx.shadow ./src/config/config.lnx

Potem zmień w pliku ./src/makefiles/Makefile.lnx linię:

LIBES = -lbsd -support

na:

LIBES = -lbsd -support -lshadow

Teraz możesz uruchomić skrypt kompilujący i zainstalować pakiet:

cd /usr/src/wu-ftpd-2.4-fixed
/usr/src/wu-ftp-2.4.fixed/build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd

Polecenia te powodują użycie pliku konfiguracyjnego z obsługą haseł przesłanianych dla Linux-a, skompilowanie i instalację serwera.

U siebie na Slackware 2.3 musiałem dodatkowo przed kompilacją zrobić coś takiego:

cd /usr/include/netinet
ln -s in_systm.h in_system.h
cd -

Zgłaszane były problemy z kompilacją na systemie binarnym ELF, ale wersja BETA następnej wersji działa dobrze. Można ją znaleźć pod adresem ftp.icm.edu.pl pod nazwą wu-ftp-2.4.2-beta-10.tar.gz.

Jak już ściągniesz serwer umieść go w /usr/src i napisz:

cd /usr/src
tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz
cd wu-ftpd-beta-9
cd ./src/config

Potem zmień w pliku config.lnx:

#undef SHADOW.PASSWORD

na:

#define SHADOW.PASSWORD

Potem:

cd ../Makefiles

i zmień w pliku Makefile.lnx

LIBES = -lsupport -lbsd # -lshadow

na:

LIBES = -lsupport -lbsd  -lshadow

Następnie skompiluj i zainstaluj:

cd ..
build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd

Zauważ, że powinieneś sprawdzić w /etc/inetd.conf katalog, w którym twój serwer rzeczywiście się znajduje. Powiadomiono mnie, że niektóre dystrybucje umieszczają demony serwerów w innych miejscach, a wtedy wu_ftpd może się znajdować gdzie indziej.

6.3 Standardowy ftpd.

Jeśli masz u siebie standardowy serwer ftpd, zalecałbym zmianę na wu_ftpd. Poza znaną dziurą omówioną wcześniej, wu_ftpd jest uznany za bardziej bezpieczny.

Jeśli nalegasz na standardowy, albo potrzebujesz obsługi NIS, to na SUNSite Polska znajdziesz ftpd-shadow-nis.tgz.

6.4 pop3d (Post Office Protocol 3)

Jeśli potrzebujesz obsługi Post Office Protocol 3, będziesz musiał skompilować ponownie program pop3d. Normalnie jest on uruchamiany przez inetd/tcpd jako "root".

Na SUNSite Polska dostępne są dwie wersje:

Obie są raczej proste do zainstalowania.

6.5 xlock

Jeśli zainstalujesz pakiet Shadow Suite i uruchomisz XWindows, a następnie zablokujesz (lock) ekran nie uaktualniając programu xlock, będziesz musiał użyć CTRL+ALT+Fx, aby przełączyć się na wirtualną konsolę tekstową (jeśli masz jakąś), zalogować się i zlikwidować proces xlock (albo użyć CTRL+ALT+BACKSPACE żeby zamknąć XWindows). Na szczęście uaktualnienie programu xlock jest dość proste.

Jeśli masz XFree86 wersja 3.x.x, przypuszczalnie używasz xlockmore (który jest wspaniałym "screensaver-em" w połaczeniu z "lock"). Następujący pakiet obsługuje przesłonięte hasła - xlockmore-3.5.tgz a dostępny jest z SUNSite Polska. Jeśli masz starszą wersję zalecam uaktualnienie do tej.

Oto "z grubsza" to, co musisz zrobić:

Twój xlock będzie teraz działał poprawnie.

6.6 xdm

xdm jest programem, który prezentuje ekran "logujący" dla XWindows. Niektóre systemy startują ten program kiedy system ma się uruchomić w odpowiednim "runlevel-u" (zobacz /etc/inittab).

Jeśli zainstalowałeś przesłaniane hasła, musisz uaktulanić ten program. Na szczęście jest to dość proste:

xdm.tar.gz można ściągnąć z SUNSite Polska.

Ściągnij ten plik i umieść go w /usr/src, potem go rozpakuj: tar -xzvf xdm.tar.gz.

Zmień w pliku /usr/X11R6/lib/X11/config/linux.cf linię

#define HasShadowPasswd NO

na:

#define HasShadowPasswd YES

Skompiluj pliki wykonywalne:

cd /usr/src/xdm
xmkmf
make depend
make

Potem umieść wszystko na swoim miejscu cp xdm /usr/X11R6/bin/.

xdm jest uruchamiany jako "root" tak więc nie musisz zmieniać jego praw dostępu.

6.7 sudo

Program sudo pozwala administratorowi na udostępnianie zwykłym użytkownikom programów, które wymagają uprawnień "root-a". Jest to pożyteczne ponieważ można ograniczać dostęp do konta "root" i jednocześnie pozwalać użytkownikom np. montować urządzenia.

sudo musi przeczytać hasło ponieważ weryfikuje użytkownika kiedy jest uruchamiane. sudo jest uruchamiane z bitem SUID "root" tak więc nie ma problemu z dostępem do pliku /etc/shadow.

Program ten z obsługą haseł przesłanianych dostępny jest na SUNSite Polska pod nazwą sudo-1.2-shadow.tgz.

Uwaga: Podczas instalacji tego programu usunięty zostanie plik /etc/sudoerrs i zastąpiony domyślnym przychodzącym razem z pakietem. Tak więc zrób sobie kopię zapasową jeśli robiłeś tam jakieś zmiany. Albo możesz usunąć linijkę kasującą ten plik z pliku Makefile.

Obsługa przesłanianych haseł jest już ustawiona w pakiecie, tak więc wszystko co trzeba zrobić, to przekompilować go. Po umieszczeniu go w /usr/src napisz:

cd /usr/src
tar -xzvf sudo-1.2-shadow.tgz
cd sudo-1.2-shadow
make all
make install

6.9 pppd (Serwer Protokołu Point-to-Point)

Serwer pppd może zostać tak ustawiony, aby używał różnych typów autentykacji:
Password Authentication Protocol (PAP) i Cryptographic Handshake Authentication Protocol (CHAP). Serwer pppd zwykle czyta łańuchy haseł z /etc/ppp/chap-secrets i/albo z /etc/ppp/pap-secrets. Jeśli używasz tego domyślnego zachowania serwera pppd, to przeinstalowywanie go nie jest konieczne.

pppd pozwala także na użycie parametrów login-u (albo z wiersza poleceń, albo z pliku konfiguracyjnego, albo z pliku z opcjami). Jeśli jest podana jakaś opcja login-u, to pppd użyje pliku /etc/passwd, żeby zweryfikować identyfikator i hasło dla PAP. To oczywiście nie zadziała odkąd nasz plik z hasłami jest przesłaniany. Jeśli używasz pppd-1.2.1d, to będziesz musiał dodać kod do obsługi haseł przesłanianych.

Podany w dalszej części przykład dodaje obsługę dla tej właśnie wersji.

Wersja pppd-2.2.0 ma już w sobie obsługę przesłanianych haseł.


Następna strona Poprzednia strona Spis treści