Ustawianie limitów w Debianie

ByTomasz Sanecki

Ustawianie limitów w Debianie

Zastanawiasz się jak ograniczyć samowolkę użytkowników w systemie?

Masz dość powolnego działania systemu mimo, że zalogowanych jest tylko 5 użytkowników a maszyna teoretycznie powinna wytrzymać kolejnych minimum 10?

Szukasz prostszego sposobu niż jail?

W standardowo zainstalowanym systemie wiele narzędzi korzysta z PAM - Pluggable Authentication Modules.

Jednym z takich narzędzi jest /etc/security/limits.conf.

Dlaczego warto ustawiać limity

Załóżmy, że nasza maszyna to serwer udostępnia usługi ftp,www oraz konta shellowe.

Dla użytkownikom posiadającym konta shell chcemy pozwolić na maksymalnie 2 równoległe logowania, przydzielimy 1GB przestrzeni dyskowe i 10MB na pojedynczy plik.

Uwaga! * - Przy ustalaniu limitu na rozmiar pliku czy dostępnej przestrzeni dyskowej należy zwrócić baczną uwagę na już istniejące pliki, i na pliki z katalogu /etc/skel, które kopiowane są podczas tworzenia nowych kont.

Uwaga: Limity użytkowników są ważniejsze od limitów grup.

Powiedzmy, że użytkownik janek z powyższego przykładu należy do grupy shell to jedyne ograniczenia jakie będą go dotyczyć to te poprzedzone jego loginem.

Debian limits.conf i limity użytkowników

Podstawowe parametry limits.conf

ParametrZnaczenie
cpumaksymalny dostępny czas procesora, w minutach, dostępny dla pojedynczego procesu - ustawienie tego limitu pozwala zapobiegać sytuacjom gdy użytkownik zechce wykorzystać nasz komputer do kompilacji różnego rodzaju "kolosów".
nprocokreśla ile procesów może uruchomić użytkownik.
prioritypriorytet z jakim będą uruchamiane procesy użytkownika.

Należy zwrócić baczną uwagę na podawane tu ograniczenie.

Ustawienie zbyt małej wartości może doprowadzić do tego, że zalogowanie się na dane konto nie będzie możliwe - mimo iż użytkownik nie zrobił jeszcze nic złego.

Pamiętajmy, że samo zalogowanie się do systemu uruchamia procesy typu login, powłoka, etc.

Priorytet procesów i narzędzia pomocnicze

W systemach Linux/Unix priorytet procesu zawiera się w przedziale [-20,20].

Przy czym im niższa wartość priorytetu tym więcej czasu procesora zostaje przydzielone.

Standardowo procesy użytkowników uruchamiane są z priorytetem równym 0.

Dodatkowo do manipulacji priorytetami służą narzędzia nice oraz renice.

Linux – Jak monitorować procesy za pomocą htop

Logowanie przez SSH i ograniczanie dostępu

W pierwszej kolejności logujemy się do swojego VPS po SSH np. # 1. pozwalamy tylko adresom IP z plikuacl allowed_ips src "/etc/squid/allowed_ips.txt"http_access allow allowed_ips# 2. wskazówkaMożemy wybrać, której metody chcemy używać.

Nieużywane linijki metody 1. lub 2.

Teraz dodamy autoryzację usera i hasło do naszego proxy.

Następnie w zależności od aplikacji z jakiej korzystamy, np. przeglądarki musimy skonfigurować w niej połączenie proxy.

w przypadku Mozilla Firefox dokonujemy tego w ustawieniach, sekcja 'Konfiguracja sieci', połączenie, ręczna konfiguracja serwera proxy.

Squid Proxy i ustawienia dostępu

Serwery proxy pozwalają na przekierowanie swojego ruchu sieciowego przez serwer VPS, pozwala to np. ukryć swój adres IP.

Squid Proxy.

Możemy wybrać, której metody chcemy używać.

Nieużywane linijki metody 1. lub 2.

Instalacja i przygotowanie systemu

Uruchamiamy system z płyty, przechodzimy standardową instalację (hasło root, język, dysk, partycje - tu warto /home zrobić na osobnej partycji) do momentu wyboru pakietów.

W tym momencie (pojawią się grupy pakietów - X Server, SQL Server, Web Server itd.) najlepiej odłączyć sieć, odhaczyć wszystko, aby system nie wgrywał już więcej pakietów.

Przechodzimy do wgrania loadera Grub i na tym kończymy instalację, która zajmuje od 20 minut.

Dodatkowe informacje o uprawnieniach i przywilejach

odrębne jednostki, zwane przywilejami (ang.

wyłączać.

pakietów Berkeley - przyp. tłum.), zob.

