Oracle DB, MySQL, PostgreSQL 등 DBMS를 설치, 운용하기 위해서는 해당 Aplication을 기동/정지/유지 보수하기 위한 전용계정을 필요로 하게 된다.
해당 OS 계정은 DBMS를 직접 제어할 수 있는 SQL Plus나 pSQL등의 권한이 있기 때문에 보안상 계정에 대한 접근을 제어할 필요가 있을 때가 있다.
만약 DBMS 운용계정등 특정 용도로 만들어진 OS 계정에 대한 SSH 원격 로그인 차단과 함께,
특정 계정에서만 해당 계정을 Switching 할 수 있도록 설정이 필요하다면,
아래와 같이 PAM 인증 Module 설정을 통해 해당 요건을 설정 할 수 있다.
다만 해당 설정은 SSH 및 PAM Base로 동작 하기 때문에 서버에 SSH 이외에 telnet과 같은 원격제어 서비스 데몬이 활성화 되어있고 그를 통해 접근 한다면 해당 설정은 무력화 된다.
때문에 SSH를 제외한 원격제어용 서비스 데몬을 모두 비활성화 처리 하거나 서비스 특성상 어쩔 수 없이 허용되야 할 경우 별도로 PAM 인증 설정을 추가하여야 한다.
1. Linux OS 이하 Telnet 서비스 비활성화 처리하기
[root@test01 ~]# [root@test01 ~]# chkconfig --level 35 telnet off [root@test01 ~]# [root@test01 ~]# [root@test01 ~]# chkconfig --list | grep telnet ekrb5-telnet: off krb5-telnet: off telnet: off [root@test01 ~]# [root@test01 ~]# |
2. PAM 모듈 설치 확인하기
[root@test01 ~]# [root@test01 ~]# rpm -qa | grep pam| uniq | sort -u pam-0.99.6.2-14.el5_11 pam-devel-0.99.6.2-14.el5_11 pam_ccreds-3-5 pam_krb5-2.2.14-22.el5 pam_passwdqc-1.0.2-1.2.2 pam_pkcs11-0.5.3-26.el5 pam_smb-1.1.7-7.2.1 [root@test01 ~]# [root@test01 ~]# [root@test01 ~]# rpm -qi pam-0.99.6.2-14.el5_11 Name : pam Relocations: (not relocatable) Version : 0.99.6.2 Vendor: CentOS Release : 14.el5_11 Build Date: 2015년 05월 27일 (수) 오후 10시 49분 12초 Install Date: 2015년 12월 09일 (수) 오전 05시 03분 57초 Build Host: builder17.centos.org Group : System Environment/Base Source RPM: pam-0.99.6.2-14.el5_11.src.rpm Size : 2590520 License: GPL or BSD Signature : DSA/SHA1, 2015년 05월 27일 (수) 오후 11시 34분 51초, Key ID a8a447dce8562897 URL : http://www.us.kernel.org/pub/linux/libs/pam/index.html Summary : A security tool which provides authentication for applications Description : PAM (Pluggable Authentication Modules) 은 시스템 관리자들이 인증용 프로그램들을 다시 컴파일하지 않고도 인증정책을 새로 만들수 있도록 도와주는 보안 관련 툴입니다. Name : pam Relocations: (not relocatable) Version : 0.99.6.2 Vendor: CentOS Release : 14.el5_11 Build Date: 2015년 05월 27일 (수) 오후 10시 48분 51초 Install Date: 2015년 12월 09일 (수) 오전 05시 04분 02초 Build Host: builder17.centos.org Group : System Environment/Base Source RPM: pam-0.99.6.2-14.el5_11.src.rpm Size : 2555432 License: GPL or BSD Signature : DSA/SHA1, 2015년 05월 27일 (수) 오후 11시 34분 51초, Key ID a8a447dce8562897 URL : http://www.us.kernel.org/pub/linux/libs/pam/index.html Summary : A security tool which provides authentication for applications Description : PAM (Pluggable Authentication Modules) 은 시스템 관리자들이 인증용 프로그램들을 다시 컴파일하지 않고도 인증정책을 새로 만들수 있도록 도와주는 보안 관련 툴입니다. [root@test01 ~]# [root@test01 ~]# [root@test01 ~]# ls -l /lib/security/pam_listfile.so -rwxr-xr-x 1 root root 8484 May 27 2015 /lib/security/pam_listfile.so [root@test01 ~]# [root@test01 ~]# [root@test01 ~]# ls -l /lib/security/pam_wheel.so -rwxr-xr-x 1 root root 5640 May 27 2015 /lib/security/pam_wheel.so [root@test01 ~]# [root@test01 ~]# |
3. 특정 계정에 대한 SSH 로그인 제한 PAM 인증 설정 및 로그인 제한 계정목록 작성 (예시계정 : oradba)
[root@test01 ~]# [root@test01 ~]# vi /etc/pam.d/sshd ## 맨 윗줄에 아래 설정 추가 auth required pam_listfile.so item=user sense=deny file=/etc/ssh/sshusers_limit onerr=succeed [root@test01 ~]# [root@test01 ~]# [root@test01 ~]# [root@test01 ~]# vi /etc/ssh/sshusers_limit oradba [root@test01 ~]# [root@test01 ~]# |
※ telnet의 경우 아래 참고
[root@test01 ~]# [root@test01 ~]# vi /etc/pam.d/login auth required pam_listfile.so item=user sense=deny file=/etc/telnet_users_limit onerr=succeed [root@test01 ~]# [root@test01 ~]# [root@test01 ~]# vi /etc/telnet_users_limit oradba [root@test01 ~]# |
4. 특정 계정에서만 해당 계정(oradba)으로 스위칭 할 수 있도록 아래와 같이 Pam 추가 (예시 : dba 그룹)
[root@test01 ~]# [root@test01 ~]# vi /etc/pam.d/su auth required pam_wheel.so debug use_uid group=dba [root@test01 ~]# [root@test01 ~]# [root@test01 ~]# |
5. oradba 계정에 대한 SSH 원격로그인 차단 확인 및 Switching 차단 로그 확인하기
[helperchoi@test01 ~]$ [helperchoi@test01 ~]$ ssh oradba@192.168.137.10 Address 192.168.137.10 maps to test01, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT! oradba@192.168.137.10's password:
Permission denied, please try again. oradba@192.168.137.10's password:
[helperchoi@test01 ~]$ [helperchoi@test01 ~]$ [helperchoi@test01 ~]$ su oradba
Password: su: incorrect password
Password: su: incorrect password
[helperchoi@test01 ~]$ [helperchoi@test01 ~]$ [helperchoi@test01 ~]$
[root@test01 ~]# cat /var/log/secure
Aug 11 18:34:38 test01 sshd[16058]: Address 192.168.137.10 maps to test01, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT! Aug 11 18:34:46 test01 sshd[16058]: pam_listfile(sshd:auth): Refused user oradba for service sshd Aug 11 18:34:48 test01 sshd[16058]: Failed password for oradba from 192.168.137.10 port 39510 ssh2 Aug 11 18:34:55 test01 sshd[16058]: pam_listfile(sshd:auth): Refused user oradba for service sshd Aug 11 18:34:57 test01 sshd[16058]: Failed password for oradba from 192.168.137.10 port 39510 ssh2 Aug 11 18:34:57 test01 sshd[16062]: Connection closed by 192.168.137.10 Aug 11 18:35:21 test01 su: pam_wheel(su-l:auth): no members in 'dba' group Aug 11 18:35:27 test01 su: pam_wheel(su-l:auth): no members in 'dba' group
|
6. 특정 계정에서(helperchoi) oradba 계정으로 스위칭 할 수 있도록 Group 권한(dba) 할당 후 Switching 확인
[root@test01 ~]# [root@test01 ~]# usermod -G dba helperchoi [root@test01 ~]# [root@test01 ~]# [root@test01 ~]# id helperchoi uid=509(helperchoi) gid=510(helperchoi) groups=510(helperchoi),512(dba) [root@test01 ~]# [root@test01 ~]# [helperchoi@test01 ~]$ [helperchoi@test01 ~]$ su oradba Password: [oradba@test01 helperchoi]$ [oradba@test01 helperchoi]$ [oradba@test01 helperchoi]$
[root@test01 ~]# [root@test01 ~]# [root@test01 ~]# tail -f /var/log/secure
Aug 11 18:56:09 test01 su: pam_wheel(su:auth): Ignoring access request 'helperchoi' for 'oradba' Aug 11 18:56:11 test01 su: pam_unix(su:session): session opened for user oradba by helperchoi(uid=509)
|