Solaris Administrator's Security Guide

Zawartość rozdziału:

  1. Konfiguracja systemu (etap 1)

6. Konfiguracja systemu (etap 1)

Niniejszy rozdział skupia się na konfiguracji systemu z punktu widzenia bezpieczeństwa.


6.1. Konto administratora

Konto root powinno być używane tylko w sytuacjach, w których prawa superużytkownika są niezbędne do wykonania danych czynności administracyjnych. Dlatego też, przed przystąpieniem do dostrajania systemu należy utworzyć grupę oraz konto zwykłego użytkownika, które będzie kontem administratora. Konto to powinno być wykorzystywane m. in. do kompilacji dodatkowego oprogramowania.

# useradd -d /export/home/nazwa_konta -s /bin/jsh \
-c "Imie i nazwisko" -m nazwa_koonta
# passwd nazwa_konta
New password: ********
Re-enter new password: ********
passwd (SYSTEM): passwd successfully changed for nazwa_konta
# chmod 700 /export/home/nazwa_konta

6.2. Konto root


6.3. /etc/shells

Plik /etc/shells jest używany przez oprogramowanie w celu stwierdzenia, czy dana powłoka jest prawidłowa. Plik ten powinien zawierać nazwy wszystkich dostępnych powłok systemowych.

Stosowanie tego typu mechanizmu ma wiele zalet, między innymi niemożliwe jest zalogowanie poprzez ftp, jeżeli nazwa powłoki danego użytkownika nie znajduje się w pliku /etc/shells (co może stanowić kolejną linię ochrony kont systemowych).

A oto i nazwy standardowych powłok, które należy umieścić we wspomnianym pliku:

/bin/sh
/bin/jsh
/bin/ksh
/bin/csh

Prawa dostępu i właściciela pliku należy ustawić następująco:

chmod 644 /etc/shells
chgrp sys /etc/shells

6.4. Wartość umask

Wartość umask należy ustawić na 0022 (lub 0077) przed uruchomieniem demonów.

W tym celu należy stworzyć plik o nazwie /etc/init.d/umask z zawartością:

#!/sbin/sh
umask 0022

ustawić grupę właściciela oraz prawa wykonywania:

chgrp sys /etc/init.d/umask
chmod 755 /etc/init.d/umask

a następnie utworzyć do niego sztywne łącza:

ln /etc/init.d/umask /etc/rc2.d/S00umask
ln /etc/init.d/umask /etc/rcS.d/S00umask

