Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundację Dzieciom „Zdążyć z Pomocą”.
Więcej informacji na dug.net.pl/pomagamy/.

#1 2014-05-22 09:38:31

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Projekt sysctl

Od jakiegoś czasu analizuje sobie parametry kernela i zbiera mi się ich w pliku sysctl.conf co raz więcej. Postanowiłem sobie poopisywać je i stworzyć taki sysctl.conf z pseudo dokumentacja, która pozwoli na zorientowanie się co tak naprawdę dany parametr robi i za co odpowiada.

Aktualnie mam tam 84 parametry z 1060 dostępnych i celem jest uzbieranie ich tam tak dużo jak się tylko da. Ja zebrałem chyba te najpopularniejsze ale jak nie patrzeć to jest ledwo niecałe 10% całości.

Gdy zabierałem się do pisania tego pliku, nie miałem kompletnie pojęcia o 90% rzeczach, które w nim zawarłem ale po dogłębnej analizie i czytaniu setek linków myślę, że udało mi się w sposób przejrzysty i w miarę zrozumiały opisać pewne zagadnienia. Niemniej jednak mogą być w opisach zawarte bugi lub opis może być kompletnie nietrafiony. Wobec tego czy mógłbym was prosić o przeczytanie tego pliku oraz zastanowienie się czy aby czasem nie nachrzaniłem tam głupot? xD

Oto mój plik syctl.conf : https://github.com/morfikov/sysctl.conf

Druga sprawa to kolejna prośba do was byście wpisali tutaj parametry które zmienialiście w swojej konfiguracji kernela oraz dodali krótki opis dlaczego takiej a nie innej zmiany dokonaliście, ew. wkleili jakiegoś linka opisującego dany problem czy parametr (może być eng lub pl).

Jestem świadom, że istnieje dokumentacja kernela opisująca wszystkie parametry ale część z opisów w ogóle nic nie wnosi, a połowa pewnie i tak nic nie powie większości ludzi po samym ich przeczytaniu. Zauważyłem to nie tylko ja ale i cała masa ludzi szukających informacji na temat danego parametru... Więc ta dokumentacja kernelowska trochę ssie.

Jeśli zgadzacie się z opisem, który widnienie przy powyższych parametrach, możecie wpisać tylko te parametry, które nie widnieją w moim pliku. Jeśli jakiś parametr wymaga dodatkowego opisu lub trzeba coś wyjaśnić i przy tym posiadacie taką informację, również ją dopiszcie. Wszelkie info zgromadzone w tym wątku będzie miało na celu rozbudowanie pliku sysctl.conf  tak by przeciętny człowiek, co sobie go przeczyta, mógł bez problemu skonfigurować sobie kernela według własnego upodobania.

p.s. nie mam mrówek w kompie. xD

Ostatnio edytowany przez morfik (2014-07-07 20:59:25)


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#2 2014-05-22 09:54:51

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Projekt sysctl

Tu masz chyba całą dokumentację sysctl, nawet nie jest tego specjalnie dużo.

Kod:

 16 /usr/src/linux/Documentation/sysctl/00-INDEX
   54 /usr/src/linux/Documentation/sysctl/abi.txt
  300 /usr/src/linux/Documentation/sysctl/fs.txt
  819 /usr/src/linux/Documentation/sysctl/kernel.txt
  254 /usr/src/linux/Documentation/sysctl/net.txt
   75 /usr/src/linux/Documentation/sysctl/README
   20 /usr/src/linux/Documentation/sysctl/sunrpc.txt
  776 /usr/src/linux/Documentation/sysctl/vm.txt
 2314 razem

Milej lektury ;)


.....
# Ukrycie symbolów jądra wraz z ich adresami w pliku /proc/kallsyms przed normalnymi użytkownikami (pomijając
# tych, którzy mają przyznanego CAP_SYSLOG). Utrudnia to trochę exploitom wykorzystywanie podatności jądra na
# dynamiczne odnajdywanie symboli / adresów pamięci, zwłaszcza gdy kompilujemy własny kernel.
# — https://lwn.net/Articles/415603/
kernel.kptr_restrict = 1

Restrykcje dmesg  i kptr przez sysctl?
Średni pomysł, jak jakiś mrówek się wbije na roota, to sobie zmieni,
a praktycznie wszystkie exploity na Linuxa zawsze atakują konto root,
i wykorzystują różne błędy w programach i sterownikach.

Do takich restrykcji lepiej zainteresuj się Grsecurity, to jedyne solidne zabezpieczenie zwiększające bezpieczeństwo powyżej konta root,
na poziomie kernela, do tego morderczo skuteczne, zwłaszcza, kiedy mu się ustawi dodatkowo solidny ACL w /etc/grsec/policy. ;)

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2014-05-22 10:08:59)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3 2014-05-22 10:12:58

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

No to jest to samo co na https://www.kernel.org/doc/Documentation/sysctl/ tyle, że w sporej części wypadków mi te opisy nic nie mówią, tak jak i większości ludzi co szukają info, a niezbyt się jeszcze orientują jak te systemy i sieci dokładnie działają. xD Mógłbyś przejrzeć ten plik co wrzuciłem, bym miał pewność, że wszystko jest w nim ok?

Na Grsecurity przyjdzie czas. xD

Ostatnio edytowany przez morfik (2014-05-22 10:14:42)


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#4 2014-05-22 10:21:47

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Projekt sysctl

Poza siecią niewiele zmieniałem w domyślnych parametrach kernela.
U Ciebie w sieciach widzę dwa potencjalne  błędy:
log_martians = 1
IMHO szkoda czasu, tego zawsze u mnie leciały całe tony, po kilkadziesiąt komunikatów na minutę.
Prościej się zajmować tym, co Firewall przepuścił z netu do kompa jako NEW, a nie tym, co doszło do interfejsu sieciowego.

Tam też masz opóźnianie odpowiedzi ICMP.
Ja u siebie wyłączyłem w ogóle odpowiedzi ICMP echo, a jakbym chciał, żeby komp na cośtam odpowiadał, to bym  ustawił na firewallu, czego ile wpuścić, zamiast certolić się w opóźnianie odpowiedzi.

To tak na szybko. ;)

Ostatnio edytowany przez Jacekalex (2014-05-22 10:22:38)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5 2014-05-22 10:34:26

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

log_martians = 1
IMHO szkoda czasu, tego zawsze u mnie leciały całe tony, po kilkadziesiąt komunikatów na minutę.

U mnie przy włączonej opcji nie ma żadnych zalogowanych pakietów. Ale po tym jak odpalę vpn to faktycznie leci tego pełno, ale przy tym też mi vpn nie działa, a to przez uaktywnienie rp_filter i by mi vpn działał to muszę to wyłączyć, podobnie miałem w tym dhcp dla sieci 10.1.0.0/16 zlokalizowanym pod 192.168.22.22. I dzięki tym logom mogłem namierzyć przyczynę. Może faktycznie jak sra logami to lepiej wyłączyć. Ale jak są problemy z połączeniem to lepiej włączyć. xD

Tam też masz opóźnianie odpowiedzi ICMP.
Ja u siebie wyłączyłem w ogóle odpowiedzi ICMP echo

Tak, tylko tam jest maska odnosząca się do typów komunikatów ICMP i akurat w domyślnych ustawieniach debiana pingi nie są limitowane, a samych komunikatów ICMP jest przecie duuźo. xD


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#6 2014-05-23 09:47:43

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Kilka kolejnych parametrów:

Kod:

# Ta opcja włącza zabijanie procesów w sytuacjach OOM. W przypadku ustawienia tego parametru na 0, kernel 
# przeskanuje procesy i ubije ten co zjada najwięcej zasobów pamięci RAM. Gdy zostanie ustawiona wartość "1",
# kernel ubije tę aplikację, która doprowadziła do stanu OOM, przy czym nie koniecznie musi to był nowo
# uruchomiony program, co może doprowadzić do zabijania pożytecznych procesów, które wcale nie zagrażają
# systemowi. W przypadku posiadania partycji SWAP, dane będą tam zrzucane i żaden proces nie zostanie zabity. 
#  
vm.oom_kill_allocating_task = 0
#
# Włącza zrzut wszystkich zadań w systemie za wyjątkiem wątków kernela w chwili gdy kernel dokonuje zabijania
# żarłocznych procesów (OOM-killing). W tym zrzucie zawarte są informacje takie jak pid, uid, tgid, vm size,
# rss, nr_ptes, swapents, oom_score_adj score, oraz name. Jest to pomocne w celu zidentyfikowania procesu,
# który zainicjował OOM killera. Dodatkowo zostanie wypisanie info dlaczego OOM killer wybrał akurat to
# zadanie do zabicia. Ustawienie tej wartości na "0" spowoduje, że ta informacja nie zostanie wyświetlona. W
# przypadku wielkich systemów z tysiącami procesów, tego typu zrzut może okazać się niezbyt dobrym pomysłem. 
vm.oom_dump_tasks = 1
#
# W przypadku ustawienia "1", kernel spanikuje za każdym razem gdy dojdzie do sytuacji OOM. W przypadku
# gdy proces limituje nody przez mempolicy/cpusets i te nody zaczną wyczerpywać pamięć RAM, sam proces może
# zostać zabity przez OMM killera. W takim przypadku kernel nie spanikuje, bo nody pamięci zostaną uwolnione.
# Gdy ten parametr zostanie ustawiony na "2", kernel spanikuje w każdej sytuacji.
vm.panic_on_oom = 0

Jacekalex -- zastanawia mnie jeszcze opcja net.ipv4.tcp_ecn , która ustawiłeś na 0. Z tego co czytam to raczej powinno być włączone. Mógłbyś napisać czemu to wyłączyłeś?


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#7 2014-05-23 11:18:02

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Projekt sysctl

Jacekalex — zastanawia mnie jeszcze opcja net.ipv4.tcp_ecn...

To znalazłem na necie, jak mi się demon pppd dziwnie sypał, sprawdziłem na 1 sypał się, na 0 chodzi lepiej.

W tutku "Zaawansowany Routing w Linuxie" tłumaczonym przez Bronimskiego masz chyba objaśnienie tego parametru w kontekście neozdrady i innych usług ADSL.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#8 2014-05-27 18:07:41

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Kilka nowych opcji:

Kod:

# W przypadku pewnych sytuacji, kernel napotyka problem, który jest na tyle poważny, że może zachwiać dalszym
# funkcjonowaniem maszyny. W takich przypadkach kernel zwyczajnie przestaje odpowiadać, a cała sytuacja jest
# znana bardziej jako kernel panic. Poniższy parametr określa ilość czasu (w sekundach), po którym system
# zostanie uruchomiony ponownie w przypadku paniki kernela. Jeśli ten parametr zostanie ustawiony na "0",
# reboot zostanie wyłączony.
kernel.panic = 60
#
# Mniej poważne błędy kernela są nazywane "oops". Nie doprowadzają one bezpośrednio do paniki kernela, gdyż
# ten może się obronić ubijając złowrogi proces. W sporej części przypadków "oops", system z mniejszym lub
# większym powodzeniem może pracować dalej. Poniższa opcja, jeśli ustawiona na "0", sprawi, że kernel będzie
# próbował funkcjonować dalej. Jeśli zaś zostanie ustawiona na "1", kernel spanikuje natychmiast. Dodatkowo,
# jeśli parametr panic jest ustawiony na niezerową wartość, system zostanie zresetowany.
kernel.panic_on_oops = 0

# Określa ilość prób wysłania pakietów z ustawioną flagą SYN przy nawiązaniu połączenia zanim kernel się podda
# i zrezygnuje. 
net.ipv4.tcp_syn_retries = 6

# Aktywuje TCP Fast Open, co ma na celu wyeliminowanie początkowego RTT przy nawiązywaniu połączenia podczas
# three-way handshake i tym samym zmniejszenie opóźnień, bo część pakietu SYN będzie zawierać faktyczne dane.
# Może to poprawić wydajność łącza nawet o 40% przy przeglądaniu stron www. Jednak system ten opiera się o
# generowane ciasteczka weryfikujące tożsamość klienta, a to niestety pociąga za sobą lekkie utylizowanie
# procesora. By ten mechanizm zadziałał, aplikacje również muszą mieć zaimplementowaną jego obsługę.
# Jeśli w poniższym parametrze zostanie ustawiona wartość "1", aplikacja będzie mogła żądać ciasteczek i tym
# samym wysyłać dane w pakietach inicjujących połączenie (SYN) ze stacji klienckich. Z kolei wartość "2"
# umożliwia serwerowi generowanie ciasteczek i akceptowanie tego typu żądań zanim three-way handshake zostanie
# ukończone. Wartość "3" włącza funkcjonalność zarówno serwera jak i klienta na danej maszynie. Istnieje także
# możliwość sprecyzowania wartości "4" i w takim wypadku dane mogą być przesyłane bez względu na dostępność
# ciasteczek i w ogóle bez precyzowania tej opcji.
# -- http://lwn.net/Articles/508865/
net.ipv4.tcp_fastopen = 1

Zna się może ktoś na tych opcjach?

Kod:

net.ipv4.route.error_burst = 1250
net.ipv4.route.error_cost = 250
net.ipv4.route.gc_elasticity = 8
net.ipv4.route.gc_interval = 60
net.ipv4.route.gc_min_interval = 0
net.ipv4.route.gc_min_interval_ms = 500
net.ipv4.route.gc_thresh = -1
net.ipv4.route.gc_timeout = 300
net.ipv4.route.max_size = 2147483647
net.ipv4.route.min_adv_mss = 256
net.ipv4.route.min_pmtu = 552
net.ipv4.route.mtu_expires = 600
net.ipv4.route.redirect_load = 5
net.ipv4.route.redirect_number = 9
net.ipv4.route.redirect_silence = 5120

Część z nich opisałem sobie ale ze zrozumieniem pozostałych mam drobne problemy.

