2.2. 使用 Ansible 自动执行您的 IDPS 规则
要自动化您的 IDPS,请使用 ids_rule
角色创建和更改 Snort 规则。Snort 使用基于规则的语言来分析网络流量并将其与给定规则集进行比较。
以下实验环境演示了 Ansible 安全自动化集成的样子。名为"Attacker"的计算机在运行 IDPS 的目标计算机上模拟潜在的攻击模式。
请记住,现实世界的设置会包含其他供应商和技术。

2.2.1. 创建新的 IDPS 规则
使用 ids_rule
角色管理您的规则和 IDPS 的签名。例如,您可以设置一条新规则,该规则将查找与防火墙上之前的攻击一致的特定模式。
目前,ids_rule
角色只支持 Snort IDPS。
先决条件
-
您需要
root
特权才能在 Snort 服务器上进行任何更改。
流程
使用 ansible-galaxy 命令安装
ids_rule
角色:$ ansible-galaxy install ansible_security.ids_rule
新建一个名为
add_snort_rule.yml
的 playbook 文件。设置以下参数:- 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 的状态)添加到 playbook 中:
- 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
变量则表示如果该规则不存在,则应创建该规则。运行以下命令来运行 playbook:
$ ansible-navigator run add_snort_rule.ym --mode stdout
运行 playbook 后,除新创建的规则外,所有任务还将执行。您的 playbook 输出将确认您的 PLAY、TASK、RUNNING HANDLER 和 PLAY RECAP。
验证
要验证您的 IDPS 规则是否已成功创建,通过 SSH 连接到 Snort 服务器并查看 /etc/snort/rules/local.rules
文件的内容。