pam_check_host_attr не работает должным образом
Отказ от ответственности: я новичок в ldap, так что, надеюсь, я не сделал ничего в основном неправильно!
Цель: централизовать учетные данные пользователя и ограничить доступ клиента к определенным компьютерам.
У меня есть открытая установка сервера openLDAP на новом сервере Ubuntu 14.04 с использованием следующего. По сути, установите LDAP и внесите изменения в схему, чтобы включить host
атрибут для пользователей:
# Install ldap
apt-get install -y slapd ldap-utils ldapscripts
# Modify the schema so we can use the host attribute for users
grep -P '^include.+?\.schema' /usr/share/slapd/slapd.conf > ./schema_convert.conf
echo -e "include\t\t/etc/ldap/schema/ldapns.schema" >> ./schema_convert.conf
# Convert the schema into LDIF
mkdir -p ./ldif_output
index=$(slapcat -f ./schema_convert.conf -F ./ldif_output -n 0 | grep ldapns,cn=schema | sed -re 's/^\S+\s+//')
slapcat -f schema_convert.conf -F ldif_output -n0 -H \
ldap:///${index} -l cn=ldapns.ldif
# Modify the file, ready for importing
sed -i -r \
-e 's/^dn:.+$/dn: '${index/\{*\}/}'/' \
-e 's/^cn:.+$/cn: ldapns/' \
-e '/^(structuralObjectClass|entryUUID|creatorsName|createTimestamp|entryCSN|modifiersName|modifyTimestamp):/d' \
cn=ldapns.ldif
# Add the schema to the slapd-config
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=ldapns.ldif
Я добавил пару групп и людей. Один из моих пользователей имеет host
значение атрибута установлено на одну из моих машин (thor
).
На thor
а также venus
Я настроил их для аутентификации на моем сервере ldap - это работает. Я тогда изменил /etc/ldap.conf
на thor
а также venus
так что это без комментариев:
pam_check_host_attr yes
Я надеялся, что когда я попытаюсь войти в venus
Мне бы не разрешили, так как пользователь имеет только thor
установить в host
атрибут моего ldap сервера.
Можете ли вы рассказать, как ограничить доступ пользователя только к одному конкретному хосту?
1 ответ
Оказывается, мне пришлось изменить мой /etc/nsswitch
файл в соответствии с инструкциями в /usr/share/doc/libpam-ldap/README.Debian
в котором говорится:
Если вы хотите использовать функцию "pam_check_host_attr", убедитесь, что "pam_unix.so" не предоставляет действительную "учетную запись" через переключатель службы имен (NSS), который переопределяет вашу конфигурацию LDAP. Не используйте "ldap" для "shadow" в /etc/nsswitch.conf, просто используйте "shadow: files".
Поэтому, когда я изменил свой /etc/nsswitch
файл из:
passwd: files ldap
group: files ldap
shadow: files ldap
hosts: files dns mdns4_minimal [NOTFOUND=return]
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Для того, чтобы:
passwd: files ldap
group: files ldap
shadow: files
hosts: files dns mdns4_minimal [NOTFOUND=return]
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
И обновил PAM:
pam-auth-update
Проверка подлинности на основе хоста теперь работает.