Как сделать NFS безопасным?

Вопрос или проблема

Как сделать подключение NFS безопасным? Удаленный сервер находится в интернете, а не в локальной сети. У сервера нет брандмауэра, и он подключен напрямую к интернету.

Вы можете туннелировать его через SSH.

У сервера нет брандмауэра

Если удаленная система не защищена (а отсутствие любой защиты брандмауэром делает это подозрительным), то неважно, что вы делаете с вашим подключением – вы не можете быть уверены в безопасности. Это особенно верно для сервера NFS, где аутентификация не связана с базовым протоколом.

Если ваши утверждения верны (что мне кажется удивительным), найдите того, кто настроил сервер таким образом, и заблокируйте их до того, как они смогут нанести еще больший вред.

Если вам нужен доступ к NFS через интернет, используйте VPN (IPSEC, SSL туннель, SSH туннель, даже pptp) и БЛОКИРУЙТЕ весь прямой доступ к интернету (кроме защищенного соединения) на сервере.

Если NFS используется в системе, пожалуйста, выполните следующие меры:

  1. Если возможно, разрешайте только доступ на чтение к вашим экспортируемым данным (-ro)
  2. Не экспортируйте корневую папку / или /etc
  3. Отключите NFS, если вы не хотите экспортировать какие-либо файловые системы.
  4. Доступ к экспорту NFS должен быть ограничен для определенных хостов
  5. Если присутствуют файловые системы zfs, также проверьте их атрибуты, чтобы они не были настроены для совместного использования через NFS.
  6. Используйте опцию -nosuid для монтирования папок, чтобы предотвратить выполнение программ setuid.
  7. Используйте опцию –nodev для монтирования папок, чтобы предотвратить совместное использование файлов устройств.

Вы можете использовать RPC-with-TLS для обеспечения конфиденциальности и целостности для соединения NFSv4.

На стороне сервера требуется опция экспорта xprtsec=. Это документировано в разделе “Безопасность транспортного уровня” exports(5).

На стороне клиента требуется опция монтирования xprtsec=. Это документировано в nfs(5) и включает опцию монтирования xprtsec=.

И сервер, и клиент потребуют запуска и настройки tlshd из ktls-utils с путем к сертификату TLS и соответствующим закрытым ключом. Центр сертификации, который подписал сертификат клиента, должен быть доверенным на сервере и наоборот.


Или вы можете использовать IPsec для обеспечения конфиденциальности и целостности трафика NFS между клиентом и сервером.


Другие ответы предлагают туннелирование через TLS с помощью stunnel или через SSH. Эти методы имеют недостатки, такие как проблема TCP-over-TCP, и не обязательны, так как NFS поддерживает TLS нативно.


Другой вариант – использовать Kerberos с параметрами экспорта и монтирования sec=krb5p. Хотя это обеспечивает защиту целостности, это не обеспечивает полную конфиденциальность, так как некоторый трафик все еще передается в открытую. Он также использует симметричное шифрование, поэтому я полагаю, что нет идеальной прямой секретности и захваченный трафик может быть расшифрован, если ваши ключи Kerberos когда-либо будут раскрыты. Поэтому, вероятно, лучше использовать TLS или IPSec для защиты транспорта и полагаться на Kerberos только для аутентификации (sec=krb5).

Я предполагаю, вы уже знаете, что sec=sys не подходит, если только вы не доверяете клиентской машине отвечать за контроль доступа на стороне сервера.


В любом случае, вы должны предпринять дополнительные шаги для защиты сервера от DoS-атак (например, настроить брандмауэр для отброса пакетов, если они поступают от источников, которые вы не ожидаете).

Есть хорошая статья на linuxjournal Шифрование NFSv4 с Stunnel TLS, которая объясняет, как использовать stunnel для защиты трафика NFSv4.

Вдохновленная этой публикацией рабочая группа NFS IETF разрабатывала RPC-over-TLS протокол, который призван добавить нативную поддержку TLS в протокол NFS (и любой другой протокол на основе ONC/Sun RPC).

Это зависит от того, какую версию NFS вы используете. Некоторые из вышеизложенных ответов, вероятно, соответствуют тому, что вам нужно сделать для версий до NFSv4.

  • NFSv3+ настройте соединение через ssh с помощью TCP wrappers, который, как утверждается, полон неожиданностей
  • Укрепите свой сетевой брандмауэр NFSv*
    • Откройте порты для TCP, UDP и rpcbind. порты по умолчанию и настройка rcpbind могут отличаться в зависимости от версии NFS

