CentOS 6.5 で OpenLDAP(8)SSHのログイン制限

More than 5 years have passed since last update.


概要

LDAPに登録されている全員にSSHログインを許可しないようにする

特に、テストサーバーと本番サーバーなど、サーバー環境が分かれている場合、本番サーバーには特定のユーザーしかアクセス出来ないようにする

この際、「description」属性を使用し、制限をかける


前提


  • 部長とシステム運用課の課長と社員は、本番サーバーにアクセス権を持つ

  • 部長とシステム開発課の課長と社員は、テストサーバーにアクセス権を持つ


LDAPサーバーに各ユーザーの権限を設定する


/etc/openldap/ldif/auth.ldif

# 部長:武田 貴彦

dn: uid=takahiko.takeda,dc=People,dc=example,dc=com
changetype: modify
add: description
description: production
-
add: description
description: development

# 開発課 課長:横山 真也
dn: uid=shinya.yokoyama,dc=People,dc=example,dc=com
changetype: modify
add: description
description: development

# 運用課 課長:井上 修
dn: uid=osamu.inoue,dc=People,dc=example,dc=com
changetype: modify
add: description
description: production

# 開発課 社員:石川 直樹
dn: uid=naoki.ishikawa,dc=People,dc=example,dc=com
changetype: modify
add: description
description: development

# 運用課 社員:田村 和夫
dn: uid=kazuo.tamura,dc=People,dc=example,dc=com
changetype: modify
add: description
description: production


ldapmodify -x -D "cn=Manager,dc=example,dc=com" -W -f /etc/openldap/ldif/auth.ldif


テストサーバー側設定


/etc/nslcd.conf 編集


/etc/nslcd.conf

uid nslcd

gid ldap
uri ldaps://192.168.0.10/
base dc=example,dc=com
ssl yes
tls_cacertdir /etc/openldap/cacerts
tls_reqcert allow

filter passwd (description=development)
filter shadow (description=development)
filter group (objectClass=posixGroup)



/etc/ssh/ldap.conf 編集


/etc/ssh/ldap.conf

uri ldaps://192.168.0.10/

base dc=example,dc=com
host 192.168.0.10
ssl yes
tls_cacertdir /etc/openldap/cacerts
tls_checkpeer yes
tls_reqcert allow

pam_filter description=development



/etc/pam_ldap.conf


/etc/pam_ldap.conf

uri ldaps://192.168.0.10/

base dc=example,dc=com
host 192.168.0-.10
ssl yes
tls_cacertdir /etc/openldap/cacerts
tls_checkpeer yes
tls_reqcert allow

pam_filter description=development
nss_base_passwd ou=People,dc=example,dc=com?sub?description=development
nss_base_shadow ou=People,dc=example,dc=com?sub?description=development
nss_base_group ou=Group,dc=example,dc=com?sub?objectClass=posixGroup



再起動

reboot


本番サーバー側設定


/etc/nslcd.conf 編集


/etc/nslcd.conf

uid nslcd

gid ldap
uri ldaps://192.168.0.10/
base dc=example,dc=com
ssl yes
tls_cacertdir /etc/openldap/cacerts
tls_reqcert allow

filter passwd (description=production)
filter shadow (description=production)
filter group (objectClass=posixGroup)



/etc/ssh/ldap.conf 編集


/etc/ssh/ldap.conf

uri ldaps://192.168.0.10/

base dc=example,dc=com
host 192.168.0.10
ssl yes
tls_cacertdir /etc/openldap/cacerts
tls_checkpeer yes
tls_reqcert allow

pam_filter description=production



/etc/pam_ldap.conf


/etc/pam_ldap.conf

uri ldaps://192.168.0.10/

base dc=example,dc=com
host 192.168.0-.10
ssl yes
tls_cacertdir /etc/openldap/cacerts
tls_checkpeer yes
tls_reqcert allow

pam_filter description=production
nss_base_passwd ou=People,dc=example,dc=com?sub?description=production
nss_base_shadow ou=People,dc=example,dc=com?sub?description=production
nss_base_group ou=Group,dc=example,dc=com?sub?objectClass=posixGroup



再起動

reboot


確認


SSH確認

開発課は本番サーバーへ接続できない

運用課はテストサーバーへ接続できない

部長は全サーバーにアクセスできる

以上を確認する