MikroTik добавила поддержку NFS в пакете ROSE для RouterOS. Дадим краткую характеристику этому протоколу и покажем настройку ресурсов NFS на маршрутизаторах MikroTik и в Linux через CLI.
Введение
NFS — это протокол доступа к файловым данным по сети, разработанный примерно в то же время, что и SMB. Он часто используется в качестве альтернативы последнему. После добавления NFS в ROSE операционная система RouterOS поддерживает оба протокола. После того как мы обсудили новшества в SMB, взглянем пристально на NFS.
NFS и Windows
Хотя, этот протокол лучше всего совместим Mac и Linux, теоретически, вы могли бы использовать NFS в Windows. Но это будет не совсем то, что вы ожидали.
Можно добавить клиент NFS из программных компонентов Windows. Клиент может монтировать тома NFS с помощью командной строки. К сожалению, это устаревший функционал, т. к. он не поддерживает NFS версии 4. А RouterOS не поддерживает версии младше четвёртой. Так что, если вы вынуждены использовать NFS в Windows, вам придётся использовать какой-то сторонний инструмент или WSL (среда запуска приложений Linux в Windows без создания виртуальной машины).
Не будем останавливаться на этом. Сперва взглянем на то, что происходит внутри RouterOS, затем, рассмотрим соответствующие возможности Linux. Если вы работаете в macOS, её синтаксис, в этом плане, идентичен синтаксису в Linux. Или, по крайней мере, очень схож.
Вопросы безопасности
Теоретически, NFS может предложить более высокую производительность в части скорости, чем SMB, но худшую функциональность, в плане безопасности. Если SMB является тем, но что вы можете положиться, то NFS потребует от вас быть осторожным с тем, где вы его используете, и кому даёте доступ. Прежде чем перейти к настройкам, нам надо осмыслить три самых больших подводных камня NFS в области безопасности.
Во-первых, по умолчанию, в нём нет шифрования. Все данные идут в виде обычного текста, из-за чего кто угодно, кто способен перехватить ваш трафик, сможет прочитать или даже попытаться подделать данные. Теоретически, можно использовать NFS4 совместно с Kerberos, однако в настоящий момент такой функционал не внедрён RouterOS. И, в любом случае, это не самый оптимальный способ.
Следующий момент, который необходимо учитывать, с точки зрения безопасности, это то, что доступ на чтение, запись и исполнение зависит, главным образом, от файловых разрешений Linux. Это означает, что любой, у кого есть привилегии root в своей системе, не только может поменять того, кто ещё может работать с файлами, но также может создать файлы специальных разрешений, которые всегда будут выполнятся под определённым пользователем, например, от имени root. В некоторых системах это открывает возможность для повышения привилегий.
Сама RouterOS не подвержена этой угрозе, потому что пользователям в ней не позволяется выполнять файлы. По крайней мере, на маршрутизаторе. Поэтому это не является большой проблемой при обмене между маршрутизаторами. Но не при добавлении в обмен других устройств.
И это подводит нас к третьей проблеме — авторизация происходит на стороне сервера. Решение о приёме или отклонении соединений принимается исключительно на основе IP-адресов. Для RouterOS это означает, что любой, кто может добраться до маршрутизатора, сможет монтировать любые общие папки. Ему просто надо управлять доступом с помощью правил файрволла.
Разобравшись с вопросами безопасности, перейдём к конфигурации.
NFS между двумя маршрутизаторами
Раздача доступа по NFS между двумя устройствами под RouterOS очень проста. Перейдите в меню disk и найдите хранилище, которое вы хотите расшарить:
/disk> print
Общий ресурс создаётся с помощью такой команды:
/disk> set pcie1 nfs-sharing=yes
где pcie1 — имя выбранного хранилища.
На клиентской стороне шара подключается с помощью такой команды:
/disk> add type=nfs nfs-address=192.168.1.1 slot=pcie1oncrs
где 192.168.1.1 — IP-адреса сервера NFS, а pcie1oncrs — имя сетевого ресурса, как он будет отображаться на клиентском устройстве.
Команда:
/disk> print
покажет сведения о ресурсе, включая полный размер хранилища и свободное место.
Для проверки создадим файл с клиентской стороны, не забыв указать полный путь к нему:
/file> add type=file name=pcie1/pcie1oncrs/malFile
Можно проверить его появление на серверной стороне:
/file> print
Подключение Linux-клиента к ресурсу на маршрутизаторе
Создайте папку для монтирования:
mkdir /mnt/pcie1oncrs
Затем, смонтируйте ресурс:
mount -t nfs 192.168.1.1:/ /mnt/pcie1oncrs
Проверим присутствие созданного в клиентском маршрутизаторе файла:
cd /mnt/pcie1oncrs
Проверим разрешения на этот файл:
ls -la
Здесь мы увидим, что владелец файла — root, и все могут читать и записывать в этот файл. При этом, со стороны RouterOS разрешения файла не видны.
Вспомним о потенциальных уязвимостях NFS, о которых говорили выше. Злоумышленник может спровоцировать другого пользователя на запуск файла malFile, который может быть вредоносным для маршрутизатора.
Мы полагаем, что реализация NFS в RouterOS может претерпеть изменения в ближайшем будущем. А пока этого не произошло, для того чтобы держать всё под контролем при расшаривании ресурсов NFS в сети с машинами Linux, можно подойти к созданию NFS-ресурса с другой стороны: настройте общий ресурс на стороне Linux, который будет выступать в роли сервера, и смонтируйте его на RouterOS.
Или расшаривайте ресурсы NFS только между маршрутизаторами MikroTik.