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

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

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

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

201

*)

echo -n "${msg}"

;;

esac

}

do_rsa1_keygen() {

if ! test -f $RSA1_KEY ; then

echo -n "Generating SSH1 RSA host key: "

if $KEYGEN -q -t rsa1 -f $RSA1_KEY -C '' -N '' >&/dev/null; then

my_success "RSA1 key generation" echo

else

my_failure "RSA1 key generation" echo

exit 1

fi

fi

}

do_rsa_keygen() {

if ! test -f $RSA_KEY ; then

echo -n "Generating SSH2 RSA host key: "

if $KEYGEN -q -t rsa -f $RSA_KEY -C '' -N '' >&/dev/null;

then

my_success "RSA key generation" echo

else

my_failure "RSA key generation" echo

exit 1

fi

fi

}

do_dsa_keygen() {

if ! test -f $DSA_KEY ; then

echo -n "Generating SSH2 DSA host key: "

if $KEYGEN -q -t dsa -f $DSA_KEY -C '' -N '' >&/dev/null;

then

my_success "DSA key generation" echo

else

my_failure "DSA key generation" echo

exit 1

fi

fi

}

do_restart_sanity_check() { sshd -t

RETVAL=$?

if [ ! "$RETVAL" = 0 ]; then

my_failure "Configuration file or keys" echo

exit $RETVAL

fi

}

case "$1" in start)

# Create keys if necessary do_rsa1_keygen; do_rsa_keygen; do_dsa_keygen;

202 Часть 3. Криптографическое программное обеспечение...

echo -n "Starting SSHD: "

if [ ! -f $PID_FILE ] ; then sshd $OPTIONS RETVAL=$?

if [ "$RETVAL" = "0" ] ; then

my_success "sshd startup" "sshd" touch /var/lock/subsys/sshd

else

my_failure "sshd startup" ""

fi

fi echo

;;

stop)

echo -n "Shutting down SSHD: " if [ -f $PID_FILE ] ; then

killproc sshd RETVAL=$?

[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/sshd

fi echo

;;

restart)

do_restart_sanity_check $0 stop

$0 start RETVAL=$?

;;

condrestart)

if [ -f /var/lock/subsys/sshd ] ; then do_restart_sanity_check

$0 stop $0 start RETVAL=$?

fi

;;

status)

status sshd RETVAL=$?

;;

*)

echo "Usage: sshd {start|stop|restart|status|condrestart}"

exit 1

;;

esac

exit $RETVAL

Установите права доступа к файлу, назначьте его владельцем пользователя root и создайте соответствующие ссылки:

[root@drwalbr /]# chmod 700 /etc/init.d/sshd [root@drwalbr /]# chown 0.0 /etc/init.d/sshd [root@drwalbr /]# chkconfig --add sshd [root@drwalbr /]# chkconfig --level 2345 sshd on

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

Для проверки работоспособности OpenSSH попытайтесь установить удаленное соединение между двумя системами. Ниже приведены подробные инструкции по установке соединения по протоколу SSH между двумя системами drwalbr.und (IP-адрес 192.168.1.105) и karlnext.und (IP-адрес 192.168.1.35).

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

203

Для реализации безопасного соединения на каждой из систем пользователь должен создать пару ключей (закрытый и открытый). Открытые ключи переносятся на другую систему (не ту на которой он был создан) и хранятся в домашнем каталоге пользователя в файле /.ssh/authorized_keys.

Шаг 1

Для создания пары ключей на системе drwalbr.und от имени пользователя drwalbr выполни-

те:

[drwalbr@drwalbr drwalbr]$ ssh-keygen -t rsa Generating public/private rsa key pair.

Введите имя каталога, в котором будут сохранены ключи. Рекомендуется имя каталога, предлагаемое по умолчанию - /home/drwalbr/.ssh/id_rsa:

Enter file in which to save the key (/home/drwalbr/.ssh/id_rsa):

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

Enter passphrase (empty for no passphrase): $ecretnoe_Slovo_dr_Walbr

Подтвердите пароль:

Enter same passphrase again: $ecretnoe_Slovo_dr_Walbr

Your identification has been saved in /home/drwalbr/.ssh/id_rsa. Your public key has been saved in /home/drwalbr/.ssh/id_rsa.pub. The key fingerprint is: f0:7f:09:90:5d:71:d4:59:1e:e5:9b:2b:b2:77:a1:ce drwalbr@drwalbr.und

