이 문서에서는 macOS에서 엔드포인트용 Microsoft Defender 오프라인 보안 인텔리전스 업데이트 기능에 대해 설명합니다.
이 기능을 사용하면 organization 로컬 호스팅 서버(이 문서의 미러 서버라고 함)를 사용하여 인터넷에 제한되거나 노출되지 않는 macOS 엔드포인트에서 보안 인텔리전스(이 문서에서 정의 또는 서명이라고 함)를 업데이트할 수 있습니다.
미러 서버는 Microsoft 클라우드에 연결하여 서명을 다운로드할 수 있는 고객 환경의 모든 서버입니다. 다른 macOS 엔드포인트는 미리 정의된 간격으로 미러 서버에서 서명을 가져옵니다.
주요 장점
보안 팀은 로컬 서버에 대한 서명 다운로드 빈도와 엔드포인트가 로컬 서버에서 서명을 가져오는 빈도를 제어하고 관리할 수 있습니다.
다운로드한 서명이 전체 플릿으로 전파되기 전에 테스트 디바이스에서 테스트할 수 있으므로 추가 보호 및 제어 계층이 있습니다.
하나의 로컬 서버만 Microsoft 클라우드를 폴링하여 전체 플릿을 대신하여 최신 서명을 가져오기 때문에 네트워크 대역폭이 줄어듭니다.
미러 서버는 Windows, Mac 또는 Linux를 실행할 수 있으며 해당 서버에 엔드포인트용 Defender를 설치할 필요가 없습니다.
서명은 항상 호환되는 최신 바이러스 백신 엔진과 함께 다운로드되므로 최신 바이러스 백신 보호를 받을 수 있습니다.
이전 버전의 서명(n-1)은 각 반복에서 미러 서버의 백업 폴더로 이동됩니다. 최신 업데이트에 문제가 있는 경우 백업 폴더에서 디바이스로 n-1 서명 버전을 끌어올 수 있습니다.
오프라인 업데이트가 실패하는 드문 경우 Microsoft 클라우드에서 온라인 업데이트를 받도록 대체 옵션을 구성할 수 있습니다.
오프라인 보안 인텔리전스 업데이트 작동 방식
조직은 Microsoft 클라우드에서 연결할 수 있는 로컬 웹/NFS 서버인 미러 서버를 설정해야 합니다.
서명은 로컬 서버에서 cron 작업/작업 스케줄러를 사용하여 스크립트를 실행하여 Microsoft 클라우드에서 이 미러 서버로 다운로드됩니다.
엔드포인트용 Defender를 실행하는 macOS 엔드포인트는 사용자 정의 시간 간격으로 이 미러 서버에서 다운로드한 서명을 가져옵니다.
로컬 서버에서 macOS 엔드포인트로 끌어온 서명은 바이러스 백신 엔진에 로드되기 전에 먼저 확인됩니다.
업데이트 프로세스를 트리거하고 구성하려면 macOS 엔드포인트에서 관리되는 구성 json 파일을 업데이트합니다.
업데이트의 상태 mdatp CLI에서 확인할 수 있습니다.
미러 서버에 보안 인텔리전스 업데이트를 다운로드하기 위한 프로세스 흐름은 다음 다이어그램에 나와 있습니다.
macOS 엔드포인트에서 보안 인텔리전스 업데이트에 대한 프로세스 흐름은 다음 다이어그램에 나와 있습니다.
미러 서버는 다음 운영 체제를 실행할 수 있습니다.
- Linux(모든 버전)
- Windows(모든 버전)
- Mac(모든 버전)
필수 구성 요소
엔드포인트용 Defender 버전 101.25012.0003 이상을 macOS 엔드포인트에 설치해야 합니다.
macOS 엔드포인트는 미러 서버에 연결해야 합니다.
macOS 엔드포인트는 엔드포인트 지원 배포판용 Defender를 실행해야 합니다.
미러 서버는 HTTP/HTTPS 서버 또는 네트워크 공유 서버(예: NFS 서버)일 수 있습니다.
미러 서버는 다음 URL에 액세스할 수 있어야 합니다.
https://github.com/microsoft/mdatp-xplat.githttps://go.microsoft.com/fwlink/?linkid=2144709
미러 서버는 bash 또는 PowerShell을 지원해야 합니다.
미러 서버에 필요한 최소 시스템 사양은 다음과 같습니다.
CPU Core RAM 무료 디스크 스왑 코어 2개(기본 설정 4코어) 1GB 분(기본 설정 4GB) 2GB 시스템 종속성 참고
이 구성은 처리되는 요청 수와 각 서버가 처리해야 하는 부하에 따라 달라질 수 있습니다.
미러 서버 구성
참고
미러 서버의 관리 및 소유권은 고객의 프라이빗 환경에 있기 때문에 전적으로 고객에게 있습니다.
모든 HTTP 서버는 미러 서버로 사용할 수 있습니다. 미러 서버에 엔드포인트용 Defender가 설치되어 있을 필요가 없습니다.
미러 서버의 관리 및 소유권은 전적으로 고객과 관련이 있지만, 이 섹션에서는 Python 3 및 Caddy를 사용하여 macOS에서 기본 HTTP 파일 서버를 설정하는 방법을 보여 주는 두 가지 샘플 Bash 스크립트를 제공합니다. 이러한 스크립트는 설명 목적으로만 제공되며 고유한 특정 요구 사항 및 환경에 맞게 조정되어야 합니다.
-
python_http_server.sh: Python 3의 기본 제공 HTTP 서버 모듈을 사용하여 지정된 디렉터리의 파일을 제공합니다. -
caddy_http_server.sh: 지정된 디렉터리의 파일을 제공하도록 Caddy 웹 서버를 설치하고 구성합니다.
서버를 설정한 후 서비스가 올바르게 설정되었는지 검사 하려면 "https://localhost:8080"로 이동합니다.
프로덕션 또는 고급 사용 사례의 경우 각 서버에 대한 공식 설명서를 참조하세요.
항상 사용자 환경 및 보안 요구 사항에 맞게 스크립트를 검토하고 조정합니다.
샘플 스크립트: Python 3을 사용하여 macOS에서 기본 HTTP 파일 서버 설정
#!/bin/bash
# python_http_server.sh
# Starts a simple HTTP server using Python 3
# Check for Python 3
if ! command -v python3 &> /dev/null; then
echo "Python 3 is not installed. Please install it first."
exit 1
fi
PORT=8080
FOLDER="."
if [ ! -z "$1" ]; then
PORT=$1
fi
if [ ! -z "$2" ]; then
FOLDER=$2
fi
echo "Starting Python HTTP server on port $PORT (localhost only), serving folder: $FOLDER..."
python3 -m http.server "$PORT" --bind 127.0.0.1 --directory "$FOLDER"
샘플 스크립트: Caddy를 사용하여 macOS에서 기본 HTTP 파일 서버 설정
#!/bin/bash
# caddy_http_server.sh
# Installs and configures Caddy HTTP server on macOS
PORT=8080
FOLDER="."
if [ ! -z "$1" ]; then
PORT=$1
fi
if [ ! -z "$2" ]; then
FOLDER=$2
fi
check_homebrew() {
if ! command -v brew &> /dev/null; then
echo "Homebrew is required to install Caddy."
read -p "Would you like to install Homebrew? (y/n): " install_brew
if [[ "$install_brew" =~ ^[Yy]$ ]]; then
echo "Installing Homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
export PATH="/opt/homebrew/bin:$PATH"
else
echo "Please install Caddy manually and restart this script."
exit 1
fi
fi
}
install_caddy() {
if ! brew list caddy &> /dev/null; then
echo "Installing Caddy via Homebrew..."
brew install caddy
else
echo "Caddy is already installed."
fi
}
# Check for Caddy
if ! command -v caddy &> /dev/null; then
echo "Caddy is not installed."
check_homebrew
install_caddy
else
echo "Caddy is already installed."
fi
# Create a simple Caddyfile
cat <<EOL > Caddyfile
localhost:${PORT} {
root * ${FOLDER}
file_server browse
}
EOL
echo "Caddyfile created. Starting Caddy server on port $PORT..."
caddy run --config ./Caddyfile
오프라인 보안 인텔리전스 다운로더 스크립트 가져오기
Microsoft는 다음 GitHub 리포지토리 https://github.com/microsoft/mdatp-xplat에서 오프라인 보안 인텔리전스 다운로더 스크립트를 호스팅합니다.
다음 단계를 수행하여 다운로더 스크립트를 가져옵니다.
옵션 1: 리포지토리 복제(기본 설정)
미러 서버에 git을 설치합니다.
리포지토리를 복제할 디렉터리로 이동합니다.
명령을 실행합니다. git clone https://github.com/microsoft/mdatp-xplat.git
옵션 2: zip 파일 다운로드
리포지토리의 zip 파일() https://github.com/microsoft/mdatp-xplat/archive/refs/heads/master.zip을 다운로드합니다.
zip 파일을 스크립트를 유지하려는 폴더에 복사합니다.
압축된 폴더를 추출합니다.
참고
정기적으로 리포지토리/다운로드한 zip 파일을 최신 버전으로 업데이트하도록 cron 작업 또는 시작 작업을 예약합니다.
리포지토리를 복제하거나 압축된 파일을 다운로드한 후 로컬 디렉터리 구조는 다음과 같습니다.
user@vm:~/mdatp-xplat$ tree linux/definition_downloader/
linux/definition_downloader/
├── README.md
├── settings.json
├── settings.ps1
├── xplat_offline_updates_download.ps1
└── xplat_offline_updates_download.sh
0 directories, 5 files
참고
스크립트를 사용하는 방법에 대해 자세히 이해하려면 README.md 파일을 참조하세요.
settings.json 파일은 사용자가 스크립트 실행의 출력을 확인하도록 구성할 수 있는 몇 가지 변수로 구성됩니다.
| 필드 이름 | 값 | 설명 |
|---|---|---|
downloadFolder |
문자열 | 스크립트가 파일을 다운로드하는 위치에 매핑됩니다. |
downloadLinuxUpdates |
bool | 로 true설정하면 스크립트는 Linux 특정 업데이트를 에 downloadFolder다운로드합니다. |
logFilePath |
문자열 | 지정된 폴더에서 진단 로그를 설정합니다. 이 파일은 문제가 있는 경우 스크립트를 디버깅하기 위해 Microsoft와 공유할 수 있습니다. |
downloadMacUpdates |
bool | 스크립트는 Mac 관련 업데이트를 에 downloadFolder다운로드합니다. |
downloadPreviewUpdates |
bool | 특정 OS에 사용할 수 있는 업데이트의 미리 보기 버전을 다운로드합니다. |
backupPreviousUpdates |
bool | 스크립트가 폴더에서 이전 업데이트를 _back 복사할 수 있도록 허용하고 새 업데이트가 에 downloadFolder다운로드됩니다. |
오프라인 보안 인텔리전스 다운로더 스크립트 실행
다운로더 스크립트를 수동으로 실행하려면 이전 섹션의 설명에 따라 settings.json 파일에서 매개 변수를 구성하고 미러 서버의 OS를 기반으로 하는 다음 명령 중 하나를 사용합니다.
Bash:
./xplat_offline_updates_download.sh
Powershell:
./xplat_offline_updates_download.ps1
참고
cron 작업 또는 실행된 작업을 예약하여 이 스크립트를 실행하여 미러 서버에 최신 보안 인텔리전스 업데이트를 정기적으로 다운로드합니다.
미러 서버에서 오프라인 보안 인텔리전스 업데이트 호스트
스크립트가 실행되면 최신 서명이 settings.json 파일(updates.zip)에 구성된 폴더에 다운로드됩니다.
서명 zip이 다운로드되면 미러 서버를 사용하여 호스트할 수 있습니다. 미러 서버는 HTTP/HTTPS/네트워크 공유 서버를 사용하여 호스트할 수 있습니다.
호스트되면 호스트된 서버의 절대 경로(arch_* 디렉터리를 포함하지 않음)를 복사합니다.
예를 들어 스크립트가 를 사용하여 downloadFolder=/tmp/wdav-update실행되고 HTTP 서버(www.example.server.com:8000)가 /tmp/wdav-update 경로를 호스팅하는 경우 해당 URI는 입니다 www.example.server.com:8000/mac/production/.
/tmp/wdav-update/mac/production과 같은 디렉터리(로컬/원격 탑재 지점)의 절대 경로를 사용할 수도 있습니다.
미러 서버가 설정되면 다음 섹션에 설명된 대로 관리되는 구성의 와 같이 offlineDefinitionUpdateUrl 이 URL을 Mac 엔드포인트에 전파해야 합니다.
엔드포인트 구성
다음 샘플 mdatp_managed.json 파일을 사용하고 구성에 따라 매개 변수를 업데이트한 다음 파일을 /etc/opt/microsoft/mdatp/managed/mdatp_managed.json 위치에 복사합니다.
{
"cloudService": {
"automaticDefinitionUpdateEnabled": true,
"definitionUpdatesInterval": 1202
},
"antivirusEngine": {
"offlineDefinitionUpdateUrl": "http://172.22.199.67:8000/mac/production/",
"offlineDefintionUpdateFallbackToCloud":false,
"offlineDefinitionUpdate": "enabled"
},
"features": {
"offlineDefinitionUpdateVerifySig": "enabled"
}
}
| 필드 이름 | 값 | Comments |
|---|---|---|
automaticDefinitionUpdateEnabled |
true/false |
업데이트를 자동으로 수행하려고 시도하는 엔드포인트용 Defender의 동작을 각각 켜거나 끕니다. |
definitionUpdatesInterval |
숫자 | 서명의 각 자동 업데이트 사이의 간격 시간(초)입니다. |
offlineDefinitionUpdateUrl |
문자열 | 미러 서버 설정의 일부로 생성된 URL 값입니다. 이는 원격 서버 URL 또는 디렉터리(로컬/원격 탑재 지점)의 측면에서일 수 있습니다. |
offlineDefinitionUpdate |
enabled/disabled |
로 enabled설정하면 "오프라인 보안 인텔리전스 업데이트" 기능이 활성화되고 그 반대의 경우도 마찬가지입니다. |
offlineDefinitionUpdateFallbackToCloud |
true/false |
"오프라인 미러 서버"가 업데이트 요청을 처리하지 못하는 경우 엔드포인트용 Defender 보안 인텔리전스 업데이트 방법을 결정합니다. 로 true설정하면 "오프라인 보안 인텔리전스 업데이트"가 실패하면 Microsoft 클라우드를 통해 업데이트가 다시 시도됩니다. 그렇지 않으면 그 반대입니다. |
offlineDefinitionUpdateVerifySig |
enabled/disabled |
로 enabled설정하면 다운로드한 정의가 엔드포인트에서 확인되고, 그렇지 않으면 그 반대입니다. |
구성 확인
설정이 macOS 엔드포인트에 올바르게 적용되었는지 테스트하려면 다음 명령을 실행합니다.
mdatp health --details definitions
샘플 출력은 다음 코드 조각과 같습니다.
user@vm:~$ mdatp health --details definitions
automatic_definition_update_enabled : true [managed]
definitions_updated : Mar 14, 2024 at 12:13:17 PM
definitions_updated_minutes_ago : 2
definitions_version : "1.407.417.0"
definitions_status : "up_to_date"
definitions_update_source_uri : "https://go.microsoft.com/fwlink/?linkid=2144709"
definitions_update_fail_reason : ""
offline_definition_url_configured : "http://172.XX.XXX.XX:8000/mac/production/" [managed]
offline_definition_update : "enabled" [managed]
offline_definition_update_verify_sig : "enabled"
offline_definition_update_fallback_to_cloud : false[managed]
오프라인 보안 인텔리전스 업데이트 트리거
자동 업데이트
관리되는 json의 필드
automaticDefinitionUpdateEnabled와offline_definition_update를 로true설정하면 "오프라인 보안 인텔리전스 업데이트"가 주기적으로 자동으로 트리거됩니다.기본적으로 이 주기적 간격은 8시간입니다. 관리되는 json에서 매개 변수를
definitionUpdatesInterval설정하여 구성할 수 있습니다.수동 업데이트
Mac 엔드포인트의 미러 서버에서 서명을 다운로드하기 위해 수동으로 "오프라인 보안 인텔리전스 업데이트"를 트리거하려면 다음 명령을 실행합니다.
mdatp definitions update
업데이트 상태 확인
자동 또는 수동 메서드를 통해 "오프라인 보안 인텔리전스 업데이트"를 트리거한 후 명령을 mdatp health --details --definitions실행하여 업데이트가 성공했는지 확인합니다.
다음 필드를 확인합니다.
user@vm:~$ mdatp health --details definitions
...
definitions_status : "up_to_date"
...
definitions_update_fail_reason : ""
...
고급 문제 해결 단계
다음 명령을 사용하여 "오프라인 보안 인텔리전스 업데이트" 기능의 상태 확인합니다.
mdatp health --details definitions이 명령은 definitions_update_fail_reason 섹션에서 사용자에게 친숙한 메시지를 제공합니다.
및
offline_definition_update_verify_sig가 사용하도록 설정되어 있는지offline_definition_update확인합니다.가 과 같은지
definitions_update_source_uri확인합니다offline_definition_url_configured.-
definitions_update_source_uri는 서명을 다운로드한 원본입니다. -
offline_definition_url_configured은 서명을 다운로드해야 하는 원본으로, 관리되는 구성 파일에 언급된 원본입니다.
-
호스트에서 미러 서버에 연결할 수 있는 경우 연결 테스트를 수행하여 검사.
mdatp connectivity test다음 명령을 사용하여 수동 업데이트를 트리거해 보세요.
mdatp definitions update