Poza tym czy ktoś się orientuje co to jest rhash_entries i jak sprawdzić wartość tego parametru? Niby znalazłem trochę info o nim ale na moim pc w logach nie ma kompletnie wzmianki na temat tego ile on zajmuje, nawet po ustawieniu go w extlinuxie w linijce kernela nie ma żadnych wpisów w logu kernela co by zawierały "route".


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#9 2014-06-02 18:41:02

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Kilka dodatkowych parametrów:

Kod:

# Wartości tylko do odczytu. Określają rodzaj systemu operacyjnego oraz numerek kernela. Dodatkowo "#1" w
# parametrze version oznacza, że jest to pierwszy kernel zbudowany z tego źródła, a data na końcu wskazuje
# kiedy ów kernel został zbudowany.
#kernel.ostype = Linux
#kernel.osrelease = 3.14-1-amd64
#kernel.version = #1 SMP Debian 3.14.4-1 (2014-05-13)

# W przypadku gdy opcja jest ustawiona na inną wartość niż "0" i dojdzie do zdarzenia, które wybudzi dysk ze
# stanu uśpienia, wszystkie dirty pages zostaną automatycznie zapisane na dysk w czasie określonym w tym 
# parametrze. Rozsądne wartości od 2s do 5s. Wartość "0" wyłącza laptop mode.
vm.laptop_mode = 0

# Czasami dysk rozkręca talerze z niewiadomego powodu. Kiedy tego typu sytuacja występuje, można spróbować
# ustalić jej przyczynę przy pomocy parametru block_dump . Zanim się jednak uaktywni tę opcję, trzeba, albo
# wyłączyć logi kernela w syslogu, albo wyłączyć sysloga całkowicie. W przeciwnym wypadku, system się zapętli,
# bo informacje o aktywności dysku zbierane będą przez syslog, a ten je będzie zapisywał na dysk, a to
# wygeneruje więcej informacji o aktywności dysku i tak dalej. Po wyłączeniu sysloga lub ukryciu logów
# kernela, by odczytać informacje, które zostaną pokazane za sprawą block_dump, trzeba posłużyć się dmesg.
#
# Przykładowe logi mogą wyglądać jak poniżej:
# bash(273): READ block 3242 on hda1
# bash(273): dirtied inode 10237 (.bash_history) on hda1
# pdflush(6): WRITE block 3242 on hda1
#
# Mówią one, że proces nazwany bash, o numerze ID 273, odczytał blok 3242 na urządzeniu hda1. Ten sam proces
# zmienił plik .bash_history ale dane z tej zmiany nie zostały jeszcze zapisane na dysk (figurują w pamięci
# RAM jako dirty pages). Z kolei proces pdflush zapisał blok 3242 -- dirty pages zostały zapisane na dysk.
# -- http://www.linuxjournal.com/article/7539
vm.block_dump = 0

# W przypadku ustawienia na "1", napęd wysunie płytkę od razu po wydaniu polecenia umount -- nie trzeba
# dodatkowo korzystać z eject .
dev.cdrom.autoeject = 0

# Jeśli ustawione na wartość "1", napęd zamknie tackę po wydaniu polecenia mount i po chwili zamontuje płytkę.
# W przeciwnym wypadku zostanie zwrócony błąd o niemożliwości zamontowania krążka.
dev.cdrom.autoclose = 1

Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#10 2014-06-03 19:11:27

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Kolejne parametry (w sumie 106):

Kod:

# Zrzut pamięci (coredump) jest to skopiowanie na bardziej wiarygodne medium (dysk twardy) zawartości pamięci
# RAM w chwili gdy dochodzi do jakiegoś zdarzenia, np. poważnego błędu aplikacji. Nazwy, pod jakimi
# zachowywany jest plik, można zmienić, tak samo jak i lokalizację do zapisu tych plików. Obecną konfigurację
# można przetestować przez wydanie poniższych poleceń:
#
#    $ ulimit -c unlimited
#    $ kill -s SIGSEGV $$
#
# Doprowadzą one do segmentation fault shella, w którym zostaną wydane, a sam zrzut będzie zapisany w
# aktualnej lokalizacji powłoki, w której się użytkownik znajdował przed wystąpieniem błędu.
#
# Domyślną nazwą dla pliku ze zrzutem pamięci jest "core". Przez ustawienie poniższego parametru na wartość
# "1", nazwa pliku ulegnie zmianie na "core.PID". Jeśli core_pattern nie zawiera "%p" oraz core_uses_pid jest
# ustawiony na "1", wtedy ".PID" zostanie dołączony do nazwy pliku. Przydatne przy debugowaniu wielowątkowych
# aplikacji.
kernel.core_uses_pid = 0
#
# Poniższy parametr jest używany do sprecyzowania wzoru nazwy dla pliku zawierającego zrzut pamięci. 
# Maksymalna ilość znaków to 128, domyślna wartość to "core". Poniżej są rozpisane parametry, które można
# wykorzystać przy tworzeniu nazwy dla pliku:
#
#    %<NUL>    '%' is dropped
#    %%    output one '%'
#    %p    pid
#    %P    global pid (init PID namespace)
#    %u    uid
#    %g    gid
#    %d    dump mode, matches PR_SET_DUMPABLE and
#        /proc/sys/fs/suid_dumpable
#    %s    signal number
#    %t    UNIX time of dump
#    %h    hostname
#    %e    executable filename (may be shortened)
#    %E    executable path
#    %<OTHER> both are dropped
#
# Jeśli pierwszym znakiem we wzorze jest "|", kernel będzie traktował dalszy jego ciąg jako polecenie do
# wykonania i zrzut pamięci będzie zapisany na standardowe wejście tego programu, a nie do pliku. Można również
# sprecyzować miejsce zapisu pliku przez rozpoczęcie nazwy od "/".
kernel.core_pattern = /tmp/core.%t.%h.%e.%p

# Gdy jakiś plik zostaje otwarty, system operacyjny tworzy wpis reprezentujący ten plik i przechowujący
# informacje na jego temat. Jeśli otwartych zostało 100 plików, będzie istnieć 100 wpisów w kernelu. Te wpisy
# są określane przy pomocy liczb, np. 100, 101, 102, etc. To są deskryptory plików. Ponadto, domyślnie każdy
# proces po uruchomieniu ma otwarte 3 standardowe deskryptory plików: STDIN(0), STDOUT(1), STDERR(2) . To
# jakie deskryptory ma otwarte jakaś aplikacja, można sprawdzić przez:
#
#    $ ls -al  /proc/$(pidof firefox)/fd/
#
# Deskryptor pliku może odnosić się do pliku, katalogu, urządzenia blokowego lub urządzenia znakowego,
# gniazda, kolejki FIFO, nienazwanego strumienia lub dowiązania symbolicznego. 
#
# Wartość w file-max określa maksymalną liczbę deskryptorów plików w systemie. Gdy tablica się zapełni, w logu
# kernela można znaleźć komunikaty typu: "VFS: file-max limit <number> reached" . W takim przypadku trzeba
# zwiększyć wartość tego parametru.
#fs.file-max = 99970
#
# Te trzy wartości określają kolejno liczbę zaalokowanych, liczbę zaalokowanych ale nieużywanych oraz 
# maksymalną liczbę deskryptorów w systemie.
#fs.file-nr = 4384       0       99970
#
# Określa maksymalną liczbę deskryptorów jakie pojedynczy proces może zaalokować.
fs.nr_open = 1048576

