Sophos XGAPI
1.0.0
Sophos XGAPIは、Sophos XG ファイアウォールをリクエストするための PHP ライブラリです。このライブラリでは次のことができます。
サポートされているすべてのエンティティの名前は、ソフォスの Web サイトで確認できます。
composer require benclerc/sophos-xgapi
使用してライブラリをインストールします。require 'vendor/autoload.php';
。$configFirewall = new SophosConfig('123.123.123.123', 'admin', 'password');
。$firewall = new SophosXGAPI($configFirewall);
をインスタンス化します。 。$hosts = $firewall->get(['IPHost']);
。 完全なドキュメントはここで見つけることができます。
この Config クラスは、XGAPI クラスをインスタンス化して使用するために必須の構成情報を準備するために使用されます。コンストラクターでは、次のものを渡す必要があります。
オプションのパラメータ:
setTimeout()
を使用します。setSSLVerifyPeer()
を使用します。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 );
このメソッドは、ファイアウォールからデータを取得するために使用されます。どのエンティティを取得するかを設定する必要があり、それぞれにフィルタを設定できます。同じエンティティに対して複数のフィルターを設定すると、それらは「AND」ではなく「OR」のように合計されることに注意してください。すべての属性がフィルタリング可能であるわけではないことに注意してください。ソフォスのドキュメントを参照してください。フィルタリングに使用できる基準:
例:
// 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 ());
}
このメソッドは、ファイアウォールにデータを設定するために使用されます。追加するエンティティごとにすべての必須属性を設定する必要があります。
例:
// 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 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 ());
}