LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В
..pdfГлава 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
