понедельник, 3 июля 2017 г.

AWS: Linux, SimpleAD, sssd

Настроить аутентикацию пользователей в линуксе через SimpleAD можно с помощью например SSSD. Работая с этой связкой получил вот такую проблему.
Создавая пользователя, он по умолчанию будет в состоянии Disabled, о чем в /var/log/secure можно будет увидеть что-то типа:
pam_sss(sshd:auth): received for user Domain\userName: 13 (User account has expired)

а в /var/log/messages:
 [sssd[krb5_child[2873]]]: Clients credentials have been revoked

Это как оказалось потому, что в схеме будет поле userAccountControl: 514
А нужное значение = 512
514 означает Account is disabled.
512 - Enabled.
После создания пользователя

#net ads user add kino password -C "Alex Loo" -S domain.com -U Administrator%SUPER_PASSWD

я сделал файлик для модификации схемы:
# more uac.ldif
dn: CN=Alex Loo,CN=Users,DC=domain,DC=com
changetype: modify
replace: userAccountControl
userAccountControl: 512

и применил изменения:
#ldapmodify -f uac.ldif -h domain.com -p 389 -D 'cn=Administrator,cn=Users,dc=domain,dc=com' -W
Enter LDAP Password:
modifying entry "CN=Alex Loo,CN=Users,DC=prod,DC=local"

Как бы сделать так, что бы было сразу 512 для всех новых пользователей?
Схему умолчания менять похоже нужно.

PS: userdata script for automatically join to domain:
#!/bin/bash
DOMAIN="ws.local"
SAD_NS1=172.19.11.21
SAD_NS2=172.19.12.12
HOSTNAME=`hostname`
DOMAINNAME=`hostname -d`
# currently, we don't have Environment tag.
ENVIRONMENT="dev"
CURRENT_NS=$(grep nameserver /etc/resolv.conf |head -1|cut -d  " " -f 2)

set -e
sudo yum -y update
yum -y install dnsmasq
cat >> /etc/dnsmasq.conf << EOF
domain=${DOMAINNAME}
server=/${DOMAIN}/${SAD_NS1}
server=/${DOMAIN}/${SAD_NS2}
server=/${DOMAINNAME}/${CURRENT_NS}
EOF
echo "prepend domain-name-servers 127.0.0.1,${CURRENT_NS};" >> /etc/dhcp/dhcpclient.conf
cat > /etc/resolv.conf << EOF
nameserver 127.0.0.1
nameserver ${CURRENT_NS}
EOF
service dnsmasq start

sudo yum -y install sssd realmd krb5-workstation samba-common openldap-clients adcli
#for ubuntu:
#apt install sssd realmd packagekit krb5-user samba-common adcli sssd-tools sssd libnss-sss libpam-sss

echo "PASSWORD"|realm join -U join@${DOMAIN} ${DOMAIN} --computer-ou=OU=ec2,ou=${ENVIRONMENT},dc=sad,dc=ws,dc=local --verbose
#sed -i "3 a default_domain_suffix = ${DOMAIN}" /etc/sssd/sssd.conf
sed -i -e "s/\(use_fully_qualified_names = \).*/\1False/" /etc/sssd/sssd.conf
sed -i -e "s|\(fallback_homedir = \).*|\1 /home/%u|" /etc/sssd/sssd.conf
# allowing access to members of group linux.groups.dev.sad.ws.local
echo "ad_access_filter = (memberOf=cn=linux,ou=groups,ou=${ENVIRONMENT},dc=sad,dc=ws,dc=local)" >> /etc/sssd/sssd.conf
service sssd restart
realm permit --all
# enabling sudo
echo '%domain\ users ALL=(ALL:ALL) NOPASSWD:ALL' > /etc/sudoers.d/100-domain-users
sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
service sshd restart

Комментариев нет: