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ł.)
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
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.
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.
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.
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ć:
xlockmore i umieść w /usr/srctar -xzvf xlockmore-3.7.tgz/usr/X11R6/lib/X11/config/linux.cf linię
#define HasShadowPasswd NOna:
#define HasShadowPasswd YES
cd /usr/src/xlockmore xmkmf make depend make
cp xlock /usr/X11R6/bin/ cp XLock /var/X11R6/lib/app-defaults/ chown root.shadow /usr/X11R6/bin/xlock chmod 2755 /usr/X11R6/bin/xlock chown root.shadow /etc/shadow chmod 640 /etc/shadow
Twój xlock będzie teraz działał poprawnie.
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.
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
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ł.