LINUX-BG Адрес : http://www.linux-bg.org |
Повече сигурност с pam_limits |
От: Никола Антонов Публикувана на: 28-06-2003 Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=352271146 |
По страниците на нашите форуми много често се обсъждат въпроси, свързани със сигурността, спори се коя е най-сигурната дистрибуция, дали Линукс е по-добър от "Прозоречната ОС" по отношение на сигурността и т.н. Най-често тези дискусии се разпалват до неистово крещене и неизслушване на опонента. Обикновено се говори за мрежова сигурност, настройки на 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 >> |
Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук,
но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора,
както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.
All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
|