실습 Ansible - Log4J 취약점 확인
페이지 정보
본문
1. 개요
이 게시글은 Log4Shell(CVE-2021-44228)에 취약한 JAR 파일의 파일 시스템을 스캔하는 매우 간단한 Ansible 플레이북이며
Linux 시스템의 모든 디렉토리에 존재하는 JAR 파일을 검사하여 취약한 JAR 파일을 추출해내는 플레이북입니다.
2. Playbook(task playbook)
# 관리자 권한으로 실행해야 하므로 모든 작업에 Become 처리
- name: Find Jar File
block:
## "/" 디렉토리에 존재하는 모든 디렉토리의 정보를 추출
- name: Find the directory to perform the search in the top-level path
ansible.builtin.find:
file_type: directory
paths:
- "/"
recurse: no
register: root_dirs
## 검색된 디렉토리와 안에 존재하는 모든 디렉토리에서 모든 Jar 파일을 추출
- name: Find .jar files
ansible.builtin.find:
file_type: file
paths: "{{ root_dirs.files | map(attribute='path') }}"
recurse: yes
patterns:
- "*.jar"
register: jar_files
## JAR 파일 안에 "JndiLookup.class" 문자열 검색
- name: Search JndiLookup.class in .jar files
ansible.builtin.shell:
cmd: "grep -i {{ responsible_class }} {{ jar_files.files | map(attribute='path') | join(' ') }}"
register: grep_result
failed_when: grep_result.rc == 2
when: jar_files.matched > 0
## 검색 된 Jar 파일을 화면에 표시
- name: Print .jar Files
debug: var=grep_result.stdout_lines
become: yes
## 검색 된 Jar 파일을 CSV 파일 형식으로 추출
- name: Write CSV line with affected values
ansible.builtin.lineinfile:
path: "{{ local_file }}"
line: "{{ inventory_hostname }},{{ item | regex_search('/.*\\.jar') }}"
insertafter: EOF
loop: "{{ grep_result.stdout_lines }}"
when: grep_result.rc is defined and grep_result.rc == 0
delegate_to: localhost
관련링크
- 이전글Ansible - 사용 가능한 CLI 명령 21.12.26
- 다음글Ansible - Jar 파일 추출 21.12.23
댓글목록
최고관리자님의 댓글
최고관리자 작성일좋은글 감사합니다. ^^