[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
명령어를 통해 suser
가 wheel
그룹에 포함되었는지 확인할 수 있습니다.# 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 문서를 참고하시면 도움이 됩니다.
댓글
댓글 쓰기