Podczas układania partycji należy pamiętać o trybach awaryjnych. Zazwyczaj to pytanie ma postać: „Co się stanie, gdy partycja x zapełni się?” Najdroższy voretaq7 przywołał sytuację z pełną /
przyczyną wielu trudnych do zdiagnozowania problemów. Spójrzmy na bardziej konkretne sytuacje.
Co się stanie, jeśli Twoja partycja przechowująca dzienniki jest pełna? Tracisz dane audytu / raportowania i czasami są wykorzystywane przez atakujących w celu ukrycia ich aktywności. W niektórych przypadkach system nie uwierzytelni nowych użytkowników, jeśli nie będzie mógł zarejestrować ich zdarzenia logowania.
Co dzieje się w systemie opartym na RPM, kiedy /var
jest pełny? Menedżer pakietów nie będzie instalował ani aktualizował pakietów i, w zależności od konfiguracji, może zawieść cicho.
Wypełnianie partycji jest łatwe, szczególnie gdy użytkownik jest w stanie do niej pisać. Dla zabawy, uruchom polecenie i zobacz jak szybko można zrobić dość duży plik: cat /dev/zero > zerofile
.
Wykracza to także poza wypełnianie partycji, gdy umieszczasz lokalizacje w różnych punktach montażu, możesz również dostosować ich opcje montażu.
Co się stanie, gdy /dev/
nie zostanie zamontowany noexec
? Ponieważ /dev
zwykle zakłada się, że jest obsługiwany przez system operacyjny i zawiera tylko urządzenia, był często (a czasem nadal) używany do ukrywania złośliwych programów. Opuszczenie noexec
pozwala uruchamiać przechowywane tam pliki binarne.
Z tych wszystkich i wielu innych powodów wskazówki dotyczące hartowania będą omawiać partycjonowanie jako jeden z pierwszych kroków, które należy wykonać. W rzeczywistości, jeśli budujesz nowy serwer, sposób partycjonowania dysku jest prawie dokładnie pierwszą rzeczą, którą musisz podjąć decyzję, a często najtrudniejszą do późniejszej zmiany. Istnieje grupa o nazwie Center for Internet Security, która produkuje mnóstwo łatwych do odczytania przewodników konfiguracji. Prawdopodobnie możesz znaleźć przewodnik dla konkretnego systemu operacyjnego i zobaczyć wszelkie szczegóły, które mogą powiedzieć.
Jeśli spojrzymy na RedHat Enterprise Linux 6, zalecany schemat partycjonowania jest następujący:
# Mount point Mount options
/tmp nodev,nosuid,noexec
/var
/var/tmp bind (/tmp)
/var/log
/var/log/audit
/home nodev
/dev/shm nodev,nosuid,noexec
Zasadą stojącą za wszystkimi tymi zmianami jest zapobieganie sobie wzajemnego wpływu i / lub ograniczenie tego, co można zrobić na określonej partycji. Weźmy /tmp
na przykład opcje . Mówi to, że nie można tam utworzyć żadnych węzłów urządzeń, nie można stamtąd uruchamiać programów, a bitu set-uid nie można ustawić na niczym. Z samej swojej natury /tmp
jest prawie zawsze dostępny do zapisu na świecie i często jest specjalnym typem systemu plików, który istnieje tylko w pamięci. Oznacza to, że osoba atakująca może użyć go jako łatwego punktu przejściowego do upuszczenia i wykonania złośliwego kodu, a następnie awarii (lub po prostu ponownego uruchomienia) system wyczyści wszystkie dowody. Ponieważ funkcja /tmp
nie wymaga żadnej z tych funkcji, możemy łatwo wyłączyć funkcje i zapobiec takiej sytuacji.
Miejsc składowania dziennika, /var/log
i /var/log/audit
są rzeźbione przy pomocy buforu do nich z wyczerpaniem zasobów. Dodatkowo, skontrolowany może wykonywać pewne specjalne czynności (zwykle w środowiskach o wyższym poziomie bezpieczeństwa), gdy jego magazyn danych zaczyna się zapełniać. Po umieszczeniu go na partycji wykrywanie zasobów działa lepiej.
Aby być bardziej szczegółowym i zacytować mount(8)
, to są dokładnie to, co powyżej używane opcje:
noexec Nie zezwalaj na bezpośrednie wykonywanie żadnych plików binarnych w podłączonym systemie plików. (Do niedawna można było mimo wszystko uruchamiać pliki binarne za pomocą polecenia takiego jak /lib/ld*.so / mnt / binary. Ta sztuczka kończy się niepowodzeniem od Linuksa 2.4.25 / 2.6.0.)
nodev Nie interpretuj znaków ani nie blokuj urządzeń specjalnych w systemie plików.
nosuid Nie zezwalaj na działanie bitów identyfikatora użytkownika lub identyfikatora grupy. (Wydaje się to bezpieczne, ale w rzeczywistości jest raczej niebezpieczne, jeśli masz zainstalowany program suidperl (1).)
Z punktu widzenia bezpieczeństwa są to bardzo dobre opcje do poznania, ponieważ pozwolą ci na ochronę samego systemu plików. W wysoce bezpiecznym środowisku możesz nawet dodać tę noexec
opcję /home
. Utrudni to zwykłemu użytkownikowi pisanie skryptów powłoki do przetwarzania danych, powiedzmy analizowanie plików dziennika, ale także uniemożliwi im wykonanie pliku binarnego, który podniesie uprawnienia.
Należy również pamiętać, że domyślnym katalogiem głównym użytkownika root jest /root
. Oznacza to, że będzie w /
systemie plików, a nie w /home
.
Dokładnie ile dajesz każdej partycji może się znacznie różnić w zależności od obciążenia systemu. Typowy serwer, którym zarządzam, rzadko wymaga interakcji użytkownika i dlatego /home
partycja wcale nie musi być bardzo duża. To samo dotyczy, /var
ponieważ ma tendencję do przechowywania raczej ulotnych danych, które są często tworzone i usuwane. Jednak serwer WWW zwykle używa /var/www
jako swojego placu zabaw, co oznacza, że albo musi on znajdować się na osobnej partycji, albo /var/
musi być duży.
W przeszłości zalecałem następujące wartości podstawowe.
# Mount Point Min Size (MB) Max Size (MB)
/ 4000 8000
/home 1000 4000
/tmp 1000 2000
/var 2000 4000
swap 1000 2000
/var/log/audit 250
Należy je przejrzeć i dostosować zgodnie z celem systemu i sposobem działania środowiska. Poleciłbym również korzystanie z LVM i nie przydzielanie całego dysku. Umożliwi to łatwe powiększanie lub dodawanie partycji, jeśli takie rzeczy są wymagane.