По словам Кристофера Негуса Linux Bible, обеспечение безопасности NFSv4, наряду с вышеупомянутыми решениями, лучше всего достигается с использованием интеграции Kerberos, которая позволяет настроить доступ на основе пользователей. Это позволяет осуществлять более точный контроль над тем, какие корневые пользователи

.

Ответ или решение

Сетевой файловый сервис (NFS) является популярным выбором для обмена файлами в UNIX/похожих на UNIX системах. Тем не менее, стандартная реализация NFS была разработана для использования в защищенных локальных сетях, что делает их уязвимыми, когда они функционируют в менее безопасных средах, таких как интернет. Вопрос, как сделать подключение NFS более защищенным, особенно актуален в ситуации, описанной пользователем, где удаленный сервер подключен непосредственно к интернету без использования межсетевого экрана.

Теория: Для обеспечения безопасности NFS следует учитывать несколько ключевых аспектов. Во-первых, необходимо обеспечить безопасность передачи данных. Протокол NFS сам по себе не обеспечивает надежной аутентификации и защиты данных на уровне сетевого подключения. Это делает данные уязвимыми для перехвата и изменения злоумышленниками. Во-вторых, без учёта политик управления доступом, злоумышленники могут получить полный доступ к важным данным. И, наконец, инфраструктура, таких как серверы и сети, должна быть гибко настроена с акцентом на минимизацию уязвимостей, таких как DoS-атаки.

Пример: Давайте рассмотрим возможные меры безопасности, которые можно и необходимо применить:

  1. Передача данных через SSH-туннель: Это один из наиболее простых способов защищенной передачи файлов с использованием NFS. В SSH-туннеле данные шифруются на клиенте и расшифровываются на сервере, что делает перехват данных на их пути между клиентом и сервером чрезвычайно сложным.

  2. Использование VPN: Виртуальные частные сети (VPN), такие как IPsec, SSL или PPTP, предлагают дополнительные уровни безопасности, защищая передачу данных через безопасные каналы. В этой конфигурации весь сетевой трафик, включая NFS, проходит через зашифрованный канал.

  3. Настройка TLS: NFS, начиная с версии 4.2, поддерживает передачу данных с использованием TLS для обеспечения конфиденциальности и целостности. Это значит, что теперь напрямую можно использовать расширенные методы шифрования, такие как RPC-over-TLS, которые была предложена IETF.

  4. Авторизация через Kerberos: Включение аутентификации с помощью Kerberos позволяет обеспечить аутентификацию на базе пользователей, что добавляет уровень контроля доступа и ответственности. Это делает NFS безопаснее, позволяя управлять более детальной авторизацией на основе учётных данных пользователей.

  5. Защита на уровне экспорта: Необходимо убедиться, что NFS экспортируется с учетом всех возможных ограничений, таких как read-only доступ, исключение экспорта корневой файловой системы или системных директорий, использование опций -nosuid и -nodev, а также ограничения по хостам.

  6. Файрволы и другие сетевые защиты: Хотя ресурсы сервера изначально не защищены файрволами, необходимо внедрить решения для фильтрации и ограничения соединений. Например, iptables может быть использован для ограничения доступа к NFS-трафику и предотвращения несанкционированных подключений.

Применение: Внедрение вышеперечисленных мер существенно повысит безопасность NFS-соединения, даже в небезопасной интернет-среде. На практике, следует начать с анализа текущей инфраструктуры и конфигурации сервера, уделяя внимание основным уязвимостям. Затем можно этапами внедрять технологии шифрования и аутентификации. Например, валидность сертификатов TLS должна быть проверена на обоих концах соединения: сервер должен доверять корневому сертификату клиента, и наоборот. Также полезно ограничить сетевой трафик посредством тщательной настройки IPTables или другого файервола и предусмотреть защиту от DoS-атак, что существенно усилит общую защиту системы.

Важно отметить, что настройка защищенного NFS требует комплексного подхода, включающего как технологические, так и административные меры. Все участники процесса от администраторов до пользователей должны быть осведомлены о рисках и мерах безопасности, чтобы поддерживать систему в актуальном и безопасном состоянии, способном защитить данные даже в глобальной сетевой среде.

Оцените материал
Добавить комментарий

Капча загружается...