trombik.argus
trombik.argus
用于 argus 的 ansible 角色。
针对所有用户的说明
该角色假设捕获的 ra 文件的日志目录路径为 /var/log/argus,并且它的所有者是 argus 用户。
针对所有用户的说明(不包括 OpenBSD 用户)
该角色创建了 argus 组和 argus 用户。
针对 Ubuntu 和 CentOS 用户的说明
该角色将修改 argus(8) 的 systemd 单元文件,以便 systemd 能够读取 /etc/default/argus 或 /etc/sysconfig/argus。
需求
角色变量
| 变量 | 描述 | 默认值 |
|---|---|---|
argus_package |
argus 的包名 |
{{ __argus_package }} |
argus_service |
argus 的服务名 |
{{ __argus_service }} |
argus_extra_packages |
要安装的额外包列表 | [] |
argus_user |
argus 的用户名 |
{{ __argus_user }} |
argus_group |
argus 的组名 |
{{ __argus_group }} |
argus_extra_groups |
argus_user 的额外组列表 |
[] |
argus_log_dir |
日志目录路径 | /var/log/argus |
argus_config_dir |
配置目录路径 | {{ __argus_config_dir }} |
argus_config_file |
argus.conf 的路径 |
{{ argus_config_dir }}/argus.conf |
argus_config |
argus.conf 的内容 |
"" |
argus_flags |
见下文 | "" |
argus_flags
该变量用于覆盖启动脚本的默认值。在 Debian 系列中,值是 /etc/default/argus 的内容。在 RedHat 系列中,它是 /etc/sysconfig/argus 的内容。在 FreeBSD 中,它是 /etc/rc.conf.d/argus 的内容。在 OpenBSD 中,值被传递给 rcctl set argus。
Debian
| 变量 | 默认值 |
|---|---|
__argus_service |
argus |
__argus_package |
argus-server |
__argus_config_dir |
/etc |
__argus_user |
argus |
__argus_group |
argus |
__argus_log_dir |
/var/log/argus |
FreeBSD
| 变量 | 默认值 |
|---|---|
__argus_service |
argus |
__argus_package |
net-mgmt/argus3 |
__argus_config_dir |
/usr/local/etc |
__argus_user |
argus |
__argus_group |
argus |
__argus_log_dir |
/var/log/argus |
OpenBSD
| 变量 | 默认值 |
|---|---|
__argus_service |
argus |
__argus_package |
argus |
__argus_config_dir |
/etc |
__argus_user |
_argus |
__argus_group |
_argus |
__argus_log_dir |
/var/log/argus |
RedHat
| 变量 | 默认值 |
|---|---|
__argus_service |
argus |
__argus_package |
argus |
__argus_config_dir |
/etc |
__argus_user |
argus |
__argus_group |
argus |
__argus_log_dir |
/var/log/argus |
依赖
示例剧本
---
- hosts: localhost
roles:
- role: trombik.redhat_repo
when:
- ansible_os_family == 'RedHat'
- name: trombik.argus_clients
- name: ansible-role-argus
pre_tasks:
- name: 转储所有主机变量
debug:
var: hostvars[inventory_hostname]
post_tasks:
- name: 列出所有服务 (systemd)
shell: "echo; systemctl list-units --type service"
changed_when: false
when:
- ansible_virtualization_type != 'docker'
- ansible_os_family == 'RedHat' or ansible_os_family == 'Debian'
- name: 列出所有服务 (FreeBSD 服务)
shell: "echo; service -l"
changed_when: false
when:
- ansible_os_family == 'FreeBSD'
vars:
os_argus_flags:
OpenBSD: "-F {{ argus_config_file }}"
FreeBSD: |
argus_flags='-F {{ argus_config_file }}'
argus_pidfile='/var/run/argus.{{ ansible_default_ipv4.device | default(omit) }}.*.pid'
Debian: |
ARGUS_OPTIONS="-F {{ argus_config_file }}"
RedHat: |
ARGUS_OPTIONS="-F {{ argus_config_file }}"
argus_flags: "{{ os_argus_flags[ansible_os_family] }}"
argus_extra_groups:
- bin
os_interface:
FreeBSD: em0
OpenBSD: em0
Debian: eth0
RedHat: eth0
argus_config: |
ARGUS_FLOW_TYPE="Bidirectional"
ARGUS_FLOW_KEY="CLASSIC_5_TUPLE"
{% if ansible_os_family != 'Debian' and ansible_os_family != 'RedHat' %}
# XXX 单元文件期望命令不分叉
ARGUS_DAEMON=yes
{% endif %}
ARGUS_ACCESS_PORT=561
ARGUS_BIND_IP="127.0.0.1"
ARGUS_INTERFACE={{ os_interface[ansible_os_family] }}
ARGUS_GO_PROMISCUOUS=yes
ARGUS_SETUSER_ID={{ argus_user }}
ARGUS_SETGROUP_ID={{ argus_group }}
ARGUS_OUTPUT_FILE={{ argus_log_dir}}/argus.ra
ARGUS_FLOW_STATUS_INTERVAL=60
ARGUS_MAR_STATUS_INTERVAL=300
ARGUS_DEBUG_LEVEL=1
ARGUS_FILTER="ip"
ARGUS_SET_PID=yes
ARGUS_PID_PATH=/var/run
redhat_repo_extra_packages:
- epel-release
redhat_repo:
epel:
mirrorlist: "http://mirrors.fedoraproject.org/mirrorlist?repo=epel-{{ ansible_distribution_major_version }}&arch={{ ansible_architecture }}"
gpgcheck: yes
enabled: yes
许可
版权 (c) 2016 Tomoyuki Sakurai <y@trombik.org>
许可使用、复制、修改和分发本软件的权利,且无论收费与否,均在此授予,只要上述版权声明和许可声明出现在所有复制品中。
本软件是“按原样”提供的,作者对此软件不做任何保证,包括所有隐含的适销性和适用性保证。在任何情况下,作者都不对因使用、数据丢失或利润损失而造成的任何特殊、直接、间接或后果性损害负责,无论是基于合同、过失或其他侵权行为,或因使用或性能造成的损害。
作者信息
Tomoyuki Sakurai y@trombik.org