На системе karlnext.und от имени пользователя drwalbr:

[drwalbr@drwalbr drwalbr]$ ssh-keygen -t rsa Generating public/private rsa key pair.

Введите имя каталога, в котором будут сохранены ключи. Рекомендуется имя каталога, предлагаемое по умолчанию - /home/drwalbr/.ssh/id_rsa:

Enter file in which to save the key (/home/drwalbr/.ssh/id_rsa):

Ведите пароль:

Enter passphrase (empty for no passphrase): $ecretnoe_Slovo_Karl_Next

Подтвердите пароль:

Enter same passphrase again: $ecretnoe_Slovo_Karl_Next

Your identification has been saved in /home/drwalbr/.ssh/id_rsa. Your public key has been saved in /home/drwalbr/.ssh/id_rsa.pub. The key fingerprint is:

f0:7f:09:90:5d:71:d4:59:1e:e5:9b:2b:b2:77:a1:ce drwalbr@karlnext.und

Закрытый ключ будет находиться в файле id_rsa, а открытый в файле id_rsa.pub.

ЗАМЕЧАНИЕ В приведенном выше примере описана генерация ключей для протокола SSH версии 2. Если вы по каким либо причинам собираетесь использовать ключи для протокола SSH версии 1, следует использовать команду:

[drwalbr@drwalbr drwalbr]$ ssh-keygen -t rsa1

В этом случае закрытый ключ будет находиться в файле identity, а открытый в - identity.pub.

Шаг 2

Скопируйте открытый ключ id_rsa.pub, находящийся на системе drwalbr.und в каталоге

/home/drwalbr/.ssh/, в файл /home/drwalbr/.ssh/authorized_keys системы karlnext.und.

Шаг 3

Скопируйте открытый ключ id_rsa.pub, находящийся на системе karlnext.und в каталоге

/home/drwalbr/.ssh/, в файл /home/drwalbr/.ssh/authorized_keys системы drwalbr.und.

Копирование ключей может быть осуществлено с помощью электронной почты или в случае, если системы находятся поблизости, с помощью съемных носителей.

Шаг 4

204 Часть 3. Криптографическое программное обеспечение...

На обеих системах зарегистрируйтесь в качестве суперпользователя root и запустите sshd:

[root@drwalbr /]# /etc/init.d/sshd start

Starting SSHD: [ОК]

[root@karlnext

/]# /etc/init.d/sshd start

Starting SSHD:

[ОК]

Шаг 5 Регистрация на удаленной системе осуществляется с помощью команды:

[drwalbr@drwalbr drwalbr]$ ssh name_of_user@name_of_remoute_system.domen

где:

name_of_user – имя пользователя;

name_of_remoute_system.domen – имя удаленной системы, на которой осуществляется регист-

рация.

Попробуйте зарегистрироваться в качестве пользователя drwalbr на удаленной системе karlnext.und с системы drwalbr.und. Для этого от имени пользователя drwalbr на системе drwalbr.und выполните:

[drwalbr@drwalbr drwalbr]$ ssh drwalbr@karlnext.und

Введите пароль, используемый для защиты закрытого ключа на системе drwalbr.und:

Enter passphrase for key '/home/drwalbr/.ssh/id_dsa': $ecretnoe_Slovo_dr_Walbr

Last login: Tue Mar 25 11:52:56 2003 from drwalbr.und [drwalbr@karlnext drwalbr]$

ЗАМЕЧАНИЕ Если вы работаете в локальной сети, в которой нет DNS-сервера, для нормальной работы SSH в файлы /etc/hosts на системе drwalbr.und следует добавить строку:

192.168.1.35 karlnext.und karlnext

а на системе karlnext.und - строку:

192.168.1.105 drwalbr.und drwalbr

Не рекомендуется использовать файлы /etc/hosts для преобразования имен систем в IP-адреса в сетях, содержащих больше 5…10 систем. В этом случае необходимо установить, настроить и запустить DNSсервер.

Использование OpenSSH

Часто OpenSSH используется для копирования файлов с одной системы на другую. Для этого используется утилита scp (Secure Copy), синтаксис которой аналогичен синтаксису широко используемой для копирования файлов на локальной системе утилиты cp.

