Сделать сетевой диск доступным через Интернет?

19

Недавно я создал небольшую серверную машину, используя Ubuntu Server и Samba, чтобы выступать в качестве файлового сервера (помимо прочего), чтобы вся моя семья могла получать доступ к определенным файлам по сети с машин Windows. Тем не менее, я хотел бы сделать еще один шаг и сделать так, чтобы акции были доступны через Интернет, вдали от дома. Как бы я это сделал? Я очень мало знаю о том, как работает система сетевых ресурсов Windows, поэтому понятия не имею, с чего начать.

Саша Чедыгов
источник
Вы действительно должны использовать SCP.
кж
@kzh: Это слишком сложно для некоторых членов моей семьи.
Саша Чедыгов
1
Ничего личного относительно принятого ответа, но, хотя технически это могло ответить на ваш вопрос, я НИКОГДА не буду этого делать. Вы действительно разоблачаете себя, особенно если у вас есть что-то чувствительное в вашей сети. Я бы сказал, что правильный способ - настроить простую PPTP VPN для вашей семьи, а затем дать им доступ.
Котро
1
@KCotreau: есть еще много вопросов в этом вопросе, которые я оставил для простоты. Скажем так, данные, которые мы будем раскрывать, никоим образом не являются конфиденциальными. Я понимаю и принимаю риски безопасности - я просто хотел получить простой ответ на мой конкретный вопрос.
Саша Чедыгов
1
@musicfreak Меня беспокоит то, что это точка атаки на другие области компьютера или даже на сеть в целом. Очевидно, что вы можете делать это как хотите, но я все равно не рекомендую это делать, если на компьютере нет ничего, по крайней мере, не только общий ресурс. Очень крутая книга - "Взламывание разоблаченных". Это показывает, насколько хакеры атакуют эти протоколы.
Котро

Ответы:

13

При использовании Samba вам придется открывать порты 139 / tcp и 445 / tcp снаружи - обычно это включает в себя настройку «переадресации портов» на вашем маршрутизаторе. Кроме того, вы должны убедиться, что ваш внешний IP-адрес проверяется извне.

После этого вы сможете получить доступ к общим ресурсам, введя \\youraddressв адресной строке Проводника или в Пуск - Выполнить . (Здесь вы можете указать свой внешний IP-адрес или DNS-имя, если оно у вас есть.)

Однако обратите внимание, что протоколы CIFS и SMBv2, используемые для общего доступа к файлам Windows, не обеспечивают шифрование данных (так что любой пользователь, использующий анализатор пакетов, может контролировать передачу файлов), и его аутентификация также не особенно сильна. Только SMBv3 получил поддержку шифрования.

Кроме того, не забывайте, что служба Windows SMB в прошлом была очень частой целью заражения. Хотя большинство эксплойтов Windows никак не влияют на Samba, об этом все же стоит помнить (и часто это означает, что порты SMB блокируются на уровне ISP).

Также обратите внимание, что машины Windows по умолчанию запоминают учетные данные для входа во весь локальный сеанс. Если вы не подключаетесь к Samba как «Гость», вы должны проявлять особую осторожность на общедоступных компьютерах: всегда используйте net use \\addressперед открытием в Проводнике / net use \\address /delдля отключения. (Это не нужно на персональных компьютерах.)

Для дополнительной безопасности добавьте следующее в общий раздел smb.conf:

