Solaris Administrator's Security Guide

Zawartość rozdziału:

  1. Konfiguracja systemu (etap 2)

9. Konfiguracja systemu (etap 2)

9.1. Prawa dostępu do plików systemowych

Ustawienie bezpieczniejszych praw dostępu do oprogramowania systemowego niż domyślne, umożliwia ściągnięty wcześniej program fix-modes. Przed jego wykonaniem należy zaznajomić się z dołączoną do niego dokumentacją.

Po uruchomieniu programu fix-modes (z opcją '-a') należy dodatkowo zmienić następujące prawa dostępu:

chmod 0500 /usr/sbin/snoop /usr/sbin/devinfo /bin/rdist
chmod o-rx /etc/security
chmod 600 /var/adm/messages /var/adm/vold.log /var/adm/spellhist /var/log/syslog
chmod 755 /var/spool/pkg /var/spool/uucppublic
chmod 400 /sbin/sync
chmod 700 /var/cron
chgrp sys /var/cron

W przypadku katalogu /etc i jego podkatalogów należy odebrać wszystkie prawa zapisu dla grupy:

find /etc ! -type l -perm -g+w -exec chmod g-w {} \;

Jednakże najważniejszym elementem bezpiecznego ustawiania praw dostępu jest zminimalizowanie plików typu SUID i SGID.

Wynalezienie wszystkich plików SUID umożliwia komenda:

find / -type f -perm -u+s 2>/dev/null

natomiast pliki typu SGID możemy znaleźć za pomocą komendy:

find / -type f -perm -g+s 2>/dev/null

Poniżej znajduje się minimalna lista programów typu SUID, które są niezbędne do prawidłowego działania systemu:

/usr/bin/su
/usr/lib/pt_chmod
/usr/lib/utmp_update
/usr/bin/i86/ps
/usr/bin/i86/w
/usr/bin/passwd

Z wszystkich pozostałych plików SUID bit ten możemy usunąć, jednakże należy pamiętać, że ograniczymy w ten sposób elastyczność systemu, gdyż większość z tych poleceń będzie działała jedynie z poziomu konta root. Dokładny opis wszystkich plików SUID/SGID znajduje się w dokumencie "Solaris 7 Setuid/Setgid Files" znajdujący się na stronach University of Waterloo.

Oprócz powyższych, należy również znaleźć wszystkie katalogi i pliki, do których prawo zapisu ma zwykły użytkownik:

find / ! -type l -perm -o+w 2>/dev/null

Koniecznym jest również wynalezienie plików, które nie posiadają właściciela bądź grupy:

find / -type f -nouser 2>/dev/null
find / -type f -nogroup 2>/dev/null

9.2. Konta systemowe

Standardowo nie można się na nie zalogować, ale należy podjąć dodatkowe kroki, aby je zabezpieczyć. W tym celu, we wszystkich kontach o ID poniżej 100 (oprócz konta root) i powyżej 60001 należy zmienić standardowy shell na zainstalowany wcześniej noshell. Dzięki temu wszystkie próby użycia kont systemowych będą odnotowane w systemie.

Nie zalecamy usuwania całkowitego usuwania tych kont, gdyż ich obecność może być wymagana do prawidłowego funkcjonowania systemu (np. konto sys jest używane do uruchamiania accountingu, czy też komendy sar).

Przykład rekordu w pliku /etc/passwd:

noaccess:x:60002:60002:No Access User:/:/sbin/noshell

9.3. Tablica montowań partycji (/etc/vfstab)

Podczas startu systemu, Solaris używa pliku /etc/vfstab do montowania systemu plików. Za pomocą dodatkowych parametrów montowania możemy w znaczny sposób zwiększyć bezpieczeństwo i wydajność naszego systemu.

Przede wszystkim należy ustawić montowanie partycji /usr w trybie tylko-do-odczytu. Partycje: /, /var, /export, /tmp należy montować z parametrem -nosuid, co uniemożliwi uruchamianie z nich programów typu SUID i SGID.

Standardowo Solaris udostępnia katalog /tmp, który wykorzystuje partycję swap. Cała partycja swap jest montowana w /tmp jako system plików tmpfs, dzięki czemu operacje wykonują się na tej partycji bardzo szybko. Niestety wadą takiego rozwiązania jest to, że tmpfs nie umożliwia obsługi kwot dyskowych, przez co użytkownicy bez ograniczenia mogą zapisywać dane, w konsekwencji doprowadzając do zablokowania serwera. Dlatego też do partycji /tmp należy zastosować parametr -size=WIELKOSC. Zastosowanie tego parametru ograniczy korzystanie z pamięci wirtualnej tylko do wartości określonej liczbą WIELKOSC. O ile nie występuje wyraźna potrzeba używania w systemie tego rodzaju mechanizmu, można z niego zrezygnować całkowicie usuwając wpis /tmp z pliku /etc/vfstab i tworząc łącze symboliczne /tmp --> /var/tmp2:

mkdir /var/tmp2
chgrp sys /var/tmp2
chmod 1777 /var/tmp2
rm -rf /tmp
ln -s /var/tmp2 /tmp

Solaris umożliwia dwa tymczasowe katalogi /tmp - opróżniany przy restarcie systemu i /var/tmp, który pozostaje nienaruszony i tak powinno zostać.

Zalecamy również włączenie kwot dyskowych dla wszystkich partycji, na których użytkownicy będą mieli prawo zapisu. Zazwyczaj wystarczające jest zastosowanie kwot dyskowych do partycji /export i /var. Niestety, włączenie tego mechanizmu powoduje obniżenie wydajności operacji wejścia/wyjścia w odniesieniu do partycji, do których został on zastosowany.

Interesujące są również parametry:

logging
umożliwia przyspieszenie operacji dyskowych. Zalecany dla wszystkich systemów plików oprócz partycji swap,
noatime
pozwala na montowanie systemu plików bez uaktualniania struktury i-węzów (i-node) za każdym razem, gdy następuje dostęp do pliku. Ma zastosowanie głównie w przypadku serwerów proxy, www itp

Przykładowy plik /etc/vfstab umieszczamy poniżej:

#device	device	mount	FS	fsck	mount	mount
#to mount	to fsck	point	type	pass	at boot	options
#
#/dev/dsk/c1d0s2	/dev/rdsk/c1d0s2	/usr	ufs	1	yes	-
fd	-	/dev/fd	fd	-	no	-
/proc	-	/proc	proc	-	no	-
/dev/dsk/c0d0s3	-	-	swap	-	no	-
/dev/dsk/c0d0s0	/dev/rdsk/c0d0s0	/	ufs	1	no	nosuid,logging
/dev/dsk/c0d0s6	/dev/rdsk/c0d0s6	/usr	ufs	1	no	ro
/dev/dsk/c0d0s1	/dev/rdsk/c0d0s1	/var	ufs	1	no	nosuid,logging,rq
/dev/dsk/c0d0s7	/dev/rdsk/c0d0s7	/export/home	ufs	2	yes	nosuid,logging,rq
/dev/dsk/c0d0s5	/dev/rdsk/c0d0s5	/opt	ufs	2	yes	logging
swap	-	/tmp	tmpfs	-	yes	size=100M,nosuid



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