Для копирования файлов с локальной системы на удаленную наберите:

[drwalbr@drwalbr /]$ scp -p local_dir/local_file name_of_user@name_of_remoute_system.domen:/dir/file

где:

-p – опция, предписывающая сохранять атрибуты копируемого файла; local_dir – путь к каталогу, откуда копируется файл на локальной системе; local_file –.имя копируемого файла на локальной системе; name_of_user – имя пользователя удаленной системы; name_of_remoute_system.domen – имя удаленной системы;

dir – путь к каталогу на удаленной системе, в который копируется файл;

file – имя файла на удаленной системе, в который осуществляется копирование.

Например, если вы хотите скопировать файлы test и test1, находящиеся на системе drwalbr.und в домашнем каталоге пользователя drwalbr, в домашний каталог пользователя drwalbr на системе karnext.und, то на системе drwalbr.und от имени пользователя drwalbr выполните команду:

[drwalbr@drwalbr drwalbr]$ scp -p test* drwalbr@karlnext.und:/home/drwalbr/

Введите пароль, используемый для защиты закрытого ключа на системе drwalbr.und:

Enter passphrase for key '/home/drwalbr/.ssh/id_dsa':

20030325

100%

|*********************|

229

KB

00:00

20030326

100%

|*********************|

246

KB

00:00

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

205

Для копирования файлов с удаленной системы на локальную используйте:

[drwalbr@drwalbr /]$ scp -p name_of_user@name_of_remoute_system.domen:/dir/file local_dir/local_file

Для копирования файлов с одной удаленной системы на другую удаленную систему выполните: drwalbr@drwalbr /]$ scp -p name_of_user@name_of_remoute_system.domen:/dir/file name_of_user_1@name_of_remoute_system_1.domen_1:/dir_1/file_1

где:

name_of_user_1, name_of_remoute_system_1, domen_1, dir_1, file_1 – соответственно, значения параметров name_of_user, name_of_remoute_system, domen, dir, file для удаленной системы, на которую копируется файл.

В некоторых случаях, например, если пользователь забыл пароль или он стал доступен третьим лицам, может потребоваться изменение пароля, используемого для защиты секретного ключа. Для изменения пароля пользователя drwalbr на системе drwalbr выполните:

[drwalbr@drwalbr drwalbr]$ ssh-keygen –p

Введите имя ключа, для которого должен быть изменен пароль, используемый для защиты:

Enter file in which the key is (/home/drwalbr/.ssh/id_rsa):<Enter>

Введите старый пароль:

Enter old passphrase: $ecretnoe_Slovo_dr_Walbr

Введите новый пароль:

Enter new passphrase again: New_$ecretnoe_Slovo

Подтвердите новый пароль:

Enter same passphrase again: New_$ecretnoe_Slovo

Your identification has been saved with the new passphrase

OpenSSH в окружении chroot-jail

Для того, что бы программа OpenSSH выполнялась в окружении chroot-jail – т. е. пользователь, зарегистрировавшийся с помощью клиента ssh, не имел бы доступа на чтение-запись и исполнение файлов за пределами своего пользовательского каталога – необходимо создать среду chroot-jail и установить версию OpenSSH, поддерживающую работу в этой среде. Этот вид установки полезен не только для компаний, предоставляющих услуги хостинга, но и для администраторов, желающих повысить безопасность своей системы. В этом случае, если злоумышленник получит доступ только к аутентификационной информации пользователя он вря ли сможет получить доступ к системе в целом.

Создание окружения chroot-jail

В конечном счете, вы должны создать подобие корневой файловой системы, содержащей все компоненты, необходимые для работы приложений (исполняемые файлы, файлы настроек, библиотеки и т. п.). Для повышения безопасности системы окружение chroot-jail лучше всего создавать на отдельном разделе диска, смонтированном в отдельный каталог, например /chroot. Если вы следовали рекомендациям главы 2, то такой раздел уже существует.

Шаг 1 Создайте нового пользователя:

[root@drwalbr /]# useradd -g users -d /chroot/urbanoff urbanoff

[root@drwalbr /]# passwd urbanoff Changing password for user urbanoff

New UNIX password: Urbanoff's_$ecretnoe_$lovo