Edycji wymaga również plik /etc/default/login, w którym należy usunąć znak komentarza (#) z linii:

#UMASK=022

oraz wstawić ten znak w linii zawierającej polecenie "umask" w pliku /etc/profile.


6.5. Zmienna PATH

Zmienna PATH powinna zawierać tylko "bezpieczne" ścieżki, czyli takie, do których prawa zapisu ma wyłącznie administrator systemu. Nigdy nie powinna ona zawierać katalogu bieżącego ".".

Optymalnie powinna zawierać minimalną liczbę katalogów do przeszukania, jak np.:

PATH=/usr/bin:/usr/sbin
Ze swojej strony zalecamy jej ustawienie na:
PATH=/usr/bin:/usr/sbin:/usr/ucb:/usr/ccs/bin:/usr/local/bin

Dzięki temu będzie możliwy dostęp bez konieczności podawania ścieżek do poleceń: whereis (/usr/ucb), make (/usr/ccs/bin), gcc (/usr/local/bin) i innych.

Aby ustawić tą zmienną globalnie należy wyedytować następujące pliki:

/etc/default/login
/etc/default/su

Plik /etc/default/login ustawia zmienną PATH przy logowaniu, natomiast /etc/default/su po użyciu polecenia /bin/su.


6.6. /etc/profile

Plik ten jest czytany przy każdorazowym logowaniu do systemu.

Należy dodać do niego następujące linie:

EDITOR=/usr/bin/vi
VISUAL=${EDITOR}
if [ "$LOGNAME" = "root" ]
then PS1="nazwa_hosta# "
else PS1="nazwa_hosta$ "
fi 
export EDITOR VISUAL PS1

Zmienne EDITOR oraz VISUAL są wykorzystywane m. in. przez polecenie crontab. Zmienna PS1 pozwoli nam na wyświetlenie nazwy hosta przed znakiem zachęty, oraz ułatwia rozeznanie, czy pracujemy na zwykłym koncie (wyświetlany jest znak "$"), czy na koncie root (wyświetlany jest znak "#")


6.7. Wartości domyślne w useradd

Ich ustawienie uprości proces dodawania użytkownika oraz pozwoli uniknąć błędów w ich wprowadzaniu. Wartości domyślne polecenia useradd można ustawić tworząc (o ile nie istnieje) plik /usr/sadm/defadduser z następującą zawartością:

defgroup=100
defgname=nazwa_grupy_użytkowników
defparent=/home
defskel=/etc/skel
defshell=/bin/csh
definact=0
defexpire=

Prawa dostępu do pliku należy ustawić następująco:

chmod 644 /usr/sadm/defadduser
chgrp sys /usr/sadm/defadduser

6.8. cron i at


6.9. Plik /etc/ftpusers

Jedną z większych dziur, które znajdują się niejako "standardowo" zaraz po instalacji systemu jest możliwość logowania się jako superużytkownik za pośrednictwem usługi ftp. Dzięki temu potencjalny intruz ma możliwość przeprowadzenia ataku brutalnego na hasło superużytkownika.

Ze swojej strony zalecamy zablokowanie korzystania z ftp dla wszystkich kont systemowych oraz konta root. W tym celu należy stworzyć plik /etc/ftpusers na bazie istniejącego pliku /etc/passwd:

cat /etc/passwd | cut -f1 -d: > /etc/ftpusers

a następnie usunąć z niego nazwy kont, które są uprawnione do korzystania z ftp.


6.10. Blokada plików zaufanych hostów

Poniższe pliki są przeznaczone dla spisu adresów IP "zaufanych" hostów, które mogą uzyskać zdalny dostęp bez podawania hasła.

Ponieważ adres IP może być stosunkowo łatwo sfałszowany, tego typu mechanizm nie powinien być w ogóle używany. Jeżeli jednak usługa taka jest potrzebna (np. ze względów administracyjnych), zalecamy użycie pakietu SSH.

/usr/bin/touch /root/.rhosts /root/.netrc /etc/hosts.equiv
chmod 0 /root/.rhosts /root/.netrc /etc/hosts.equiv

Utworzenie powyższych plików ułatwi monitorowanie zmian dokonywanych w ich zawartości przy pomocy narzędzi typu Tripwire.


6.11. PAM i usługi rlogin oraz rsh

Na wszelki wypadek należy włączyć wymuszanie używania haseł w usługach rlogin oraz rsh. W tym celu w pliku /etc/pam.conf należy wstawić znak "#" (komentarz) przed liniami:

rlogin  auth sufficient /usr/lib/security/pam_rhosts_auth.so.1
rsh     auth required   /usr/lib/security/pam_rhosts_auth.so.1

oraz dopisać następującą pozycję:

rsh     auth required   /usr/lib/security/pam_unix.so.1

6.12. Katalogi /home oraz /vol

Jeżeli wyłączyliśmy usługę AutoFS, wówczas - aby umożliwić użytkownikom korzystanie z katalogu /home - należy usunąć katalog /home oraz wykonać łącze symboliczne pomiędzy /export/home i /home:

rm -rf /home
ln -s /export/home /home

lub wyedytować plik /etc/vfstab i zamiast montować system plików z katalogami użytkowników pod /export/home można użyć punktu montowania /home i wykonać łącze symboliczne pomiędzy /home i /export/home:

rm -rf /export/home
ln -s /home /export/home

AutoFS używa również katalog /net, który w przypadku wyłączenia tej usługi można spokojnie usunąć. Podobnie można postąpić z katalogiem /vol oraz /cdrom, które są również używane przez Volume Management.


6.13. Katalogi /usr/local i /opt

Zanim przystąpimy do instalacji dodatkowego oprogramowania zalecamy wykonanie łącza symbolicznego z katalogu /usr/local do /opt. Dzięki temu partycja /usr może zostać zamontowana w trybie tylko-do-odczytu, a dodatkowe oprogramowanie może być często aktualizowane bez konieczności przemontowywania tej partycji w tryb do zapisu:

ln -s /opt /usr/local

Więcej informacji odnośnie planowania partycji znajduje się w punkcie 2.5 i 9.3.


6.14. Plik /etc/hosts

Plik ten powinien zawierać nazwy oraz adresy IP wszystkich komputerów niezbędnych do prawidłowego działania serwera.

Jako minimum powinien mieć wpisy dotyczące nazwy serwera DNS oraz serwera logów.


6.15. Wyłączenie "STOP-A" (SPARC)

Naciśnięcie kombinacji klawiszy "STOP-A" umożliwia przejście (w przypadku platformy SPARC) do środowiska OpenBoot PROM. Jeżeli nie chcemy, aby każdy operator konsoli mógł w trakcie działania systemu używać tej kombinacji klawiszy, należy dopisać następującą linijkę do pliku /etc/default/kbd:

KEYBOARD_ABORT=disabled

W przypadku uruchomienia audytu poprzez BSM, skrypt startowy automatycznie dokona powyższego wpisu.


6.16. Keyserv

Jeżeli korzystamy z systemu NIS+ należy pamiętać o tym, aby uruchamiać serwer kluczy z opcją "-d".
Uniemożliwi to korzystanie z systemu NIS+ przez użytkownika nobody (czyli nieuwierzytelnionego).

W tym celu w pliku /etc/init.d/rpc należy zmienić linijkę uruchamiającą keyserv (ok. linii 40) z:

/usr/sbin/keyserv >/dev/console 2>&1
na:
/usr/sbin/keyserv -d >/dev/console 2>&

6.17. Bannery powitalne

Kolejnym potencjalnym zagrożeniem wynikającym ze standardowych ustawień systemu jest wyświetlanie numeru wersji systemu każdemu, kto nawiąże połączenie z serwerem np. za pomocą usługi telnet, ftp, smtp itp. Dzięki takiej informacji intruz może - bez posiadania konta na serwerze - rozpocząć atak poprzez uruchamianie znanych do tej wersji systemu exploitów.

Dlatego też dość ważną czynnością administracyjną jest wyeliminowanie z bannerów powitalnych informacji dotyczących nazwy i wersji systemu (w przypadku Solarisa jest to "SunOS 5.7") lub zastąpienie ich przez wartości fałszywe.


Należy także zwrócić uwagę na komunikaty ukazujące się przy połączeniu do innych portów, np. poczty, ssh itp. Większość z tego typu usług umożliwia ukrycie numeru wersji, a dość często ma możliwość całkowitego wyłączenia bannera powitalnego.

Można również utworzyć dodatkowe bannery powitalne, informujące o np. zakazie dostępu do serwera osobom nie posiadającym konta, konsekwencjach płynących z niestosowania się do regulaminu, itp. W tym celu można utworzyć plik /etc/issue i zawrzeć w nim informacje które mają być wyświetlone przed logowaniem w programie telnet. Można również skorzystać z funkcji programów tcpwrapper lub xinetd, które umożliwiają wyświetlanie takich właśnie bannerów.


6.18. /usr/lib/newsyslog

Pewnego udoskonalenia wymaga program /usr/lib/newsyslog oraz /etc/init.d/syslog.
Mianowicie wszystkie polecenia:

chmod 644
należy zmienić na:
chmod 600

Dzięki takiej zmianie tworzone pliki logów będą mogły być czytane tylko przez administratora, a nie jak przed zmianą - przez każdego.


6.19. Blokada logowania CDE przez sieć

Aby zablokować możliwość logowania zdalnym użytkownikom z użyciem środowiska graficznego CDE do pliku /usr/dt/config/Xaccess należy dopisać linijkę:

!*

Standardowo serwer dtlogin nasłuchuje na porcie 177 (TCP) oraz 32777 (UDP) i umożliwia zdalne logowanie z użyciem środowiska graficznego.

Standardowo serwer dtlogin nasłuchuje na porcie 177 (TCP) oraz 32777 (UDP) i umożliwia zdalne logowanie z użyciem środowiska graficznego.


6.20. /etc/rmmount.conf

Jeżeli korzystamy z vold (Volume Management) należy dodać następujące linijki do /etc/rmmount.conf:

mount hsfs -o nosuid
mount ufs -o nosuid

Dzięki tym ustawieniom bity SUID oraz SGID w programach znajdujących się na montowanych dyskach (dyskietkach) przez zwykłych użytkowników będą ignorowane.

W przypadku, gdy nie chcemy współdzielić stacji dyskietek oraz CD-ROM usuwamy następujące linie z sekcji Action:

action cdrom action_filemgr.so
action floppy action_filemgr.so
action rmscsi action_filemgr.so

6.21. /etc/default/sys-suspend

Jeżeli zdecydowaliśmy się na używanie Power Management, wówczas możliwość używania polecenia sys-suspend powinniśmy ograniczyć tylko do konta root. W tym celu w pliku /etc/default/sys-suspend należy linijkę:

PERMS=console-owner
zamienić na:
PERMS=-

6.22. Bezpieczne hasła

Im hasło dłuższe, tym bezpieczniejsze. Dlatego też należy w pliku /etc/default/passwd zmienną PASSLENGTH ustawić na wartośc 8. Spowoduje to wymuszenie na użytkownikach wybierania haseł 8-znakowych.



Poprzedni rozdział Spis treści Następny rozdział