użytkownika i grupy (zob.

DAC jest skrótem od ang.

control” - tj. przeszukania - przyp.

ustawianie list kontroli dostępu do plików (ang.

sygnałów (zob.

Zezwala na zmianę statusu lub konfiguracji MAC.

Mandatory Access Control - MAC).

ustawianie typu usługi (ang.

przyp. przywileju CAP_SYS_ADMIN.

użytkownika (zob.

Jeśli obsługiwane są przywileje pliku (tj.

Jeśli przywileje pliku nie są obsługiwane (tj.

nazw użytkownika (zob.

Uwaga: niniejszy przywilej jest przeładowany, zob.

Berkeley - przyp.

bezpieczeństwa (zob.

otwierających pliki (np.

urządzeniu /dev/random (zob.

procesów za pomocą /proc (np.

operacji debugowania (zob.

model-specific register - MSR, zob.

komunikatów POSIX (zob.

Wykonywanie uprzywilejowanych operacji syslog(2).

wartość 1 (zob.

funkcji lub przypisanie funkcji do jednego z istniejących.

którym nowa funkcja najlepiej się odnajdzie.

nową funkcją.

jeśli tylko uda się tego uniknąć!

związanych (zob. powyżej).

przez wiele uprzywilejowanych programów.

pogłębiać tego problemu.

przywileju „jednorazowego”.

(ang.

efektywnych, jakie może przyjąć wątek.

(ang.

całego execve(2).

(ang.

(ang.

wątku.

Tła (ang.

execve(2) nieuprzywilejowanego programu.

bezpośrednio za pomocą prctl(2).

przywilejów tła.

wywołaniu execve(2).

setcap(8).

atrybucie rozszerzonym (zob.

security.capability.

przywileju CAP_SETFCAP.

(ang.

(ang.

(ang.

Nie jest to zbiór, lecz pojedynczy bit.

efektywnym.

pozyska również ten przywilej w swoim zbiorze efektywnym.

wprost dla aplikacji w przestrzeni użytkownika.

przywileje liczby 32.

w wersji 3 mają rozmiar 64 bitów.

egzystencji z przywilejami pliku w wersji 2 tj.

do pliku, był atrybut VFS_CAP_REVISION_2.

powyżej.

2 (tzn.

nie zawiera identyfikatora użytkownika root).

(np.

P'(tła) = (plik jest uprzywilejowany) ?

P'(efektywny) = F(efektywny) ?

P'(dziedziczny) = P(dziedziczny)

[tzn.

P'(ograniczający) = P(ograniczający)

[tzn.

4.3.

atrybutem systemowym dzielonym przez wszystkie wątki.

execve(2).

efektywnym zostaną wyczyszczone.

jest wykonywany.

błędem EPERM.

to wymagane.

pliku, gdy program jest wykonywany przez proces z UID 0 (tj.

binarnego - jak np.

identyfikatora użytkownika na 0 (tj.

użytkownika jest 0 (tj.

jako wszystkie (tzn.

wszystkie przywileje włączone).

równy 0 (tj.

równym 0 (tj.

roota.

0 (tj.

użytkownika równy 0 (tj.

przywilejów pliku są honorowane (tzn.

rozważane jako wszystkie włączone).

który ma również przywileje pliku.

przez program (tzn.

można zyskać podczas execve(2).

przywilejów dozwolonych wątku.

capset(2).

przywilejów dziedzicznych.

ma przywilej CAP_SETPCAP.

wkompilowano przywileje pliku.

CONFIG_SECURITY_FILE_CAPABILITIES.

częścią jądra.

usuwa go ze zbioru dziedzicznego wątku.

wszystkich wątków w systemie.

CAP_SETPCAP.

(zob. capset(2).

zbioru dozwolonego (tzn. roota).

wartości niezerowe.

wątek wszystkich przywilejów dozwolonych.

UID-u na wartość niezerową.

wartościami zera i niezerowymi.

UID-em równym 0 wywołuje execve(2).

„blokujący”.

PR_GET_SECUREBITS prctl(2).

potrzebny jest przywilej CAP_SETPCAP.

potomne.

Tradycyjne (tzn.

binarne plikiem wykonywalnym.

uprzywilejowane mogą przypisywać przywileje do pliku.

użytkownika).

nazw, w celu obsługi takich przypadków.

(tzn. VFS_CAP_REVISION_3).

powyżej.

execve().

/proc/pid/task/TID/status.

procesu.

włączone (1) przywileje nieistniejące.

udostępniamy przez capset(2) i capget(2).

wątku.

dokumentacją.

Public License w wersji 3 lub nowszej.

Praktyczne uwagi o użytkownikach i zasobach

Całość zajmuje ok 600 MB u nas na dysku (sprawdzamy: df -h), przy kilku użytkownikach serwer mieści się w pamięci operacyjnej i nie korzysta z dysku SWAP (polecenie: free).

Ostatni pakiet ddclient wymaga założenia konta na stronie darmowego dostawcy adresów dns np. www.dnsdynamic.org.

gdzie usługa to serwer np.

Serwer postawiony.

tags: #ustawianie #limitow #debian

Popularne posty:

About the author

Tomasz Sanecki administrator

Informatyk z zawodu i zamiłowania. Od 2007r właściciel firmy Perfect Systems. Specjalista do spraw bezpieczeństwa IT, serwisu urządzeń elektronicznych, sieci komputerowych. Prywatnie mąż i ojciec dwójki dzieci. Pasjonat nowoczesnych technologii, motocykli oraz włoskiego espresso.