Назад | Перейти на главную страницу

Безопасность sshpass и SFTP для динамического хоста

У меня есть сервер с выделенным IP-адресом A и сервер с динамическим IP-адресом B (маршрутизация через no-ip.org). A загружает резервную копию в B через sshpass:

export SSHPASS=***
sshpass -e sftp **@** << !
    [..]
    put [..]
    bye
!

Каждый раз сейчас на (A) происходит следующее:

Предупреждение: Ключ хоста ECDSA для IP-адреса «[...]» навсегда добавлен в список известных хостов.

У меня такое чувство, что это может быть небезопасный метод передачи данных резервной копии (tar-файла). Возможно ли перехватить бэкап?

Кроме того, не следует ли мне впоследствии снова удалить IP из списка известных хостов? Резервное копирование запускается каждый день. Похоже на длинный список известных хостов, которые просто динамичны!

«Предупреждение» указывает только на то, что IP-адрес хоста изменился, чего вы ожидаете.

Клиент OpenSSH проверяет изменение IP-адреса, чтобы дать вам «подсказку о спуфинге DNS» при изменении ключа хоста. Поскольку в вашем случае ключ хоста правильный, предупреждение бессмысленно, как объясняет @kasperd.

Собственно, если вы ожидаете смены IP, вы можете отключить CheckHostIP чтобы избежать предупреждения:

sftp -o "CheckHostIP no" **@**

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

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

Вы можете удалить эти динамически добавленные пары ключей IP + хоста из списка известных хостов. Но они на самом деле не вредят, и если вам когда-нибудь понадобится ssh-соединение с хостом по IP-адресу, а не по имени хоста, удобно иметь запись уже в файле известных хостов.

Если вы подключаетесь к нескольким различным хостам с динамическим IP, вы можете в конечном итоге столкнуться с ситуацией, когда один хост получает IP-адрес, для которого ssh ранее записал другой ключ хоста. В этом случае вы получите сообщение об ошибке, и вам нужно будет удалить устаревшую пару ключей IP + host. (Удаляемую пару становится труднее идентифицировать, если вы хешируете строки в файле известных хостов.)

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