Бруй В.В., Карлов С.В. - Linux-сервер - пошаговые инструкции - инсталляции и настройки (1077321), страница 54
Текст из файла (страница 54)
Например, чтобы добавить пользователяdrwalbr выполните команду:[root@drwalbr /]# usermod -G10 drwalbrШаг 3Создайте файл /etc/pam.d/sudo, содержащий следующие строки:#%PAM-1.0authrequired/lib/security/pam_stack.soaccountrequired/lib/security/pam_stack.sopasswordrequired/lib/security/pam_stack.sosessionrequired/lib/security/pam_stack.soservice=system-authservice=system-authservice=system-authservice=system-authУстановите права доступа к файлу, назначьте его владельцем пользователя root:[root@drwalbr /]# chmod 0640 /etc/pam.d/sudo[root@drwalbr /]# chown 0.0 /etc/pam.d/sudoШаг 4Для исключения возможности получения прав пользователя root обычными пользователями системы удалите SUID-бит программы su:[root@drwalbr /]# chmod 0511 /bin/su214Часть 4.
Программное обеспечение для ограничения доступа к серверу...Тестирование SudoШаг 1Зарегистрируйтесь в системе в качестве пользователя из группы wheel. В рассматриваемом примеречленом этой группы является пользователь drwalbr.Шаг 2Попытайтесь выполнить какую-нибудь команду от имени пользователя root, например, запуститьсервер sshd:[drwalbr@drwalbr /]$ sudo /etc/init.d/sshd startВведите пароль пользователя root:Password:Root's_$ecretnoe_SlovoStarting SSHD:[ОК]Шаг 3Зарегистрируйтесь в системе в качестве пользователя, не являющегося членом группы wheel, например karlnext.Шаг 4Попытайтесь выполнить какую-нибудь команду от имени пользователя root, например, остановитьсервер sshd:[karlnext@drwalbr /]$ sudo /etc/init.d/sshd stopПользователь получит предупреждение о возможности возникновения проблем с администраторомсистемы, необходимости уважительного отношения к правам других пользователей на конфиденциальностьи осмысленном использовании команд:We trust you have received the usual lecture from the local SystemAdministrator.
It usually boils down to these two things:#1) Respect the privacy of others.#2) Think before you type.Даже если пользователь karlnext введет правильный пароль пользователя root:Password: Root's_$ecretnoe_Slovoкоманда не будет выполнена, а karlnext получит сообщение о том, что он не в праве использовать sudo.О попытке неправомерного использования им sudo будет сообщено администратору системы:karlnext is not in the sudoers file. This incident will be reported.Более сложная конфигурация SudoОтредактируйте с помощью visudo файл /etc/sudoers в соответствии с приведенными рекомендациями:# This file MUST be edited with the 'visudo' command as root.# User alias specificationUser_AliasFULLTIME_USERS = drwalbr, karlnextUser_AliasPARTTIME_USERS = hare, fish, cat# Cmnd alias specificationCmnd_AliasHTTP = /etc/init.d/httpd, /bin/vi /etc/httpd/*Cmnd_AliasMYSQL/usr/bin/mysqladmin= /etc/init.d/mysqld, /usr/bin/mysql,# Defaults specificationDefaults:FULLTIME_USERSDefaults:FULLTIME_USERSrootpw!lecture# User privilege specification# Super-user root can run anything as any user.rootALL=(ALL) ALLГлава 14.
Sudo – программное обеспечение для делегирования пользователям сервера...215# Every users member of the group wheel will be allowed# to run all commands as super-user root.%wheelALL=(ALL) ALL# Full time users may run anything but need a password.FULLTIME_USERS ALL = ALL# Part time users may administrate httpd and mysqld servers.PARTTIME_USERS ALL = HTTP, MYSQLВ этом файле строки:User_AliasFULLTIME_USERS = drwalbr, karlnextUser_AliasPARTTIME_USERS = hare, fish, catописывают две группы пользователей FULLTIME_USERS и PARTTIME_USERS. Пользователям из группыFULLTIME_USERS – drwalbr и karlnext – в дальнейшем будет разрешен доступ к серверу с правамиroot в полном объеме.
Пользователям из группы PARTTIME_USERS – hare, fish и cat – в дальнейшембудет предоставлен доступ с правами пользователя root в объеме, достаточном для администрированияWeb-сервера и сервера баз данных MySQL.ЗАМЕЧАНИЕ Пользователи, описанные в разделе User alias specification, используя sudo,смогут получать доступ к системе с правами пользователя root даже, если они не являются членами группыwheel.Строка:root ALL= (ALL) ALLпозволяет пользователю root выполнять все операции на сервере.Строка:%wheel ALL= (ALL) ALLпредоставляет возможность любому пользователю из группы wheel выполнять все команды от именипользователя root.Строка:FULLTIME_USERS ALL = ALLразрешает группе пользователей FULLTIME_USERS(drwalbr, karlnext) доступ к системе с правамипользователя root в полном объеме.Строка:Cmnd_Alias HTTP = /etc/init.d/httpd, /bin/vi /etc/httpd/*описывает команды, которые в дальнейшем будет разрешено выполнять пользователям из группыPARTTIME_USERS для администрирования Web-сервера:/etc/init.d/httpd – запуск и остановка Web-сервера;•/bin/vi /etc/httpd/* – редактора vi, необходимого для редактирования файлов•конфигурации Web-сервера в каталоге /etc/httpd/*.Строка:Cmnd_Alias MySQL = /etc/init.d/mysqld, /usr/bin/mysql,/usr/bin/mysqladminописывает команды, которые в дальнейшем будет разрешено выполнять пользователям из группыPARTTIME_USERS для администрирования сервера баз данных MySQL:• /etc/init.d/mysqld – запуск и остановка сервера баз данных;• /usr/bin/mysql – запуск клиентской программы mysql;• /usr/bin/mysqladmin – запуск программы для администрирования сервера баз данныхmysqladmin.Строка:Defaults:FULLTIME_USERSrootpwтребует ввода пароля пользователя root при использовании sudo для пользователей из группыPARTTIME_USERS (по умолчанию sudo требует ввода пароля обычного пользователя).Строка:Defaults:FULLTIME_USERS!lectureотменяет вывод предостерегающих сообщений вида:We trust you have received the usual lecture from the local SystemAdministrator.
It usually boils down to these two things:216Часть 4. Программное обеспечение для ограничения доступа к серверу...#1) Respect the privacy of others.#2) Think before you type.для пользователей из группы FULLTIME_USERS.Строка:PARTTIME_USERS ALL = HTTP, MYSQLразрешает доступ к системе с правами пользователя root пользователям из группы PARTTIME_USERS(hare, fish и cat) в объеме, достаточном для администрирования Web-сервера и сервера баз данных.Глава 15. sXid – программное обеспечение для поиска файлов...217Глава15sXid – программное обеспечение для поиска файлов, в правах доступа к которымустановлены SUID и SGID-битыВ этой главе:1. Ограничения и допущения2.
Пакеты3. Инсталляция с помощью rpm-пакетов4. Компиляция, оптимизации и инсталляция sXid2. Конфигурирование sXid3. Тестирование sXid218Часть 4. Программное обеспечение для ограничения доступа к серверу...Многим системным программам (которые могут быть запущены любым, в том числе и непривилегированным пользователем) для правильного функционирования необходимы права пользователя root. Одной из таких программ является программа passwd, предназначенная для самостоятельного измененияпользователями системы своего пароля.
Для нормального функционирования этой программе просто необходимо обеспечить доступ для чтения данных и внесения изменений в файл /etc/shadow с правами пользователя root. Поэтому программа, осуществляющая смену пароля пользователя, выполняется не от именизапустившего его пользователя, а от имени суперпользователя (который, естественно, имеет право на записьв файл /etc/shadow).
Для этого у исполняемого файла программы установлен специальный SUID-бит,позволяющий изменять идентификатор пользователя у запущенного процесса. Эта, безусловно, нарушающая исходную модель разграничения доступа, особенность Linux используется большим числом приложений. Поэтому наличие SUID или SGID-битов у исполняемых файлов негативно влияет на безопасность системы.Для поиска программ на файлы, у которых установлены SUID или SGID-биты используется программа sXid. После установки sXid регулярно запускается с помощью cron и сообщает администратору системы по электронной почте обо всех обнаруженных файлах, на которые установлены SUID или SGID-биты.Ограничения и допущенияИсходные коды находятся в каталоге /var/tmp.Все операции выполняются пользователем с учетной записью root.Используется дистрибутив ASPLinux 7.3 (Vostok).Перекомпиляция ядра не требуется.Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистрибутивов Linux, но авторы этого не проверяли.ПакетыПоследующие рекомендации основаны на информации, полученной с домашней страницы проектаsXid по состоянию на 22.04.2003.
Регулярно посещайте домашнюю страницу проектаhttp://www.phunnypharm.org/pub/ и отслеживайте обновления.Исходные коды sXid содержатся в архиве sxid_version.tar.gz (последняя доступная на моментнаписания главы стабильная версия sxid_4.0.2.tar.gz).Инсталляция с помощью rpm-пакетовЕсли вы предпочитаете использование системы со стандартным ядром и программным обеспечением,установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующиеоперации.ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исходных кодов.Шаг 1Проверьте, установлен ли пакет sXid с помощью следующей команды:[root@drwalbr /]# rpm –iq sXidШаг 2В случае его отсутствия перейдите в каталог, где находится пакет sxid-4.0.1-1.asp.i386.rpm.Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в каталог /home/distrib, то выполните команду:[root@drwalbr /]# cd /home/distribи установите:[root@drwalbr distrib]# rpm –ihv sxid-4.0.1-1.asp.i386.rpmили обновите пакет:[root@drwalbr distrib]# rpm –Uhv sxid-4.0.1-1.asp.i386.rpmПосле установки пакета перейдите к конфигурированию программы sXid, подробно описанного ниже.Глава 15.
sXid – программное обеспечение для поиска файлов...219Компиляция, оптимизация и инсталляция sXidШаг 1Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кодамис использованием процедур, описанных в шаге 1 радела «Компиляция, оптимизация и инсталляцияOpenSSL» главы 12.Шаг 2Распакуйте архив с исходными кодами sxid_4.0.2.tar.gz в каталоге /var/tmp, откомпилируйте и проинсталлируйте sXid, создайте список установленных файлов и сохраните его в надежном месте:[root@drwalbr tmp]# tar xzpf sxid_4.0.2.tar.gz[root@drwalbr tmp]# cd sxid-4.0.2[root@drwalbr sxid-4.0.2]# CFLAGS="-O2 -march=i686 -funroll-loops"; export CFLAGS./configure \--prefix=/usr \--sysconfdir=/etc \--mandir=/usr/share/man[root@drwalbr sxid-4.0.2]# find /* > /root/sxid1[root@drwalbr sxid-4.0.2]# make install[root@drwalbr sxid-4.0.2]# find /* > /root/sxid2[root@drwalbr sxid-4.0.2]# diff /root/sxid1 /root/sxid2 >/root/sxid.installed[root@drwalbr sxid-4.0.2]# diff sxid1 sxid2 > sxid.installed[root@drwalbr sxid-4.0.2]# mv sxid.installed /very_reliable_place/sxid.installed.YYYYMMDDШаг 3Удалите каталоги с исходными кодами sXid и архив:[root@drwalbr sxid-4.0.2]# cd /var/tmp/[root@drwalbr tmp]# rm -rf sxid-4.0.2/[root@drwalbr tmp]# rm -f sxid_4.0.2.tar.gzКонфигурирование sXidКонфигурирование sXid осуществляется с помощью двух конфигурационных файлов:• конфигурационного файла sXid /etc/sxid.conf;• файла /etc/cron.daily/sxid для автоматического запуска sXid с помощью crond.Шаг 1Создайте или отредактируйте файл /etc/sxid.conf в соответствии с приведенными ниже рекомендациями:Configuration file for sXid# Note that all directories must be absolute with no trailing /'s# Where to begin our file searchSEARCH = "/"# Which subdirectories to exclude from searchingEXCLUDE = "/proc /mnt /cdrom /floppy"# Who to send reports toEMAIL = "root"# Always send reports, even when there are no changes?ALWAYS_NOTIFY = "no"# Where to keep interim logs.