# Poniższy parametr określa rozmiar kolejki nasłuchu (listen queue), czyli gniazd w stanie LISTEN . Jest to
# liczba jednoczesnych połączeń, które serwer stara się skonfigurować. Gdy połączenie zostanie ustanowione,
# nie występuje już w tej kolejce i ta liczba nie ma już większego znaczenia. Jeśli kolejka nasłuchu zostanie
# zapełniona w wyniku zbyt wielu jednoczesnych prób połączeń, kolejne próby będą zrzucane. Większe kolejki
# lepiej się sprawują w unikaniu ataków DoS (Denial of Service).
net.core.somaxconn = 128

Ostatnio edytowany przez morfik (2014-06-03 19:21:31)


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#11 2014-06-06 18:22:05

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Dwa nowe parametry:

Kod:

# Włącza ochronę symbolicznych dowiązań w katalogach z ustawionym sticky bitem, np. w /tmp/ . Ustawienie tego
# bitu chroni przed usuwaniem nieswoich plików w danym katalogu ale pojawia się znów problem z eskalacją
# uprawnień, np. w sytuacji gdy proces posiadający uprawnienia root przechodzi przez link symboliczny innego
# użytkownika. Ustawienie wartości "1" zezwoli na podążanie za dowiązaniami tylko w przypadku katalogów bez
# sticky bitu. W przypadku folderów, które mają ustawiony sticky bit, utworzenie symlinku będzie możliwe
# dopiero wtedy gdy UID dowiązania oraz użytkownika przechodzącego będą do siebie pasować, albo właściciel
# katalogu jest taki sam co w przypadku dowiązania. To ustawienie może popsuć część źle napisanych programów
# ale daje gwarancję, że uprawnienia nie zostaną przekroczone za pomocą dowiązań symbolicznych.
fs.protected_symlinks = 1
#
# Ochrona twardych dowiązań działa na podobnej zasadzie co w przypadku dowiązań symbolicznych, z tym, że tutaj
# sytuacja nie ogranicza się tylko do katalogów z ustawionym sticky bitem. W przypadków systemów bez
# oddzielnej partycji na katalog /home/, użytkownik może utworzyć link do /etc/shadow w swoim katalogu
# domowym. W prawdzie właściciel pliku i prawa dostępu są takie same jak były ale jakiś proces z prawami roota
# mógłby przez przypadek zmienić prawa dostępu tego dowiązania, np. w wyniku:
#
# # chown -R morfik:morfik /home/morfik/
#
# Co definitywnie zmieni nie tylko prawa dowiązania ale także prawa do pliku /etc/shadow . Jeśli wartość
# poniższego parametru zostanie ustawiona na "1", tworzenie twardych dowiązań będzie możliwe tylko w przypadku
# plików, do których użytkownik, tworzący owe dowiązanie, posiada prawa zapisu lub jest ich właścicielem.
fs.protected_hardlinks = 1

Do tych co to czytają (o ile są tacy xD) -- orientuje się ktoś jak dokładnie ta eskalacja uprawnień działa? Wchodzi użytkownik A przez link użytkownika B i co dalej? xD


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#12 2014-06-06 19:22:15

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Projekt sysctl

Eskalacja uprawnień wymaga przeważnie binarki z bitem SUID lub SGID,  jedenz ataków polegał, o ile pamiętam, do wyjścia z partycji zamontowanej jako nosuid przez dowiązanie do pliku zawierającego SUID.

Zainteresuj się lepiej wywalaniem bitów SUID na rzecz uprawnień Capabilities.

W Archu nad tym pracują:
Sznurki:
https://wiki.archlinux.org/index.php/DeveloperWiki: … _capabilities
https://github.com/tsgates/arch-wiki-markdown/blob/ … _Of_Setuid.md
https://wiki.archlinux.org/index.php/Capabilities


Pozdro
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#13 2014-06-07 09:12:26

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Kiedyś już się spotkałem z tymi capabibities, kiedyś je sobie obadam ale jeśli dobrze zrozumiałem to to dotyczy tylko linkowania do tych plików z suid i sgid i przy przechodzeniu przez te linki w katalogach ze sticky bitem? To nie jest tak, że jeśli sobie podlinkuje jakiś katalog/plik w tmp, to to zagraża czemuś?

Ostatnio edytowany przez morfik (2014-06-07 09:13:05)


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#14 2014-06-07 14:35:20

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Projekt sysctl

Nie pamiętam dokładnie, jak działały te ataki z symlinkami,
ale były takie dwa, jeden polegał na ataku DOS przez FTP, drugi na linkowaniu binarek z SUID na partycji, z której atakujący nie mógł odpalać podobnych programów, formalnie też nie mail dostępu do komend sudo, su czy mount.

Szczegółów poszukaj na necie, w każdym razie wiem, ze najpierw sprawą zajęli się Developerzy Grsecurity, potem to błyskawicznie trafiło do standardowego kernela.

W Grsecu to są takie opcje:
http://en.wikibooks.org/wiki/Grsecurity/Appendix/Gr … _restrictions

Pozdro
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#15 2014-06-08 13:24:35

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Kilka nowych parametrów + poprawiony 1 bug. xD

Kod:

# Jeśli nie ma odpowiedzi na rozpoczynający połączenie pakiet SYN, kernel spróbuje ponowić zapytanie kilka
# razy i będzie robił to w ciągle zwiększających się odstępach czasu. Ustanawiając limit dla prób połączeń,
# można tym samym ograniczyć czas, przez który kernel będzie próbował ustanowić nowe połączenie. Przykładowo:
#
#     próby  | czas na retransmisje (sekundy)
#    --------|-------------------------------
#        1    |    1
#        2    |    1+2=3
#        3    |    1+2+4=7 
#        4    |    1+2+4+8=15 
#        5    |    1+2+4+8+16=31 
#        6    |    1+2+4+8+16+32=63 
#        7    |    1+2+4+8+16+32+64=127 
#
# Wartość 4 oznacza zatem, że kernel, po nieudanej próbie nawiązania połączenia, spróbuje zretransmitować
# pakiet SYN 4 razy i jeśli żadna z tych prób się nie powiedzie, po czasie 15 sekund kernel odpuści.
net.ipv4.tcp_syn_retries = 4

