다음을 통해 공유


Ansible을 사용하여 Linux에 엔드포인트용 Microsoft Defender 배포

적용 대상:

엔드포인트용 Defender를 경험하고 싶으신가요? 무료 평가판을 신청하세요.

이 문서에서는 Ansible을 사용하여 Linux에서 엔드포인트용 Defender를 배포하는 방법을 설명합니다. 성공적으로 배포하려면 다음 작업을 모두 완료해야 합니다.

중요

이 문서에는 타사 도구에 대한 정보가 포함되어 있습니다. 통합 시나리오를 완료하는 데 도움이 되도록 제공되지만 Microsoft는 타사 도구에 대한 문제 해결 지원을 제공하지 않습니다.
지원을 받으려면 타사 공급업체에 문의하세요.

소개

Ansible을 사용하여 Linux 서버에 엔드포인트용 Microsoft Defender 배포하여 대규모 머신에 대한 배포 프로세스를 자동화합니다. 자동화하는 두 가지 방법은 다음과 같습니다.

  • 설치 관리자 스크립트를 사용합니다(권장). 이 메서드는 자동화 프로세스를 크게 간소화하고 엔드포인트용 Defender 에이전트를 설치하고 다른 배포판에 대해 별도로 구성할 필요 없이 몇 단계만 사용하여 디바이스를 Microsoft Defender 포털에 온보딩하는 데 도움이 됩니다.

  • 각 배포판에 대해 리포지토리를 수동으로 구성합니다. 이 방법을 사용하면 리포지토리를 수동으로 구성하고, 에이전트를 설치하고, 각 배포판에 대해 디바이스를 온보딩하여 배포 프로세스를 자동화할 수 있습니다. 이 메서드는 배포 프로세스에 대한 보다 세부적인 제어를 제공합니다.

두 메서드 모두에 적용할 수 있는 필수 구성 요소 및 시스템 요구 사항

시작하기 전에 필수 구성 요소 및 시스템 요구 사항에 대한 설명은 Linux의 엔드포인트용 defender 기본 페이지를 참조하세요.

또한 Ansible 배포의 경우 Ansible 관리 작업에 익숙하고, Ansible을 구성하고, 플레이북 및 작업을 배포하는 방법을 알고 있어야 합니다. Ansible에는 동일한 작업을 완료하는 여러 가지 방법이 있습니다. 이러한 지침에서는 패키지를 배포하는 데 도움이 되는 aptunarchive 와 같이 지원되는 Ansible 모듈의 가용성을 가정합니다. organization 다른 워크플로를 사용할 수 있습니다. 자세한 내용은 Ansible 설명서를 참조하세요.

  • Ansible은 하나 이상의 컴퓨터에 설치해야 합니다(Ansible은 이 컴퓨터를 제어 노드라고 함).

  • SSH는 제어 노드와 모든 관리 노드(엔드포인트용 Defender가 설치된 디바이스) 간에 관리자 계정에 대해 구성해야 하며 공개 키 인증으로 구성하는 것이 좋습니다.

  • 다음 소프트웨어는 모든 관리 노드에 설치해야 합니다.

    • python-apt(apt를 패키지 관리자로 사용하여 배포에 배포하는 경우)
  • 모든 관리 노드는 또는 관련 파일에서 다음 형식으로 /etc/ansible/hosts 나열되어야 합니다.

    [servers]
    host1 ansible_ssh_host=10.171.134.39
    host2 ansible_ssh_host=51.143.50.51
    
  • Ping 테스트:

    ansible -m ping all
    

두 방법 모두에 적용할 수 있는 온보딩 패키지 다운로드

Microsoft Defender 포털에서 온보딩 패키지를 다운로드합니다.

경고

엔드포인트용 Defender 설치 패키지를 다시 패키징하는 것은 지원되는 시나리오가 아닙니다. 이렇게 하면 제품의 무결성에 부정적인 영향을 미칠 수 있으며 변조 경고 및 업데이트가 적용되지 않는 것을 포함하지만 이에 국한되지 않는 부정적인 결과를 초래할 수 있습니다.

  1. Microsoft Defender 포털에서 설정>엔드포인트>디바이스 관리>온보딩으로 이동합니다.

  2. 첫 번째 드롭다운 메뉴에서 Linux Server 를 운영 체제로 선택합니다. 두 번째 드롭다운 메뉴에서 기본 Linux 구성 관리 도구를 배포 방법으로 선택합니다.

  3. 온보딩 패키지 다운로드를 선택합니다. 파일을 로 WindowsDefenderATPOnboardingPackage.zip저장합니다.

    온보딩 패키지 다운로드 옵션

  4. 명령 프롬프트에서 파일이 있는지 확인합니다. 보관 파일의 내용을 추출합니다.

    unzip WindowsDefenderATPOnboardingPackage.zip
    
    Archive:  WindowsDefenderATPOnboardingPackage.zip
    inflating: mdatp_onboard.json
    

