[Linux] Restrict SU Command to root user(su command 사용자 제한 설정)

 


su 명령어(substitute user)를 사용하면 일반 사용자도 root 권한을 획득할 수 있습니다. 기본적으로는 root 패스워드만 알고 있다면 누구나 su 명령어를 이용해 root로 전환이 가능합니다. 하지만 보안 강화를 위해, 지정된 사용자만 su 명령어를 사용할 수 있도록 제한할 수 있습니다. 이는 PAM(Pluggable Authentication Modules) 설정을 통해 구현할 수 있습니다.

 

su command 제한 목적

PAM 모듈 설정을 수정하면 지정된 사용자만 su 명령어를 사용할 수 있도록 제한할 수 있습니다. 운영 환경에서는 일반적으로 root 계정의 직접적인 SSH 접속을 차단하고, su 명령어 사용 역시 특정 사용자로 제한하여 root 권한 획득 경로를 통제하는 방식으로 보안을 강화합니다.

 

테스트 환경

다음과 같은 OS 버전에서 설정을 테스트하였습니다.

  • RHEL 6

  • RHEL 7

  • RHEL 8

  • RHEL 9

 

wheel 그룹 사용자만 su command 사용하도록 설정

이 설정을 적용하면 su 명령어는 wheel 그룹에 속한 사용자만 사용할 수 있도록 제한됩니다. 설정 전, wheel 그룹에 필요한 사용자가 포함되어 있는지 반드시 확인해야 합니다. 특히 root 계정의 SSH 접속이 차단된 환경에서 wheel 그룹에 사용자 없이 설정을 적용하면, root 로그인은 콘솔 접근만 가능해집니다. VM이나 클라우드 환경에서는 문제가 없지만, 물리 서버의 경우 서버실에 직접 방문해야 할 수 있습니다.

/etc/pam.d/su 파일에는 아래와 같은 라인이 기본적으로 주석 처리되어 있습니다. 이 주석을 해제하면 wheel 그룹 사용자만 su 명령을 사용할 수 있습니다.

#auth           required        pam_wheel.so use_uid


설정 적용 및 사용자 그룹 추가

/etc/pam.d/su 파일에서 위 라인의 주석을 해제하여 wheel 그룹 사용자만 su 명령을 사용할 수 있도록 설정합니다. 그런 다음, su 명령어를 사용할 사용자를 wheel 그룹에 추가합니다.

# vi /etc/pam.d/su#%PAM-1.0
auth		required	pam_env.so
auth		sufficient	pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth		sufficient	pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth		required	pam_wheel.so use_uid            ## 주석 해제
auth		substack	system-auth
auth		include		postlogin
account		sufficient	pam_succeed_if.so uid = 0 use_uid quiet
account		include		system-auth
password	include		system-auth
session		include		system-auth
session		include		postlogin
session		optional	pam_xauth.so

사용자에게 wheel 그룹 권한 부여

이제 su 명령어를 사용할 사용자 계정에 wheel 그룹 권한을 부여합니다. 아래 예에서는 suser라는 사용자 계정을 추가합니다.

# usermod -aG wheel suser

이후 id 명령어를 통해 suserwheel 그룹에 포함되었는지 확인할 수 있습니다.
# id suser
uid=1004(suser) gid=1004(suser) groups=1004(suser),10(wheel)

 

설정 확인

이제 suser 사용자만 su 명령어를 사용할 수 있는지 확인해보겠습니다.

먼저, testuser 사용자는 wheel 그룹에 속해 있지 않으므로 su 명령어를 사용할 수 없습니다.

[testuser@bastion ~]$ id
uid=1005(testuser) gid=1005(testuser) groups=1005(testuser) 
[testuser@bastion ~]$ su -
Password: 
su: Permission denied

반면, suser는 wheel 그룹에 속해 있으므로 정상적으로 su 명령어를 사용할 수 있습니다.
[suser@bastion ~]$ id
uid=1004(suser) gid=1004(suser) groups=1004(suser),10(wheel)
[suser@bastion ~]$ su -
Password: 
[root@bastion ~]#

 

마치며

su 명령어 사용 권한을 특정 사용자로 제한하는 방법에 대해 알아보았습니다. 이 설정은 운영 환경에서 root 접근 경로를 통제하고 보안을 강화하는 데 널리 사용됩니다. 참고로 su 외에도 root 권한을 획득할 수 있는 방법으로 sudo 명령어를 사용할 수 있으며, 관련 설정이 궁금하다면 sudo command 문서를 참고하시면 도움이 됩니다.


댓글

이 블로그의 인기 게시물

[Linux] RHEL Local YUM Repository 구성

[Linux Command] sudo command 설명

[Ansible Modules] Fetch module 설명 및 활용