使用【Ansible】自动化设置允许IP地址到FortiGate

我之前一直手动设置FortiGate的IP地址权限,现在想要自动化这个过程。所以,我尝试使用Ansible来进行设置,并将步骤总结如下。

章节内容

    • 1. はじめに

 

    • 2. インベントリを作成する

3. プレイブックを作成する

3-1. ipアドレスを設定する
3-2. ipアドレスグループを設定する
3-3. ポリシーを設定する

4. プレイブックを実行する
5. 実行結果を確認する
補足. 2台の機器に実行してみた

首先

本次将使用Ansible执行以下三个任务。

① 创建允许连接的IP地址。
② 将创建的IP地址添加到IP地址组中。
③ 创建策略并启用IP地址组。

我已经按照以下方式设置了目录结构。

根目录/
├ 主页/
├ 用户/
├ 弗里盖特/
├ 阿塞布尔/
├ 存货/
│   └ hosts.yml
├ 剧本/
└ config.yml

如果没有安装FortiOS的模块,请执行以下安装命令。

ansible-galaxy collection install fortinet.fortios:任意のバージョン

请查阅官方文件以获取最新版本。

创建库存

首先,在 inventory/hosts.yml 文件中记录FortiGate的连接信息。主机名可以自由选择。根据环境设置适合的FortiGate信息。

---
all:
  hosts:
    ホスト名:
      ansible_host: FortiGateのIPアドレス
      ansible_user: FortiGateのログインユーザ
      ansible_password: FortiGateのログインパスワード
      ansible_network_os: fortinet.fortios.fortios

3. 制作游戏计划书。

接下来,我们将在playbook/config.yml中记录Ansible的连接信息。
请将hosts:设置为hosts.yml中所述的主机名。

---
- hosts: ホスト名
  connection: httpapi
  gather_facts: no
  vars:
   vdom: "root"
   ansible_httpapi_use_ssl: yes
   ansible_httpapi_validate_certs: no
   ansible_httpapi_port: 443

设置IP地址

我们将在这里开始描述要在Ansible中执行的任务。
3. 在设置内容的基础上,将要允许的“IP地址信息”写入config.yml。

請您在此次設定中參照FortiGate網頁上的「創建地址」畫面中的項目設定。請同時確認現有的設定以防萬一,並在之後的任務中也請您同樣進行。

tasks:
- name: Configure_IPv4_address.
  fortios_firewall_address:
    vdom: "root"
    state: "present"
    firewall_address:
        name: "作成するIPアドレスの名前"
        type: "ipmask"
        associated_interface: "設定するインターフェース"
        subnet: "作成するIPアドレス/サブネットマスク"
        visibility: "enable"
        allow_routing: "disable"
        comment: "任意で設定(Allow IPv4 address など)"

请参阅官方文件以获取更详细的信息。

设置IP地址组3-2

将使用第3-1节中创建的IP地址添加到”IP地址组”中。
在”member:”中写下要添加的IP地址。
如果使用”name:”设置的IP地址组不存在,则会创建一个新的IP地址组。

- name: Configure_IPv4_address_group.
  fortios_firewall_addrgrp:
    vdom: "root"
    state: "present"
    firewall_addrgrp:
        name: "設定するIPアドレスグループの名前"
        exclude: "disable"
        visibility: "enable"
        allow_routing: "disable"
        comment: "任意で設定(Allow IPv4 address group など)"
        member:
            - name: "3-1.で作成したIPアドレスの名前"
            - name: "3-1.で作成したIPアドレスの名前"
            - name: "3-1.で作成したIPアドレスの名前"

请参考 官方文件 获取详细信息。

设定政策

将使用3-2创建的IP地址组添加到“策略”中。
如果将policyid设置为“现有的ID”,则该策略将被更改;如果设置为“不存在的ID”,则将创建新策略。
如果将action设置为“接受”,则允许连接到分配的IP地址组。
如果将status设置为“启用”,则该策略将被启用。

- name: Configure_IPv4_policy.
  fortios_firewall_policy:
      vdom:  "root"
      state: "present"
      firewall_policy:
        policyid: ""
        name: "設定するポリシーの名前"
        srcintf:
            - name: "着信インターフェース"
        dstintf:
            - name: "発信インターフェース"
        srcaddr:
            - name: "送信元のIPアドレスグループの名前"
        dstaddr:
            - name: "宛先のIPアドレスグループの名前"
        schedule: "設定するスケジュール"
        service:
            - name: "設定するサービスの名前 または サービスグループの名前"
        action: "accept"
        inspection_mode: "flow"
        nat: "disable"
        profile_protocol_options: "設定するプロトコルオプションの名前"
        av_profile: "設定するアンチウイルスの名前"
        webfilter_profile: "設定するWebフィルタの名前"
        dnsfilter_profile: "設定するDNSフィルタの名前"
        waf_profile: "設定するアプリケーションコントロールの名前"
        ips_voip_filter: "設定するIPSの名前"
        ssl_ssh_profile: "設定するSSLインスペクションの名前"
        logtraffic: "all"
        comments: "任意で設定(Allow IPv4 policy など)"
        status: "enable"

请参考官方文档以获取详细信息。
选项设置的描述是可选的。(例如个人资料等)

执行播放手册

当config.yml文件创建完成后,执行Ansible的操作。

执行的命令如下所示。

# 「/ansible」ディレクトリに移動する 
1. cd /home/user/fortigate/ansible

# 実行するファイルの構文をチェックする
2. ansible-playbook -i inventory/hosts.yml playbook/config.yml --syntax-check

# 実行するタスクの内容を表示する
3. ansible-playbook -i inventory/hosts.yml playbook/config.yml --list-tasks

# ホストに対して設定を検証反映させてみて、現在実行可能な状態かをチェックする
4. ansible-playbook -i inventory/hosts.yml playbook/config.yml --check

# ホストに対して設定を実行する
5. ansible-playbook -i inventory/hosts.yml playbook/config.yml

查看执行结果

请访问FortiGate的网页,并从屏幕侧边栏中选择“策略和对象 > IPv4策略”。
如果创建的策略在列表中存在,那么说明操作成功。

在两台设备上进行了补充测试。

在验证过程中,我们对以下两台设备进行了操作。
操作系统的版本都是符合Ansible推荐的6.0.0以上。

機種名OS通常時CPU実行時CPUFortiGate-60Dv6.0.12 build04190%80%~100%FortiGate-60Fv6.2.5 build1142 (GA)0%40%~70%

结果是,虽然可以自动化每个设置,但在执行设置时CPU使用率存在差异。
原因似乎是60F型号的机器有“CPU:4核”,而60D型号的机器只有“CPU:1核”。
在将设置交给Ansible处理时,今后还需要注意目标机型的CPU数量。

广告
将在 10 秒后关闭
bannerAds