Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В

..pdf
Скачиваний:
123
Добавлен:
24.05.2014
Размер:
3.66 Mб
Скачать

Глава 14. Sudo – программное обеспечение для делегирования пользователям сервера...

211

Sudo (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 specification

Defaults rootpw

#User privilege specification

#Super-user root can run anything as any user.

root ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands

%wheel ALL=(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. Например, чтобы добавить пользователя drwalbr выполните команду:

[root@drwalbr /]# usermod -G10 drwalbr

Шаг 3

Создайте файл /etc/pam.d/sudo, содержащий следующие строки:

#%PAM-1.0

 

 

 

auth

required

/lib/security/pam_stack.so service=system-auth

account

required

/lib/security/pam_stack.so service=system-auth

password

required

/lib/security/pam_stack.so

service=system-auth

session

required

/lib/security/pam_stack.so

service=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/su

214

Часть 4. Программное обеспечение для ограничения доступа к серверу...

Тестирование Sudo

Шаг 1

Зарегистрируйтесь в системе в качестве пользователя из группы wheel. В рассматриваемом примере членом этой группы является пользователь drwalbr.

Шаг 2

Попытайтесь выполнить какую-нибудь команду от имени пользователя root, например, запустить сервер sshd:

[drwalbr@drwalbr /]$ sudo /etc/init.d/sshd start

Введите пароль пользователя root:

 

Password:Root's_$ecretnoe_Slovo

[ОК]

Starting 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 System Administrator. 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 specification

User_Alias

FULLTIME_USERS = drwalbr,

karlnext

User_Alias

PARTTIME_USERS = hare, fish,

cat

# Cmnd alias specification

 

 

Cmnd_Alias

HTTP = /etc/init.d/httpd,

/bin/vi /etc/httpd/*

Cmnd_Alias

MYSQL = /etc/init.d/mysqld,

/usr/bin/mysql,

/usr/bin/mysqladmin

# Defaults specification Defaults:FULLTIME_USERS rootpw Defaults:FULLTIME_USERS !lecture

#User privilege specification

#Super-user root can run anything as any user.

root

ALL=(ALL) ALL

Глава 14. Sudo – программное обеспечение для делегирования пользователям сервера...

215

#Every users member of the group wheel will be allowed

#to run all commands as super-user root.

%wheel

ALL=(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_Alias

FULLTIME_USERS

=

drwalbr, karlnext

User_Alias

PARTTIME_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_USERS rootpw

требует ввода пароля пользователя root при использовании sudo для пользователей из группы PARTTIME_USERS (по умолчанию sudo требует ввода пароля обычного пользователя).

Строка:

Defaults:FULLTIME_USERS !lecture

отменяет вывод предостерегающих сообщений вида:

We trust you have received the usual lecture from the local System Administrator. 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

Глава15

sXid – программное обеспечение для поиска файлов, в правах доступа к которым установлены SUID и SGID-биты

В этой главе:

1. Ограничения и допущения

2.Пакеты

3.Инсталляция с помощью rpm-пакетов

4.Компиляция, оптимизации и инсталляция sXid

2.Конфигурирование sXid

3.Тестирование sXid

218

Часть 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 search

SEARCH = "/"

# Which subdirectories to exclude from searching EXCLUDE = "/proc /mnt /cdrom /floppy"

#Who to send reports to EMAIL = "root"

#Always send reports, even when there are no changes? ALWAYS_NOTIFY = "no"

#Where to keep interim logs. This will rotate 'x' number of

#times based on KEEP_LOGS below

LOG_FILE = "/var/log/sxid.log"

# How many logs to keep KEEP_LOGS = "5"

220

Часть 4. Программное обеспечение для ограничения доступа к серверу...

#Rotate the logs even when there are no changes? ALWAYS_ROTATE = "no"

#Directories where +s is forbidden (these are searched

#even if not explicitly in SEARCH), EXCLUDE rules apply FORBIDDEN = "/home /tmp"

#Remove (-s) files found in forbidden directories? ENFORCE = "yes"

#This implies ALWAYS_NOTIFY. It will send a full list of

#entries along with the changes

LISTALL = "no"

#Ignore entries for directories in these paths

#(this means that only files will be recorded, you

#can effectively ignore all directory entries by

#setting this to "/"). The default is /home since

#some systems have /home g+s. IGNORE_DIRS = "/home"

#File that contains a list of (each on it's own line)

#other files that sxid should monitor. This is useful

#for files that aren't +s, but relate to system

#integrity (tcpd, inetd, apache...).

#EXTRA_LIST = "/etc/sxid.list"

#Mail program. This changes the default compiled in

#mailer for reports. You only need this if you have changed

#it's location and don't want to recompile sxid.

MAIL_PROG = "/bin/mail"

Шаг 2

Установите права доступа к файлу /etc/sxid.conf:

[root@drwalbr /]# chmod 400 /etc/sxid.conf

Шаг 3

Для ежедневного автоматического запуска sXid создайте файл /etc/cron.daily/sxid:

#!/bin/sh

SXID_OPTS=

if [ -x /usr/bin/sxid ]; then /usr/bin/sxid ${SXID_OPTS}

fi

Шаг 4

Сделайте файл /etc/cron.daily/sxid исполняемым:

[root@drwalbr /]# chmod 510 /etc/cron.daily/sxid

Тестирование sXid

Для проверки работоспособности убедитесь, что sXid обнаруживает в каталоге /home исполняемые файлы, имеющие SUID или SGID-биты, и удаляет SUID или SGID-биты. Для этого выполните следующие операции.

Шаг 1

Создайте в каталоге /home файл worm и сделайте его исполняемым:

[root@drwalbr root]# > cd /home [root@drwalbr home]# > worm [root@drwalbr home]# chmod +x worm [root@drwalbr home]# ls -l worm

-rwxr-xr-x

1 root

root

0 Апр 23 19:02 worm

Соседние файлы в предмете Информатика