2.2. Ansible을 사용하여 IDPS 규칙 자동화
IDPS를 자동화하려면 ids_rule
역할을 사용하여 스노트 규칙을 생성하고 변경합니다. snort는 네트워크 트래픽을 분석하고 지정된 규칙 집합과 비교하는 규칙 기반 언어를 사용합니다.
다음 랩 환경에서는 Ansible 보안 자동화 통합이 어떤지 보여줍니다. "Attacker"라고 하는 머신은 IDPS가 실행 중인 대상 시스템에서 잠재적인 공격 패턴을 시뮬레이션합니다.
실제 설정은 다른 공급업체와 기술을 사용할 수 있다는 점에 유의하십시오.
2.2.1. 새 IDPS 규칙 생성
ids_rule
역할을 사용하여 IDPS에 대한 규칙과 서명을 관리합니다. 예를 들어 방화벽의 이전 공격과 일치하는 특정 패턴을 찾는 새 규칙을 설정할 수 있습니다.
현재 ids_rule
역할은 Snort IDPS만 지원합니다.
사전 요구 사항
-
Snort 서버를 변경하려면
root
권한이 필요합니다.
절차
ansible-gal Galaxyy 명령을 사용하여
ids_rule
역할을 설치합니다.$ ansible-galaxy install ansible_security.ids_rule
add_snort_rule.yml
이라는 새 플레이북 파일을 생성합니다. 다음 매개변수를 설정합니다.- name: Add Snort rule hosts: snort
become
플래그를 추가하여 Ansible에서 권한 에스컬레이션을 처리하도록 합니다.- name: Add Snort rule hosts: snort become: true
다음 변수를 추가하여 IDPS 공급자의 이름을 지정합니다.
- name: Add Snort rule hosts: snort become: true vars: ids_provider: snort
다음 작업 및 작업 관련 변수(예: 규칙, Snort 규칙 파일 및 규칙 상태 - present 또는 absent)를 플레이북에 추가합니다.
- name: Add Snort rule hosts: snort become: true vars: ids_provider: snort tasks: - name: Add snort password attack rule include_role: name: "ansible_security.ids_rule" vars: ids_rule: 'alert tcp any any -> any any (msg:"Attempted /etc/passwd Attack"; uricontent:"/etc/passwd"; classtype:attempted-user; sid:99000004; priority:1; rev:1;)' ids_rules_file: '/etc/snort/rules/local.rules' ids_rule_state: present
작업은 대상 머신을 변경하는 구성 요소입니다. 이러한 작업을 정의하는 역할을 사용하므로
include_role
은 필요한 유일한 항목입니다.ids_rules_file
변수는local.rules
파일의 정의된 위치를 지정하고ids_rule_state
변수는 존재하지 않는 경우 규칙을 생성해야 함을 나타냅니다.다음 명령을 실행하여 플레이북을 실행합니다.
$ ansible-navigator run add_snort_rule.ym --mode stdout
플레이북을 실행하면 새로 생성된 규칙 외에도 모든 작업이 실행됩니다. 플레이북 출력은 PLAY, TASK, RUNNING HANDLER 및 PLAY RECAP을 확인합니다.
검증
IDPS 규칙이 성공적으로 생성되었는지 확인하려면 Snort 서버에 SSH로 연결하고 /etc/snort/rules/local.rules
파일의 내용을 확인합니다.