benclerc/sophos-xgapi

用于与Sophos XG防火墙API交互的库。

1.4 2021-03-08 15:21 UTC

This package is auto-updated.

Last update: 2024-09-28 15:18:10 UTC


README

Sophos XGAPI 是用于请求 Sophos XG 防火墙的 PHP 库。这个库可以:

  • 从防火墙检索数据
  • 在防火墙上设置数据
  • 从防火墙上删除数据

您可以在 Sophos 网站上找到所有受支持实体的名称:Sophos 网站

目录

入门

  1. 获取 Composer
  2. 使用 composer 安装库:composer require benclerc/sophos-xgapi
  3. 将以下内容添加到您的应用程序主 PHP 文件中 require 'vendor/autoload.php';
  4. 使用防火墙的主机名、用户名和密码实例化 Config 类 $configFirewall = new \Sophos\Config('123.123.123.123', 'admin', 'password');
  5. 使用之前创建的 Config 对象实例化 XGAPI 对象 $firewall = new \Sophos\XGAPI($configFirewall);
  6. 开始使用库 $hosts = $firewall->get(['IPHost']);

文档

您可以在 这里 找到完整的文档。

Config 类

此 Config 类用于准备实例化和使用 XGAPI 类所需的必要配置信息。在构造函数中,您必须传递以下内容:

  1. 防火墙的主机名(FQDN)
  2. 有效的用户名
  3. 有效用户的密码

可选参数

  • CURL 超时:10000ms。使用 setTimeout() 修改。
  • CURL SSL 验证对等选项:TRUE。使用 setSSLVerifyPeer() 修改。
  • CURL SSL 验证主机选项:2。使用 setSSLVerifyHost() 修改。

示例

// Basic configuration
$configFirewall = new \Sophos\Config('123.123.123.123', 'admin', 'password');

// Configuration for very slow firewalls/long requests
$configFirewall = new \Sophos\Config('123.123.123.123', 'admin', 'password');
$configFirewall->setTimeout(20000);

// Unsecure configuration
$configFirewall = new \Sophos\Config('123.123.123.123', 'admin', 'password');
$configFirewall->setSSLVerifyPeer(FALSE)->setSSLVerifyHost(FALSE);

$firewall = new \Sophos\XGAPI($configFirewall);

XGAPI 类

get()

此方法用于从防火墙检索数据。您必须设置要检索的实体/实体,并且可以为每个实体设置一个过滤器。请注意,如果您为同一实体设置多个过滤器,它们会像“OR”而不是“AND”一样相加。请注意,并非所有属性都是可过滤的,请参阅 Sophos 文档。可用的过滤标准

  1. =
  2. 类似
  3. !=

示例

// All IPHost
$entities = ['IPHost'];
// IPHost named 'IP_TEST'
$entities = [
	'IPHost'=>[
		['Name', '=', 'IP_TEST']
	]
];
// All IPHost with 'IP_' in the name OR of type 'Network' 
$entities = [
	'IPHost'=>[
		['Name', 'like', 'IP_'],
		['HostType', '=', 'Network']
	]
];
// All IPHost and network interface named LAN
$entities = [
	'IPHost',
	'Interface'=>[
		['Name', '=', 'LAN']
	]
];

try {
	$result = $firewall->get($entites);
} catch (Exception $e) {
	echo('Handle error : '.$e->getMessage());
}

set()

此方法用于在防火墙上设置数据。您必须设置每个要添加的实体的所有必填属性。

示例

// Add 1 IPv4 hosts
$entities = [
	'IPHost'=> [
		[
			'Name'=>'IP_TEST',
			'IPFamily'=>'IPv4',
			'HostType'=>'IP',
			'HostGroupList'=>[
				'HostGroup'=>'IP-GRP_TEST'
			],
			'IPAddress'=>'10.11.12.13',
			'Subnet'=>'255.255.255.0'
		]
	]
];
// Add 2 IPv4 hosts
$entities = [
	'IPHost'=> [
		[
			'Name'=>'IP_TEST',
			'IPFamily'=>'IPv4',
			'HostType'=>'IP',
			'HostGroupList'=>[
				'HostGroup'=>'IP-GRP_TEST'
			],
			'IPAddress'=>'10.11.12.13',
			'Subnet'=>'255.255.255.0'
		],
		[
			'Name'=>'IP_TEST2',
			'IPFamily'=>'IPv4',
			'HostType'=>'IP',
			'HostGroupList'=>[
				'HostGroup'=>'IP-GRP_TEST'
			],
			'IPAddress'=>'10.11.12.14',
			'Subnet'=>'255.255.255.0'
		]
	]
];
// Add 2 IPv4 hosts and 1 QOS policy
$entities = [
	'IPHost'=> [
		[
			'Name'=>'IP_TEST',
			'IPFamily'=>'IPv4',
			'HostType'=>'IP',
			'HostGroupList'=>[
				'HostGroup'=>'IP-GRP_TEST'
			],
			'IPAddress'=>'10.11.12.13',
			'Subnet'=>'255.255.255.0'
		],
		[
			'Name'=>'IP_TEST2',
			'IPFamily'=>'IPv4',
			'HostType'=>'IP',
			'HostGroupList'=>[
				'HostGroup'=>'IP-GRP_TEST'
			],
			'IPAddress'=>'10.11.12.14',
			'Subnet'=>'255.255.255.0'
		]
	],
	'QoSPolicy'=>[
		[
		'Name'=>'QOS_TEST',
		'PolicyBasedOn'=>'FirewallRule',
		'BandwidthUsageType'=>'Shared',
		'ImplementationOn'=>'Total',
		'PolicyType'=>'Strict',
		'Priority'=>'Normal4',
		'TotalBandwidth'=>'6875'
		]
	]
];

try {
	$result = $firewall->set($entites);
} catch (Exception $e) {
	echo('Handle error : '.$e->getMessage());
}

remove()

此方法用于从防火墙上删除数据。您必须设置要删除的实体以及要删除的对象的名称,您只能根据对象的名称进行删除。

示例

// Remove the IPv4 host 'IP_TEST'
$entities = [
	'IPHost'=> [
		'IP_TEST'
	]
];
// Remove the IPv4 hosts 'IP_TEST' and 'IP_TEST2'
$entities = [
	'IPHost'=> [
		'IP_TEST',
		'IP_TEST2'
	]
];
// Remove the IPv4 hosts 'IP_TEST' and 'IP_TEST2' and QOS policy 'QOS_TEST'
$entities = [
	'IPHost'=> [
		'IP_TEST',
		'IP_TEST2'
	],
	'QoSPolicy'=> [
		'QOS_TEST'
	]
];

try {
	$result = $firewall->remove($entites);
} catch (Exception $e) {
	echo('Handle error : '.$e->getMessage());
}