login 가능한 account 제한

LDAP이나 AD, NIS등으로 인증 통합을 했을 경우, login이 필요없는 account가 대부분 입니다. 또는 서버마다 경우가 틀릴 수 있습니다.

이런 경우, pam_access 모듈을 이용하여 필요한 account만 login을 가능하도록 설정 하는 방법에 대하여 기술 합니다.

참고 LDAP 연동시에는 LDAP의 host attribute를 이용하여 host 별로 인증을 제한할 수 있으며, 안녕 리눅스의 LDAP 인증 통합 문서에서 따로 다루게 됩니다. 그러므로 LDAP을 사용하여 인증 통합시에는 이 방법 보다는 LDAP에서의 제어를 이용 하십시오.

[root@an3 ~]$ cat /etc/pam.d/password-auth-ac
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_tally2.so deny=4 unlock_time=120
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok nodelay try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

account     required      pam_access.so
account     required      pam_tally2.so
account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 minclass=3
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=4
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
[root@an3 ~]$

위의 설정과 같이 account section의 가장 상단에 pam_access.so를 required로 설정 합니다. pam_access 모듈의 option에 대해서는 "man pam_access"를 참고 하십시오.

다음, /etc/security/access.conf 에서 login 가능한 account, group 설정을 하도록 합니다.

[root@an3 ~]$ cat /etc/security/access.conf
+:root wheel:ALL
+:emer kss oops:ALL
+:kldp:LOCAL
-:ALL:ALL
[root@an3 ~]$

문법은 다음과 같이 3개의 field로 구성 됩니다.

[CONDITION]:[USER or GROUP]:[ORIGIN]

문법에 대한 자세한 예제는 /etc/security/access.conf를 참고 하십시오.

  • CONDITION

    • + 또는 -로 설정.

    • +는 PERMIT

    • -는 DENY를 의미

  • USER or GROUP

    • user 또는 group 을 기록

    • 공백 문자를 구분자로 복수 등록 가능

    • user와 gruop을 따로 구분하지 않기 때문에 동일한 user와 gruop간에 의도치 않은 결과 발생 가능하니 주의해야 함

    • netgroup의 경우에는 @를 앞에 붙여줍니다. (@netgroup)

  • ORIGIN

    • 접근 시도 장소(?)

    • tty name, IPv4, IPv6, domain name, LOCAL, NONE, ALL 을 사용 가능

상단의 /etc/security/access.conf 의 의미는 다음과 같습니다.

  1. root와 wheel group login permit

  2. emer/kss/oops account or group login permit

  3. kldp account or group은 LOCAL에서만 permit

  4. 1~3 조건에 해당하지 않으면, 모두 deny

Last updated