Ansible에서 mde_installer.sh 사용하여 엔드포인트용 Defender 배포

시작하기 전에 온보딩 패키지를 다운로드하고 설치 관리자 bash 스크립트를 사용하여 Linux에서 엔드포인트용 Defender를 배포하기 위한 필수 조건을 충족해야 합니다.

설치 관리자 bash 스크립트 다운로드

Microsoft GitHub 리포지토리에서 설치 관리자 bash 스크립트 를 가져오거나 다음 명령을 사용하여 다운로드합니다.

  wget https://raw.githubusercontent.com/microsoft/mdatp-xplat/refs/heads/master/linux/installation/mde_installer.sh

Ansible YAML 파일 만들기

설치 YAML 파일을 만듭니다. GitHub에서 직접 파일을 다운로드할 수도 있습니다.

- name: Install and Onboard MDE
  hosts: servers
  tasks:
   - name: Create a directory if it does not exist
     ansible.builtin.file:
       path: /tmp/mde_install
       state: directory
       mode: '0755'

   - name: Copy Onboarding script
     ansible.builtin.copy:
       src: "{{ onboarding_json }}"
       dest: /tmp/mde_install/mdatp_onboard.json
   - name: Install MDE on host
     ansible.builtin.script: "{{ mde_installer_script }} --install --channel {{ channel | default('insiders-fast') }} --onboard /tmp/mde_install/mdatp_onboard.json"
     register: script_output
     args:
       executable: sudo

   - name: Display the installation output
     debug:
       msg: "Return code [{{ script_output.rc }}] {{ script_output.stdout }}"

   - name: Display any installation errors
     debug:
       msg: "{{ script_output.stderr }}"

참고

설치 관리자 스크립트는 채널, 실시간 보호, 버전 등과 같은 다른 매개 변수도 지원합니다. 사용 가능한 옵션 목록에서 선택하려면 다음 명령을 통해 도움말을 검사../mde_installer.sh --help

플레이북 적용

다음 명령을 사용하여 플레이북을 적용하고 요구 사항에 따라 해당 경로와 채널을 바꿉니다.

ansible-playbook -i  /etc/ansible/hosts /etc/ansible/playbooks/install_mdatp.yml --extra-vars "onboarding_json=<path to mdatp_onboard.json > mde_installer_script=<path to mde_installer.sh> channel=<channel to deploy for: insiders-fast / insiders-slow / prod> "

배포에 성공했는지 확인

  1. Microsoft Defender 포털에서 디바이스 인벤토리를 엽니다. 디바이스가 포털에 표시되는 데 5~20분이 걸릴 수 있습니다.

  2. 엔드포인트용 Defender의 성공적인 배포 및 작동을 보장하기 위해 상태, 연결, 바이러스 백신 및 EDR 검색 테스트와 같은 검사를 포함하는 다음 설치 후 검사를 수행합니다.


- name: Run post-installation basic MDE test
  hosts: myhosts
  tasks:
    - name: Check health
      ansible.builtin.command: mdatp health --field healthy
      register: health_status

    - name: MDE health test failed
      fail: msg="MDE is not healthy. health status => \n{{ health_status.stdout       }}\nMDE deployment not complete"
      when: health_status.stdout != "true"

    - name: Run connectivity test
      ansible.builtin.command: mdatp connectivity test
      register: connectivity_status

    - name: Connectivity failed
      fail: msg="Connectivity failed. Connectivity result => \n{{ connectivity_status.stdout }}\n MDE deployment not complete"
      when: connectivity_status.rc != 0

    - name: Check RTP status
      ansible.builtin.command: mdatp health --field real_time_protection_enabled
      register: rtp_status

    - name: Enable RTP
      ansible.builtin.command: mdatp config real-time-protection --value enabled
      become: yes
      become_user: root
      when: rtp_status.stdout != "true"

    - name: Pause for 5 second to enable RTP
      ansible.builtin.pause:
        seconds: 5

    - name: Download EICAR
      ansible.builtin.get_url:
        url: https://secure.eicar.org/eicar.com.txt
        dest: /tmp/eicar.com.txt

    - name: Pause for 5 second to detect eicar 
      ansible.builtin.pause:
        seconds: 5

    - name: Check for EICAR file
      stat: path=/tmp/eicar.com.txt
      register: eicar_test

    - name: EICAR test failed
      fail: msg="EICAR file not deleted. MDE deployment not complete"
      when: eicar_test.stat.exists

    - name: MDE Deployed
      debug:
      msg: "MDE succesfully deployed"


