rsync без шифрования/с легким шифрованием, критичный sshd_config

Вопрос или проблема

У меня есть “HDD VPS” с Debian bullseye, много места для хранения, но не много вычислительной мощности. FTP с этого дискового пространства работает на скорости 10-12 Мб/с (ограничено скоростью чтения HDD), но rsync по SSH работает на скорости ~2 Мб/с, явно ограничено процессором. Поэтому я хочу включить отсутствие шифрования или легкое шифрование (arcfour, я полагаю). Данные не конфиденциальны, но я предпочел бы не полагаться на FTP или RSH из-за паролей в открытом виде.

Ответы на stackexchange указывают на добавление строки Ciphers в sshd_config с такими опциями, как none и arcfour256. Однако мой единственный доступ к этому серверу осуществляется через SSH. Поэтому, если я ошибусь в sshd_config, я полностью заблокируюсь из сервера.

Я вижу несколько возможных выходов из этого, но не знаю, как реализовать ни одно из них; другие предложения тоже будут очень кстати.

  • Как мне протестировать, что мое изменение в sshd_config не сделает sshd недоступным? (Кроме как воспроизвести конфигурацию в локальной ВМ). Также были бы полезны примеры точных строк Ciphers, так как в файле /etc/ssh/sshd_config на сервере их нет.

  • Существует ли способ заставить rsync работать, запустив удаленный rsync через ssh (так что, все еще используя SSH для аутентификации), но с использованием нешифрованного протокола с удаленным rsync и не зашифрованного SSH-канала?

Для справки, вывод ssh -vv:

debug2: ciphers ctos: [email protected],[email protected],aes256-ctr,[email protected],aes128-ctr
debug2: ciphers stoc: [email protected],[email protected],aes256-ctr,[email protected],aes128-ctr

Вы можете запустить rsync --daemon на удаленном сервере. Это принимает данные только без шифрования. Вы все равно можете попробовать добавить сжатие, чтобы посмотреть, станет ли быстрее. Есть необязательная аутентификация пользователя и пароля, которая использует слабое основанное на MD4 128-битное управление ответом.

Вы настраиваете, на каком порту сервер слушает, и какие части файловой системы могут быть записаны или прочитаны. rsync --daemon может работать от имени root или от имени обычного пользователя для более ограниченного доступа. Часто одноразовый rsync --daemon запускается из ssh-входа, унаследовав ssh-соединение, но это не то, что вам нужно. Просто избегайте добавления опции --server, которая указывает rsync, что он должен продолжать через ssh-соединение.

Смотрите man rsyncd.conf и разделы справки по rsync о РЕЖИМЕ ДАЕМОНА.

Существует ли способ заставить rsync работать, запустив удаленный rsync через ssh (так что, все еще используя SSH для аутентификации), но с использованием нешифрованного протокола с удаленным rsync и не зашифрованного SSH-канала?

Шифрование защищает от атаки “человек посередине”. Если вы думаете, что ваша оболочка заслуживает шифрования (и я бы с этим на 100% согласился), то и протокол rsync также, потому что, очевидно, кто-то, использующий функцию передачи протокола rsync в направлении, которое помещает их файлы на ваш сервер в атаке MITM, получает произвольный доступ (например, они могут изменить ваш ~/.ssh/authorized_keys. Игра окончена.).

Таким образом, отсутствие шифрования или слабое шифрование не являются вариантом. К счастью, шифрование теперь не так уж и дорого. Ваш опыт может отличаться – действительно есть VPS с недостаточной вычислительной мощностью – но, по моему опыту, часть сжатия часто является тем, что ограничивает вашу скорость передачи. Вам может быть полезно проверить --compress-choice в справке по вашему rsync (и если ваша версия rsync этого не поддерживает, возможно, стоит попробовать `ssh -o Compression=no yourhost ‘sh -c ‘tar cf – file1 file2… | zstd -1’ | zstd -d | tar xf -‘ или что-то подобное, чтобы сжать вручную на лету, а не через SSH.

Ответ или решение

Оптимизация rsync без шифрования и настройка sshd_config

Учитывая описанные вами ограничения и требования по производительности, давайте исследуем возможные решения для улучшения скорости передачи данных с использованием rsync, обращая внимание на настройки вашего sshd_config, а также возможность использования демона rsync.

1. Изменение конфигурации sshd для уменьшения нагрузки на ЦП

Как вы правильно заметили, стоит изменить параметры конфигурации SSH, чтобы улучшить производительность, поддерживая при этом базовые стандарты безопасности. Вот несколько ключевых моментов:

  • Backup конфигурации: Перед тем как вносить изменения, обязательно создайте резервную копию вашего файла конфигурации SSH в /etc/ssh/sshd_config. Например, выполните команду:

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  • Настройка параметров Cipher: Откройте файл sshd_config в текстовом редакторе:

    sudo nano /etc/ssh/sshd_config

    Добавьте или измените строку Ciphers следующим образом:

    Ciphers arcfour,arcfour256,arcfour128

    Здесь вы можете установить алгоритмы шифрования, которые являются менее ресурсоемкими по сравнению с современными. Однако, учтите, что arcfour не рекомендуется к использованию по соображениям безопасности, поэтому используйте его с осторожностью.

  • Тестирование изменений: Чтобы избежать блокировки доступа к серверу в случае ошибок в sshd_config, вы можете проверить конфигурацию с помощью команды:

    sudo sshd -t

    Это позволит выявить синтаксические ошибки в конфигурации без перезапуска службы.

  • Использование sshd на альтернативном порту: Вы можете временно изменить порт SSH, чтобы иметь возможность подключаться после внесения изменений. Добавьте или измените строку:

    Port 2222

    И затем попытайтесь соединиться по этому новому порту, прежде чем применять изменения.

2. Использование демона rsync

Запуск rsync в режиме демона может быть хорошим вариантом. На сервере выполните следующие шаги:

  1. Создайте файл конфигурации для демона:
    Создайте файл /etc/rsyncd.conf со следующим содержимым:

    uid = nobody
    gid = nobody
    use chroot = no
    max connections = 10
    log file = /var/log/rsync.log
    
    [myfiles]
    path = /path/to/files
    comment = My file storage
    read only = no
  2. Запустите rsync в демоническом режиме:
    Для запуска можно использовать команду:

    sudo rsync --daemon

Теперь rsync будет доступен без шифрования, но через этот метод вам следует быть осторожным в плане безопасности и настройки файловых прав.

3. Альтернативные методы

  • Сжатие данных: Попробуйте использовать параметр -z в rsync для сжатия во время передачи. Это может помочь увеличить скорости передачи данных в зависимости от типа ваших файлов.

  • Скрипты и другие методы: Варианты использования tar и zstd могут быть эффективными. Например:

    ssh user@host 'tar cf - /path/to/files | zstd -1' | zstd -d | tar xf -

    Это создаст архив и сожмет его, что может снизить нагрузку на процессор.

Заключение

Ваш подход сосредоточен на снижении нагрузки на ЦП и оптимизации работы rsync. Конфигурирование sshd_config, использование демона rsync, а также другие методы, такие как сжатие данных, могут значительно улучшить вашу ситуацию.

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

Оцените материал
Добавить комментарий

Капча загружается...