среда, 8 октября 2008 г.

Безопасный способ копировать бэкапы через ssh

Опция "command" файла authorized_keys позволяет указать команду, которая будет выполняться при каждом подключении пользователя по ssh.

Это удобно, когда стоит задача копировать файлы на бэкап-сервер.
Например, если необходимо предоставить доступ только к файлу backup.tgz,
то допишите строку "command='cat backup.tgz'" в самое начало строки с нужным ключом файла authorized_keys.
Указанная команда будет выполняться автоматически при каждом подключении,
вам остается только перенаправить вывод в файл. Если дампов несколько,
то можно написать небольшой скрипт, вида:
#!/bin/sh
read file
case "$file" in
"foo") cat foo.tgz ;;
"bar") cat bar.tgz ;;
esac
Кроме command, в таких случаях не лишним было бы добавить также опции no-port-forwarding, no-pty и все прочие no-*

Кроме как для бэкапов, такое же решение может подойти и для мониторинга.
Когда nagios соединяется к удаленному серверу, чтобы собрать какую-либо статистику, полный ssh-доступ ему не нужен.

В OpenSSH 4.9 появилась возможность помещать отдельных пользователей в изолированное окружение.
Помещение в chroot управляется через директиву ChrootDirectory, задаваемую в конфигурационном файле sshd_config.
Также в sshd был встроен sftp-server и теперь не требует запуска отдельного процесса,
что идеально подходит для использования совместно с директивами ChrootDirectory и ForceCommand internal-sftp.

Например, для ограничения работы пользователя backup только по sftp в пределах директории /chroot:
Match user backup
ForceCommand internal-sftp
ChrootDirectory /chroot
...
#Subsystem sftp /usr/libexec/sftp-server
Subsystem sftp internal-sftp
Пример копирования:
echo "PUT backup.tgz" | sftp backup@backupserver.ru:/backup/
В настоящий момент в sshd не произведена интеграция scp, т.е. при использовании scp,
по-прежнему требуется копирование библиотек в chroot окружение.

А тут можно купить квартиры в рассрочку

Комментариев нет: