Zawartość rozdziału:
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
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
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:
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
![]() |
![]() |
![]() |