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

Безопасная передача файлов в Linux без SSH?

Я хочу передавать файлы между компьютерами через Интернет БЕЗОПАСНЫМ способом. Обе машины имеют Linux («сервер» использует Ubuntu 12, а «клиент» - Mint 14). Я НЕ хочу разрешать ssh своему серверу, и я хочу, чтобы клиент мог открывать и читать файлы на сервере, но он не может изменять / стирать вещи. Разрешено клиенту копировать файлы на сервер [или создавать файлы там] и копировать с сервера.

Я хочу предоставить общий доступ к некоторым каталогам на моем сервере, как описано выше. Наконец, я хочу получить доступ к файлам в клиенте простым способом, например, в режиме графического интерфейса или что-то в этом роде ... не используя оболочку, а вместо этого используя стиль Windows (например, если моя удаленная папка является локальной, но с ограничением доступа как выше объяснено).

Для меня безопасность означает, что соединение должно быть зашифровано, а для входа в систему может использоваться какая-то схема с частным / открытым ключом.

Какое для меня лучшее решение? Я пытаюсь найти конфигурацию SFTP, которая соответствует моей «спецификации», но ограничение доступа слишком «своеобразно» ... я не знаю, даже если SFTP работает без разрешения ssh.

Большое спасибо за любую помощь ...

РЕДАКТИРОВАТЬ: Большое спасибо за вашу помощь. Я очень ценю это! Я оценю все ответы и постараюсь найти лучшее решение. К настоящему времени я думаю, что создание пользователя с ограниченным доступом / привилегиями и разрешение ТОЛЬКО этому пользователю выполнять сверхзащищенный SSH / SFTP - лучший способ ... "взломы", чтобы избежать ssh, действительно могут ухудшить ситуацию (менее безопасный ). Мой вопрос немного сбивает с толку, потому что моя «логика» была немного нарушена. Теперь я вижу более ясно ...

Старый добрый протокол передачи файлов (FTP) был изобретен для передачи файлов. Чтобы использовать его безопасным способом, вы можете использовать ftps (который не является sftp, а ftp over ssl) или настроить VPN-соединение для безопасности.

Когда я ищу vsftpd + ssl, это первый результат что кажется разумной отправной точкой.

Следующее просто и круто:

python -m SimpleHTTPServer 8888

Это запускает новый файловый сервер http для текущего каталога. Предположим, в текущем каталоге есть файл с именем foo, вы можете скачать его следующим образом:

wget http://your.ip.here:8888/foo

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

gpg --armor --local-user senderkey --recipient recipientkey --sign --encrypt cleartextfile

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

  1. какое-то сетевое событие (которое не открывает соединение), которое регистрируется Netfilter (iptables)
  2. вызов wget, который запускается при ведении журнала и получает файл с некоторого веб-сервера (в таком случае файл OpenPGP, вероятно, всегда должен иметь одно и то же имя)

Вы можете настроить файловую систему WebDAV через SSL.

Пытаться WebDAV. Это мой любимый протокол для доступа к файлам на моем NAS.

Мне кажется ты должен иметь возможность ограничить пользователя только sftp, добавив command="..." директива для файла authorized_keys пользователей. Мы делаем это в $ work, чтобы ограничить некоторые учетные записи пользователей только rsync.

Есть пробуждение в http://troy.jdmz.net/rsync/index.html в котором описан процесс rsync.

«Есть ли способ ограничить доступ по SSH на моем сервере, и тогда только мой клиент сможет использовать ssh / sftp?»

Конечно. Для этого будет достаточно надежного пароля / ключевой фразы или аутентификации на основе ключа. Если вы хотите еще больше потакать своей паранойе, отключите брандмауэр от порта 22, за исключением IP-адресов, к которым должен быть доступ, или добавьте модуль PAM одноразового пароля Google Authenticator для двухфакторной аутентификации.

Являясь золотым стандартом в отрасли для удаленного доступа к серверам, должным образом защищенный SSH будет намного более безопасным, чем обходной путь, основанный на единственном требовании «нет SSH».

Вы можете использовать протокол HTTPS. Это простая установка для nginx.

apt install nginx
cd /etc/nginx/ ; openssl req -x509 -newkey rsa:2048 -keyout site.key -out site.crt -days 365 -nodes

vim /etc/nginx/sites-enabled/default 
server {
    listen 443 ssl default_server;
    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;
    ssl_certificate     site.crt;
        ssl_certificate_key site.key;
    server_name _;
    location / {
        try_files $uri $uri/ =404;
    }
}

nginx

После этого скопируйте ваши файлы в / var / www / html и загрузите их с сервера. Если вы хотите закрыть доступ для использования пользователем базовая авторизация. Если вы хотите загрузить файлы, вы можете создать простые PHP-скрипт для этого.