Хост експортира директория към VPN адрес, монтирането успява и в проекта се записва, че достъпът е удостоверен. Всъщност това правило ограничава само откъде изглежда, че идват пакетите. Дали човекът, който извършва файловата операция, е този, за когото се представя, зависи от режима за сигурност на NFS, а при повечето такива експорти никой не го е променил от подразбирането.

Три самоличности могат да се появят в една заявка

VPN партньорът носи регистрирана самоличност, например клиентски сертификат или партньорски ключ. Вътрешният IP пакет носи адрес на източника. Файловата операция носи каквито потребителски идентификационни данни предоставя нейният NFS механизъм. Проект, който третира адреса като заместител на трите, тихо е приел точно частта, която е трябвало да провери.

IdentityWhat it provesWhat it does not
VPN peerWhich peer was accepted by the tunnelWhich user runs on that machine
Inner source addressWhere the packet appears to originateThat only the intended client can use it
NFS credentialWhat the file service believes about the callerAnything, if the flavour only asserts local IDs

Записването на тези три реда е цялото упражнение. По-голямата част от спора дали един експорт е безопасен се срутва, щом стане ясно в кой ред живее всяка защита.

Собствеността на адреса е подробност от реализацията

Шлюз може да зададе тунелен адрес на приет партньор или да разреши маршрутизирана подмрежа за него. Дали след това реализацията ще отхвърли пакет, чийто вътрешен източник принадлежи на друг клиент, е свойство на тази реализация и си струва да се провери, вместо да се предполага.

Кодът на сървъра в потребителско пространство на традиционния Community OpenVPN например може да отхвърли източник, свързан с друг клиент, преди пакетът да бъде предаден през TUN устройството. Това е проверка на собствеността на адреса с реална стойност и все още не е удостоверяване на NFS потребител, защото не казва нищо за това кой акаунт извършва операцията.

Транслацията на източника подкопава дори това. NAT шлюз може да представи всеки клиент с един адрес и тогава правилото за експорт не може да различи хората зад него. Привидната точност на правилото се превръща в измислица, поддържана от диаграмата. Ако експортът е важен, дръжте адресирането явно, вместо да оставяте транслатор да решава кой за кого се брои.

Прочетете режима за сигурност, преди да се доверите на експорта

Ръководството на Red Hat за NFS разделя sec=sys, който използва локални UNIX UID и GID чрез AUTH_SYS, от режимите на Kerberos. krb5 добавя удостоверяване на потребител, krb5i добавя защита на целостта, а krb5p добавя защита на поверителността на трафика.

Идентификационните данни на AUTH_SYS съдържат полета като UID на извикващия и идентификатори на групи, а RFC 5531 предупреждава пряко, че този режим не дава сигурност сам по себе си и зависи от външна защита. Изпълнението му вътре във VPN осигурява защита на транспорта и не променя нищо в твърдението вътре в пакета.

exportfs -v
showmount -e nfs.example.internal

Прочетете режима в този изход, преди да четете списъка с клиенти. Експорт, който изглежда ограничен, може да е ограничен само по адрес, докато всеки извикващ продължава да заявява какъвто UID пожелае.

Изберете модела, после запазете правата

Изберете модела за удостоверяване на файловата услуга, подходящ за клиентите, които действително администрирате. Kerberos изисква самоличност и разгръщане на услуга зад него, така че смяната на една опция за монтиране не е миграция и просто ще се провали, докато не съществуват домейнът на Kerberos, принципалите и keytab файловете.

При всеки от двата модела запазете правата за експорт и оторизацията на файловата система, които ограничават какво може да прави удостовереният принципал. Удостоверяването казва кой пита; оторизацията решава дали отговорът трябва да е „да“. Сливането на двете в една настройка е начинът, по който миграцията започва да дава повече, отколкото е давала старата конфигурация.

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

Ограничаването на услугата до одобрения път и източници остава смислено, включително политиката за вход на хоста, когато VPN крайната точка и NFS сървърът споделят една машина. Правилата, които препращат трафик, не управляват заявки, насочени към услуга, работеща локално на същия хост. Тази празнина обяснява изненадващ брой експорти, които е трябвало да бъдат частни. Проверете локалната политика за вход изрично, вместо да предполагате, че правилата на тунела я покриват.

Проверете дали друг интерфейс или шлюз с транслация на източника не може неочаквано да удовлетвори правилото, и приемете това като причина да установите произход, а не като твърдение, че подправянето на адрес гарантира работещо монтиране.

Изпълнете три приемателни случая, а не един. Започнете с одобрен клиент, действащ като одобрен потребител, после повторете от партньор, който никога не е бил одобрен, сетне опитайте нещо, което одобреният потребител все още няма право да прави. Попитайте след това какво се променя, ако оторизиран клиент бъде компрометиран, защото удостоверяването на транспорта не прави всеки процес на тази машина надежден. Откраднат сертификат и любопитен локален акаунт са различни проблеми с различни защити.

Подобни статии