от Никола Антонов(28-06-2003)
рейтинг (5)
[ добре ]
[ зле ]
Вариант за отпечатване
По страниците на нашите форуми много често се обсъждат
въпроси, свързани със сигурността, спори се коя е
най-сигурната дистрибуция, дали Линукс е по-добър от
"Прозоречната ОС" по отношение на сигурността и
т.н. Най-често тези дискусии се разпалват до неистово
крещене и неизслушване на опонента. Обикновено се говори за
мрежова сигурност, настройки на firewalls, преобладават
лозунгите "... sux" и "... rulz"!
Истината е, че когато говорим за сигурност, на първо място
трябва да мислим за локалната сигурност, после за мрежовата,
а при Линукс, като мрежово ориентирана ОС, двата вида
сигурност зависят взаимно един от друг. Айде, аз пак се
разприказвах...
Всъщност, специалистите знаят, няма нищо по-лесно от това
да скапете една система, независимо от дистрибуцията,
достатъчно е да имате достъп до команден ред, дори не е
необходим компилатор, дори не ви трябват и правата на
root.
Вероятно повечето потребители-неспециалисти, като мен, не
си дават сметка, че която и да е Линукс-дистрибуция по
подразбиране не дава достатъчно сигурност, за да спим
спокойно, особено ако предоставяме услуги за отдалечен
достъп на системата си. Тема на този материал е защитата на
системата от локални атаки, целящи претоварване на паметта
или процесора и водещи до безотказно забиване на системата.
Такива атаки, за жалост, се правят много лесно.
Например, достатъчно е да изпълните това в конзолата
(посочено от Г. Чорбаджийски):
:(){ :|:&};:
Резултатът е доста неприятен.
Ето и някои други малки и лоши програмки, които водят
смазващо скапване на любимата ни Линукс-система:
1. Стандартна fork-бомба:
int main()
{
while(1)
fork();
return 0;
}
2. Препълване на паметта:
int main()
{
char *p;
while(1)
p =
(char *)malloc(sizeof(char) * 4096);
return 0;
}
За да се спасим от подобен тип атаки, както и от опасността
сами да изпълним вреден код (някоя недобре скалъпена
програмка на C, например), можем да се възползваме от
услугите на /etc/security/limits.conf. В него можем детайлно
да поставим ограничения за определен тип потребители или за
всички наведнъж (не се прапоръчва) - колко процеса могат да
стартират, колко памет може да използва всеки един процес,
колко процесорно време може да използват и т.н.
Да речем, че имаме два типа потребители - локални (т.е.
доверени, използващи Х) и отдалечени (не им вярваме много, а
и не им се полага да ползват графична среда). Едните
потребители поставяме в групата users, а другите - в групата
notrust.
@users soft
core
10240
@users hard nproc
150
@users hard nofile 1024
@users hard stack 51200
@users hard
memlock 102400
@users hard as 102400
@notrust hard core
5120
@notrust hard rss
15360
@notrust hard data
15360
@notrust hard nproc
15
@notrust - maxlogins 4
@notrust hard
nofile 64
@notrust hard stack
15360
@notrust hard fsize
51200
@notrust hard
memlock 15360
@notrust hard cpu
2
@notrust hard as
25600
По този начин задаваме за членовете на двете групи различни
ограничения за натоварване на системата. Особено важно е
ограничението nproc (брой на процесите). За нормалната
работа с Х е добре да имаме права на над 70 до 100 процеса
(можете да видите някъде, че 40 са достатъчни, но не и ако
ползвате пълноценно Х с Mozilla, OpenOffice, KDE и т.н.).
Какво казнат настройките? В самия файл е описано:
# core - limits the core file
size (KB)
# - data - max data size
(KB)
# - fsize - maximum filesize
(KB)
# - memlock - max
locked-in-memory address space (KB)
# - nofile - max number of open
files
# - rss - max resident set size
(KB)
# - stack - max stack size
(KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of
processes
# - as - address space limit
# - maxlogins - max number of
logins for this user
# - priority - the priority to
run user process with
Трябва да се обърне повече внимание на nproc (броя на
процесите) и maxlogins (максимум логвания). Първото без
второто няма много смисъл.
Да не забравим най-важното - в /etc/pam.d/login трябва да
въведем задължително:
session required pam_limits.so
В противен случай зададените ограничения няма да
работят.
По-подробно по темата:
http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap5sec44.html
http://www.dfdtech.net/linux/security/userlimits/
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam-6.html#ss6.12
http://www.linux-bulgaria.org/lug-bg-list/archive/2003/Feb/0470.html
Благодарности на Г. Чорбаджийски за насоките.
<< Печат на кирилица с LPRNG и български език в LyX | Инсталация и стартиране на debian dosemu paradox4.5 >>
|