Отказ от ответственности: Я новичок в 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
Теперь аутентификация на основе хоста работает.