编写inventory.ini
[windows]
WINSRV2022-01 ansible_host=受控主机IP ansible_user='用户名' ansible_password='密码'
[windows:vars]
ansible_port=5985
ansible_connection=winrm
ansible_winrm_transport=basic
Tips:winrm权限仅在测试环境下使用basic 请不要在生产环境使用,避免安全风险!
编写check_firewall.yml
---
- name: 检查 Windows Server 2022 防火墙设置
hosts: windows
gather_facts: no
tasks:
- name: 获取域网络防火墙状态
win_shell: Get-NetFirewallProfile -Profile Domain | Select-Object -Property Enabled
register: domain_firewall_status
- name: 检查域网络防火墙是否启用
debug:
msg: "域网络防火墙已启用。"
when: "'True' in domain_firewall_status.stdout"
- name: 检查域网络防火墙是否禁用
debug:
msg: "域网络防火墙已禁用。请出于安全原因启用防火墙。"
when: "'False' in domain_firewall_status.stdout"
- name: 获取专用网络防火墙状态
win_shell: Get-NetFirewallProfile -Profile Private | Select-Object -Property Enabled
register: private_firewall_status
- name: 检查专用网络防火墙是否启用
debug:
msg: "专用网络防火墙已启用。"
when: "'True' in private_firewall_status.stdout"
- name: 检查专用网络防火墙是否禁用
debug:
msg: "专用网络防火墙已禁用。请出于安全原因启用防火墙。"
when: "'False' in private_firewall_status.stdout"
- name: 获取公用网络防火墙状态
win_shell: Get-NetFirewallProfile -Profile Public | Select-Object -Property Enabled
register: public_firewall_status
- name: 检查公用网络防火墙是否启用
debug:
msg: "公用网络防火墙已启用。"
when: "'True' in public_firewall_status.stdout"
- name: 检查公用网络防火墙是否禁用
debug:
msg: "公用网络防火墙已禁用。请出于安全原因启用防火墙。"
when: "'False' in public_firewall_status.stdout"
check_firewall.yml 内容分享
这个 check_firewall.yml
实现了对 Windows 防火墙状态的全面检查,确保域、专用和公用网络的防火墙配置都能被逐一确认。具体功能包括:
- 逐个网络配置检查防火墙状态,确保全面覆盖所有可能的网络类型。
- 根据防火墙状态分别显示消息,清楚地告诉用户哪些网络类型下的防火墙是启用的,哪些是禁用的。
- 更好的安全建议:如果防火墙未启用,脚本会提示用户启用防火墙来提高系统的安全性。
以下是YML内容各部分的讲解:
脚本结构
- 顶层结构:
hosts: windows
: 指定目标主机组为windows
,这些主机应该是 Windows 服务器。gather_facts: no
: 不收集默认的 Ansible facts,因为这里只需要执行防火墙状态的检查任务。
- 任务部分: 脚本包括多个任务,每个任务用于获取防火墙配置状态,并根据防火墙的状态进行条件输出。 获取防火墙状态
- 使用
win_shell
执行 PowerShell 命令Get-NetFirewallProfile -Profile <网络类型> | Select-Object -Property Enabled
来获取防火墙状态,分别针对三种网络类型(域、专用、公用)。结果会被存储在不同的变量中(如domain_firewall_status
、private_firewall_status
、public_firewall_status
)。 register
用于将命令的输出结果存储在指定的变量中,以便后续任务使用。
- 分别为每种网络配置(域、专用、公用)检查防火墙的启用状态。
- 使用
debug
模块显示相应的信息,如果防火墙状态为 “True”,则输出“<网络类型>防火墙已启用。”
- 如果防火墙状态为 “False”,则输出警告消息,提示防火墙已禁用,并建议启用防火墙以增强安全性。
- 使用
执行命令
ansible-playbook -i inventory.ini check_firewall.yaml
执行结果
此文章为原创文章,作者:胖哥叨逼叨,如若转载,请与我联系并注明出处:https://www.pangshare.com/3118.htm