Linux 서버에서 엔드포인트용 Microsoft Defender 제거하는 방법

먼저 를 사용하는 제거 YAML 파일(예: /etc/ansible/playbooks/uninstall_mdatp.yml)을 만듭니다 mde_installer.sh. GitHub에서 직접 파일을 다운로드할 수도 있습니다.


- name: Uninstall MDE
  hosts: myhosts
  tasks:
   - name: Uninstall MDE
     ansible.builtin.script: "{{ mde_installer_script }} --remove"
     register: script_output
     args:
       executable: sudo


- name: Display the installation output
  debug:
    msg: "Return code [{{ script_output.rc }}] {{ script_output.stdout }}"

- name: Display any installation errors
  debug:
    msg: "{{ script_output.stderr }}"

다음 명령을 실행하여 플레이북을 사용하여 엔드포인트용 Defender를 제거합니다.

ansible-playbook -i  /etc/ansible/hosts /etc/ansible/playbooks/uninstall_mdatp.yml --extra-vars "mde_installer_script=<path to mde_installer.sh>"

리포지토리를 수동으로 구성하여 Ansible을 사용하여 엔드포인트용 Defender 배포

온보딩 패키지를 다운로드하고 필수 구성 요소를 충족한 후 각 Linux 배포에 대한 리포지토리를 수동으로 구성하여 엔드포인트용 Defender를 배포한 후 이 섹션의 단계를 수행합니다.

Ansible YAML 파일 만들기

플레이북 또는 작업에 기여하는 하위 작업 또는 역할 파일을 만듭니다.

  1. 온보딩 작업( onboarding_setup.yml)을 만듭니다.

    - name: Create MDATP directories
      file:
        path: /etc/opt/microsoft/mdatp/
        recurse: true
        state: directory
        mode: 0755
        owner: root
        group: root
    
    - name: Register mdatp_onboard.json
      stat:
        path: /etc/opt/microsoft/mdatp/mdatp_onboard.json
      register: mdatp_onboard
    
    - name: Extract WindowsDefenderATPOnboardingPackage.zip into /etc/opt/microsoft/mdatp
      unarchive:
        src: WindowsDefenderATPOnboardingPackage.zip
        dest: /etc/opt/microsoft/mdatp
        mode: 0600
        owner: root
        group: root
      when: not mdatp_onboard.stat.exists
    
  2. 엔드포인트용 Defender 리포지토리 및 키 를 add_apt_repo.yml추가합니다. Linux의 엔드포인트용 Defender는 다음 채널 중 하나에서 배포할 수 있습니다.

    각 채널은 Linux 소프트웨어 리포지토리에 해당합니다.

    채널의 선택은 디바이스에 제공되는 업데이트의 유형과 빈도를 결정합니다. 참가자 속도가 빠른 디바이스는 업데이트 및 새로운 기능을 수신하는 첫 번째 장치이며, 나중에 는 내부자가 느리고 마지막으로 prod가 그 뒤를 따릅니다.

    새 기능을 미리 보고 초기 피드백을 제공하려면 참가자를 빠르게 사용하거나 참가자 속도가 느리도록 엔터프라이즈의 일부 디바이스를 구성하는 것이 좋습니다.

    경고

    초기 설치 후 채널을 전환하려면 제품을 다시 설치해야 합니다. 제품 채널을 전환하려면 기존 패키지를 제거하고 새 채널을 사용하도록 디바이스를 다시 구성하고 이 문서의 단계에 따라 새 위치에서 패키지를 설치합니다.

  3. 배포 및 버전을 확인하고 에서 https://packages.microsoft.com/config/[distro]/가장 가까운 항목을 식별합니다.

  4. 다음 명령에서 [배포판][버전] 을 식별한 정보로 바꿉니다.

    참고

    Oracle Linux 및 Amazon Linux 2의 경우 [배포판] 을 "rhel"로 대체합니다. Amazon Linux 2의 경우 [버전] 을 "7"으로 대체합니다. Oracle Linux의 경우 [version] 을 Oracle Linux 버전으로 바꿉다.

    - name: Add Microsoft APT key
      apt_key:
        url: https://packages.microsoft.com/keys/microsoft.asc
        state: present
      when: ansible_os_family == "Debian"
    
    - name: Add Microsoft apt repository for MDATP
      apt_repository:
        repo: deb [arch=arm64,armhf,amd64] https://packages.microsoft.com/[distro]/[version]/prod [codename] main
        update_cache: yes
        state: present
        filename: microsoft-[channel]
      when: ansible_os_family == "Debian"
    
    - name: Add Microsoft DNF/YUM key
      rpm_key:
        state: present
        key: https://packages.microsoft.com/keys/microsoft.asc
      when: ansible_os_family == "RedHat"
    
    - name: Add  Microsoft yum repository for MDATP
      yum_repository:
        name: packages-microsoft-[channel]
        description: Microsoft Defender for Endpoint
        file: microsoft-[channel]
        baseurl: https://packages.microsoft.com/[distro]/[version]/[channel]/ 
        gpgcheck: yes
        enabled: Yes
      when: ansible_os_family == "RedHat"
    
  5. Ansible 설치 및 YAML 파일을 제거합니다.

    • apt 기반 배포의 경우 다음 YAML 파일을 사용합니다.

      cat install_mdatp.yml
      
      - hosts: servers
         tasks:
           - name: include onboarding tasks
             import_tasks:
               file: ../roles/onboarding_setup.yml
           - name: add apt repository
             import_tasks:
               file: ../roles/add_apt_repo.yml
           - name: Install MDATP
             apt:
               name: mdatp
               state: latest
               update_cache: yes
      
      cat uninstall_mdatp.yml
      
      - hosts: servers
         tasks:
           - name: Uninstall MDATP
             apt:
               name: mdatp
               state: absent
      
    • dnf 기반 배포의 경우 다음 YAML 파일을 사용합니다.

      cat install_mdatp_dnf.yml
      
      - hosts: servers
         tasks:
           - name: include onboarding tasks
             import_tasks:
               file: ../roles/onboarding_setup.yml
           - name: add apt repository
             import_tasks:
               file: ../roles/add_yum_repo.yml
           - name: Install MDATP
             dnf:
               name: mdatp
               state: latest
               enablerepo: packages-microsoft-[channel]
      
      cat uninstall_mdatp_dnf.yml
      
      - hosts: servers
         tasks:
           - name: Uninstall MDATP
             dnf:
               name: mdatp
               state: absent
      

