首页
/ Firewall 模块技术文档

Firewall 模块技术文档

2024-12-26 09:54:15作者:贡沫苏Truman

1. 安装指南

1.1 安装前提

在安装 firewall 模块之前,确保你已经安装了 Puppet,并且启用了 pluginsyncpluginsync 是 Puppet 的一个功能,用于同步模块中的插件到客户端节点。

1.2 安装步骤

使用 Puppet 模块工具安装 firewall 模块:

puppet module install puppetlabs-firewall

1.3 升级模块

如果你已经安装了 firewall 模块,可以通过以下命令升级到最新版本:

puppet module upgrade puppetlabs-firewall

2. 项目的使用说明

2.1 基本概念

firewall 模块允许你通过 Puppet DSL 管理防火墙规则。它支持 iptablesip6tables,并引入了 firewallchain 资源来管理防火墙链。

2.2 创建 prepost

为了确保在应用自定义规则之前和之后执行一些默认规则,建议创建 my_fw::premy_fw::post 类。

2.2.1 my_fw::pre

my_fw::pre 类用于定义在自定义规则之前执行的默认规则。以下是一个示例:

class my_fw::pre {
  Firewall {
    require => undef,
  }

  firewall { '000 accept all icmp':
    proto => 'icmp',
    jump  => 'accept',
  }
  -> firewall { '001 accept all to lo interface':
    proto   => 'all',
    iniface => 'lo',
    jump    => 'accept',
  }
  -> firewall { '002 reject local traffic not on loopback interface':
    iniface     => '! lo',
    proto       => 'all',
    destination => '127.0.0.1/8',
    jump        => 'reject',
  }
  -> firewall { '003 accept related established rules':
    proto  => 'all',
    state  => ['RELATED', 'ESTABLISHED'],
    jump   => 'accept',
  }
}

2.2.2 my_fw::post

my_fw::post 类用于定义在自定义规则之后执行的默认规则。以下是一个示例:

class my_fw::post {
  firewall { '999 drop all':
    proto  => 'all',
    jump   => 'drop',
    before => undef,
  }
}

2.3 创建防火墙规则

你可以通过 Puppet 定义具体的防火墙规则。以下是一个示例:

Firewall {
  before  => Class['my_fw::post'],
  require => Class['my_fw::pre'],
}

class { ['my_fw::pre', 'my_fw::post']: }

class { 'firewall': }

resources { 'firewall':
  purge => true,
}

3. 项目 API 使用文档

3.1 firewall 资源

firewall 资源用于定义具体的防火墙规则。以下是一些常用的参数:

  • proto: 协议类型,如 tcpudpicmp 等。
  • jump: 动作,如 acceptdropreject 等。
  • dport: 目标端口。
  • iniface: 输入接口。
  • state: 连接状态,如 RELATEDESTABLISHED

示例:

firewall { '006 Allow inbound SSH (v6)':
  dport    => 22,
  proto    => 'tcp',
  jump     => 'accept',
  protocol => 'ip6tables',
}

3.2 firewallchain 资源

firewallchain 资源用于管理防火墙链。以下是一些常用的参数:

  • ensure: 链的状态,如 presentabsent
  • policy: 默认策略,如 acceptdrop

示例:

firewallchain { 'INPUT:filter:IPv4':
  ensure => present,
  policy => drop,
  before => undef,
}

4. 项目安装方式

4.1 通过 Puppet Forge 安装

你可以通过 Puppet Forge 直接安装 firewall 模块:

puppet module install puppetlabs-firewall

4.2 手动安装

你也可以从 GitHub 下载模块并手动安装:

  1. 克隆仓库:
git clone https://github.com/puppetlabs/puppetlabs-firewall.git
  1. 将模块复制到 Puppet 的模块目录:
cp -r puppetlabs-firewall /etc/puppetlabs/code/environments/production/modules/firewall

4.3 升级模块

如果你已经安装了 firewall 模块,可以通过以下命令升级:

puppet module upgrade puppetlabs-firewall

通过本文档,你应该能够顺利安装、配置和使用 firewall 模块来管理你的防火墙规则。如果你有任何问题,请参考项目的 GitHub Wiki 或 Puppet 官方文档。

热门项目推荐
相关项目推荐

项目优选

收起
Python-100-DaysPython-100-Days
Python - 100天从新手到大师
Python
373
72
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
276
72
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
200
47
xzs-mysqlxzs-mysql
学之思开源考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序,能覆盖到pc机和手机等设备。 支持多种部署方式:集成部署、前后端分离部署、docker部署
HTML
5
1
LangChatLangChat
LangChat: Java LLMs/AI Project, Supports Multi AI Providers( Gitee AI/ 智谱清言 / 阿里通义 / 百度千帆 / DeepSeek / 抖音豆包 / 零一万物 / 讯飞星火 / OpenAI / Gemini / Ollama / Azure / Claude 等大模型), Java生态下AI大模型产品解决方案,快速构建企业级AI知识库、AI机器人应用
Java
10
3
gin-vue-admingin-vue-admin
🚀Vite+Vue3+Gin的开发基础平台,支持TS和JS混用。它集成了JWT鉴权、权限管理、动态路由、显隐可控组件、分页封装、多点登录拦截、资源权限、上传下载、代码生成器【可AI辅助】、表单生成器和可配置的导入导出等开发必备功能。
Go
16
3
source-vuesource-vue
🔥 一直想做一款追求极致用户体验的快速开发平台,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间对若依框架进行扩展写了一套快速开发系统。如此有了开源字节快速开发平台。该平台基于 Spring Boot + MyBatis + Vue & Element ,包含微信小程序 & Uniapp, Web 报表、可视化大屏、三方登录、支付、短信、邮件、OSS...
Java
24
2
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
898
0
madongmadong
基于Webman的权限管理系统
PHP
4
0
cool-admin-javacool-admin-java
🔥 cool-admin(java版)一个很酷的后台权限管理框架,Ai编码、流程编排、模块化、插件化、CRUD极速开发,永久开源免费,基于springboot3、typescript、vue3、vite、element-ui等构建
Java
18
2