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

restrict su command

su command(substitute user)를 이용하여 root 권한을 획득할 수 있습니다. 기본적으로는 누구나 root 패스워드를 알고 있으면 su command를 이용하여 root로 로그인할 수 있습니다. 그러나 지정된 사용자 외에는 su command를 사용하지 못하게 제한할 수 있는 방법이 있습니다. 바로 인증 모듈인 pam의 설정을 변경하여 가능합니다.

 

su command 제한 목적

pam 모듈의 설정을 변경하여 지정된 사용자만 su command를 사용할 수 있게 합니다. 주로 운영환경에서 root 유저의 직접적인 ssh 접속을 막아놓고 su command 사용을 특정 사용자로 제한하여 root 접근을 특정 사용자로 제한하는 보안 강화 방법 중 하나입니다.

 

테스트 환경

아래의 OS버전에서 테스트 되었습니다.

  • RHEL [6, 7, 8, 9]

 

wheel 그룹의 사용자만 su command 사용할 수 있도록 설정

💡 먼저 주의할 점은 해당 설정을 진행하게 되면 su 명령은 wheel 그룹에 속한 사용자로 제한됩니다. 설정을 진행하기 전에 wheel 그룹에 사용자가 지정되었는지 먼저 확인 후 진행합니다. root 유저로 ssh가 접속되지 않게 막아둔 상태에서 wheel 그룹에 속한 사용자 없이 해당 설정이 진행된다면 root 유저는 콘솔에서만 접속이 됩니다. VM이나 클라우드 환경은 문제가 없지만 물리 서버 사용자라면 IDC에 있는 서버 앞으로 가야 하는 상황이 발생할 수 있습니다.

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

#auth           required        pam_wheel.so use_uid

따라서 위에서 본 “/etc/pam.d/su” 파일의 해당 부분을 주석 해제하여 wheel 그룹 사용자만 su 명령을 사용할 수 있도록 설정합니다. 그다음 su 명령을 사용할 사용자를 wheel 그룹에 포함시킵니다.

  • /etc/pam.d/su 파일에서 아래 라인 주석 해제
# vi /etc/pam.d/su
[root@bastion ~]# cat /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 그룹 부여 ( suser는 유저 이름입니다 )

위에서 wheel 그룹의 사용자만 su 명령을 사용할 수 있도록 제한하였으므로 su 명령을 사용할 사용자를 wheel 그룹에 포함시켜 줍니다.

# usermod -aG wheel suser

id 명령으로 suser 사용자 정보를 조회해 보면 보조 그룹에 wheel 그룹이 추가된 부분을 확인할 수 있습니다.

# id suser
uid=1004(suser) gid=1004(suser) groups=1004(suser),10(wheel)

 

설정 확인

suser 사용자만 su command를 사용할 수 있는지 확인해 보겠습니다.

  • testuser 사용자 su command 사용 테스트< testuser 사용자는 권한 거부로 root 유저 접속에 실패합니다. >
[testuser@bastion ~]$ id
uid=1005(testuser) gid=1005(testuser) groups=1005(testuser) 
[testuser@bastion ~]$ su -
Password: 
su: Permission denied
  • suser 사용자 su 명령어 사용 테스트 <접속 성공>
[suser@bastion ~]$ id
uid=1004(suser) gid=1004(suser) groups=1004(suser),10(wheel)
[suser@bastion ~]$ su -
Password: 
[root@bastion ~]#

마치며

su 명령을 사용할 수 있는 계정을 지정할 수 있는 방법을 확인해 봤습니다. 이 설정은 보안을 강화하기 위해 운영 환경에서 많이 사용되는 방법입니다. su 명령어 외에 root 계정을 획득할 수 있는 방법으로 sudo 명령어를 사용할 수 있습니다. 방법이 궁금하시면 sudo command에서 확인하실 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top