Назад | Перейти на главную страницу

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» для «тени» в /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

Теперь аутентификация на основе хоста работает.