# Gdy serwer otrzymuje zapytanie SYN, natychmiast wysyła odpowiedź w postaci pakietu z ustawionymi flagami
# SYN i ACK umieszczając jednocześnie to połączenie w kolejce (backlog queue) do chwili aż nadejdzie od
# klienta pakiet z ustawioną flagą ACK . Gdy taki pakiet nie nadchodzi, serwer retransmituje swój pakiet
# SYN-ACK kilka razy, dając tym samym szanse klientowi by spróbował odesłać pakiet ACK jeszcze raz. Jeśli
# adres klienta został zespoofowany, taka odpowiedź nigdy nie nadejdzie i serwer usunie to półotwarte
# połączenie. Połączenia w stanie SYN RCVD zajmują cenne zasoby i by odciążyć trochę maszynę można
# przyśpieszyć proces zamykania tego typu połączeń przez zmianę ilości retransmisji (działa na takiej samej
# zasadzie co tcp_syn_retries). Obniżenie wartości tego parametru w przypadku słabych łącz może powodować
# problemy z połączeniem.
# -- http://www.symantec.com/connect/articles/hardening-tcpip-stack-syn-attacks
net.ipv4.tcp_synack_retries = 2

# Maksymalna ilość osieroconych połączeń. Osierocone połączenie to takie gniazdo, które nie jest powiązane z
# żadnym deskryptorem pliku i żaden deskryptor nie odnosi się do tego gniazda ale samo gniazdo ciągle istnieje
# w pamięci i czeka aż protokół TCP z nim skończy. Każde takie połączenie może zjeść do 64KiB pamięci i tych
# danych nie da rady przenieść do SWAP. Jeśli wartość tego parametru zostanie przekroczona, wszystkie sieroty
# zostaną natychmiast zresetowane i kernel wyrzuci ostrzeżenie. Domyślna wartość zależy od ilości posiadanej
# pamięci RAM. Ilość sierot można sprawdzić przez  /proc/net/sockstat .
# -- http://kaivanov.blogspot.com/2013/01/troubleshooting-out-of-socket-memory.html
#net.ipv4.tcp_max_orphans = 4096
#
# Poniższy parametr określa ile razy próbować zabić osierocone połączenie odpytując przy tym drugą stronę
# zanim połączenie zostanie ubite lokalnie.
#net.ipv4.tcp_orphan_retries = 0

# Ilość stron pamięci (pages) przeznaczonych dla gniazd TCP. Gniazdo TCP identyfikuje konkretne połączenie, 
# w skład którego wchodzi lokalny adres, lokalny port, zdalny adres, zdalny port oraz protokół. By przeliczyć
# strony pamięci na faktyczną jej objętość, trzeba przemnożyć ilość stron przez rozmiar strony. Z kolei
# rozmiar strony można uzyskać porównując dwa parametry z /proc/meminfo oraz /proc/vmstat , przykładowo:
#
#    $ cat /proc/meminfo | egrep -i "Mapped" && cat /proc/vmstat | egrep -i "nr_mapped"
#    Mapped:   67408 kB
#    nr_mapped 16852
#
# Rozmiar strony to  Mapped/nr_mapped , czyli 67408KiB/16852=4KiB albo 4096 bajtów. Poniższe 3 wartości
# określają minimalną, umiarkowaną i maksymalną ilość stron pamięci, które mogą wykorzystać wszystkie gniazda
# TCP łącznie i odpowiadają odpowiednio za 64MiB, 96MiB i 144MiB pamięci. Ten parametr domyślnie jest
# kalkulowany przy starcie systemu w oparciu o ilość dostępnej pamięci RAM. 
net.ipv4.tcp_mem = 16500 24750 37125

Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#16 2014-06-09 22:51:15

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Parę nowych parametrów:

Kod:

# Określa limit dla liczby procesów w systemie -- wątki (threads) są w istocie procesami, które dzielą
# przestrzeń adresową.
#kernel.threads-max = 15725

# Kontroluje liczbę stron, które mogą być jednocześnie odczytane ze SWAP. W przypadku gdy SWAP jest dość
# intensywnie wykorzystywany, zwiększenie wartości tego parametru może polepszyć wydajność.
# 
#   wartość | ilość stron |   rozmiar (bajty)
#  -------------------------------------------
#       0   |       1     | 1*4096  =4096
#       1   |       2     | 2*4096  =8192
#       2   |       4     | 4*4096  =16384
#       3   |       8     | 8*4096  =32768
#       4   |      16     | 16*4096 =65536
#       5   |      32     | 32*4096 =131072
#      ...  |     ....    |       ...
#
# Wartość "10" pozwala na odczyt 4MiB danych.
vm.page-cluster = 10

# Każda maszyna posiada pamięć fizyczną, czyli taką, która jest w niej zainstalowana. Dodatkowo posiada
# również przestrzeń adresową, która to jest mapą możliwej do zaadresowania przez proces pamięci. Nie cały
# jej obszar musi mieć swój odpowiednik w pamięci fizycznej, co jest implementowane za pomocą pamięci
# wirtualnej (SWAP). Dane na temat zaalokowanej pamięci można odczytać z /proc/meminfo :
#
#    $ cat /proc/meminfo | grep -i comm
#    CommitLimit:     2609604 kB
#    Committed_AS:    1404848 kB
#
# -- http://www.win.tue.nl/~aeb/linux/lk/lk-9.html
#
# Gdy ustawione na "0", kernel próbuje ustalić ilość wolnej pamięci w przypadku gdy przestrzeń użytkownika
# prosi o kolejne zasoby. W przypadku ustawienia "1", kernel udaje, że zawsze ma wystarczającą ilość pamięci
# aż do momentu gdy jej faktycznie zabranie. Z kolei wartość "2" sprawi, że kernel będzie próbował nie
# dopuścić do sytuacji, w której możliwe by było zaalokowanie więcej zasobów niż faktycznie jest dostępnych.
# Ta opcja może być bardzo użyteczna, bo wiele programów rezerwuje duże ilości pamięci "na wszelki wypadek",
# a w rzeczywistości z większości tych zasobów wcale nie korzysta.
vm.overcommit_memory = 0
#
# W przypadku gdy overcommit_memory jest ustawiony na "2", przestrzeń adresowa do zaalokowana nie może
# przekroczyć sumy wartości dostępnej ilości SWAP oraz procentu pamięci fizycznej ustawionej w tym parametrze.
# Przykładowo, jeśli system posiada do dyspozycji 1GiB pamięci RAM i do tego SWAP ma 1GiB, po sprecyzowaniu
# w overcommit_ratio wartości "50", możliwe będzie do zaalokowanie 1,5GiB.
#vm.overcommit_kbytes = 0
#vm.overcommit_ratio = 100

# MMAP to wywołanie systemowe nakazujące systemowi operacyjnemu odwzorowanie danej części wybranego pliku w
# przestrzeni adresowej procesu. Operacja ta powoduje, że do obszaru pliku można odnosić się jak do zwykłej
# tablicy bajtów w pamięci, eliminując potrzebę korzystania z dodatkowych wywołań systemowych typu read lub
# write. Z tego powodu często używa się tej operacji do przyspieszenia działania na dużych plikach. Poniższy
# parametr określa przestrzeń adresową, której procesy użytkownika nie będą mogły mapować. W przypadku gdyby
# pozwolono na mapowanie niższych wartości niż 64KiB, mogą wystąpić problemy z bezpieczeństwem systemu znane
# jako "kernel NULL pointer dereference". Ponieważ kernel w wyniku błędu może operować przez przypadek na
# informacjach zawartych na pierwszych kilku stronach pamięci, to procesom w przestrzeni użytkownika nie
# powinno się zezwalać na ich zapisywanie. Może do doprowadzić do powieszenia się systemu lub niestabilnej
# jego pracy. Dodatkowo, jeśli użytkownik jest w stanie mapować niższe porcje przestrzeni adresowej, może
# także zwiększyć swoje uprawnienia. Część aplikacji do poprawnej pracy wymaga by ustawić tutaj "0", jednak 
# pozostałe bez problemu działają przy określeniu wartości "65536".
# -- https://wiki.debian.org/mmap_min_addr
vm.mmap_min_addr = 65536

