Бруй В.В., Карлов С.В. - Linux-сервер - пошаговые инструкции - инсталляции и настройки (1077321), страница 53
Текст из файла (страница 53)
Поэтому необходимо создать локальные копии для всех библиотек, используемых исполняемыми файлами, расположенные в домашнем каталоге пользователя urbanoff. Для нахождения необходимых динамических библиотек используйте команду ldd:[root@drwalbr urbanoff]# ldd bash cp ls mkdir grep rm vi/usr/bin/dircolorsbash:libtermcap.so.2 => /lib/libtermcap.so.2 (0x4cc1e000)libdl.so.2 => /lib/libdl.so.2 (0x4cc23000)libc.so.6 => /lib/i686/libc.so.6 (0x4cc26000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x4cc07000)cp:libc.so.6 => /lib/i686/libc.so.6 (0x4de49000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x4de32000)ls:libtermcap.so.2 => /lib/libtermcap.so.2 (0x4db5c000)libc.so.6 => /lib/i686/libc.so.6 (0x4db61000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x4db45000)mkdir:libc.so.6 => /lib/i686/libc.so.6 (0x40d9b000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40d84000)grep:libc.so.6 => /lib/i686/libc.so.6 (0x44399000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x44382000)rm:libc.so.6 => /lib/i686/libc.so.6 (0x439ef000)207Глава 13.
OpenSSH – программное обеспечение для безопасного администрирования.../lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x439d8000)vi:libtermcap.so.2 => /lib/libtermcap.so.2 (0x4d667000)libdl.so.2 => /lib/libdl.so.2 (0x4d66c000)libc.so.6 => /lib/i686/libc.so.6 (0x4d66f000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x4d650000)/usr/bin/dircolors:libc.so.6 => /lib/i686/libc.so.6 (0x41203000)/lib/ld-linux.so.2 =>/lib/ld-linux.so.2 (0x411ec000)Скопируйте библиотеки в соответствующие подкаталоги домашнего каталога пользователя urbanoff и удалите из них комментарии:[root@drwalbr /]# cp /lib/libtermcap.so.2 /chroot/urbanoff/lib/[root@drwalbr /]# cp /lib/libd1.so.2 /chroot/urbanoff/lib/[root@drwalbr /]# cp /lib/libc.so.6 /chroot/urbanoff/lib/[root@drwalbr /]# cp /lib/libgcc_s.so.1 /chroot/urbanoff/lib/[root@drwalbr /]# cp /lib/ld-linux.so.2 /chroot/urbanoff/lib/[root@drwalbr /]# cp /lib/i686/libc.so.6 /chroot/urbanoff/lib/i686/[root@drwalbr /]# strip -R .comment /chroot/urbanoff/lib/*Шаг 8Скопируйте файлы настроек в соответствующие подкаталоги домашнего каталога пользователя urbanoff:[root@drwalbr /]# cp /etc/dir_colors /chroot/urbanoff/etc/[root@drwalbr /]# cp /etc/passwd /chroot/urbanoff/etc/Шаг 9urbanoffСоздайтевдомашнемкаталогепользователяфайл/chroot/urbanoff/dev/null и установите права доступа к нему:[root@drwalbr /]# mknod /chroot/urbanoff/dev/null c 1 3[root@dr mknod walbr /]# chmod 666 /chroot/urbanoff/dev/nullустройстваЗАМЕЧАНИЕ Если вы постоянно добавляете новых пользователей в окружение chroot-jail, для упрощения данной операции можно написать скрипт, реализующий шаги 1…9.Компиляция, оптимизация, инсталляция, конфигурирование и тестированиеOpenSSH в среде chroot-jailКомпиляция, оптимизация, инсталляция и конфигурирование OpenSSH в среде chroot-jail осуществляется так же, как и в случае инсталляции в обычной среде, с тем отличием, что используются исходные коды из архива openssh-version-chroot.tar.gz или исходные коды из архива opensshversion.tar.gz, модифицированные с помощью патча osshChroot-version.diff.Если вы используете ядро, собранное из исходных кодов, к которым применен патч Grsecurity, убедитесь, что в настройках ядра опция CONFIG_GRKERNSEC_CHROOT не включена, т.
е. при конфигурировании кодов ядра вы дали отрицательный ответ на вопрос:Chroot jail restrictions (CONFIG_GRKERNSEC_CHROOT) [N/y/?] <n>Тестирование OpenSSН в среде chroot-jail можно провести путем проверки возможности регистрацииchroot-пользователя на удаленной системе с помощью ssh-клиента:[dymatel@urbanoff urbanoff]$ ssh urbanoff@drwalbr.undВведите пароль, используемый для защиты закрытого ключа пользователя urbanoff на системе dymatel.und:Enter passphrase for key '/home/urbanoff/.ssh/id_dsa': Urbanoff's_$ecretnoe_$lovobash-2.05a$Если регистрация прошла удачно, попробуйте «вырваться» из окружения chroot-jail, например, с помощью команды:bash-2.05a$ cd /Если вы окажетесь в корневом каталоге chroot-пользователя:208Часть 3.
Криптографическое программное обеспечение...bash-2.05a$ lsbin dev etc libusrто все настроено правильно.Если вы окажетесь в корневом каталоге системы, т. е.:bash-2.05a$ lsbinchroot etcinitrd lost+found optboot devhome libmntprocrootsbintmpusrvarто среда chroot-jail не работает. Скорее всего, вы используете OpenSSН из rpm-пакета, входящего в составдистрибутива ASPLinux 7.3 (Vostok).Глава 14. Sudo – программное обеспечение для делегирования пользователям сервера...209Часть 4Программное обеспечениедля ограничения доступак серверу и обнаруженияпопыток деструктивноговоздействия210Часть 4. Программное обеспечение для ограничения доступа к серверу...Глава 14Sudo – программное обеспечение для делегирования пользователям сервера полномочий пользователя root в ограниченном объемеВ этой главе:1. Ограничения и допущения2.
Пакеты3. Инсталляция с помощью rpm-пакетов4. Компиляция, оптимизация и инсталляция Sudo5. Конфигурирование Sudo6. Тестирование Sudo7. Более сложная конфигурация SudoГлава 14. Sudo – программное обеспечение для делегирования пользователям сервера...211Sudo (superuser do) – программа, предназначенная для предоставления администратору системы возможности делегирования в ограниченном объеме привилегий пользователя root обычным пользователямсистемы.Возможности Sudo аналогичны возможностям команды su.
Однако Sudo предоставляет более широкие возможности для частичного делегирования полномочий обычным пользователям системы и протоколирования действий пользователя root. Sudo позволяет:• ограничивать номенклатуру команд, выполняемых обычным пользователем с правами root;• регистрировать все команды, выполняемые от имени пользователя root, при этом регистрация может осуществляться как на локальной, так и на удаленной системе, например, центральном сервере;• конфигурационный файл имеет установку, позволяющую использовать утилиту на многих машинах.Программа Sudo может оказаться просто незаменимой в ситуации, когда нужно разрешить доступ справами пользователя root только к некоторым программам.Ограничения и допущенияИсходные коды находятся в каталоге /var/tmp.Все операции выполняются пользователем с учетной записью root.Используется дистрибутив ASPLinux 7.3 (Vostok).Перекомпиляция ядра не требуется.Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистрибутивов Linux, но авторы этого не проверяли.ПакетыПоследующие рекомендации основаны на информации, полученной с домашней страницы проектаSudo по состоянию на 8.04.2003.
Регулярно посещайте домашнюю страницу проектаhttp://www.sudo.ws/ и отслеживайте обновления.Исходные коды Sudo содержатся в архиве sudo-version.tar.gz (последняя доступная на моментнаписания главы стабильная версия sudo-1.6.7p3.tar.gz).Инсталляция с помощью rpm-пакетаЕсли вы предпочитаете использование системы со стандартным ядром и программным обеспечением,установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующиеоперации.ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исходных кодов.Шаг 1Проверьте, установлен ли пакет sudo с помощью следующей команды:[root@drwalbr /]# rpm –iq sudoШаг 2В случае его отсутствия перейдите в каталог, где находится пакет sudo-1.6.5p2-2.i386.rpm.Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в каталог /home/distrib, то выполните команду:[root@drwalbr /]# cd /home/distribи установите:[root@drwalbr distrib]# rpm –ihv sudo-1.6.5p2-2.i386.rpmили обновите пакет:[root@drwalbr distrib]# rpm –Uhv sudo-1.6.5p2-2.i386.rpmПосле установки пакета перейдите к конфигурированию программы Sudo, описанного ниже в соответствующем разделе.212Часть 4.
Программное обеспечение для ограничения доступа к серверу...Компиляция, оптимизация и инсталляция SudoШаг 1Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кодамис использованием процедур, описанных в шаге 1 радела «Компиляция, оптимизация и инсталляцияOpenSSL» главы 12.Шаг 2Распакуйте архив с исходными кодами в каталоге /var/tmp:[root@drwalbr tmp]# tar xzpf sudo-1.6.7p3.tar.gzШаг 3Сконфигурируйте исходные коды Sudo:[root@drwalbr tmp]# cd sudo-1.6.7p3[root@drwalbr sudo-1.6.7p3]# CFLAGS="-O2 -march=i686 -funroll-loops"; export CFLAGS./configure \--prefix=/usr \--sbindir=/usr/sbin \--with-logging=syslog \--with-logfac=authpriv \--with-pam \--with-with-env-editor \--with-ignore-dot \--with-tty-tickets \--disable-root-mailer \--disable-root-sudo \--disable-path-info \--with-mail-if-noperms \--with-mailsubject="*** Sudo SECURITY information for %h ***"При таких параметрах конфигурации Sudo:• регистрация сообщения Sudo будет осуществляться с использованием syslog;• для аутентификации пользователей будут использоваться модули PAM;• для редактирования конфигурационного файла будет использоваться программа visudo;• символы "." в путях к файлам будут игнорироваться;• будут использоваться различные контрольные файлы для каждого пользователя и консоли;• программа электронной почты не будет запускаться с правами пользователя root;• пользователю root будет запрещено выполнять команду sudo;• при попытке запуска обычным пользователем запрещенной команды от имени root, будет выводиться сообщение "command not allowed";• в случае попытки запуска неразрешенных программ обычными пользователями администраторусистемы будет отправляться сообщение по электронной почте.Шаг 4Откомпилируйте исходные коды, проинсталлируйте файлы Sudo, создайте и сохраните список инсталлированных файлов:[root@drwalbr sudo-1.6.7p3]# make[root@drwalbr sudo-1.6.7p3]# find /* > /root/sudo1[root@drwalbr sudo-1.6.7p3]# make install[root@drwalbr sudo-1.6.7p3]# strip /usr/bin/sudo[root@drwalbr sudo-1.6.7p3]# strip /usr/sbin/visudo[root@drwalbr sudo-1.6.7p3]# mkdir -p -m0700 /var/run/sudo[root@drwalbr sudo-1.6.7p3]# find /* > /root/sudo2[root@drwalbr sudo-1.6.7p3]# diff /root/sdudo1 /root/sudo2 >/root/sudo.installed[root@drwalbr sudo-1.6.7p3]# mv /root/sudo.installed/very_reliable_place/sudo.installed.YYYYMMDDШаг 5Удалите архив и каталог с исходными кодами Sudo:[root@drwalbr sudo-1.6.7p3]# cd /var/tmp/Глава 14.
Sudo – программное обеспечение для делегирования пользователям сервера...213[root@drwalbr tmp]# rm -rf sudo-1.6.7p3/[root@drwalbr tmp]# rm -f sudo-1.6.7p3.tar.gzКонфигурирование SudoКонфигурирование Sudo осуществляется с использованием следующих файлов:• главного конфигурационного файла /etc/sudoers;• файла для поддержки модулей PAM /etc/pam.d/sudo.ЗАМЕЧАНИЕ Для редактирования файла /etc/sudoers используйте только visudo. Использованиеvi и других редакторов не допускается.Шаг 1Отредактируйте с помощью visudo файл /etc/sudoers в соответствии с приведенными рекомендациями:# This file MUST be edited with the 'visudo' command as root.# Defaults specificationDefaults rootpw# User privilege specification# Super-user root can run anything as any user.rootALL=(ALL) ALL# Uncomment to allow people in group wheel to run all commands%wheelALL=(ALL) ALLВ этой простейшей конфигурации (более сложные варианты рассмотрены ниже) всем пользователямиз группы wheel разрешается получать права пользователя root в полном объеме.Опция Defaults rootpwуказывает на необходимость при вызове sudo обычным пользователем запроса пароля пользователя root,а не своего пароля.Опция root ALL= (ALL) ALLпозволяет пользователю root выполнять все операции на сервере.Опция %wheel ALL= (ALL) ALLпредоставляет возможность любому пользователю из группы wheel выполнять все команды от именипользователя root.Шаг 2Добавьте в группу wheel (для группы wheel GID=10) пользователей, которым вы хотите разрешитьиспользовать sudo для получения прав пользователя root.