4.2. 루트 액세스 제어
홈 시스템을 관리할 때 사용자는
root
사용자로 일부 작업을 수행하거나 sudo 또는 su 와 같은 setuid 프로그램을 사용하여 유효한 루트
권한을 획득해야 합니다. setuid 프로그램은 프로그램을 실행하는 사용자가 아니라 프로그램 소유자의 사용자 ID(UID)로 작동하는 프로그램입니다. 이러한 프로그램은 다음 예와 같이 긴 형식 목록의 소유자 섹션에 있는 s
로 표시됩니다.
~]$ ls -l /bin/su
-rwsr-xr-x. 1 root root 34904 Mar 10 2011 /bin/su
참고
s
는 대문자 또는 소문자일 수 있습니다. 대문자로 표시되는 경우 기본 권한 비트가 설정되지 않았음을 의미합니다.
그러나 조직의 시스템 관리자의 경우 조직 내의 관리 액세스 사용자가 시스템에 있어야 하는 액세스 수에 따라 선택을 수행해야 합니다.
pam_console.so
라는 PAM 모듈을 통해 일반적으로 이동식 미디어 재부팅 및 마운트와 같은 루트 사용자에 대해서만 예약되는 일부 활동은 물리 콘솔에서 로그인하는 첫 번째 사용자에게 허용됩니다. 그러나 네트워크 설정 변경, 새 마우스 구성 또는 네트워크 장치 마운트와 같은 기타 중요한 시스템 관리 작업은 관리자 권한 없이는 불가능합니다. 따라서 시스템 관리자는 네트워크에서 사용자에게 얼마나 많은 액세스 권한을 받아야 하는지 결정해야 합니다.
4.2.1. 루트 액세스 허용
관리자가 이러한 이유 또는 다른 이유로
root
로 로그인할 수 없는 경우 루트 암호는 비밀로 유지되어야 하며, 부트 로더 암호 보호를 통해 실행 수준 하나 또는 단일 사용자 모드에 대한 액세스는 허용하지 않아야 합니다(이 항목에 대한 자세한 내용은 4.2.5절. “Boot Loader 보안” 참조).
다음은 관리자가 더 이상
루트
로그인을 허용하지 않도록 할 수 있는 네 가지 방법입니다.
- 루트 쉘 변경
- 사용자가
root
로 직접 로그인하지 못하도록 시스템 관리자는/etc/passwd
파일에서root
계정의 쉘을 /sbin/nologin 으로 설정할 수 있습니다.표 4.2. 루트 쉘 비활성화 효과 영향을 받지 않음 root
쉘에 대한 액세스를 방지하고 이러한 시도를 기록합니다. 다음 프로그램이root
계정에 액세스하지 못합니다.- login
- gdm
- kdm
- xdm
- su
- ssh
- scp
- sftp
FTP 클라이언트, 메일 클라이언트 및 많은 setuid 프로그램과 같은 쉘이 필요하지 않은 프로그램입니다. 다음 프로그램은root
계정에 액세스 하지 못합니다.- sudo
- FTP 클라이언트
- 이메일 클라이언트
- 콘솔 장치(tty)를 사용하여 루트 액세스 비활성화
root
계정에 대한 액세스를 추가로 제한하기 위해 관리자는/etc/securetty
파일을 편집하여 콘솔에서root
로그인을 비활성화할 수 있습니다. 이 파일에는root
사용자가 로그인할 수 있는 모든 장치가 나열됩니다. 파일이 전혀 없는 경우루트
사용자는 콘솔 또는 원시 네트워크 인터페이스를 통해 시스템상의 모든 통신 장치를 통해 로그인할 수 있습니다. 이는 사용자가 네트워크를 통해 일반 텍스트로 암호를 전송하는 Telnet을 사용하여 시스템에root
로 로그인할 수 있기 때문에 위험합니다.기본적으로 Red Hat Enterprise Linux 7의/etc/securetty
파일은root
사용자만 시스템에 물리적으로 연결된 콘솔에서만 로그인할 수 있습니다.루트
사용자가 로그인하지 못하도록 하려면 쉘 프롬프트에서root
로 다음 명령을 입력하여 이 파일의 내용을 제거합니다.echo > /etc/securetty
KDM, GDM 및 XDM 로그인 관리자에서securetty
지원을 활성화하려면 다음 줄을 추가하십시오.auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
아래 나열된 파일에서 다음을 수행합니다./etc/pam.d/gdm
/etc/pam.d/gdm-autologin
/etc/pam.d/gdm-fingerprint
/etc/pam.d/gdm-password
/etc/pam.d/gdm-smartcard
/etc/pam.d/kdm
/etc/pam.d/kdm-np
/etc/pam.d/xdm
주의인증이 끝날 때까지 콘솔이 열려 있지 않기 때문에 빈/etc/securetty
파일이루트
사용자가 OpenSSH 도구 모음을 사용하여 원격으로 로그인하지 못하도록 방지하지 않습니다.표 4.3. 루트 로그인 비활성화 효과 영향을 받지 않음 콘솔 또는 네트워크를 사용하여root
계정에 대한 액세스를 방지합니다. 다음 프로그램이root
계정에 액세스하지 못합니다.- login
- gdm
- kdm
- xdm
- tty를 여는 기타 네트워크 서비스
root
로 로그인하지 않고 setuid 또는 기타 메커니즘을 통해 관리 작업을 수행하는 프로그램입니다. 다음 프로그램은root
계정에 액세스 하지 못합니다.- su
- sudo
- ssh
- scp
- sftp
- 루트 SSH 로그인 비활성화
- SSH 프로토콜을 통한
root
로그인을 방지하려면 SSH 데몬의 구성 파일/etc/ssh/sshd_config
를 편집하고 다음과 같은 행을 변경합니다.#PermitRootLogin yes
다음과 같이 읽기:PermitRootLogin no
표 4.4. 루트 SSH 로그인 비활성화 효과 영향을 받지 않음 OpenSSH 도구 모음을 사용하여root
액세스를 방지합니다. 다음 프로그램이root
계정에 액세스하지 못합니다.- ssh
- scp
- sftp
OpenSSH 도구 제품군에 포함되지 않은 프로그램. - PAM을 사용하여 서비스에 대한 root 액세스 제한
- PAM은
/lib/security/pam_listfile.so
모듈을 통해 특정 계정을 거부할 수 있는 유연성을 제공합니다. 관리자는 이 모듈을 사용하여 로그인할 수 없는 사용자 목록을 참조할 수 있습니다. 시스템 서비스에 대한루트
액세스를 제한하려면/etc/pam.d/
디렉터리에서 타겟 서비스의 파일을 편집하고 인증에 필요한pam_listfile.so
모듈이 필요합니다.다음은/etc/pam.d/COMPLETE PAM 설정 파일의 vsftpd
FTP 서버에 모듈을 사용하는 방법의 예입니다(모듈이 한 줄에 있는 경우 첫 번째 줄의\
문자는 필요하지 않습니다 ).auth required /lib/security/pam_listfile.so item=user \ sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
그러면 PAM이/etc/COMPLETE.ftpusers
파일을 참조하고 나열된 모든 사용자에 대한 서비스에 대한 액세스를 거부하도록 지시합니다. 관리자는 이 파일의 이름을 변경할 수 있으며, 각 서비스에 대해 별도의 목록을 유지하거나 하나의 중앙 목록을 사용하여 여러 서비스에 대한 액세스를 거부할 수 있습니다.관리자가 여러 서비스에 대한 액세스를 거부하려는 경우, 메일 클라이언트의 경우/etc/pam.d/pop
및/etc/pam.d/imap
과 같은 PAM 구성 파일에 유사한 행을 추가할 수 있습니다. SSH 클라이언트의 경우/etc/pam.d/ssh
.PAM에 대한 자세한 내용은/usr/share/doc/pam -<version>/html/ 디렉터리에 있는 Linux- PAM 시스템 관리자 가이드
를 참조하십시오.표 4.5. PAM을 사용하여 루트 비활성화 효과 영향을 받지 않음 PAM이 인식하는 네트워크 서비스에 대한루트
액세스를 방지합니다. 다음 서비스가root
계정에 액세스하지 못합니다.- login
- gdm
- kdm
- xdm
- ssh
- scp
- sftp
- FTP 클라이언트
- 이메일 클라이언트
- PAM 인식 서비스
PAM이 인식하지 못하는 프로그램 및 서비스