주의
이 문서에서는 EOL(서비스 종료) 상태의 Linux 배포판인 CentOS에 대한 내용을 다룹니다. 이에 따라 사용 및 계획을 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조하세요.
이 문서에서는 다음 구현에 해당하는 Linux 게스트에 대한 구성 설정을 자세히 설명합니다.
- Linux 머신은 Azure 컴퓨팅 보안 기준에 대한 요구 사항을 충족해야 합니다 . Azure Policy 게스트 구성 정의
- 클라우드용 Microsoft Defender 머신의 보안 구성 취약성을 수정해야 합니다.
수정 검사 및 제안의 경우 모범 사례 접근 방식을 사용했습니다. 그러나 모든 프로덕션 환경에서 명령이 테스트되고 맹목적으로 적용되지 않도록 항상 확인하세요. 자동 수정을 위해 "DeployIfNotExist" 작업으로 이 정책을 테스트할 수 있도록 새로운 자동 수정 기능을 제한된 공개 미리 보기로 릴리스했습니다.
감사 및 수정에 대한 정책의 새 릴리스는 오픈 소스 엔진 인 azure-osconfig 를 통해 제공됩니다. 다시 배치되는 알림에 대해 자세히 알아볼 수 있습니다.
자세한 내용은 Azure Policy 게스트 구성 및 Azure 보안 벤치마크(V2) 개요를 참조하세요.
CIS 매핑은 Distro Independent Benchmark v2.0.0 버전을 기반으로 합니다.
일반 보안 컨트롤
| 속성 (CCEID) |
새 이름 | 세부 정보 | 수정 확인 |
|---|---|---|---|
| /home 파티션에서 nodev 옵션을 설정합니다. (1.1.4) |
/home 파티션에 설정된 nodev 옵션 확인(CIS: L1 - 서버 - 1.1.14) | 설명: 공격자가 /home 파티션에 특수 디바이스(예: 블록 또는 문자 디바이스)를 탑재할 수 있습니다. | /etc/fstab 파일을 편집하고 /home 파티션의 네 번째 필드(탑재 옵션)에 nodev를 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| /tmp 파티션에 설정된 nodev 옵션을 확인합니다. (1.1.5) |
/tmp 파티션에 설정된 nodev 옵션 확인(CIS: L1 - 서버 - 1.1.3) | 설명: 공격자가 /tmp 파티션에 특수 디바이스(예: 블록 또는 문자 디바이스)를 탑재할 수 있습니다. | /etc/fstab 파일을 편집하고 /tmp 파티션의 네 번째 필드(탑재 옵션)에 대해 nodev를 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| /var/tmp 파티션에서 nodev 옵션을 설정합니다. (1.1.6) |
/var/tmp 파티션에 설정된 nodev 옵션 확인(CIS: L1 - Server - 1.1.8) | 설명: 공격자가 /var/tmp 파티션에 특수 디바이스(예: 블록 또는 문자 디바이스)를 탑재할 수 있습니다. | /etc/fstab 파일을 편집하고 /var/tmp 파티션의 네 번째 필드(탑재 옵션)에 nodev를 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| /tmp 파티션에 설정된 nosuid 옵션을 확인합니다. (1.1.7) |
/tmp 파티션에 설정된 nosuid 옵션 확인(CIS: L1 - 서버 - 1.1.4) | 설명: /tmp 파일 시스템은 임시 파일 스토리지에만 사용되므로 사용자가 /var/tmp에 setuid 파일을 만들 수 없도록 이 옵션을 설정합니다. | /etc/fstab 파일을 편집하고 /tmp 파티션의 네 번째 필드(탑재 옵션)에 대해 nosuid를 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| /var/tmp 파티션에서 nosuid 옵션을 설정합니다. (1.1.8) |
/var/tmp 파티션에 설정된 nosuid 옵션 확인(CIS: L1 - 서버 - 1.1.9) | 설명: /var/tmp 파일 시스템은 임시 파일 스토리지에만 사용되므로 사용자가 /var/tmp에서 setuid 파일을 만들 수 없도록 이 옵션을 설정합니다. | /etc/fstab 파일을 편집하고 /var/tmp 파티션의 네 번째 필드(탑재 옵션)에 nosuid를 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| /var/tmp 파티션에 noexec 옵션이 설정되어 있는지 확인합니다. (1.1.9) |
/var/tmp 파티션에 설정된 noexec 옵션 확인(CIS: L1 - Server - 1.1.10) | 설명: /var/tmp 파일 시스템은 임시 파일 스토리지에만 사용되므로 사용자가 /var/tmp에서 실행 가능한 이진 파일을 실행할 수 없도록 이 옵션을 설정합니다. |
/etc/fstab 파일을 편집하고 /var/tmp 파티션의 네 번째 필드(탑재 옵션)에 noexec를 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| /dev/shm 파티션에 noexec 옵션이 설정되어 있는지 확인합니다. (1.1.16) |
/dev/shm 파티션에 설정된 noexec 옵션 확인(CIS: L1 - 서버 - 1.1.17) | 설명: 파일 시스템에서 이 옵션을 설정하면 사용자가 공유 메모리에서 프로그램을 실행할 수 없습니다. 이 컨트롤은 사용자가 시스템에 잠재적 악성 소프트웨어를 가져오지 못하게 할 수 있습니다. | /etc/fstab 파일을 편집하고 /dev/shm 파티션의 네 번째 필드(탑재 옵션)에 noexec를 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| 자동 탑재 사용 안 함 (1.1.21) |
자동 탑재를 사용하지 않도록 설정(CIS: L1 - 서버 - 1.1.22) | 설명: 자동 탑재를 사용하도록 설정하면 물리적 액세스 권한이 있는 모든 사용자가 USB 드라이브 또는 디스크를 연결하고 자체 탑재 권한이 없는 경우에도 시스템에서 해당 콘텐츠를 사용할 수 있습니다. | autofs 서비스 사용 안 함: systemctl disable autofs (systemd) 또는 chkconfig autofs off (sysv) |
| USB 스토리지 디바이스 탑재를 사용하지 않도록 설정 (1.1.21.1) |
USB 스토리지 디바이스의 탑재를 사용하지 않도록 설정(CIS: L1 - 서버 - 1.1.23) | 설명: USB 스토리지 디바이스에 대한 지원을 제거하면 서버의 로컬 공격 노출 영역을 줄일 수 있습니다. | .conf에서 install usb-storage /bin/true 끝나는 파일에 추가 /etc/modprobe.d/ 한 다음 실행modprobe -r usb-storage |
| 코어 덤프가 제한되는지 확인합니다. (1.5.1) |
코어 덤프가 제한되었는지 확인(CIS: L1 - 서버 - 1.5.1) | 설명: 코어 덤프에 하드 제한을 설정하면 사용자가 소프트 변수를 재정의할 수 없습니다. 코어 덤프가 필요한 경우 사용자 그룹에 제한을 설정하는 것이 좋습니다(limits.conf(5) 참조). 또한 fs.suid_dumpable 변수를 0으로 설정하면 setuid 프로그램에서 코어를 덤프할 수 없습니다. |
* hard core 0 에 추가하고 /etc/security/limits.conf 설정한 fs.suid_dumpable = 0/etc/sysctl.conf다음, 실행sysctl -p |
| 사전 링크가 비활성화되어 있는지 확인합니다. (1.5.4) |
사전 링크가 비활성화되었는지 확인(CIS: L1 - 서버 - 1.5.4) | 설명: 미리 연결 기능은 이진 파일을 변경하기 때문에 AIDE의 작업을 방해할 수 있습니다. 또한 악의적인 사용자가 libc와 같은 일반적인 라이브러리를 손상시킬 수 있는 경우 미리 연결하면 시스템의 취약성이 증가할 수 있습니다. | 사전 링크 제거: yum remove prelink (RHEL/CentOS) 또는 apt remove prelink (Debian/Ubuntu) |
| /etc/motd에 대한 권한이 구성되었는지 확인합니다. (1.7.1.4) |
/etc/motd에 대한 사용 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 1.7.1.4) | 설명: /etc/motd 파일에 올바른 소유권이 없으면 권한 없는 사용자가 이 파일을 잘못된 정보 또는 오해의 소지가 있는 정보로 수정할 수 있습니다. |
소유권 및 사용 권한 설정: chown root:root /etc/motd && chmod 644 /etc/motd |
| /etc/issue에 대한 권한을 구성합니다. (1.7.1.5) |
/etc/issue에 대한 권한이 구성되었는지 확인합니다(CIS: L1 - Server - 1.7.1.5) | 설명: /etc/issue 파일에 올바른 소유권이 없으면 권한 없는 사용자가 이 파일을 잘못된 정보 또는 오해의 소지가 있는 정보로 수정할 수 있습니다. |
소유권 및 사용 권한 설정: chown root:root /etc/issue && chmod 644 /etc/issue |
| /etc/issue.net에 대한 권한이 구성되었는지 확인합니다. (1.7.1.6) |
/etc/issue.net에 대한 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 1.7.1.6) | 설명: /etc/issue.net 파일에 올바른 소유권이 없으면 권한 없는 사용자가 이 파일을 잘못된 정보 또는 오해의 소지가 있는 정보로 수정할 수 있습니다. |
소유권 및 사용 권한 설정: chown root:root /etc/issue.net && chmod 644 /etc/issue.net |
| 모든 이동식 미디어에 nodev 옵션을 사용하도록 설정해야 합니다. (2.1) |
모든 이동식 미디어에 nodev 옵션이 사용하도록 설정되어 있는지 확인합니다(CIS: L1 - Server - 1.1.18) | 설명: 공격자가 이동식 미디어를 통해 특수 디바이스(예: 블록 또는 문자 디바이스)를 탑재할 수 있습니다. | /etc/fstab의 네 번째 필드(탑재 옵션)에 nodev 옵션을 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| 모든 이동식 미디어에 대해 noexec 옵션을 사용하도록 설정해야 합니다. (2.2) |
모든 이동식 미디어에 대해 noexec 옵션이 사용하도록 설정되어 있는지 확인합니다(CIS: L1 - 서버 - 1.1.20) | 설명: 공격자가 이동식 미디어를 통해 실행 파일을 로드할 수 있습니다. | /etc/fstab의 네 번째 필드(탑재 옵션)에 noexec 옵션을 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| 모든 이동식 미디어에 nosuid 옵션을 사용해야 합니다. (2.3) |
모든 이동식 미디어에 nosuid 옵션이 사용하도록 설정되어 있는지 확인합니다(CIS: L1 - Server - 1.1.19) | 설명: 공격자가 이동식 미디어를 통해 상승된 보안 컨텍스트에서 실행되는 파일을 로드할 수 있습니다. | /etc/fstab의 네 번째 필드(탑재 옵션)에 nosuid 옵션을 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| Talk 클라이언트가 설치되어 있지 않은지 확인합니다. (2.3.3) |
토크 클라이언트가 설치되지 않았는지 확인(CIS: L1 - 서버 - 2.3.3) | 설명: 소프트웨어는 암호화되지 않은 프로토콜을 통신에 사용하므로 보안 위험을 표시합니다. | 대화 제거: yum remove talk (RHEL/CentOS) 또는 apt remove talk (Debian/Ubuntu) |
| /etc/hosts.allow에 대한 권한이 구성되어 있는지 확인합니다. (3.4.4) |
/etc/hosts.allow에 대한 사용 권한이 구성되었는지 확인합니다(CIS: L1 - Server - 3.3.2 + 3.3.4) | 설명: 권한 없는 쓰기 액세스로부터 /etc/hosts.allow 파일을 보호하는 것이 중요합니다. 이 파일은 기본적으로 보호되지만 의도치 않게 또는 악의적인 작업을 통해 파일 권한이 변경될 수 있습니다. |
소유권 및 사용 권한 설정: chown root:root /etc/hosts.allow && chmod 644 /etc/hosts.allow |
| /etc/hosts.deny에 대한 권한을 구성합니다. (3.4.5) |
/etc/hosts.deny에 대한 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 3.3.3 + 3.3.5) | 설명: 권한 없는 쓰기 액세스로부터 /etc/hosts.deny 파일을 보호하는 것이 중요합니다. 이 파일은 기본적으로 보호되지만 의도치 않게 또는 악의적인 작업을 통해 파일 권한이 변경될 수 있습니다. |
소유권 및 사용 권한 설정: chown root:root /etc/hosts.deny && chmod 644 /etc/hosts.deny |
| 기본 거부 방화벽 정책 확인 (3.6.2) |
기본 거부 방화벽 정책이 설정되어 있는지 확인합니다(CIS: L1 - 서버 - 3.5.2.1) | 설명: 기본적으로 수락 정책을 사용하면 명시적으로 거부되지 않은 모든 패킷을 방화벽에서 수락합니다. 기본 허용 정책을 사용하는 것보다 기본 DROP 정책을 사용하면 보안 방화벽을 더 쉽게 유지 관리할 수 있습니다. | 방화벽 소프트웨어를 사용하여 수신, 발신 및 라우팅된 트래픽에 denyreject 대한 기본 정책을 적절하게 설정합니다. |
| 모든 NFS 탑재에 nodev/nosuid 옵션을 사용하도록 설정해야 합니다. (5) |
모든 NFS 탑재에 nodev/nosuid 옵션이 사용하도록 설정되어 있는지 확인합니다. | 설명: 공격자가 원격 파일 시스템을 통해 상승된 보안 컨텍스트 또는 특수 디바이스에서 실행되는 파일을 로드할 수 있습니다. | /etc/fstab의 네 번째 필드(탑재 옵션)에 nosuid 및 nodev 옵션을 추가합니다. 자세한 내용은 fstab(5) 설명서 페이지를 참조하세요. |
| /etc/ssh/sshd_config 대한 권한이 구성되었는지 확인합니다. (5.2.1) |
/etc/ssh/sshd_config 대한 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.2.1) | 설명: /etc/ssh/sshd_config 권한이 없는 사용자의 무단 변경으로부터 파일을 보호해야 합니다. |
소유권 및 사용 권한 설정: chown root:root /etc/ssh/sshd_config && chmod 600 /etc/ssh/sshd_config |
| 암호 만들기 요구 사항이 구성되어 있는지 확인합니다. (5.3.1) |
암호 만들기 요구 사항이 구성되었는지 확인(CIS: L1 - 서버 - 5.3.1) | 설명: 강력한 암호는 무차별 암호 대입 방법을 통해 시스템이 해킹되지 않도록 보호합니다. | 또는 다음에서 /etc/pam.d/common-password/etc/pam.d/system-authPAM 암호 복잡성을 구성합니다. password requisite pam_pwquality.so minlen=14 minclass=4 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 |
| 실패한 암호 시도에 대한 잠금이 구성되었는지 확인합니다. (5.3.2) |
실패한 암호 시도에 대한 잠금이 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.3.2) | 설명: 연속 로그인 시도가 실패한 후 n 사용자 ID를 잠그면 시스템에 대한 무차별 암호 대입 공격이 완화됩니다. |
Ubuntu 및 Debian의 경우 pam_tally 및 pam_deny 모듈을 적절하게 추가합니다. 다른 모든 배포판은 배포판의 설명서를 참조하세요. |
| 필요 없는 파일 시스템(cramfs)을 설치하여 사용하지 않습니다. (6.1) |
cramfs 파일 시스템이 비활성화되어 있는지 확인합니다(CIS: L1 - Server - 1.1.1.1) | 설명: 공격자가 cramfs의 취약성을 사용하여 권한을 높일 수 있습니다. | .conf에서 install cramfs /bin/true 끝나는 파일에 추가 /etc/modprobe.d/ 한 다음 실행modprobe -r cramfs |
| 필요 없는 파일 시스템(freevxfs)을 설치하여 사용하지 않습니다. (6.2) |
freevxfs 파일 시스템을 사용하지 않도록 설정(CIS: L1 - 서버 - 1.1.1.2) | 설명: 공격자가 freevxfs의 취약성을 사용하여 권한을 높일 수 있습니다. | .conf에서 install freevxfs /bin/true 끝나는 파일에 추가 /etc/modprobe.d/ 한 다음 실행modprobe -r freevxfs |
| 모든 사용자의 홈 디렉터리가 있는지 확인합니다. (6.2.7) |
모든 사용자의 홈 디렉터리 존재 확인(CIS: L1 - 서버 - 6.2.7) | 설명: 사용자의 홈 디렉터리가 없거나 할당되지 않은 경우 사용자가 볼륨 루트에 배치됩니다. 또한 사용자는 파일을 쓰거나 환경 변수를 설정할 수 없습니다. | 사용자의 홈 디렉터리가 없는 경우 홈 디렉터리를 만들고 해당 사용자가 디렉터리를 소유하게 합니다. 할당된 홈 디렉터리가 없는 사용자는 홈 디렉터리를 적절하게 제거하거나 할당해야 합니다. |
| 사용자가 홈 디렉터리를 소유하고 있는지 확인합니다. (6.2.9) |
사용자가 홈 디렉터리를 소유하는지 확인(CIS: L1 - 서버 - 6.2.9) | 설명: 사용자는 사용자 홈 디렉터리에 저장된 파일에 대한 책임이 있으므로 디렉터리의 소유자여야 합니다. | 정의된 사용자가 소유하지 않은 홈 디렉터리의 소유권을 올바른 사용자로 변경합니다. |
| 사용자의 dot 파일이 group 또는 world 쓰기가 가능하지 않은지 확인합니다. (6.2.10) |
사용자의 점 파일이 그룹 또는 월드 쓰기 가능하지 않은지 확인합니다(CIS: L1 - Server - 6.2.10) | 설명: 그룹 또는 쓰기 가능한 사용자 구성 파일을 사용하면 악의적인 사용자가 다른 사용자의 데이터를 도용하거나 수정하거나 다른 사용자의 시스템 권한을 얻을 수 있습니다. | 사용자 커뮤니티에 경고하지 않고 사용자 파일에 대한 전역 수정을 수행하면 예기치 않은 중단이 발생하고 사용자에게 불편을 줄 수 있습니다. 따라서 사용자 dot 파일 권한을 보고하고 사이트 정책 수정 작업을 결정하는 모니터링 정책을 설정하는 것이 좋습니다. |
| 사용자에게 .forward 파일이 있으면 안 됩니다. (6.2.11) |
사용자에게 .forward 파일이 없는지 확인합니다(CIS: L1 - 서버 - 6.2.11) | 설명: 파일을 사용하면 .forward 중요한 데이터가 실수로 조직 외부로 전송될 수 있으므로 보안 위험이 발생합니다. 또한 이 파일은 .forward 의도하지 않은 작업을 수행할 수 있는 명령을 실행하는 데 사용할 수 있으므로 위험을 초래합니다. |
사용자 커뮤니티에 경고하지 않고 사용자 파일에 대한 전역 수정을 수행하면 예기치 않은 중단이 발생하고 사용자에게 불편을 줄 수 있습니다. 따라서 사용자 .forward 파일을 보고하고 사이트 정책에 따라 수행할 작업을 결정하는 모니터링 정책을 설정하는 것이 좋습니다. |
| 사용자에게 .netrc 파일이 있으면 안 됩니다. (6.2.12) |
사용자에게 .netrc 파일이 없는지 확인합니다(CIS: L1 - 서버 - 6.2.12) | 설명: 이 파일은 .netrc 암호를 암호화되지 않은 형식으로 저장하기 때문에 상당한 보안 위험을 초래합니다. FTP를 사용하지 않더라도 사용자 계정이 다른 시스템에서 .netrc 파일을 가져왔을 수 있으며, 이로 인해 시스템이 위험에 노출될 수 있습니다. |
사용자 커뮤니티에 경고하지 않고 사용자 파일에 대한 전역 수정을 수행하면 예기치 않은 중단이 발생하고 사용자에게 불편을 줄 수 있습니다. 따라서 사용자 .netrc 파일을 보고하고 사이트 정책에 따라 수행할 작업을 결정하는 모니터링 정책을 설정하는 것이 좋습니다. |
| 사용자에게 .rhosts 파일이 있으면 안 됩니다. (6.2.14) |
사용자에게 .rhosts 파일이 없는지 확인합니다(CIS: L1 - 서버 - 6.2.14) | 설명: 이 작업은 파일 .rhosts 에서 지원이 허용되는 경우에만 /etc/pam.conf 의미가 있습니다. 지원이 비활성화 .rhosts 된 경우 파일이 효과가 없지만 /etc/pam.conf 다른 시스템에서 가져온 것일 수 있으며 이러한 다른 시스템에 대한 공격자에게 유용한 정보를 포함할 수 있습니다. |
사용자 커뮤니티에 경고하지 않고 사용자 파일에 대한 전역 수정을 수행하면 예기치 않은 중단이 발생하고 사용자에게 불편을 줄 수 있습니다. 따라서 사용자 .rhosts 파일을 보고하고 사이트 정책에 따라 수행할 작업을 결정하는 모니터링 정책을 설정하는 것이 좋습니다. |
| /etc/passwd의 모든 그룹이 /etc/group에 있어야 합니다. (6.2.15) |
/etc/passwd의 모든 그룹이 /etc/group에 있는지 확인합니다(CIS: L1 - Server - 6.2.15) | 설명: /etc/passwd 파일에는 정의되어 있지만 /etc/group 파일에는 정의되지 않은 그룹의 경우 그룹 권한이 제대로 관리되지 않기 때문에 시스템 보안이 위협에 노출됩니다. | /etc/passwd에 정의된 각 그룹에 대해 /etc/group에 해당 그룹이 있는지 확인합니다. |
| UID가 중복되면 안 됩니다. (6.2.16) |
중복된 UID가 없는지 확인합니다(CIS: L1 - 서버 - 6.2.16) | 설명: 책임과 적절한 액세스 보호를 위해 사용자에게 고유한 UID를 할당해야 합니다. | 고유한 UID를 설정하고 공유 UID가 소유한 모든 파일을 검토하여 속해야 하는 UID를 확인합니다. |
| GID가 중복되면 안 됩니다. (6.2.17) |
중복된 GID가 없는지 확인(CIS: L1 - 서버 - 6.2.17) | 설명: 책임과 적절한 액세스 보호를 위해 그룹에 고유한 GID를 할당해야 합니다. | 고유한 GID를 설정하고 공유 GID가 소유한 모든 파일을 검토하여 속해야 하는 GID를 확인합니다. |
| 사용자 이름이 중복되면 안 됩니다. (6.2.18) |
중복된 사용자 이름이 없는지 확인합니다(CIS: L1 - Server - 6.2.18) | 설명: 사용자에게 중복 사용자 이름이 할당되면 해당 사용자 이름에 대한 첫 번째 UID가 있는 파일을 만들고 액세스할 수 있습니다 /etc/passwd . 예를 들어 'test4'의 UID가 1000이고 후속 'test4' 항목의 UID가 2000인 경우 'test4'로 로그인하면 UID 1000이 사용됩니다. 실제로 UID는 공유되며 이는 보안 문제입니다. |
모든 사용자에 대해 고유한 사용자 이름을 설정합니다. 파일 소유권은 사용자에게 고유한 UID가 있는 한 변경 내용이 자동으로 반영됩니다. |
| 중복 그룹이 없는지 확인 (6.2.19) |
중복 그룹이 없는지 확인(CIS: L1 - 서버 - 6.2.19) | 설명: 그룹에 중복 그룹 이름을 할당하면 해당 그룹 이름의 첫 번째 GID가 포함된 파일이 /etc/group에 생성되고 액세스 권한이 부여됩니다. 실제로 GID는 공유되며 이는 보안 문제입니다. |
모든 사용자 그룹에 고유한 이름을 설정합니다. 그룹에 고유한 GID가 있는 한 파일 그룹 소유권은 변경 사항을 자동으로 반영합니다. |
| 섀도 그룹이 비어 있어야 합니다. (6.2.20) |
섀도 그룹이 비어 있는지 확인(CIS: L1 - 서버 - 6.2.20) | 설명: 섀도 그룹에 할당된 모든 사용자에게 /etc/shadow 파일에 대한 읽기 권한이 부여됩니다. 공격자가 /etc/shadow 파일에 대한 읽기 권한을 획득하게 되면 해시된 암호에 대해 암호 해독 프로그램을 실행하여 쉽게 암호를 해독할 수 있습니다.
/etc/shadow 파일에 저장되는 기타 보안 정보(예: 만료) 역시 다른 사용자 계정을 손상시키는 데 활용될 수 있습니다. |
섀도 그룹의 모든 사용자를 제거합니다. |
| 필요 없는 파일 시스템(hfs)을 설치하여 사용하지 않습니다. (6.3) |
hfs 파일 시스템을 사용하지 않도록 설정(CIS: L1 - 서버 - 1.1.1.4) | 설명: 공격자가 hfs의 취약성을 사용하여 권한을 높일 수 있습니다. | .conf에서 install hfs /bin/true 끝나는 파일에 추가 /etc/modprobe.d/ 한 다음 실행modprobe -r hfs |
| 필요 없는 파일 시스템(hfsplus)을 설치하여 사용하지 않습니다. (6.4) |
hfsplus 파일 시스템을 사용하지 않도록 설정(CIS: L1 - 서버 - 1.1.1.5) | 설명: 공격자가 hfsplus의 취약성을 사용하여 권한을 높일 수 있습니다. | .conf에서 install hfsplus /bin/true 끝나는 파일에 추가 /etc/modprobe.d/ 한 다음 실행modprobe -r hfsplus |
| 필요 없는 파일 시스템(jffs2)을 설치하여 사용하지 않습니다. (6.5) |
jffs2 파일 시스템이 사용하지 않도록 설정되어 있는지 확인합니다(CIS: L1 - 서버 - 1.1.1.3) | 설명: 공격자가 jffs2의 취약성을 사용하여 권한을 높일 수 있습니다. | .conf에서 install jffs2 /bin/true 끝나는 파일에 추가 /etc/modprobe.d/ 한 다음 실행modprobe -r jffs2 |
| 커널은 승인된 원본에서만 컴파일해야 합니다. (10) |
커널이 승인된 원본에서 컴파일되었는지 확인합니다. | 설명: 승인되지 않은 원본의 커널에는 공격자에게 액세스 권한을 부여하는 취약성 또는 백도어가 포함될 수 있습니다. | 배포판 공급업체에서 제공하는 커널을 설치합니다. |
| /etc/shadow 파일 사용 권한을 0400으로 설정해야 합니다. (11.1) |
/etc/shadow에 대한 파일 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 6.1.3) | 설명: 암호를 올바르게 보호하지 않으면 공격자가 /etc/shadow에서 해시된 암호를 검색하거나 조작할 수 있습니다. | 소유권 및 사용 권한 설정: chown root:shadow /etc/shadow && chmod 640 /etc/shadow |
| /etc/shadow- 파일 사용 권한을 0400으로 설정해야 합니다. (11.2) |
/etc/shadow-에 대한 파일 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 6.1.7) | 설명: 암호를 올바르게 보호하지 않으면 공격자가 /etc/shadow-에서 해시된 암호를 검색하거나 조작할 수 있습니다. | 소유권 및 사용 권한 설정: chown root:shadow /etc/shadow- && chmod 640 /etc/shadow- |
| /etc/gshadow 파일 사용 권한을 0400으로 설정해야 합니다. (11.3) |
/etc/gshadow에 대한 파일 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 6.1.5) | 설명: 이 파일을 적절하게 보호하지 않으면 공격자가 보안 그룹에 조인할 수 있습니다. | 소유권 및 사용 권한 설정: chown root:shadow /etc/gshadow && chmod 640 /etc/gshadow |
| /etc/gshadow- 파일 사용 권한을 0400으로 설정해야 합니다. (11.4) |
/etc/gshadow-에 대한 파일 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 6.1.9) | 설명: 이 파일을 적절하게 보호하지 않으면 공격자가 보안 그룹에 조인할 수 있습니다. | 소유권 및 사용 권한 설정: chown root:shadow /etc/gshadow- && chmod 640 /etc/gshadow- |
| /etc/passwd 파일 권한은 0644여야 합니다. (12.1) |
/etc/passwd에 대한 파일 권한이 구성되었는지 확인합니다(CIS: L1 - Server - 6.1.2) | 설명: 공격자가 사용자 ID 및 로그인 셸을 수정할 수 있음 | 소유권 및 사용 권한 설정: chown root:root /etc/passwd && chmod 644 /etc/passwd |
| /etc/group 파일 권한을 0644로 설정해야 합니다. (12.2) |
/etc/group에 대한 파일 권한이 구성되었는지 확인합니다(CIS: L1 - Server - 6.1.4) | 설명: 공격자가 그룹 멤버 자격을 수정하여 권한을 높일 수 있음 | 소유권 및 사용 권한 설정: chown root:root /etc/group && chmod 644 /etc/group |
| /etc/passwd- 파일 권한을 0600으로 설정해야 합니다. (12.3) |
/etc/passwd-에 대한 파일 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 6.1.6) | 설명: 이 파일을 적절하게 보호하지 않으면 공격자가 보안 그룹에 조인할 수 있습니다. | 소유권 및 사용 권한 설정: chown root:root /etc/passwd- && chmod 600 /etc/passwd- |
| /etc/group- 파일 사용 권한은 0644여야 합니다. (12.4) |
/etc/group-에 대한 파일 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 6.1.8) | 설명: 공격자가 그룹 멤버 자격을 수정하여 권한을 높일 수 있음 | 소유권 및 사용 권한 설정: chown root:root /etc/group- && chmod 644 /etc/group- |
| su를 통한 루트 계정에 대한 액세스는 '루트' 그룹으로 제한되어야 합니다. (21) |
su를 통해 루트 계정에 대한 액세스가 '루트' 그룹으로 제한되는지 확인합니다(CIS: L1 - 서버 - 5.5). | 설명: su를 루트 그룹의 사용자로 제한하지 않으면 공격자가 암호 추측을 통해 권한을 높일 수 있습니다. |
auth required pam_wheel.so use_uid 휠 그룹에 추가 /etc/pam.d/su 및 존재 확인 |
| 'root' 그룹이 있어야 하고, su를 통해 루트에 액세스할 수 있는 모든 구성원이 이 그룹에 포함되어야 합니다. (22) |
'root' 그룹이 있는지 확인하고 루트에 연결할 수 있는 모든 멤버를 포함합니다(CIS: L1 - Server - 5.6) | 설명: su를 루트 그룹의 사용자로 제한하지 않으면 공격자가 암호 추측을 통해 권한을 높일 수 있습니다. | 'groupadd -g 0 root' 명령을 통해 루트 그룹을 만듭니다. |
| 모든 계정에는 암호가 있어야 합니다. (23.2) |
로그인할 수 있는 모든 사용자 계정에 암호 집합이 있는지 확인합니다. | 설명: 공격자가 암호 없이 계정에 로그인하고 임의의 명령을 실행할 수 있습니다. | passwd 명령을 사용하여 모든 계정에 대한 암호 설정 |
| 루트 이외의 계정에는 0보다 큰 고유 UID가 있어야 합니다. (24) |
루트 이외의 모든 사용자 계정에 0보다 큰 고유 UID가 있는지 확인합니다(0). | 설명: 루트 이외의 계정에 uid 0이 있는 경우 공격자가 계정을 손상하고 루트 권한을 얻을 수 있습니다. | 'usermod -u' 명령을 사용하여 루트가 아닌 모든 계정에 0이 아닌 고유한 UID를 할당합니다. |
| 가상 메모리 영역을 임의로 배치하도록 설정해야 합니다. (25) |
가상 메모리 영역의 ASLR(임의 배치)이 사용하도록 설정되어 있는지 확인합니다(CIS: L1 - 서버 - 1.5.3) | 설명: 공격자가 메모리의 알려진 영역에 실행 코드를 작성하여 권한을 높일 수 있습니다. | '/proc/sys/kernel/randomize_va_space' 파일에 '1' 또는 '2' 값을 추가합니다. |
| XD/NX 프로세서 기능에 커널 지원을 사용해야 합니다. (26) |
XD/NX 프로세서 기능에 대한 커널 지원이 사용하도록 설정되어 있는지 확인합니다(CIS: L1 - 서버 - 1.5.2) | 설명: 공격자가 메모리의 데이터 영역에서 코드를 실행하여 권한 상승이 발생할 수 있습니다. | '/proc/cpuinfo' 파일에 'nx' 플래그가 포함되어 있는지 확인합니다. |
| 루트의 $PATH에 '.'이 없어야 합니다. (27.1) |
루트의 $PATH '.'이(가) 표시되지 않는지 확인합니다(CIS: L1 - 서버 - 6.2.6) | 설명: 공격자가 루트의 $PATH 악성 파일을 배치하여 권한을 높일 수 있습니다. | /root/.profile에서 'EXPORT PATH=' 줄 수정 |
| 사용자 홈 디렉터리 모드 750 이상 제한적이어야 합니다. (28) |
사용자 홈 디렉터리에 대한 액세스가 제한되었는지 확인 | 설명: 공격자가 다른 사용자의 홈 폴더에서 중요한 정보를 검색할 수 있습니다. | 홈 디렉터리 권한을 750개 이상으로 제한적으로 설정합니다. chmod 750 /home/* |
| login.defs에서 모든 사용자에 대한 기본 umask를 077로 설정해야 합니다. (29) |
모든 사용자에 대한 기본 umask가 구성되었는지 확인합니다. | 설명: 공격자가 다른 사용자가 소유한 파일에서 중요한 정보를 검색할 수 있습니다. | 에 추가 UMASK 077 및 추가 /etc/login.defsumask 077/etc/profile/etc/bashrc |
| 모든 부팅 로더에서 암호 보호를 사용해야 합니다. (31) |
모든 부팅 로더에 암호 보호가 사용하도록 설정되어 있는지 확인합니다(CIS: L1 - 서버 - 1.4.2) | 설명: 물리적 액세스 권한이 있는 공격자는 부팅 로더 옵션을 수정하여 무제한 시스템 액세스를 생성할 수 있습니다. | '/boot/grub/grub.cfg' 파일에 부팅 로더 암호를 추가합니다. |
| 부팅 로더 구성에 대한 권한을 구성합니다. (31.1) |
부팅 로더 구성에 대한 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 1.4.1) | 설명: 루트에 대한 읽기 및 쓰기 권한을 설정하면 루트가 아닌 사용자가 부팅 매개 변수를 보거나 변경할 수 없습니다. 부팅 매개 변수를 읽는 루트가 아닌 사용자는 부팅 시 보안의 약점을 식별하고 악용할 수 있습니다. | 부팅 로더 구성 권한 설정: chown root:root /boot/grub*/grub.cfg && chmod 400 /boot/grub*/grub.cfg (부팅 로더에 대한 경로 조정) |
| 단일 사용자 모드에 인증이 필요한지 확인합니다. (33) |
단일 사용자 모드에 인증이 필요한지 확인(CIS: L1 - 서버 - 1.4.3) | 설명: 단일 사용자 모드에서 인증을 요구하면 권한 없는 사용자가 자격 증명 없이 루트 권한을 얻기 위해 시스템을 단일 사용자로 다시 부팅할 수 없습니다. | 다음 명령을 실행하여 루트 사용자에 대한 암호를 설정합니다. passwd root |
| 패킷 리디렉션 전송을 사용하지 않도록 설정해야 합니다. (38.3) |
패킷 리디렉션 전송을 사용하지 않도록 설정(CIS: L1 - 서버 - 3.1.2) | 설명: 공격자는 손상된 호스트를 사용하여 잘못된 ICMP 리디렉션을 다른 라우터 디바이스로 보내 라우팅을 손상시키고 사용자가 유효한 시스템이 아닌 공격자가 설정한 시스템에 액세스하도록 할 수 있습니다. | 다음에 /etc/sysctl.confnet.ipv4.conf.all.send_redirects = 0 추가한 net.ipv4.conf.default.send_redirects = 0다음 실행sysctl -p |
| 모든 인터페이스에서 ICMP 리디렉션 보내기를 사용하지 않도록 설정해야 합니다. (net.ipv4.conf.default.accept_redirects = 0) (38.4) |
ICMP 리디렉션이 허용되지 않는지 확인(CIS: L1 - 서버 - 3.2.2) - 여러 규칙이 결합됨 | 설명: 공격자가 이 시스템의 라우팅 테이블을 변경하여 트래픽을 대체 대상으로 리디렉션할 수 있습니다. | 다음에 /etc/sysctl.confnet.ipv4.conf.default.accept_redirects = 0 추가한 net.ipv6.conf.default.accept_redirects = 0다음 실행sysctl -p |
| 모든 인터페이스에서 ICMP 리디렉션 보내기를 사용하지 않도록 설정해야 합니다. (net.ipv4.conf.default.secure_redirects = 0) (38.5) |
ICMP 리디렉션이 허용되지 않는지 확인(CIS: L1 - 서버 - 3.2.2) - 여러 규칙이 결합됨 | 설명: 공격자가 이 시스템의 라우팅 테이블을 변경하여 트래픽을 대체 대상으로 리디렉션할 수 있습니다. | 에 추가한 /etc/sysctl.confnet.ipv4.conf.default.secure_redirects = 0다음 실행sysctl -p |
| 모든 인터페이스에서 원본 라우팅된 패킷을 사용하지 않도록 설정해야 합니다. (net.ipv4.conf.all.accept_source_route = 0) (40.1) |
모든 인터페이스(CIS: L1 - 서버 - 3.2.1) - IPv4 및 IPv6 규칙이 결합된 경우 원본 라우트된 패킷을 수락할 수 없는지 확인합니다. | 설명: 공격자가 악의적인 목적으로 트래픽을 리디렉션할 수 있습니다. | 실행하고 sysctl -w key=value 규격 값으로 설정합니다. |
| 모든 인터페이스에서 원본 라우팅된 패킷을 사용하지 않도록 설정해야 합니다. (net.ipv6.conf.all.accept_source_route = 0) (40.2) |
모든 인터페이스(CIS: L1 - 서버 - 3.2.1) - IPv4 및 IPv6 규칙이 결합된 경우 원본 라우트된 패킷을 수락할 수 없는지 확인합니다. | 설명: 공격자가 악의적인 목적으로 트래픽을 리디렉션할 수 있습니다. | 실행하고 sysctl -w key=value 규격 값으로 설정합니다. |
| 네트워크 인터페이스에 대해 원본 라우트된 패킷을 수락하기 위한 기본 설정을 사용하지 않도록 설정해야 합니다. (net.ipv4.conf.default.accept_source_route = 0) (42.1) |
네트워크 인터페이스(CIS: L1 - 서버 - 3.2.1) - IPv4 및 IPv6 규칙이 결합된 경우 원본 라우트된 패킷을 수락하기 위한 기본 설정을 사용하지 않도록 설정해야 합니다. | 설명: 공격자가 악의적인 목적으로 트래픽을 리디렉션할 수 있습니다. | 실행하고 sysctl -w key=value 규격 값으로 설정합니다. |
| 네트워크 인터페이스에 대해 원본 라우트된 패킷을 수락하기 위한 기본 설정을 사용하지 않도록 설정해야 합니다. (net.ipv6.conf.default.accept_source_route = 0) (42.2) |
네트워크 인터페이스(CIS: L1 - 서버 - 3.2.1) - IPv4 및 IPv6 규칙이 결합된 경우 원본 라우트된 패킷을 수락하기 위한 기본 설정을 사용하지 않도록 설정해야 합니다. | 설명: 공격자가 악의적인 목적으로 트래픽을 리디렉션할 수 있습니다. | 실행하고 sysctl -w key=value 규격 값으로 설정합니다. |
| 브로드캐스트에 대한 가짜 ICMP 응답을 무시하려면 사용해야 합니다. (net.ipv4.icmp_ignore_bogus_error_responses = 1) (43) |
브로드캐스트에 대한 가짜 ICMP 응답을 무시할 수 있는지 확인합니다(CIS: L1 - 서버 - 3.2.6) | 설명: 공격자가 ICMP 공격을 수행하여 DoS를 유발할 수 있습니다. | 에 추가한 /etc/sysctl.confnet.ipv4.icmp_ignore_bogus_error_responses = 1다음 실행sysctl -p |
| 브로드캐스트/멀티캐스트 주소로 전송된 ICMP 에코 요청(ping)을 무시하면 됩니다. (net.ipv4.icmp_echo_ignore_broadcasts = 1) (44) |
브로드캐스트/멀티캐스트 주소로 전송된 ICMP 에코 요청(ping)을 무시합니다(CIS: L1 - 서버 - 3.2.5). | 설명: 공격자가 ICMP 공격을 수행하여 DoS를 유발할 수 있습니다. | 에 추가한 /etc/sysctl.confnet.ipv4.icmp_echo_ignore_broadcasts = 1다음 실행sysctl -p |
| 모든 인터페이스에 대해 화성 패킷(주소가 불가능한 패킷)의 로깅을 사용하도록 설정해야 합니다. (net.ipv4.conf.all.log_martians = 1) (45.1) |
모든 인터페이스에 대해 화성 패킷(주소가 불가능한 패킷)의 로깅이 사용하도록 설정되어 있는지 확인합니다. | 설명: 공격자가 검색되지 않고 스푸핑된 주소에서 트래픽을 보낼 수 있습니다. | 다음에 /etc/sysctl.confnet.ipv4.conf.all.log_martians = 1 추가한 net.ipv4.conf.default.log_martians = 1다음 실행sysctl -p |
| 모든 인터페이스에 대해 역방향 경로로 원본 유효성 검사를 수행하도록 설정해야 합니다. (net.ipv4.conf.all.rp_filter = 1) (46.1) |
모든 인터페이스(CIS: L1 - 서버 - 3.2.7)에 대해 역방향 경로로 원본 유효성 검사를 수행할 수 있는지 확인합니다. 여러 규칙이 결합되어 있습니다. | 설명: 시스템은 라우팅할 수 없는 주소의 트래픽을 허용합니다. | 다음에 /etc/sysctl.confnet.ipv4.conf.all.rp_filter = 1 추가한 net.ipv4.conf.default.rp_filter = 1다음 실행sysctl -p |
| 모든 인터페이스에 대해 역방향 경로로 원본 유효성 검사를 수행하도록 설정해야 합니다. (net.ipv4.conf.default.rp_filter = 1) (46.2) |
모든 인터페이스(CIS: L1 - 서버 - 3.2.7)에 대해 역방향 경로로 원본 유효성 검사를 수행할 수 있는지 확인합니다. 여러 규칙이 결합되어 있습니다. | 설명: 시스템은 라우팅할 수 없는 주소의 트래픽을 허용합니다. | 다음에 /etc/sysctl.confnet.ipv4.conf.all.rp_filter = 1 추가한 net.ipv4.conf.default.rp_filter = 1다음 실행sysctl -p |
| TCP SYN 쿠키를 사용하도록 설정해야 합니다. (net.ipv4.tcp_syncookies = 1) (47) |
TCP SYN 쿠키가 사용하도록 설정되어 있는지 확인합니다(CIS: L1 - 서버 - 3.2.8) | 설명: 공격자가 TCP를 통해 DoS를 수행할 수 있음 | 에 추가한 /etc/sysctl.confnet.ipv4.tcp_syncookies = 1다음 실행sysctl -p |
| 시스템이 네트워크 스니퍼로 작동하면 안 됩니다. (48) |
시스템이 네트워크 스니퍼 역할을 하지 않는지 확인합니다. | 설명: 공격자가 난잡한 인터페이스를 사용하여 네트워크 트래픽을 검색할 수 있습니다. | 무차별 모드는 '/etc/network/interfaces' 또는 '/etc/rc.local'의 'promisc' 항목을 통해 활성화됩니다. 두 파일을 모두 확인하고 이 항목을 제거합니다. |
| 모든 무선 인터페이스를 사용하지 않도록 설정해야 합니다. (49) |
모든 무선 인터페이스를 사용하지 않도록 설정(CIS: L1 - 서버 - 3.6) | 설명: 공격자가 가짜 AP를 만들어서 전송을 가로챌 수 있습니다. | '/etc/network/interfaces'에서 모든 무선 인터페이스를 사용하지 않도록 설정되었는지 확인합니다. |
| IPv6 프로토콜을 사용하도록 설정해야 합니다. (50) |
IPv6 프로토콜이 사용하도록 설정되어 있는지 확인합니다. | 설명: 최신 네트워크에서 통신하는 데 필요합니다. | /etc/sysctl.conf를 열고 'net.ipv6.conf.all.disable_ipv6' 및 'net.ipv6.conf.default.disable_ipv6'가 0으로 설정되었는지 확인합니다. |
| DCCP를 사용하지 않습니다. (54) |
DCCP를 사용하지 않습니다. | 설명: 프로토콜이 필요 없는 경우 잠재적인 공격 노출 영역을 줄이기 위해 드라이버를 설치하지 않는 것이 좋습니다. | .conf에서 install dccp /bin/true 끝나는 파일에 추가 /etc/modprobe.d/ 한 다음 실행modprobe -r dccp |
| SCTP를 사용하지 않도록 설정 (55) |
SCTP를 사용하지 않도록 설정 | 설명: 프로토콜이 필요 없는 경우 잠재적인 공격 노출 영역을 줄이기 위해 드라이버를 설치하지 않는 것이 좋습니다. | .conf에서 install sctp /bin/true 끝나는 파일에 추가 /etc/modprobe.d/ 한 다음 실행modprobe -r sctp |
| RDS에 대한 지원을 사용하지 않도록 설정합니다. (56) |
RDS에 대한 지원을 사용하지 않도록 설정 | 설명: 공격자가 RDS의 취약성을 사용하여 시스템을 손상시킬 수 있음 | .conf에서 install rds /bin/true 끝나는 파일에 추가 /etc/modprobe.d/ 한 다음 실행modprobe -r rds |
| TIPC가 사용하지 않도록 설정되었는지 확인 (57) |
TIPC가 사용하지 않도록 설정되었는지 확인 | 설명: 프로토콜이 필요 없는 경우 잠재적인 공격 노출 영역을 줄이기 위해 드라이버를 설치하지 않는 것이 좋습니다. | .conf에서 install tipc /bin/true 끝나는 파일에 추가 /etc/modprobe.d/ 한 다음 실행modprobe -r tipc |
| 로깅이 구성되어 있는지 확인 (60) |
로깅이 구성되었는지 확인(CIS: L1 - 서버 - 4.2.1.2 + 4.2.1.3) | 설명: 많은 중요한 보안 관련 정보가 전송 rsyslog 됩니다(예: 성공 및 실패한 su 시도, 실패한 로그인 시도, 루트 로그인 시도 등). |
적절하게 syslog, rsyslog 또는 syslog-ng 구성 |
| syslog, rsyslog 또는 syslog-ng 패키지를 설치해야 합니다. (61) |
syslog, rsyslog 또는 syslog-ng 패키지가 설치되어 있는지 확인합니다(CIS: L1 - Server - 4.2.1.1) | 설명: 안정성 및 보안 문제가 기록되지 않아 적절한 진단을 방지합니다. | rsyslog 설치: yum install rsyslog (RHEL/CentOS) 또는 apt install rsyslog (Debian/Ubuntu) |
| 로그 메시지를 유지하도록 systemd-journald 서비스를 구성해야 합니다. (61.1) |
systemd-journald 서비스가 로그 메시지를 유지하는지 확인합니다(CIS: L1 - 서버 - 4.2.2.3) | 설명: 안정성 및 보안 문제가 기록되지 않아 적절한 진단을 방지합니다. | /var/log/journal을 만들고 journald.conf의 Storage가 자동 또는 영구적인지 확인합니다. |
| 로깅 서비스가 사용하도록 설정되어 있는지 확인 (62) |
로깅 서비스가 사용하도록 설정되어 있는지 확인 | 설명: 노드에 이벤트를 기록하는 기능이 있어야 합니다. | rsyslog 서비스 사용: systemctl enable rsyslog (systemd) 또는 chkconfig rsyslog on (sysv) |
| 모든 rsyslog 로그 파일에 대한 파일 사용 권한은 640 또는 600으로 설정해야 합니다. (63) |
모든 rsyslog 로그 파일에 대한 파일 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 4.2.1.4) | 설명: 공격자가 로그를 조작하여 작업을 숨길 수 있습니다. | '$FileCreateMode 0640' 줄을 '/etc/rsyslog.conf' 파일에 추가합니다. |
| 로거 구성 파일이 제한되어 있는지 확인합니다. (63.1) |
로거 구성 파일이 제한되었는지 확인(CIS: L1 - 서버 - 4.2.1.4) | 설명: 중요한 syslog 데이터를 보관하고 보호할 수 있도록 로그 파일이 존재하고 올바른 권한이 있는지 확인하는 것이 중요합니다. | rsyslog 구성 권한을 설정합니다. chown root:root /etc/rsyslog.conf && chmod 640 /etc/rsyslog.conf |
| 모든 rsyslog 로그 파일은 adm 그룹이 소유해야 합니다. (64) |
모든 rsyslog 로그 파일이 adm 그룹이 소유하고 있는지 확인합니다. | 설명: 공격자가 로그를 조작하여 작업을 숨길 수 있습니다. | '$FileGroup adm' 줄을 '/etc/rsyslog.conf' 파일에 추가합니다. |
| 모든 rsyslog 로그 파일은 syslog 사용자의 소유여야 합니다. (65) |
모든 rsyslog 로그 파일이 syslog 사용자가 소유하고 있는지 확인합니다(CIS: L1 - Server - 4.2.1.4) | 설명: 공격자가 로그를 조작하여 작업을 숨길 수 있습니다. |
$FileOwner syslog rsyslog 서비스에 추가 /etc/rsyslog.conf 및 다시 시작 |
| Rsyslog는 원격 메시지를 수락하면 안 됩니다. (67) |
rsyslog가 원격 메시지를 수락하지 않는지 확인 | 설명: 공격자가 syslog에 메시지를 삽입하여 DoS 또는 다른 활동에 방해가 될 수 있습니다. | '/etc/rsyslog.conf' 파일에서 '$ModLoad imudp' 및 '$ModLoad imtcp' 줄을 제거합니다. |
| logrotate(syslog rotater) 서비스를 사용하도록 설정해야 합니다. (68) |
logrotate(syslog rotater) 서비스가 사용하도록 설정되어 있는지 확인합니다(CIS: L1 - 서버 - 4.3) | 설명: 로그 파일이 무제한으로 확장되어 모든 디스크 공간을 사용할 수 있습니다. | logrotate 패키지를 설치하고 logrotate cron 항목이 활성 상태인지 확인합니다(chmod 755 /etc/cron.daily/logrotate; chown root:root /etc/cron.daily/logrotate) |
| rlogin 서비스를 사용하지 않도록 설정해야 합니다. (69) |
rlogin 서비스를 사용하지 않도록 설정해야 합니다. | 설명: 공격자가 액세스 권한을 획득하여 엄격한 인증 요구 사항을 무시할 수 있습니다. | inetd 서비스를 제거합니다. |
| 필요하지 않은 이상 inetd 서비스를 사용하지 않습니다. (inetd) (70.1) |
inetd가 설치되지 않았는지 확인(CIS: L1 - 서버 - 2.1.10) - 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자가 inetd 서비스의 취약성을 악용하여 액세스 권한을 얻을 수 있습니다. | 들린 서비스 제거: yum remove inetd (RHEL/CentOS) 또는 apt remove inetd (Debian/Ubuntu) |
| 필요 없는 경우 xinetd를 사용하지 않도록 설정합니다. (xinetd) (70.2) |
xinetd가 설치되지 않았는지 확인(CIS: L1 - 서버 - 2.1.10) - 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자가 xinetd 서비스의 취약성을 악용하여 액세스 권한을 얻을 수 있습니다. | xinetd 서비스 제거: yum remove xinetd (RHEL/CentOS) 또는 apt remove xinetd (Debian/Ubuntu) |
| 상황에 따라 배포판에 필요한 경우에만 inetd 서비스를 설치합니다. 현재 강화 표준에 따라 보호합니다. (필요한 경우) (71.1) |
inetd가 설치되지 않았는지 확인(CIS: L1 - 서버 - 2.1.10) - 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자가 inetd 서비스의 취약성을 악용하여 액세스 권한을 얻을 수 있습니다. | 들린 서비스 제거: yum remove inetd (RHEL/CentOS) 또는 apt remove inetd (Debian/Ubuntu) |
| 배포판에서 적절하고 필요한 경우에만 xinetd를 설치합니다. 현재 강화 표준에 따라 보호합니다. (필요한 경우) (71.2) |
xinetd가 설치되지 않았는지 확인(CIS: L1 - 서버 - 2.1.10) - 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자가 xinetd 서비스의 취약성을 악용하여 액세스 권한을 얻을 수 있습니다. | xinetd 서비스 제거: yum remove xinetd (RHEL/CentOS) 또는 apt remove xinetd (Debian/Ubuntu) |
| 텔넷 서비스를 사용하지 않도록 설정해야 합니다. (72) |
텔넷 서비스를 사용하지 않도록 설정(CIS: L1 - 서버 - 2.1.8) | 설명: 공격자가 암호화되지 않은 텔넷 세션을 도청하거나 하이재킹할 수 있음 | '/etc/inetd.conf' 파일에서 텔넷 항목을 제거하거나 주석 처리합니다. |
| 모든 telnetd 패키지를 제거해야 합니다. (73) |
모든 텔넷 패키지가 제거되었는지 확인 | 설명: 공격자가 암호화되지 않은 텔넷 세션을 도청하거나 하이재킹할 수 있음 | 텔넷 패키지 제거 |
| rcp/rsh 서비스를 사용하지 않도록 설정해야 합니다. (74) |
rcp/rsh 서비스를 사용하지 않도록 설정해야 합니다. | 설명: 공격자가 암호화되지 않은 세션을 도청하거나 가로챌 수 있습니다. | '/etc/inetd.conf ' 파일에서 셸 항목을 제거하거나 주석으로 처리합니다. |
| rsh-server 패키지를 제거해야 합니다. (77) |
rsh-server 패키지가 제거되었는지 확인합니다(CIS: L1 - Server - 2.1.6) | 설명: 공격자가 암호화되지 않은 rsh 세션을 도청하거나 가로챌 수 있습니다. | rsh-server 패키지 제거: yum remove rsh-server (RHEL/CentOS) 또는 apt remove rsh-server (Debian/Ubuntu) |
| ypbind 서비스를 사용하지 않습니다. (78) |
ypbind 서비스가 비활성화되고 nis 패키지가 설치되지 않았는지 확인합니다. 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자가 ypbind 서비스에서 중요한 정보를 검색할 수 있습니다. | nis 패키지 제거: yum remove nis (RHEL/CentOS) 또는 apt remove nis (Debian/Ubuntu) |
| nis 패키지를 제거해야 합니다. (79) |
ypbind 서비스가 비활성화되고 nis 패키지가 설치되지 않았는지 확인합니다. 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자가 NIS 서비스에서 중요한 정보를 검색할 수 있습니다. | nis 패키지 제거: yum remove nis (RHEL/CentOS) 또는 apt remove nis (Debian/Ubuntu) |
| tftp 서비스를 사용하지 않도록 설정해야 합니다. (80) |
tftp 서비스를 사용하지 않도록 설정(CIS: L1 - 서버 - 2.1.9) | 설명: 공격자가 암호화되지 않은 세션을 도청하거나 가로챌 수 있습니다. | '/etc/inetd.conf' 파일에서 tftp 항목을 제거합니다. |
| tftpd 패키지를 제거해야 합니다. (81) |
tftpd 패키지가 설치되지 않았는지 확인합니다(CIS: L1 - 서버 - 2.1.9) | 설명: 공격자가 암호화되지 않은 세션을 도청하거나 가로챌 수 있습니다. | tftpd 패키지 제거: yum remove tftpd (RHEL/CentOS) 또는 apt remove tftpd (Debian/Ubuntu) |
| readahead-fedora 패키지를 제거해야 합니다. (82) |
readahead-fedora 패키지가 설치되지 않았는지 확인합니다. | 설명: 패키지는 상당한 노출을 생성하지 않지만 실질적인 이점도 추가하지 않습니다. | readahead-fedora 패키지 제거: yum remove readahead-fedora (RHEL/CentOS) 또는 apt remove readahead-fedora (Debian/Ubuntu) |
| bluetooth/hidd 서비스를 사용하지 않도록 설정해야 합니다. (84) |
bluetooth 패키지가 설치되어 있지 않은지 확인합니다. | 설명: 공격자가 무선 통신을 가로채거나 조작할 수 있습니다. | bluetooth 패키지 제거: yum remove bluetooth (RHEL/CentOS) 또는 apt remove bluetooth (Debian/Ubuntu) |
| isdn 서비스를 사용하지 않습니다. (86) |
isdn 서비스를 사용하지 않도록 설정했고 isdnutils-base 패키지가 설치되지 않았는지 확인합니다. 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자가 모뎀을 사용하여 무단 액세스를 얻을 수 있습니다. | isdnutils-base 패키지 제거: yum remove isdnutils-base (RHEL/CentOS) 또는 apt remove isdnutils-base (Debian/Ubuntu) |
| isdnutils-base 패키지를 제거해야 합니다. (87) |
isdn 서비스를 사용하지 않도록 설정했고 isdnutils-base 패키지가 설치되지 않았는지 확인합니다. 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자가 모뎀을 사용하여 무단 액세스를 얻을 수 있습니다. | isdnutils-base 패키지 제거: yum remove isdnutils-base (RHEL/CentOS) 또는 apt remove isdnutils-base (Debian/Ubuntu) |
| kdump 서비스를 사용하지 않도록 설정해야 합니다. (88) |
kdump 서비스가 비활성화되고 kdump-tools 패키지가 설치되지 않았는지 확인합니다. | 설명: 공격자가 이전 시스템 충돌을 분석하여 중요한 정보를 검색할 수 있습니다. | kdump-tools 패키지 제거: yum remove kdump-tools (RHEL/CentOS) 또는 apt remove kdump-tools (Debian/Ubuntu) |
| Zeroconf 네트워킹을 사용하지 않습니다. (89) |
zeroconf 네트워킹을 사용하지 않도록 설정 | 설명: 공격자가 이를 악용하여 네트워크 시스템에 대한 정보를 얻거나, 신뢰 모델의 결함으로 인해 DNS 요청을 스푸핑할 수 있습니다. | RHEL/CentOS: 에 NOZEROCONF=yes추가 /etc/sysconfig/network 합니다. Debian/Ubuntu: 다음에서 항목 제거 ipv4ll/etc/network/interfaces |
| crond 서비스를 사용하도록 설정해야 합니다. (90) |
cron 서비스가 사용하도록 설정되어 있는지 확인합니다(CIS: L1 - 서버 - 5.1.1) | 설명: Cron은 거의 모든 시스템에서 정기적인 유지 관리 작업에 필요합니다. | cron 패키지 yum install cron (RHEL/CentOS) 또는 apt install cron (Debian/Ubuntu)를 설치하고 서비스를 사용하도록 설정합니다. |
| /etc/anacrontab에 대한 파일 권한은 root:root 600으로 설정해야 합니다. (91) |
/etc/anacrontab에 대한 파일 권한이 구성되었는지 확인 | 설명: 공격자가 예약된 작업을 방지하거나 악의적인 작업을 실행하기 위해 이 파일을 조작할 수 있습니다. | 소유권 및 사용 권한 설정: chown root:root /etc/anacrontab && chmod 600 /etc/anacrontab |
| /etc/cron.d에 대한 권한이 구성되었는지 확인합니다. (93) |
/etc/cron.d에 대한 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.1.7) | 설명: 권한 없는 사용자에게 이 디렉터리에 대한 쓰기 권한을 부여하면 권한 없는 사용자가 인증되지 않은 상승된 권한을 획득할 수 있습니다. 이 디렉터리에 대한 읽기 권한을 부여하면 권한 없는 사용자가 상승된 권한을 얻는 방법 또는 감사 컨트롤을 우회하는 방법에 대한 인사이트를 얻을 수 있습니다. | 소유권 및 사용 권한 설정: chown root:root /etc/cron.d && chmod 700 /etc/cron.d |
| /etc/cron.daily에 대한 권한이 구성되었는지 확인합니다. (94) |
/etc/cron.daily에 대한 사용 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.1.4) | 설명: 권한 없는 사용자에게 이 디렉터리에 대한 쓰기 권한을 부여하면 권한 없는 사용자가 인증되지 않은 상승된 권한을 획득할 수 있습니다. 이 디렉터리에 대한 읽기 권한을 부여하면 권한 없는 사용자가 상승된 권한을 얻는 방법 또는 감사 컨트롤을 우회하는 방법에 대한 인사이트를 얻을 수 있습니다. | 소유권 및 사용 권한 설정: chown root:root /etc/cron.daily && chmod 700 /etc/cron.daily |
| /etc/cron.hourly에 대한 권한이 구성되었는지 확인합니다. (95) |
/etc/cron.hourly에 대한 사용 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.1.3) | 설명: 권한 없는 사용자에게 이 디렉터리에 대한 쓰기 권한을 부여하면 권한 없는 사용자가 인증되지 않은 상승된 권한을 획득할 수 있습니다. 이 디렉터리에 대한 읽기 권한을 부여하면 권한 없는 사용자가 상승된 권한을 얻는 방법 또는 감사 컨트롤을 우회하는 방법에 대한 인사이트를 얻을 수 있습니다. | 소유권 및 사용 권한 설정: chown root:root /etc/cron.hourly && chmod 700 /etc/cron.hourly |
| /etc/cron.monthly에 대한 권한을 구성합니다. (96) |
/etc/cron.monthly에 대한 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.1.6) | 설명: 권한 없는 사용자에게 이 디렉터리에 대한 쓰기 권한을 부여하면 권한 없는 사용자가 인증되지 않은 상승된 권한을 획득할 수 있습니다. 이 디렉터리에 대한 읽기 권한을 부여하면 권한 없는 사용자가 상승된 권한을 얻는 방법 또는 감사 컨트롤을 우회하는 방법에 대한 인사이트를 얻을 수 있습니다. | 소유권 및 사용 권한 설정: chown root:root /etc/cron.monthly && chmod 700 /etc/cron.monthly |
| /etc/cron.weekly에 대한 권한을 구성합니다. (97) |
/etc/cron.weekly에 대한 사용 권한이 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.1.5) | 설명: 권한 없는 사용자에게 이 디렉터리에 대한 쓰기 권한을 부여하면 권한 없는 사용자가 인증되지 않은 상승된 권한을 획득할 수 있습니다. 이 디렉터리에 대한 읽기 권한을 부여하면 권한 없는 사용자가 상승된 권한을 얻는 방법 또는 감사 컨트롤을 우회하는 방법에 대한 인사이트를 얻을 수 있습니다. | 소유권 및 사용 권한 설정: chown root:root /etc/cron.weekly && chmod 700 /etc/cron.weekly |
| at/cron이 권한 있는 사용자로 제한되었는지 확인 (98) |
at/cron이 권한 있는 사용자로 제한되었는지 확인(CIS: L1 - 서버 - 5.1.8) | 설명: 많은 시스템에서는 시스템 관리자만 작업을 예약 cron 할 권한이 있습니다.
cron.allow 파일을 사용하여 작업을 실행할 cron 수 있는 사용자를 제어하면 이 정책이 적용됩니다. 거부 목록보다 허용 목록을 관리하는 것이 더 쉽습니다. 거부 목록에서는 시스템에 사용자 ID를 추가한 후 거부 파일에 추가하는 것을 잊어버릴 가능성이 있습니다. |
권한 있는 사용자 만들기 /etc/cron.allow 및 /etc/at.allow 사용하여 제거 및 제거 /etc/cron.deny/etc/at.deny |
| SSH는 모범 사례를 충족하도록 구성 및 관리되어야 합니다. - '/etc/ssh/sshd_config Protocol = 2' (106.1) |
SSH 프로토콜이 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.2.4) | 설명: 공격자가 이전 버전의 SSH 프로토콜의 결함을 사용하여 액세스 권한을 얻을 수 있습니다. |
Protocol 2 sshd 서비스에 추가 /etc/ssh/sshd_config 및 다시 시작 |
| SSH는 모범 사례를 충족하도록 구성 및 관리되어야 합니다. - '/etc/ssh/sshd_config IgnoreRhosts = yes' (106.3) |
SSH IgnoreRhosts가 구성되어 있는지 확인합니다(CIS: L1 - 서버 - 5.2.8) | 설명: 공격자가 Rhosts 프로토콜의 결함을 사용하여 액세스 권한을 얻을 수 있습니다. |
IgnoreRhosts yes sshd 서비스에 추가 /etc/ssh/sshd_config 및 다시 시작 |
| SSH LogLevel이 INFO로 설정되어 있는지 확인 (106.5) |
SSH LogLevel이 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.2.5) | 설명: SSH는 다양한 양의 세부 정보를 사용하여 여러 로깅 수준을 제공합니다.
DEBUG 는 중요한 보안 정보를 식별하기 어려운 많은 데이터를 제공하기 때문에 SSH 통신을 디버깅하는 것 외에는 특별히 권장되지 않습니다 .
INFO 수준은 SSH 사용자의 로그인 활동만 기록하는 기본 수준입니다. 인시던트 응답과 같은 대부분의 경우 특정 사용자가 시스템에서 활성화된 시기를 확인하는 것이 중요합니다. 로그아웃 레코드를 사용하면 연결을 끊은 사용자를 제거할 수 있으므로 필드를 좁히는 데 도움이 됩니다. |
/etc/ssh/sshd_config 파일을 편집하여 다음과 같이 매개 변수를 설정합니다. LogLevel INFO |
| SSH MaxAuthTries가 6 이하로 설정되어 있는지 확인 (106.7) |
SSH MaxAuthTries가 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.2.7) | 설명: 매개 변수를 MaxAuthTries 낮은 숫자로 설정하면 SSH 서버에 대한 무차별 암호 대입 공격 성공 위험이 최소화됩니다. 권장 설정은 4이지만 사이트 정책에 따라 숫자를 설정합니다. |
SSH MaxAuthTries가 6 이하로 설정되었는지 확인합니다. /etc/ssh/sshd_config 파일을 편집하여 다음과 같이 매개 변수를 설정합니다. MaxAuthTries 6 |
| SSH 액세스가 제한되어 있는지 확인 (106.11) |
SSH 액세스에 허용되는 사용자가 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.2.18) | 설명: SSH를 통해 원격으로 시스템에 액세스할 수 있는 사용자를 제한하면 권한 있는 사용자만 시스템에 액세스하도록 할 수 있습니다. | SSH 액세스가 제한되어 있는지 확인합니다. /etc/ssh/sshd_config 파일을 편집하여 다음과 같이 하나 이상의 매개 변수를 설정합니다. AllowUsers AllowGroups DenyUsers DenyGroups |
| ssh 서버를 통한 rsh 명령의 에뮬레이션은 사용하지 않도록 설정되어야 합니다. - '/etc/ssh/sshd_config RhostsRSAAuthentication = no' (107) |
N/A | 설명: 공격자가 RHosts 프로토콜의 결함을 사용하여 액세스 권한을 얻을 수 있습니다. |
RhostsRSAAuthentication no sshd 서비스에 추가 /etc/ssh/sshd_config 및 다시 시작 |
| SSH 호스트 기반 인증을 사용하지 않도록 설정해야 합니다. - '/etc/ssh/sshd_config HostbasedAuthentication = no' (108) |
SSH HostBasedAuthentication이 구성되어 있는지 확인합니다(CIS: L1 - 서버 - 5.2.9) | 설명: 공격자가 호스트 기반 인증을 사용하여 손상된 호스트로부터 액세스 권한을 얻을 수 있습니다. |
HostbasedAuthentication no sshd 서비스에 추가 /etc/ssh/sshd_config 및 다시 시작 |
| SSH를 통한 루트 로그인은 사용하지 않도록 설정되어야 합니다. - '/etc/ssh/sshd_config PermitRootLogin = no' (109) |
SSH PermitRootLogin이 구성되어 있는지 확인합니다(CIS: L1 - 서버 - 5.2.10) | 설명: 공격자가 루트 암호를 무차별 암호로 강제 적용하거나 루트로 직접 로그인하여 명령 기록을 숨길 수 있습니다. |
PermitRootLogin no sshd 서비스에 추가 /etc/ssh/sshd_config 및 다시 시작 |
| 암호가 비어 있는 계정의 원격 연결을 사용하지 않도록 설정해야 합니다. - '/etc/ssh/sshd_config PermitEmptyPasswords = no' (110) |
SSH PermitEmptyPasswords가 구성되어 있는지 확인합니다(CIS: L1 - Server - 5.2.11) | 설명: 공격자가 암호 추측을 통해 액세스 권한을 얻을 수 있음 |
PermitEmptyPasswords no sshd 서비스에 추가 /etc/ssh/sshd_config 및 다시 시작 |
| SSH 유휴 시간 제한 간격이 구성되어 있는지 확인합니다. (110.1) |
SSH ClientAliveCountMax가 구성되었는지 확인합니다. | 설명: 연결과 연결된 시간 제한 값이 없으면 권한이 없는 사용자가 다른 사용자의 ssh 세션에 액세스할 수 있습니다. 시간 제한 값을 설정하면 최소한 이러한 일이 발생할 위험이 줄어듭니다. 권장 설정은 300초(5분)이지만 사이트 정책에 따라 이 시간 제한 값을 설정합니다. 권장되는 설정 ClientAliveCountMax 은 0입니다. 이 경우 클라이언트 세션은 유휴 시간 5분 후에 종료되며 유지 메시지가 전송되지 않습니다. |
/etc/ssh/sshd_config 파일을 편집하여 정책에 따라 매개 변수를 설정합니다. |
| SSH LoginGraceTime이 1분 이하로 설정되어 있는지 확인합니다. (110.2) |
SSH LoginGraceTime이 구성되어 있는지 확인합니다(CIS: L1 - 서버 - 5.2.17) | 설명: 매개 변수를 LoginGraceTime 낮은 숫자로 설정하면 SSH 서버에 대한 무차별 암호 대입 공격 성공 위험이 최소화됩니다. 또한 권장되는 설정이 60초(1분)인 동안 동시 인증되지 않은 연결 수를 제한하고 사이트 정책에 따라 숫자를 설정합니다. |
LoginGraceTime 60 sshd 서비스에 추가 /etc/ssh/sshd_config 및 다시 시작 |
| 승인된 MAC 알고리즘만 사용되는지 확인 (110.3) |
승인된 MAC 알고리즘만 사용되는지 확인합니다(CIS: L1 - Server - 5.2.14) | 설명: MD5 및 96비트 MAC 알고리즘은 약한 것으로 간주되며 SSH 다운그레이드 공격에서 악용 가능성을 높이는 것으로 나타났습니다. 약한 알고리즘은 확장된 컴퓨팅 기능으로 악용될 수 있는 약한 지점으로 계속해서 많은 주의가 필요합니다. 알고리즘을 중단하는 공격자는 MiTM 위치를 활용하여 SSH 터널의 암호를 해독하고 자격 증명 및 정보를 캡처할 수 있습니다. | 승인된 MAC를 다음과 /etc/ssh/sshd_config 같이 추가하고 MACs hmac-sha2-512,hmac-sha2-256sshd 서비스를 다시 시작합니다. |
| 원격 로그인 경고 배너가 제대로 구성되었는지 확인합니다. (111) |
원격 로그인 경고 배너가 제대로 구성되었는지 확인합니다(CIS: L1 - 서버 - 1.7.1.3) | 설명: 경고 메시지는 시스템에 대한 법적 상태의 시스템에 로그인하려는 사용자에게 알리며 시스템을 소유한 조직의 이름 및 해당 위치에 있는 모니터링 정책을 포함해야 합니다. 로그인 배너에 OS 및 패치 수준 정보를 표시하면 시스템의 특정 악용을 대상으로 하려는 공격자에게 자세한 시스템 정보를 제공하는 부작용도 있습니다. 권한 있는 사용자는 로그인한 후 uname -a 명령을 실행하여 이 정보를 쉽게 얻을 수 있습니다. |
시스템 정보 이스케이프 시퀀스(\m, \r, \s, \v)를 제거하고 /etc/issue.net 적절한 경고 텍스트로 바꾸기 |
| 로컬 로그인 경고 배너가 제대로 구성되었는지 확인합니다. (111.1) |
로컬 로그인 경고 배너가 제대로 구성되었는지 확인합니다(CIS: L1 - 서버 - 1.7.1.2) | 설명: 경고 메시지는 시스템에 대한 법적 상태의 시스템에 로그인하려는 사용자에게 알리며 시스템을 소유한 조직의 이름 및 해당 위치에 있는 모니터링 정책을 포함해야 합니다. 로그인 배너에 OS 및 패치 수준 정보를 표시하면 시스템의 특정 악용을 대상으로 하려는 공격자에게 자세한 시스템 정보를 제공하는 부작용도 있습니다. 권한 있는 사용자는 로그인한 후 uname -a 명령을 실행하여 이 정보를 쉽게 얻을 수 있습니다. |
시스템 정보 이스케이프 시퀀스(\m, \r, \s, \v)를 제거하고 /etc/issue 적절한 경고 텍스트로 바꾸기 |
| SSH 경고 배너를 사용하도록 설정해야 합니다. - '/etc/ssh/sshd_config Banner = /etc/issue.net' (111.2) |
SSH 경고 배너가 구성되어 있는지 확인합니다(CIS: L1 - 서버 - 5.2.19) | 설명: 시스템에 대한 작업이 모니터링된다는 경고는 사용자에게 표시되지 않습니다. |
Banner /etc/issue.net sshd 서비스에 추가 /etc/ssh/sshd_config 및 다시 시작 |
| 사용자는 SSH에 대한 환경 옵션을 설정할 수 없습니다. (112) |
SSH PermitUserEnvironment가 구성되어 있는지 확인합니다(CIS: L1 - 서버 - 5.2.12) | 설명: 공격자가 SSH를 통해 일부 액세스 제한을 우회할 수 있습니다. | '/etc/ssh/sshd_config' 파일에서 'PermitUserEnvironment yes' 줄을 제거합니다. |
| SSH에 적절한 암호화를 사용해야 합니다. (암호화 aes128-ctr,aes192-ctr,aes256-ctr) (113) |
SSH에 적절한 암호화가 사용되는지 확인합니다(CIS: L1 - 서버 - 5.2.13) | 설명: 공격자가 약한 보안 SSH 연결을 손상시킬 수 있음 |
Ciphers aes128-ctr,aes192-ctr,aes256-ctr sshd 서비스에 추가 /etc/ssh/sshd_config 및 다시 시작 |
| avahi-daemon 서비스를 사용하지 않도록 설정해야 합니다. (114) |
avahi-daemon 서비스가 사용하지 않도록 설정되어 있는지 확인합니다(CIS: L1 - 서버 - 2.2.3) | 설명: 공격자가 avahi 디먼의 취약성을 사용하여 액세스 권한을 얻을 수 있습니다. | avahi-daemon 서비스 사용 안 함: systemctl disable avahi-daemon (systemd) 또는 chkconfig avahi-daemon off (sysv) |
| 컵 서비스를 사용하지 않도록 설정해야 합니다. (115) |
컵 서비스가 비활성화되었는지 확인(CIS: L1 - 서버 - 2.2.4) | 설명: 공격자가 컵 서비스의 결함을 사용하여 권한을 높일 수 있습니다. | cups 서비스 사용 안 함: systemctl disable cups (systemd) 또는 chkconfig cups off (sysv) |
| isc-dhcpd 서비스를 사용하지 않습니다. (116) |
isc-dhcp-server 패키지가 설치되지 않았는지 확인(CIS: L1 - 서버 - 2.2.5) - 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자는 dhcpd를 사용하여 클라이언트에 잘못된 정보를 제공하여 정상적인 작업을 방해할 수 있습니다. | isc-dhcp-server 패키지 제거: yum remove dhcp-server (RHEL/CentOS) 또는 apt remove isc-dhcp-server (Debian/Ubuntu) |
| isc-dhcp-server 패키지를 제거해야 합니다. (117) |
isc-dhcp-server 패키지가 설치되지 않았는지 확인(CIS: L1 - 서버 - 2.2.5) - 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자는 dhcpd를 사용하여 클라이언트에 잘못된 정보를 제공하여 정상적인 작업을 방해할 수 있습니다. | isc-dhcp-server 패키지 제거: yum remove dhcp-server (RHEL/CentOS) 또는 apt remove isc-dhcp-server (Debian/Ubuntu) |
| sendmail 패키지를 제거해야 합니다. (120) |
sendmail 패키지가 설치되어 있지 않은지 확인합니다. | 설명: 공격자가 이 시스템을 사용하여 악의적인 콘텐츠가 포함된 이메일을 다른 사용자에게 보낼 수 있습니다. | sendmail 패키지 제거: yum remove sendmail (RHEL/CentOS) 또는 apt remove sendmail (Debian/Ubuntu) |
| postfix 패키지를 제거해야 합니다. (121) |
후위 패키지가 설치되어 있지 않은지 확인합니다. | 설명: 공격자가 이 시스템을 사용하여 악의적인 콘텐츠가 포함된 이메일을 다른 사용자에게 보낼 수 있습니다. | 접미사 패키지 제거: yum remove postfix (RHEL/CentOS) 또는 apt remove postfix (Debian/Ubuntu) |
| 접두사 네트워크 수신 대기는 적절하게 사용하지 않도록 설정해야 합니다. (122) |
후위 네트워크 수신 대기를 사용하지 않도록 설정해야 합니다. | 설명: 공격자가 이 시스템을 사용하여 악의적인 콘텐츠가 포함된 이메일을 다른 사용자에게 보낼 수 있습니다. | 'inet_interfaces localhost' 줄을 '/etc/postfix/main.cf' 파일에 추가합니다. |
| ldap 서비스를 사용하지 않도록 설정해야 합니다. (124) |
ldap 서비스가 비활성화되고 sldapd 패키지가 설치되지 않았는지 확인합니다(CIS: L1 - Server - 2.2.6) | 설명: 공격자가 이 호스트의 LDAP 서비스를 조작하여 LDAP 클라이언트에 거짓 데이터를 배포할 수 있습니다. | 슬랩된 패키지 제거: yum remove openldap-servers (RHEL/CentOS) 또는 apt remove slapd (Debian/Ubuntu) |
| rpcgssd 서비스를 사용하지 않습니다. (126) |
rpcgssd 서비스를 사용하지 않도록 설정해야 합니다. | 설명: 공격자가 rpcgssd/nfs의 결함을 사용하여 액세스 권한을 얻을 수 있습니다. | rpcgssd 서비스 사용 안 함: systemctl disable rpc-gssd (systemd) 또는 chkconfig rpc-gssd off (sysv) |
| rpcidmapd 서비스를 사용하지 않도록 설정해야 합니다. (127) |
rpcidmapd 서비스를 사용하지 않도록 설정해야 합니다. | 설명: 공격자가 idmapd/nfs의 결함을 사용하여 액세스 권한을 얻을 수 있습니다. | rpcidmapd 서비스 사용 안 함: systemctl disable rpc-idmapd (systemd) 또는 chkconfig rpc-idmapd off (sysv) |
| 포트맵 서비스를 사용하지 않도록 설정해야 합니다. (129.1) |
포트맵 서비스를 사용하지 않도록 설정해야 합니다. | 설명: 공격자가 포트맵의 결함을 사용하여 액세스 권한을 얻을 수 있습니다. | rpcbind 서비스 사용 안 함: systemctl disable rpcbind (systemd) 또는 chkconfig rpcbind off (sysv) |
| NFS(네트워크 파일 시스템) 서비스를 사용하지 않도록 설정해야 합니다. (129.2) |
NFS(네트워크 파일 시스템) 서비스를 사용하지 않도록 설정(CIS: L1 - 서버 - 2.2.7 - 부분) | 설명: 공격자는 nfs를 사용하여 공유를 탑재하고 파일을 실행/복사할 수 있습니다. | nfs 서비스 사용 안 함: systemctl disable nfs-server (systemd) 또는 chkconfig nfs off (sysv) |
| rpcsvcgssd 서비스를 사용하지 않습니다. (130) |
rpcsvcgssd 서비스를 사용하지 않도록 설정해야 합니다. | 설명: 공격자가 rpcsvcgssd의 결함을 사용하여 액세스 권한을 얻을 수 있습니다. | '/etc/inetd.conf' 파일에서 'NEED_SVCGSSD = yes' 줄을 제거합니다. |
| 명명된 서비스를 사용하지 않도록 설정해야 합니다. (131) |
명명된 서비스가 비활성화되고 bind9 패키지가 설치되지 않았는지 확인합니다(CIS: L1 - 서버 - 2.2.8) - 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자가 DNS 서비스를 사용하여 클라이언트에 거짓 데이터를 배포할 수 있습니다. | 바인딩 패키지 제거: yum remove bind (RHEL/CentOS) 또는 apt remove bind9 (Debian/Ubuntu) |
| 바인딩 패키지를 제거해야 합니다. (132) |
명명된 서비스가 비활성화되고 bind9 패키지가 설치되지 않았는지 확인합니다(CIS: L1 - 서버 - 2.2.8) - 서비스 및 패키지 규칙이 결합됨 | 설명: 공격자가 DNS 서비스를 사용하여 클라이언트에 거짓 데이터를 배포할 수 있습니다. | 바인딩 패키지 제거: yum remove bind (RHEL/CentOS) 또는 apt remove bind9 (Debian/Ubuntu) |
| dovecot 서비스를 사용하지 않도록 설정해야 합니다. (137) |
dovecot 서비스를 사용하지 않도록 설정했고 dovecot-core 패키지가 설치되지 않았는지 확인합니다. 서비스 및 패키지 규칙이 결합됨 | 설명: 시스템을 IMAP/POP3 서버로 사용할 수 있습니다. | dovecot 패키지 제거: yum remove dovecot (RHEL/CentOS) 또는 apt remove dovecot-core (Debian/Ubuntu) |
| dovecot 패키지를 제거해야 합니다. (138) |
dovecot 서비스를 사용하지 않도록 설정했고 dovecot-core 패키지가 설치되지 않았는지 확인합니다. 서비스 및 패키지 규칙이 결합됨 | 설명: 시스템을 IMAP/POP3 서버로 사용할 수 있습니다. | dovecot 패키지 제거: yum remove dovecot (RHEL/CentOS) 또는 apt remove dovecot-core (Debian/Ubuntu) |
/etc/passwd에 레거시 + 항목이 없는지 확인합니다.(156.1) |
/etc/passwd에 레거시 + 항목이 없는지 확인합니다(CIS: L1 - Server - 6.2.2) | 설명: 공격자가 암호 없이 사용자 이름 '+'를 사용하여 액세스 권한을 얻을 수 있습니다. | /etc/passwd에서 '+'로 시작하는 모든 항목을 제거합니다. |
/etc/shadow에 레거시 + 항목이 없는지 확인(156.2) |
/etc/shadow에 레거시 + 항목이 없는지 확인합니다(CIS: L1 - Server - 6.2.3) | 설명: 공격자가 암호 없이 사용자 이름 '+'를 사용하여 액세스 권한을 얻을 수 있습니다. | '+:'로 시작하는 /etc/shadow의 항목을 제거합니다. |
/etc/group에 레거시 + 항목이 있으면 안 됩니다.(156.3) |
/etc/group에 레거시 + 항목이 없는지 확인합니다(CIS: L1 - Server - 6.2.4) | 설명: 공격자가 암호 없이 사용자 이름 '+'를 사용하여 액세스 권한을 얻을 수 있습니다. | '+:'로 시작하는 /etc/group의 항목을 제거합니다. |
| 암호 만료 기간을 365일 이하로 설정합니다. (157.1) |
암호 만료가 구성되었는지 확인(CIS: L1 - 서버 - 5.4.1.1) | 설명: 암호의 최대 사용 기간을 줄이면 공격자가 손상된 자격 증명을 활용하거나 온라인 무차별 암호 대입 공격을 통해 자격 증명을 성공적으로 손상시킬 수 있는 기회도 줄어듭니다. | 설정 PASS_MAX_DAYS 365/etc/login.defs |
| 암호 만료 경고 일 수를 7 이상으로 설정합니다. (157.2) |
암호 만료 경고 날짜가 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.4.1.3) | 설명: 암호가 만료될 것이라는 사전 경고를 제공하면 사용자는 보안 암호를 생각할 수 있습니다. 모르는 사용자가 간단한 암호를 선택하거나 검색할 수 있는 위치에 기록할 수 있습니다. | 설정 PASS_WARN_AGE 7/etc/login.defs |
| 암호 재사용이 제한되는지 확인합니다. (157.5) |
암호 재사용이 제한되었는지 확인(CIS: L1 - 서버 - 5.3.3) | 사용자가 이전 암호 5개를 다시 사용하지 못하게 제한하면 공격자가 암호를 추측할 수 있는 가능성이 낮아집니다. | 에서 PAM 암호 모듈에 추가 remember=5/etc/pam.d/common-password |
| 암호 해시 알고리즘이 SHA-512인지 확인합니다. (157.11) |
암호 해시 알고리즘이 SHA-512인지 확인합니다(CIS: L1 - 서버 - 5.3.4) | 설명: SHA-512 알고리즘은 MD5보다 훨씬 더 강력한 해시를 제공하므로 공격자가 암호를 성공적으로 확인하기 위한 노력의 수준을 높여 시스템에 추가적인 보호를 제공합니다. 참고: 이러한 변경 내용은 로컬 시스템에 구성된 계정에만 적용됩니다. | 암호 해시 알고리즘을 sha512로 설정합니다. 많은 배포판에서 PAM 구성을 업데이트하는 도구를 제공합니다. 자세한 내용은 설명서를 참조하세요. 도구가 제공되지 않은 경우 적절한 /etc/pam.d/ 구성 파일을 편집하고 sha512 옵션을 포함하도록 줄을 추가하거나 수정 pam_unix.so 합니다. password sufficient pam_unix.so sha512 |
| 암호 변경 사이의 최소 날짜가 7일 이상인지 확인합니다. (157.12) |
암호 변경 사이의 최소 일 수 구성(CIS: L1 - 서버 - 5.4.1.2) | 설명: 관리자는 암호 변경 빈도를 제한하여 사용자가 암호 재사용 컨트롤을 우회하기 위해 반복적으로 암호를 변경하지 못하도록 할 수 있습니다. | 기존 사용자에 PASS_MIN_DAYS 7 대해 설정 /etc/login.defs 및 실행 chage --mindays 7 <username> |
| 모든 사용자의 마지막 암호 변경 날짜는 과거의 날짜여야 합니다. (157.14) |
비활성 암호 잠금 기간이 구성되었는지 확인합니다(CIS: L1 - 서버 - 5.4.1.4) | 설명: 사용자가 기록한 암호 변경 날짜가 미래의 날짜인 경우 설정된 암호 만료 기간을 무시할 수 있습니다. | 비활성 암호 잠금이 30일 이하인지 확인하려면 다음 명령을 실행하여 기본 암호 비활성 기간을 30일로 설정합니다. # useradd -D -f 30 일치하도록 암호가 설정된 모든 사용자의 사용자 매개 변수를 수정합니다. # chage --inactive 30 |
| 시스템 계정이 로그인이 아닌지 확인 (157.15) |
모든 시스템 계정이 로그인이 아닌지 확인합니다(CIS: L1 - 서버 - 5.4.2) | 설명: 일반 사용자가 사용하지 않는 계정은 대화형 셸을 제공하는 용도로 사용하면 안 됩니다. 기본적으로 Ubuntu는 이러한 계정에 대한 암호 필드를 잘못된 문자열로 설정하지만, 암호 파일의 셸 필드를 /usr/sbin/nologin으로 설정하는 것이 좋습니다. 이렇게 하면 계정이 명령을 실행하는 데 사용되지 않습니다. |
감사 스크립트에서 반환된 모든 계정에 대한 셸을 로 설정합니다. /sbin/nologin |
| 루트 계정의 기본 그룹은 GID 0이어야 합니다. (157.16) |
루트 계정의 기본 그룹이 GID 0인지 확인합니다(CIS: L1 - 서버 - 5.4.3) | 설명: 계정에 GID 0을 root 사용하면 소유된 파일이 권한이 없는 사용자가 실수로 액세스할 수 없게 root됩니다. |
다음 명령을 실행하여 사용자 기본 그룹을 GID root 로 설정합니다0.# usermod -g 0 root |
| root가 유일한 UID 0 계정이어야 합니다. (157.18) |
루트가 유일한 UID 0 계정인지 확인합니다(CIS: L1 - 서버 - 6.2.5) | 설명: 이 액세스는 기본 root 계정으로만 제한되어야 하며 시스템 콘솔에서만 제한되어야 합니다. 관리 액세스는 승인된 메커니즘을 사용하여 권한 없는 계정을 통해야 합니다. |
UID root 이외의 0 사용자를 제거하거나 적절한 경우 새 UID를 할당합니다. |
| 불필요한 계정 제거 (159) |
불필요한 계정이 제거되었는지 확인 | 설명: 규정을 준수해야 합니다. | 불필요한 계정 제거 |
| 감사된 서비스가 사용하도록 설정되어 있는지 확인 (162) |
감사된 패키지가 설치되어 있는지 확인합니다. | 설명: 시스템 이벤트를 캡처하면 시스템에 대한 무단 액세스가 발생하는지 확인할 수 있는 정보가 시스템 관리자에게 제공됩니다. | 감사 패키지 설치(systemctl enable auditd) |
| AuditD 서비스 실행 (163) |
감사된 서비스가 실행 중인지 확인 | 설명: 시스템 이벤트를 캡처하면 시스템에 대한 무단 액세스가 발생하는지 확인할 수 있는 정보가 시스템 관리자에게 제공됩니다. | AuditD 서비스를 실행합니다(systemctl start auditd). |
| SNMP 서버가 사용하도록 설정되지 않았는지 확인 (179) |
SNMP 서버가 사용하도록 설정되지 않았는지 확인합니다(CIS: L1 - 서버 - 2.2.14) | 설명: SNMP 서버는 SNMP v1을 사용하여 통신할 수 있으며, 이 경우 암호화되지 않은 데이터가 전송되고 명령을 실행할 때 인증이 필요 없습니다. 반드시 필요한 경우가 아니면 SNMP 서비스를 사용하지 않는 것이 좋습니다. SNMP가 필요한 경우 SNMP v1을 허용하지 않도록 서버를 구성해야 합니다. | 다음 명령 중 하나를 실행하여 사용하지 않도록 설정합니다 snmpd# chkconfig snmpd off# systemctl disable snmpd. # update-rc.d snmpd disable |
| rsync 서비스를 사용하도록 설정하지 않았는지 확인 (181) |
rsync 서비스가 사용하도록 설정되지 않았는지 확인합니다(CIS: L1 - 서버 - 2.2.16) | 설명: 서비스는 rsyncd 암호화되지 않은 프로토콜을 통신에 사용하므로 보안 위험을 표시합니다. |
rsync 서비스 사용 안 함: systemctl disable rsyncd (systemd) 또는 chkconfig rsyncd off (sysv) |
| NIS 서버를 사용하지 않습니다. (182) |
NIS 서버를 사용할 수 없는지 확인합니다(CIS: L1 - 서버 - 2.2.17) | 설명: NIS 서비스는 태생적으로 DOS 공격, 버퍼 오버플로에 취약하고 NIS 맵 쿼리를 위한 인증이 빈약한 안전하지 않은 시스템입니다. NIS는 일반적으로 LDAP(Lightweight Directory Access Protocol)와 같은 프로토콜로 대체됩니다. 이 서비스를 사용하지 않도록 설정하고 더 안전한 서비스를 사용하는 것이 좋습니다. | 다음 명령 중 하나를 실행하여 사용하지 않도록 설정합니다 ypserv# chkconfig ypserv off# systemctl disable ypserv. # update-rc.d ypserv disable |
| rsh 클라이언트를 설치하지 않습니다. (183) |
rsh 클라이언트가 설치되지 않았는지 확인합니다(CIS: L1 - 서버 - 2.3.2) | 설명: 이러한 레거시 클라이언트는 수많은 보안 취약성이 노출되어 있으므로 보다 안전한 SSH 패키지로 대체되었습니다. 서버를 제거했더라도 사용자가 실수로 이러한 명령을 사용하여 자격 증명을 노출하는 일이 없도록 클라이언트까지 제거하는 것이 좋습니다. 패키지를 제거하면 rsh 클라이언트가 제거됩니다rsh.rcprlogin |
적절한 패키지 관리자 yum remove rsh (RHEL/CentOS), (Debian/Ubuntu) apt remove rsh 또는 zypper remove rsh (SUSE)를 사용하여 rsh를 제거합니다. |
| Samba에서 SMB V1 사용 안 함 (185) |
Samba가 있는 SMB V1을 사용하지 않도록 설정(CIS: L1 - 서버 - 2.2.12) | 설명: SMB v1에는 잘 알려진 심각한 취약성이 있으며 전송 중인 데이터를 암호화하지 않습니다. 비즈니스상의 이유로 사용해야 하는 경우 이 프로토콜에 내재된 위험을 완화하기 위해 추가 조치를 취하는 것이 좋습니다. | 섹션에 min protocol = SMB2 추가 [global] 및 /etc/samba/smb.conf smbd 서비스 다시 시작 |
참고 항목
특정 Azure Policy 게스트 구성 설정의 가용성은 Azure Government 및 기타 국가별 클라우드에서 다를 수 있습니다.
다음 단계
Azure Policy 및 게스트 구성에 대한 추가 문서:
- Azure Policy 게스트 구성.
- 규정 준수 개요
- Azure Policy 샘플의 다른 예제를 검토합니다.
- 정책 효과 이해를 검토합니다.
- 새 azure-osconfig 자동 수정 함수제한된 공개 미리 보기를 사용하여 비준수 리소스를 수정하는 방법을 알아봅니다.