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에서 확인하실 수 있습니다.