benclerc / sophos-xgapi
用于与Sophos XG防火墙API交互的库。
1.4
2021-03-08 15:21 UTC
Requires
- php: >=7.4.0
README
Sophos XGAPI 是用于请求 Sophos XG 防火墙的 PHP 库。这个库可以:
- 从防火墙检索数据
- 在防火墙上设置数据
- 从防火墙上删除数据
您可以在 Sophos 网站上找到所有受支持实体的名称:Sophos 网站。
目录
入门
- 获取 Composer。
- 使用 composer 安装库:
composer require benclerc/sophos-xgapi
。 - 将以下内容添加到您的应用程序主 PHP 文件中
require 'vendor/autoload.php';
。 - 使用防火墙的主机名、用户名和密码实例化 Config 类
$configFirewall = new \Sophos\Config('123.123.123.123', 'admin', 'password');
。 - 使用之前创建的 Config 对象实例化 XGAPI 对象
$firewall = new \Sophos\XGAPI($configFirewall);
。 - 开始使用库
$hosts = $firewall->get(['IPHost']);
。
文档
您可以在 这里 找到完整的文档。
Config 类
此 Config 类用于准备实例化和使用 XGAPI 类所需的必要配置信息。在构造函数中,您必须传递以下内容:
- 防火墙的主机名(FQDN)
- 有效的用户名
- 有效用户的密码
可选参数
- 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 文档。可用的过滤标准
- =
- 类似
- !=
示例
// 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()); }