LANMAN auth = no
NTLM auth = no
invalid users = root
user1686
источник
Да, я подумал, что это будет намного сложнее, чем это. Спасибо за совет!
Саша Чедыгов
2
Кстати, есть ли у вас какие-либо рекомендации, чтобы сделать проблему отсутствия шифрования данных менее важной? Я доверяю всем сетям, к которым я подключаюсь, но я могу, например, создать учетную запись для моей подруги (которая может быть в ненадежной сети), чтобы она могла получить доступ к моей музыке / фотографиям / и т. Д. Я всегда мог просто дать ей учетную запись только для чтения и назвать ее хорошей, но мне просто интересно, возможно, у вас есть какой-то более конкретный совет. Еще раз спасибо!
Саша Чедыгов
Для доступа только для чтения вы можете настроить HTTPS-сервер (StartSSL / CAcert). Для загрузки файлов это может быть расширено до WebDAV ... но Windows не будет использовать WebDAV, если доступен CIFS, и большинство версий Windows имеют некоторые проблемы с WebDAV, защищенным SSL. Другие решения требуют внешнего программного обеспечения (SFTP с использованием WinSCP) или даже настройки VPN.
user1686
Ну, я планировал настроить систему резервного копирования на основе версий (вроде Time Machine в Mac OS X), так что даже если кто-то получит доступ к общим ресурсам и все сотрет, он все равно будет в безопасности. Как вы думаете, этого достаточно? Я бы, конечно, предпочел бы предотвратить подобное в первую очередь.
Саша Чедыгов
2
Замечание: у канадских интернет-провайдеров порты SMB заблокированы, если у вас нет бизнес-аккаунта. Убедитесь, что ваш интернет-провайдер разблокирует порты, если вы используете JUST SMB
канадец Люк REINSTATE MONICA
8

Если ваша семья может справиться с использованием WinSCP, то:

  • установить и настроить SSH
  • предоставить членам вашей семьи локальные учетные записи на вашем сервере
  • символическую ссылку вашего хранилища файлов в эти каталоги. Например, если вы выставляете себя /srv/samba_filesчерез Samba, вы хотите сделать ln -s /home/{user}/files /srv/samba_filesили подобное для каждой учетной записи. Если вам нужно сделать это для многих учетных записей, вы можете написать скрипт для этого.
  • установить WinSCP на компьютеры вашей семьи

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

Однако, если вы действительно хотите интегрировать «сетевой диск» с Windows, я узнаю об OpenVPN, а затем о настройке туннельного моста для вашей домашней сети. Я успешно получил файловые ресурсы Windows для работы над такими туннелями.

Вы также можете использовать PoPToP (pptpd), чтобы система Windows могла подключиться к вашему Ubuntu через PPTP vpn. (Туннель IPSec / L2TP обеспечит лучшую безопасность, но его сложно настроить).

LawrenceC
источник
Почему бы просто не создать filesакцию, указывающую /srv/samba_filesнапрямую?
user1686
Общие ресурсы Samba будут видны только на стороне локальной сети. На интернет-стороне вы бы использовали WinSCP.
LawrenceC
@LawrenceC Этот метод "openvpn" использует общий вес для одноплатных компьютеров, таких как raspberry pi?
Бхавеш Гангани
OpenVPN занял 20% ЦП в системе ARM 1,3 ГГц и у меня не было 512 МБ ОЗУ. Это также функционировало как маршрутизатор, DHCP и сервер DNS. Некоторые SOHO-маршрутизаторы с меньшими характеристиками запускают его. Это должно быть хорошо, но потребляет некоторые ресурсы.
LawrenceC
1

Это зависит от того, какие файлы вы намереваетесь обслуживать. Если это документы или просто файлы, к которым вам нужен удаленный доступ, просто запустите FTP-сервер на вашем сервере Ubuntu. Убедитесь, что вы надежно защищены, с хорошими паролями и доступом только к каталогу файлов, а не к корневому каталогу.

Однако, если вы намереваетесь передавать потоковые медиафайлы (песни, фильмы), вам нужно запустить потоковый сервер. Есть много решений для этого ( вот один ).

Наконец, вы всегда можете использовать существующее «облачное» решение для накопителей, такое как Dropbox, SkyDrive или Amazon Cloud Player, - просто синхронизируйте свои файлы с одной из этих служб, и доступ к Интернету (при этом быстрый) гарантирован.

Путешествующий техник
источник