플레이북 적용

이 단계에서는 플레이북을 적용합니다. 또는 관련 디렉터리에서 /etc/ansible/playbooks/ 작업 파일을 실행합니다.

  1. 설치:

    ansible-playbook /etc/ansible/playbooks/install_mdatp.yml -i /etc/ansible/hosts
    

    중요

    제품이 처음으로 시작되면 최신 맬웨어 방지 정의를 다운로드합니다. 인터넷 연결에 따라 최대 몇 분 정도 걸릴 수 있습니다.

  2. 유효성 검사/구성:

    ansible -m shell -a 'mdatp connectivity test' all
    
    ansible -m shell -a 'mdatp health' all
    
  3. 제거:

    ansible-playbook /etc/ansible/playbooks/uninstall_mdatp.yml -i /etc/ansible/hosts
    

설치 문제 해결

자체 문제 해결을 위해 다음 단계를 수행합니다.

  1. 설치 오류가 발생할 때 자동으로 생성되는 로그를 찾는 방법에 대한 자세한 내용은 로그 설치 문제를 참조하세요.

  2. 일반적인 설치 문제에 대한 자세한 내용은 설치 문제를 참조하세요.

  3. 디바이스의 상태가 인 false경우 엔드포인트용 Defender 에이전트 상태 문제를 참조하세요.

  4. 제품 성능 문제는 성능 문제 해결을 참조하세요.

  5. 프록시 및 연결 문제는 클라우드 연결 문제 해결을 참조하세요.

  6. Microsoft에서 지원을 받으려면 지원 티켓을 열고 클라이언트 분석기를 사용하여 만든 로그 파일을 제공합니다.

Linux에서 Microsoft Defender 대한 정책을 구성하는 방법

다음 방법을 사용하여 엔드포인트에서 바이러스 백신 또는 EDR 설정을 구성할 수 있습니다.

운영 체제 업그레이드

운영 체제를 새 주 버전으로 업그레이드할 때 먼저 Linux에서 엔드포인트용 Defender를 제거하고, 업그레이드를 설치하고, 마지막으로 디바이스의 Linux에서 엔드포인트용 Defender를 다시 구성해야 합니다.

참고 항목

더 자세히 알아보고 싶으신가요? 기술 커뮤니티: 엔드포인트용 Microsoft Defender Tech Community의 Microsoft 보안 커뮤니티와 Engage.