Я прочитал много статей и вопросов об этом по научной фантастике, но до сих пор не могу понять, является ли то, как я это делаю, (а) возможным и (б) безопасным.
Сервер работает на AWS EC2, и весь доступ осуществляется через ключи SSH. Я также открываю порт 22 только для своего собственного IP-адреса, но, похоже, если я хочу разрешить другим доступ через SFTP, мне нужно будет открыть порт 22 для всего мира (или потратить свои дни на управление правилами брандмауэра для динамических IP-адресов). Неужели это лучше, чем, скажем, vsftp на 21 порту?
Предполагая, что на данный момент лучше всего подходит SFTP на порту 22, я сделал следующее:
/home/ftp/.ssh/authorized_keys
и протестировал доступ по SSHChrootDirectory
вход в /etc/ssh/sshd_config
указывает на /var/www/html
/var/www
вниз, чтобы chroot "работал"Теперь я застрял в кажущейся уловке 22, которая, я подозреваю (надеюсь), просто неправильная конфигурация. Без блока chroot в sshd_config я могу подключиться либо через Putty, либо через SFTP-клиент, и все в порядке - кроме доступа ко всей файловой системе. Установив блок chroot на место, я Could not chdir to home directory /home/ftp
ошибка во время аутентификации, так как теперь /home/ftp/.ssh
папка недоступна, поэтому ключи не работают. это старый вопрос / ответ предлагает поставить .ssh
папка внутри /var/www/html/
папка, но мне это кажется очень странным - действительно ли это нормально, учитывая, что это доступно с веб-сервера?
Есть ли более «правильный» способ подключения пользователя через SSH-ключ, а затем ограничить его только / var / www / html?
В вашей конфигурации OpenSSH вы можете поместить некоторую конфигурацию в блоки соответствия. Это позволяет вам устанавливать различную конфигурацию для разных пользователей / групп / сетей.
Таким образом, вы можете поместить всех своих пользователей sftp в группу sftpd, а затем добавить такой блок. Этот принудительный chroot и принудительный sftp будут применяться только к этой группе. После этого ваша основная учетная запись сможет использовать оболочку как обычно.
Match Group sftp
ChrootDirectory /var/www/
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
.ssh внутри папки / var / www / html /, но мне это кажется очень странным - действительно ли это нормально?
Это не самое страшное. Можно было бы надеяться, что эти пользователи не устанавливают исходящие соединения, поэтому в этой папке не будет никаких пар ключей и известных_хостов, оставив только файл authorized_keys. В котором есть только открытые ключи. Открытые ключи являются общедоступными, их использование не должно быть особенно опасным. Хотя было бы неплохо установить в каталоге chroot для учетных записей sftp хотя бы один каталог из корневого веб-сайта, чтобы файл .ssh не обслуживался публично и за пределами корневого веб-сайта. Если ваш chroot должен был /var/www
и вы устанавливаете корень для веб-сервера в /var/www/html
казалось бы, удовлетворив ваше беспокойство