# W przypadku aplikacji z ustawionym bitem setuid, zrzut pamięci w chwili błędu takiego programu może zawierać
# poufne informacje, co stanowi zagrożenie dla bezpieczeństwa systemu, bo bit setuid na pliku wykonywalnym
# umożliwia uruchomienie danego programu przez innych użytkowników systemu z prawami właściciela tego
# pliku -- jeśli bit setuid jest ustawiony na programie, którego właścicielem jest root, nie ważne kto go
# wykona, ten program będzie się zachowywał tak jakby go uruchomił root. Jeśli ten parametr przyjmie wartość
# "0", to w przypadku gdy dojdzie do jakiejkolwiek zmiany uprawnień podczas startowania aplikacji, nie będzie
# można wykonać zrzutu pamięci. W przypadku "1", wszelkie kwestie bezpieczeństwa są odstawione na boczny
# tor -- ta wartość ma służyć tylko do debugowania. Można także sprecyzować wartość "2", która odpowiada za
# zrzut pamięci binarek, który normalnie by nie miał miejsca ale jeśli core_pattern będzie ścieżką absolutną
# (zaczynającą się znakiem "/") lub potokiem, to zrzut zostanie dokonany.
# -- http://manpages.ubuntu.com/manpages/trusty/pl/man5/core.5.html
fs.suid_dumpable = 0

Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#17 2014-06-10 15:29:38

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Kolejne parametry:

Kod:

# Każda niezerowa wartość wskazuje na fakt, że kernel ma załadowane moduły, które nie są do końca free, 
# prawdopodobnie sterowniki do grafik lub bezprzewodowych kart sieciowych. Deweloperzy kernela nie są zbytnio
# zainteresowani problemami występującymi w takich jądrach, bo nie mogą ustalić przyczyny, której nie można 
# dostrzec z racji, że takie moduły posiadają zamknięty kod. Poniżej znajduje się lista wartości, które mogą
# być dodane do siebie, dając tym samym wynikową wartość:
#
#      1 - A module with a non-GPL license has been loaded, this includes modules with no license. Set by
#          modutils >= 2.4.9 and module-init-tools.
#      2 - A module was force loaded by insmod -f. Set by modutils >= 2.4.9 and module-init-tools.
#      4 - Unsafe SMP processors: SMP with CPUs not designed for SMP.
#      8 - A module was forcibly unloaded from the system by rmmod -f.
#     16 - A hardware machine check error occurred on the system.
#     32 - A bad page was discovered on the system.
#     64 - The user has asked that the system be marked "tainted".  This could be because they are running
#          software that directly modifies the hardware, or for other reasons.
#    128 - The system has died.
#    256 - The ACPI DSDT has been overridden with one supplied by the user instead of using the one provided
#          by the hardware.
#    512 - A kernel warning has occurred.
#   1024 - A module from drivers/staging was loaded.
#   2048 - The system is working around a severe firmware bug.
#   4096 - An out-of-tree module has been loaded.
#   8192 - An unsigned module has been loaded in a kernel supporting module signature.
#
# Dla przykładu wartość "4097" to suma "4096" i "1", czyli załadowany jest moduł na licencji nie GPL. W logu
# kernela można odszukać informacje wskazujące na moduły, które plamią opensourcowe imię kernela:
#
#    # dmesg | grep -i taint
#    [Tue Jun 10 06:19:38 2014] nvidia: module license 'NVIDIA' taints kernel.
#    [Tue Jun 10 06:19:38 2014] Disabling lock debugging due to kernel taint
#
# W tym przypadku winne są sterowniki nvidii. Po ich usunięciu poniższy parametr powinien wskazywać wartość
# "0".
#kernel.tainted = 4097

# Pamięć współdzielona (shared memory) jest to taki obszar pamięci, który może być dzielony przez kilka
# różnych procesów w celu wymiany informacji między tymi procesami. Takie rozwiązanie jest szybsze od
# standardowej międzyprocesowej komunikacji (Inter Process Communication), bo w przypadku gdy pamięć jest
# mapowana na przestrzeń adresową procesu, który współdzieli dany obszar pamięci, kernel nie bierze udziału w
# przekazywaniu danych między procesami, bo nie ma potrzeby by te dane kopiować. Wiele aplikacji korzysta z
# tego ficzeru, np. oprogramowanie od baz danych. By ustalić jakie limity są w systemie, można skorzystać
# z "ipcs -lm", przykładowo:
#
#    $ ipcs -lm
#    ------ Shared Memory Limits --------
#    max number of segments = 4096                       - shmmni
#    max seg size (kbytes) = 65536                       - shmmax
#    max total shared memory (kbytes) = 524288           - shmall
#    min seg size (bytes) = 1                            - minimalny rozmiar segmentu do współdzielenia
#
# Poniższy parametr kontroluje całkowitą ilość pamięci współdzielnej, która może być wykorzystana w tym samym
# czasie na danym systemie. Ten parametr nie jest definiowany w bajtach, tylko w stronach (page) i by uzyskać
# maksymalną ilość pamięci przeznaczoną do współdzielenia, trzeba pomnożyć wartość tego parametru przez
# rozmiar strony, zwykle 4096 bajtów.
kernel.shmall = 131072
#
# Definiuje maksymalny rozmiar dla pojedynczego segmentu współdzielonego (w bajtach).
kernel.shmmax = 67108864
#
# Ten parametr jest używany do ustawienia maksymalnej ilości współdzielonych segmentów w systemie. 
kernel.shmmni = 4096
#
# W przypadku ustawienia shmall na "0", czyli usunięcia górnego limitu dla pamięci współdzielonej, istnieje
# możliwość, że użytkownik systemu będzie w stanie wykorzystać całą dostępną pamięć na segmenty SHM. Jeśli
# tego typu sytuacja wystąpi, OMM-killer nie będzie w stanie uwolnić tych zasobów pamięci. Jednym z dwóch
# rozwiązań jest włączenie opcji shm_rmid_forced , która wymusza aby każdy segment SHM był tworzony z flagą 
# IPC_RMID , która to gwarantuje, że dany segment SHM jest przypisany do co najmniej jednego procesu, co z
# kolei zapewnia, że w przypadku wyczerpania się pamięci, OMM-killer zdoła ubić winny proces, a segment SHM
# zniknie razem z tym procesem. Drugą opcją jest ustawienie górnego limitu dla pamięci współdzielonej w
# parametrze shmall .
# -- http://lwn.net/Articles/595638/
#
# Jeśli poniższy parametr zostanie ustawiony na "1", wszystkie segmenty zostaną przeznaczone do usunięcia, w
# momencie gdy liczba dołączonych do nich procesów spadnie do 0 i co z tym się wiąże, nie da się utworzyć
# współdzielonych segmentów pamięci istniejących niezależnie od procesów. Tego typu zachowanie może popsuć
# pewne aplikacje.
kernel.shm_rmid_forced = 0

