Я знаю, что будет казаться, что я не проводил здесь исследования, потому что я сделал это, и я знаю, сколько существует связанных вопросов и руководств. Я прочитал все учебники, которые смог найти в Интернете по этому поводу. Я просмотрел полный список тем Samba / Kerberos / AD / аутентификации на serverfault.
На самом деле, учебник, который помог мне продвинуться дальше всего только потому, что я смог убедиться в успехе на каждом этапе, был http://www.howtoforge.com/samba_active_directory. Увы, так и не вышло. Без лишних слов, моя проблема:
У меня есть гость KVM под управлением CentOS 6.5. Я установил Samba 3.6.9. Я хочу использовать Samba для совместного использования домашних каталогов пользователей, чтобы они могли отображать их как сетевые диски на машинах с Windows 7. я успешно сделали это с помощью smbpasswd
с локальными аккаунтами. Проблема в том, что я хочу аутентифицировать этих пользователей с помощью Kerberos (Active Directory, над которым у меня нет контроля). Мне не нужна и не нужна какая-либо информация о пользователях, группах или политиках из Kerberos / AD / LDAP. я только хотите аутентифицировать пароль пользователя, предоставленный пользователем в графическом интерфейсе отображения дисков Windows и отправленный в Samba.
Также стоит отметить, что я уже настроил Kerberos для доступа по SSH на том же гостевом компьютере KVM для тех же пользователей. С записями в /etc/passwd
и пароль не установлен в /etc/shadow
, пользователи вводят свой пароль Kerberos при входе в систему по SSH и проходят аутентификацию. Это именно то, что я хочу от Samba. Я хочу, чтобы пользователи «подключили сетевой диск», вводили полное доменное имя сервера Samba, вводили свое имя пользователя и пароль и чтобы Samba аутентифицировал их с помощью этого пароля так же, как SSH аутентифицирует их с помощью пароля, после чего общий ресурс будет успешно быть сопоставленным.
Я сделал:
service winbind start
service smb start
service nmb start
В krb5.conf
, который отлично подходит для аутентификации SSH:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = MYDOMAIN.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
MYDOMAIN.COM = {
kdc = mydomain.com
admin_server = mydomain.com
}
[domain_realm]
.mydomain.com = MYDOMAIN.COM
mydomain.com = MYDOMAIN.COM
В /etc/samba/smb.conf
, Я пробовал много вещей, но конфигурация, которая кажется наиболее логичной на основе всех руководств, включает, в первую очередь:
workgroup = MYDOMAIN
security = ads
realm = MYDOMAIN.COM
encrypt passwords = yes
kerberos method = secrets only
password server = mydomain.com
Стоит отметить, что mydomain.com - это полное доменное имя моего сервера, а MYDOMAIN.COM - это область Kerberos, так что это не опечатка.
Проблема в том, что, во-первых, в большинстве руководств говорится о создании ключевой таблицы и принципала для хоста. Я этого не понимаю, потому что я аутентифицирую не хост, а только пользователей. Кроме того, аутентификация по паролю SSH с помощью Kerberos, насколько мне известно, не требует такого шага (мне не приходилось этого делать). Они предлагают установить соответственно "kerberos method = secrets and keytab". Во-вторых, многие учебники, похоже, сосредоточены либо на получении информации о пользователях и группах, которые хранятся в Active Directory, либо на аутентификации пользователей с помощью Samba для других целей с использованием Kerberos. Я хочу использовать Samba только для обмена файлами, и я хочу использовать Kerberos только для аутентификации паролей, как моя конфигурация SSH.
Каждая попытка и каждое учебное пособие, которым я следовал, заканчивались неудачей. я проверяю /var/log/samba/*
для журналов и поиска файлов с именем, включающим IP-адрес подключающейся машины, но без информации о попытке подключения. Эти файлы журналов пусты.
Стоит отметить, что, хотя я могу присоединить свой сервер к домену, у меня нет прав администратора, поэтому я думаю, что не могу сгенерировать keytab (хотя я не понимаю, зачем Samba он нужен, если SSH этого не делает).
Может ли кто-нибудь помочь мне в этом? Или, если почему-то это невозможно, дайте мне знать и объясните почему? Я не против того, чтобы мне указали на учебник, но я честно просмотрел все учебники, которые смог найти, поэтому, пожалуйста, будьте готовы принять дополнительные вопросы, если вы предоставите ссылку на учебник.
Большое спасибо.
Проблема в том, что, во-первых, в большинстве руководств говорится о создании ключевой таблицы и принципала для хоста. Я этого не понимаю, потому что я аутентифицирую не хост, а только пользователей.
Я знаю, что этот ответ пришел через несколько лет после того, как вопрос был задан, но из файла Centrifydc.conf Centrify:
По умолчанию TGT пользователя будет проверяться путем получения и проверки билета службы для локальной системы. Эта проверка выполняется для предотвращения хорошо известной атаки (Zanarotti aka screen-saver attack), в результате которой мошеннический KDC может ответить на наш запрос, чтобы получить TGT пользователя. Если установлено значение false, проверка спуфинга будет отключена и значительно повысит производительность аутентификации. krb5.verify.credentials: true
И с веб-сайта MIT: всякий раз, когда программа предоставляет доступ к ресурсу (например, локальному сеансу входа в систему на настольном компьютере) на основании успешного получения пользователем начальных учетных данных Kerberos, она должна проверить эти учетные данные на соответствие безопасному общему секрету (например, host keytab), чтобы убедиться, что учетные данные пользователя действительно происходят из законного KDC. Невыполнение этой проверки является критической уязвимостью, поскольку злоумышленник может выполнить «атаку Занаротти»: пользователь создает поддельный ответ, который, похоже, исходит от легитимного KDC, но содержимое которого поступает из KDC, контролируемого злоумышленником.
Я понимаю, что это действительно устарело, и это может быть или не быть частью вашей проблемы, но я заметил в прошлом, что если вы не используете следующее в krb5.conf, вы можете столкнуться с проблемами:
[области] MYDOMAIN.COM = {kdc = mydomain.com admin_server = mydomain.com }
[области] MYDOMAIN.COM = {kdc = MYDOMAIN.COM admin_server = MYDOMAIN.COM }