Retype new UNIX password: Urbanoff's_$ecretnoe_$lovo passwd: all authentication tokens updated successfully

Шаг 2

Создайте необходимые каталоги в домашнем каталоге пользователя urbanoff:

[root@drwalbr /]# mkdir /chroot/urbanoff/bin

206

Часть 3. Криптографическое программное обеспечение...

[root@drwalbr /]# mkdir /chroot/urbanoff/dev [root@drwalbr /]# mkdir /chroot/urbanoff/etc [root@drwalbr /]# mkdir /chroot/urbanoff/lib [root@drwalbr /]# mkdir /chroot/urbanoff/usr [root@drwalbr /]# mkdir /chroot/urbanoff/usr/bin [root@drwalbr /]# mkdir /chroot/urbanoff/usr/lib [root@drwalbr /]# mkdir /chroot/urbanoff/lib/i686

Шаг 3 Установите права доступа к каталогам:

[root@drwalbr /]# chmod -R 0111 /chroot/urbanoff/*

Шаг 4

Скопируйте минимальный набор программ, необходимый для работы пользователя, например, cp, bash, ls, mkdir, grep, rm, vi, dircolors в соответствующие каталоги:

[root@drwalbr urbanoff]# cp /bin/cp /chroot/urbanoff/bin [root@drwalbr urbanoff]# cp /bin/bash /chroot/urbanoff/bin [root@drwalbr urbanoff]# cp /bin/ls /chroot/urbanoff/bin [root@drwalbr urbanoff]# cp /bin/mkdir /chroot/urbanoff/bin [root@drwalbr urbanoff]# cp /bin/grep /chroot/urbanoff/bin [root@drwalbr urbanoff]# cp /bin/rm /chroot/urbanoff/bin [root@drwalbr urbanoff]# cp /bin/vi /chroot/urbanoff/bin

[root@drwalbr urbanoff]# cp /usr/bin/dircolors /chroot/urbanoff/usr/bin

Шаг 5 Установите права доступа к каталогам:

[root@drwalbr urbanoff]# chmod 0111 /chroot/urbanoff/bin/* [root@drwalbr urbanoff]# chmod 0111 /chroot/urbanoff/usr/bin/*

Шаг 6

В файле /etc/passwd строку:

urbanoff:x:503:100::/chroot/urbanoff:/bin/bash

замените на: urbanoff:x:503:100::/chroot/urbanoff/./:/bin/bash

Шаг 7

Исполняемые файлы в домашнем каталоге пользователя urbanoff используют динамические библиотеки, находящиеся в каталогах /lib и /usr/lib, недоступных пользователю, работающему в окружении chroot-jail. Поэтому необходимо создать локальные копии для всех библиотек, используемых исполняемыми файлами, расположенные в домашнем каталоге пользователя urbanoff. Для нахождения необходимых динамических библиотек используйте команду ldd:

[root@drwalbr urbanoff]# ldd bash cp ls mkdir grep rm vi

/usr/bin/dircolors

bash:

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)

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

207

/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/

Шаг 9

Создайте в домашнем каталоге пользователя urbanoff файл устройства /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_$lovo

bash-2.05a$

Если регистрация прошла удачно, попробуйте «вырваться» из окружения chroot-jail, например, с помощью команды:

bash-2.05a$ cd /

Если вы окажетесь в корневом каталоге chroot-пользователя:

208

Часть 3. Криптографическое программное обеспечение...

bash-2.05a$ ls

bin dev etc lib usr

то все настроено правильно.

Если вы окажетесь в корневом каталоге системы, т. е.: bash-2.05a$ ls

bin

chroot

etc

initrd

lost+found

opt

root

tmp

var

boot

dev

home

lib

mnt

proc

sbin

usr

 

то среда chroot-jail не работает. Скорее всего, вы используете OpenSSН из rpm-пакета, входящего в состав дистрибутива ASPLinux 7.3 (Vostok).

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

209

Часть 4

Программное обеспечение для ограничения доступа

к серверу и обнаружения попыток деструктивного воздействия

210

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

Глава 14

Sudo – программное обеспечение для делегирования пользователям сервера полномочий пользователя root в ограниченном объеме

В этой главе:

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

2.Пакеты

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

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

5.Конфигурирование Sudo

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

7.Более сложная конфигурация Sudo

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