###### tags: `ansible` `kali` `ovftool` # 使用 Ansible 部署 Kali Linux 最近為了測試 VMware Carbon Black ,需要配置 Kali Linux 作為滲透入侵平台。所以透過之前 **vApp選項編輯**、**OVA包裝**、**OVFTool 安裝**及 **Ansible自動化佈署** 學習到的綜合技,也將可能會運用於 LAB 測試的 Kali Linux 就按照這樣的流程編修了。 以下只做重點摘要描述,後續有時間再來另起專案說明吧。 ### vApp選項編輯 先從官網下載 Kali Linux OVA 檔進行手動佈署,開啟 vApp 選項功能。  根據要自動佈署所需的 IP 資訊進行內容編輯。  ### OVA包裝 使用 VMware OVFTools 工具將 **改裝過** 的 Kali Linux 匯出。  ### 使用 Ansible 自動佈署 使用 Ansianle 進行自動化佈署,編寫 Ansible-Playbook 佈署劇本,可先配置欲安裝的 IP 資訊於組態檔,完成安裝後的 Kali Linux 便會按照組態完成 Kali Linux 虛擬機器的 IP 配置,達到自動化佈署需求。 $ ansible-play -vvv -i <host_file> <deploy_kali_linux.yml>  執行 Ansible 程序。  從 VMware vCenter Web Client 監看佈署過程。  稍待一會,Kali Linux 就會佈署完成,當然 IP 資訊也會按照先前組態完成。  使用 Web Console 連線佈署完成的 Kali Linux,成功!  透過此種方式佈署測試用途的 Kali Linux 極為方便,只要修改佈署組態檔,就能彈性運用於測試環境。  當然,測試完畢後若要刪除該虛擬機器,也是可以透過相同方式。 以上,快速地重點分享,希望能給各位一些想法,有興趣再來討論吧。 ## [補充1] - 佈署 Windows 10 組態範本檔,佈署的VM會放置於指定的 vSphere 資料夾。 ```yaml= - name: 'Deploy Windows 10 Eval VM' vmware_deploy_ovf: hostname: "{{ labVc.ip }}" username: "{{ labVc.user }}" password: "{{ labVc.password }}" datacenter: "{{ labVc.datacenter }}" cluster: "{{ labVc.cluster }}" datastore: "{{ labWin10VM.datastore }}" disk_provisioning: "{{ labWin10VM.diskmode }}" name: "{{ labWin10VM.vmname }}" networks: "{u'VM Network':u'{{ labWin10VM.network }}'}" validate_certs: no inject_ovf_env: yes power_on: yes ovf: "{{ win_ovapath }}/{{ win_ovafile }}" folder: "/{{ labVc.datacenter }}/vm/{{ labWorkVM.parentfolder }}/{{ labWorkVM.folder }}" properties: guestinfo.hostname: "{{ labWin10VM.hostname }}" guestinfo.ipaddress: "{{ labWin10VM.ip }}" guestinfo.netmask: "{{ labWin10VM.netmask }}" guestinfo.gateway: "{{ labWin10VM.gateway }}" guestinfo.dns: "{{ labWin10VM.dns }}" guestinfo.domain: "{{ labWin10VM.domain }}" guestinfo.ad_domain: "{{ labWin10VM.adDomain }}" guestinfo.ad_username: "{{ labWin10VM.adUsername }}" guestinfo.ad_password: "{{ labWin10VM.adPassword }}" delegate_to: localhost - name: Create the First Snapshot vmware_guest_snapshot: hostname: "{{ labVc.ip }}" username: "{{ labVc.user }}" password: "{{ labVc.password }}" validate_certs: no datacenter: "{{ labVc.datacenter }}" folder: "/{{ labVc.datacenter }}/vm/{{ labWorkVM.parentfolder }}/{{ labWorkVM.folder }}" name: "{{ labWin10VM.vmname }}" state: present snapshot_name: snap1 description: "snap1 via Ansible" delegate_to: localhost ``` 並製作第一份快照。  ## [補充2] - 佈署 CentOS Linux 組態範本檔。其他佈署至指定 vSphere 資料夾及完成第一次備份,可使用以上相同的配置檔。 ```yaml= - name: "Deploy Linux VM - {{ labWorkVM.vmname }} for work VM" shell: > {{ ovftool }} '--name={{ labWorkVM.vmname }}' --acceptAllEulas --allowExtraConfig --X:enableHiddenProperties --X:injectOvfEnv --noSSLVerify --overwrite '--datastore={{ labWorkVM.datastore }}' '--diskMode={{ labWorkVM.diskmode }}' '--net:VM Network={{ labWorkVM.network }}' '--prop:guestinfo.ipaddress={{ labWorkVM.ip }}' '--prop:guestinfo.netmask={{ labWorkVM.netmask }}' '--prop:guestinfo.gateway={{ labWorkVM.gateway }}' '--prop:guestinfo.hostname={{ labWorkVM.hostname }}' '--prop:guestinfo.domain={{ labWorkVM.domain}}' '--prop:guestinfo.dns={{ labWorkVM.dns }}' '--powerOn={{ labWorkVM.poweron | string }}' '{{ ovapath }}/{{ ovafile }}' 'vi://{{ labVc.user | urlencode }}:{{ labVc.password | urlencode }}@{{ labVc.ip }}/{{ labVc.datacenter }}/host/{{ labVc.cluster }}/{{ labESX.ip }}' register: deploy_result ``` ## [補充3] 使用 Ansible 也可以安裝 CB Agent(Sensor) 在 Linux 及 Windows 終端環境。 - Ansible 的組態檔(劇本) for Linux,會完成以下相關流程 - 建立 CB Agent 上傳目錄 - 將 CB Agent for Linux Zip 解壓至指定目錄 - 取得 cbagentd 狀態 - 安裝 CB Agent 程式 ```yaml= - name: make a directory to upload CB Agent file: path: "{{ cbInstallPath }}" state: directory - name: Extract CB Endpoint Agent to remote host unarchive: src: "{{ cbAgentPath }}/{{ cbAgentFile }}" dest: "{{ cbInstallPath }}" - name: Get Service facts service_facts: - name: Install CB Agent command: ./install.sh "{{ cbAgentCode}}" args: chdir: "{{ cbInstallPath }}/" when: ansible_facts.services["cbagentd.service"] is not defined ``` - 組態檔 for Windows 10,會完成以下相關流程 - 建立 CB Agent 上傳目錄 - 將 CB Agent for Linux Zip 解壓至指定目錄 - 安裝 CB Agent 程式,這邊多加了一個程序 **套用指定 Policy** ```yaml= - name: Create directory to store CB Agent win_file: path: "{{ cbWin10InstallPath }}" state: directory - name: Copy a CB Agent MSI file from remote source win_copy: src: "{{ cbWin10AgentPath }}/{{ cbWin10AgentFile }}" dest: "{{ cbWin10InstallPath }}\\{{ cbWin10AgentFile }}" - name: Install CB Agent for Windows 10 with a specific policy win_package: path: "{{ cbWin10InstallPath }}\\{{ cbWin10AgentFile }}" arguments: "COMPANY_CODE={{ cbAgentCode }} GROUP_NAME={{ cbWin10Policy }}" log_path: "{{ cbWin10InstallPath }}\\{{ cbWin10LogFile }}" validate_certs: no state: present ``` ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up