# PageCache/BufferCache przyspiesza odczyt plików przez buforowanie danych w pamięci RAM przy pierwszym
# odczycie lub zapisie plików na dysku. Jeśli zajdzie potrzeba by w późniejszym czasie odczytać te dane
# ponownie, to system odwoła się do pamięci RAM zamiast do dysku twardego, co przyśpieszy znacznie operacje na
# plikach. W przypadku gdyby system potrzebował więcej pamięci pod aplikacje, zwolni on część obszaru 
# wykorzystywanego w danej chwili przez PageCache, 
#
# W zależności od sprecyzowanej wartości, część cache w pamięci RAM zostanie wyczyszczona. W przypadku
# przesłania "1", kernel uwolni cały PageCache, w przypadku "2", cache pod inody i dentry zostanie zwolniony.
# Można także przesłać "3", co spowoduje uwolnienie tych dwóch powyżej. Jednak dirty pages nie zostaną w ten
# sposób wyczyszczone. Jeśli istnieje potrzeba wyczyszczenia całego cache, trzeba pierw wydać polecenie sync ,
# po czym przesłać "3" via:
#
#    # echo "3" > /proc/sys/vm/drop_caches
#
# Przy czym ta operacja nie ma trwałego efektu, tj. po wydaniu powyższego polecenia, cache i tak będzie się
# zbierał i by go zwolnić, ponownie trzeba zapisać drop_caches .
vm.drop_caches = 0

Post nie może mieć więcej niż 65535 znaków (64 KB).

hmmm. xD No to nie mam jak zaktualizować tego pliku tutaj. Chyba podlinkuje go z pastebina.

Ostatnio edytowany przez morfik (2014-06-10 15:32:25)


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#18 2014-06-10 17:34:19

thomsson
Dyskutant
Zarejestrowany: 2011-10-26

Re: Projekt sysctl

Na dugu mamy własną wklejkę :p


ilin napisał
"DUG to tez moja mała ojczyzna"

Offline

 

#19 2014-06-11 11:33:40

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

A ograniczenie do ilu znaków? I da radę edytować? I jak to wkleić, bo ja tu nie widzę żadnej wklejki? xD

W każdym razie parę dodatkowych parametrów:

Kod:

# Księgowanie procesów (process accounting) pozwala na szczegółowe monitorowanie pracy systemu. Jądro
# operacyjne, dzięki temu mechanizmowi, jest w stanie zbierać informacje na temat nazwy procesu, jego
# właściciela, grupy czy też czasu stworzenia i usunięcia takiego procesu. Dodatkowo są zbierane informacje na
# temat wykorzystywanych zasobów, takie jak: czas na operacje, zużycie pamięci oraz ilość danych wej/wyj ,
# które proces przesłał. Te dane są zapisywane do pliku w katalogu /var/log/account/ i czytane podczas
# inicjalizacji księgowania. By skorzystać z tego ficzera trzeba mieć kernela z włączoną opcją 
# CONFIG_BSD_PROCESS_ACCT oraz posiadać zainstalowany pakiet "acct".
#
# Środkowa liczba oznacza procent wolnego miejsca w systemie plików (tam gdzie jest /var/log/), poniżej
# którego księgowanie zostanie wstrzymane. Jeżeli ilość wolnego miejsca wzrośnie powyżej procentu wyrażonego
# pierwszą liczbą, księgowanie zostanie wznowione. Ostatnia liczba oznacza częstość sprawdzania wolnego
# miejsca i wyrażona jest w sekundach.
kernel.acct = 4 2 60

# Poniższy parametr definiuje sposób w jaki zachowa się system po wciśnięciu kombinacji ctrl+alt+delete .
# W przypadku ustawienia "0", sygnał jest przesyłany do programu init, co pozwala na zwyczajne zamknięcie
# systemu i niczym się to nie różni od skorzystania z polecenia shutdown . Jeśli się tutaj ustawi "1", system
# zostanie zresetowany tak jakby to się odbyło przez przycisk na obudowie.
kernel.ctrl-alt-del = 0

# Pierwszy parametr zawiera ścieżkę do programu ładującego moduły jądra, drugi zaś umożliwia dynamiczne
# ładowanie i wyładowywanie modułów. Oba parametry są dostępne tylko w przypadku gdy kernel został
# skompilowany z opcją CONFIG_MODULES . W przypadku ustawienia modules_disabled na "1", nie da rady przestawić
# ten opcji z powrotem na "0".
kernel.modprobe = /sbin/modprobe
kernel.modules_disabled = 0

Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#20 2014-06-11 13:35:22

thomsson
Dyskutant
Zarejestrowany: 2011-10-26

Re: Projekt sysctl

http://wklej.dug.net.pl/

Żadnych ograniczeń nie widzę wiec raczej nie ma :)


ilin napisał
"DUG to tez moja mała ojczyzna"

Offline

 

#21 2014-06-11 14:05:06

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Nie da rady edytować, to zostanie na pasebinie. xD


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#22 2014-06-12 17:08:08

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Parę nowych parametrów:

Kod:

# Poniższy parametr ustawia próg limitu dla liczby pseudoterminali (tych odpalanych w graficznym środowisku).
kernel.pty.max = 4096
#
# Wartość tylko do odczytu przechowująca informacje na temat liczby aktualnie otworzonych pseudoterminali.
#kernel.pty.nr = 6

# Kernel generuje logi z wykorzystaniem printk(). Te logi są zapisywane w buforze, do którego to można się
# odwołać przez dmesg. Z kolei rozmiar tego bufora jest kontrolowany przez opcję kernela CONFIG_LOG_BUF_SHIFT ,
# której argumentem jest liczba, np. 17 -- oznacza ona rozmiar bufora 128KiB (2^17). Rozmiar pojedynczej
# wiadomości nie może przekraczać 1KiB. W zależności od ważności komunikatu, te dzielimy na:
#
#   0 KERN_EMERG
#   1 KERN_ALERT
#   2 KERN_CRIT
#   3 KERN_ERR
#   4 KERN_WARNING
#   5 KERN_NOTICE
#   6 KERN_INFO
#   7 KERN_DEBUG
#
# Poniższe cztery wartości odpowiadają za console_loglevel, default_message_loglevel, minimum_console_level
# oraz default_console_loglevel . Komunikaty o priorytecie wyższym (niższy numer) niż console_loglevel będą
# wypisywane na konsoli. Komunikaty bez jawnego priorytetu, będą wypisywane z priorytetem ustawionym w
# default_message_level. Z kolei minimum_console_loglevel jest najmniejszą wartością, którą można ustawić w
# console_loglevel, a default_console_loglevel jest domyślną wartością dla console_loglevel. 
kernel.printk = 1 4 1 7
#
# Precyzuje opóźnienie kolejnych komunikatów (czas w milisekundach). Dozwolone wartości z zakresu od 0 do
# 10000.
kernel.printk_delay = 0
#
# Pierwszy parametr definiuje limit wiadomości, po przekroczeniu którego kernel zaprzestanie wypisywać
# komunikaty przez pewien okres czasu, który zostanie sprecyzowany w printk_ratelimit . Ten mechanizm ma
# zastosowanie jedynie w przypadku wykrycia takich samych wiadomości.
# -- http://lwn.net/Articles/66091/
kernel.printk_ratelimit_burst = 10
kernel.printk_ratelimit = 5

# Fizyczna pamięć jest podzielona na strony (pages), które są podstawową jednostką zarządzania pamięcią. Kiedy
# proces uzyskuje dostęp do wirtualnego adresu, procesor musi przetłumaczyć go na adres fizyczny, a robi to w
# oparciu o tablicę stron, którą dostarcza kernel. Zanim jednak procesor może dokonać takiego tłumaczenia,
# musi on przeprowadzić szereg odczytów pamięci fizycznej i uzyskać informację o tej tablicy. By przyśpieszyć
# ten proces dla późniejszych odwołań do tego samego adresu wirtualnego, procesor zapisuje informacje na temat
# ostatnio odwiedzonych adresów w TLB (Translation Lookaside Buffer). TLB jest to mały ale bardzo szybki cache
# CPU i nietrafianie przy odpytywaniu adresów kosztuje sporo czasu. Jednak można zwiększyć liczbę trafień
# przez zmapowanie większych ciągłych obszarów pamięci fizycznej przez zwiększenie rozmiaru strony, który
# domyślnie wynosi 4KiB. Im większe są strony, tym mniej wpisów zawiera tablica, a im mniej wpisów, tym lepsze
# i szybsze jest zarządzanie pamięcią, bo mniej czasu zajmuje odnalezienie zmapowanego obszaru.
#
# Mechanizm, zwany HugePages, pozwala zwiększyć, w zależności od procesora, rozmiar strony do 2MiB lub nawet
# do 1GiB. Jednak HugePages znajdują zastosowanie tylko w przypadku pamięci współdzielonej i jeśli zostanie
# przeznaczony jakiś obszar pamięci pod HugePages, będzie on prealokowany i nigdy nie zostanie przeniesiony
# do SWAP. Aplikacje, które używają tylko zwykłych stron, nie będą mogły się odwoływać do tego zarezerwowanego
# miejsca w pamięci. Wielkość strony można odczytać z /proc/meminfo lub też przez sprawdzenie flag procesora w
# /proc/cpuinfo -- PSE dla 2MiB i PDPE1GB dla 1GiB. Trzeba także posiadać kernel z włączonymi opcjami
# CONFIG_HUGETLBFS , CONFIG_HUGETLB_PAGE .
#
# Wartość tego parametru określa ilość HugePages w systemie.
#vm.nr_hugepages = 200
#
# Poniższy parametr precyzuje jak bardzo może się rozrosnąć przestrzeń pamięci pod HugePages , w przypadku gdy
# jakiś proces potrzebuje zaalokować więcej pamięci ale limit w nr_hugepages został przekroczony. W przypadku
# gdy ten proces straci apetyt na pamięć, te strony zostaną zwolnione.
#vm.nr_overcommit_hugepages = 50
#
# Wartość tego parametru ustala grupę, w skład której wchodzą użytkownicy mogący korzystać z ficzeru
# HugePages. Grupę pierw trzeba stworzyć i następnie dodać do niej określonych użytkowników. Trzeba także
# utworzyć punkt montowania oraz dodać wpis do /etc/fstab w postaci:
#
#    hugetlbfs /hugepages hugetlbfs mode=1770,gid=5555 0 0
#
#vm.hugetlb_shm_group = 5555

Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#23 2014-06-16 08:41:57

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Kolejna zwrotka (Postęp: 216/1060):

Kod:

# Wartość tego parametru (tylko do odczytu) pokazuje jak dużo entropii maszyna zgromadziła -- jeśli jest niska
# (<1000), kryptograficzne aplikacje mogą się blokować do chwili gdy napłynie więcej entropii, co może np.
# spowolnić działanie sieci bezprzewodowych, w przypadku gdy serwer robi za programowy access point. By
# zwiększyć ilość i jakoś entropii, można posłużyć się demonami entropii np. haveged lub rngd z pakietu
# rng-tools . Ten drugi operuje na sprzętowym generatorze (urządzenie /dev/hwrng ). Daemon haveged generuje,
# co prawda, niewyczerpane ilości entropii ale nie jest do końca jeszcze sprawdzony i najlepiej nie polegać
# tylko na nim, ewentualnie używać go w połączeniu z rngd .
# -- http://lwn.net/Articles/525459/
#kernel.random.entropy_avail = 2730
#
# Ustawiony na sztywno limit dla puli entropii (wartość tylko do odczytu).
#kernel.random.poolsize = 4096
#
# W przypadku gdy licznik entropy_avail spadnie do 0, proces, który żąda entropii z pliku /dev/random zostanie
# uśpiony do momentu aż entropy_avail pokaże wartość ustawioną w tym parametrze.
kernel.random.read_wakeup_threshold = 128
#
# Próg, powyżej którego urządzenie /dev/random zostanie odcięte od dokarmiania nowymi porcjami entropii. 
kernel.random.write_wakeup_threshold = 2048
#
# Wartość tylko do odczytu, generowana za każdym razem gdy jakiś proces spróbuje odczytać ten parametr. Ciąg
# ma formę xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx , gdzie za "x" można podstawić dowolną wartość hexalną, a "y"
# może przyjąć wartości ze zbioru 8,9,A,B. Wartość tego parametru jest przypisywana np. partycjom przy
# tworzeniu nowego systemu plików.
#kernel.random.uuid = bad69d77-d1cc-465c-b5e1-ecd8519e179e
#
# Wartość tylko do odczytu, która jest generowana podczas startu systemu. Przydatne, jeśli ktoś chce wiedzieć
# czy system został zresetowany.
#kernel.random.boot_id = 55e71850-b022-528e-898d-8c7528883822

Ostatnio edytowany przez morfik (2014-06-16 08:43:58)


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

#24 2014-06-16 10:01:09

gnejusz pompejusz
Użytkownik
Zarejestrowany: 2005-09-14
Serwis

Re: Projekt sysctl

Może przerzuć się na githuba?


A poza tym uważam, że Debian jest najlepszy.
ludolfina.pl

Offline

 

#25 2014-06-16 11:51:07

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Projekt sysctl

Że niby ktoś się przyłączy i będzie forkował i commity słał? xD W sumie nawet myślałem o tym.


Morfitronik — blog o linux'ach, głównie Debian, OpenWRT/LEDE i Android

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)