Sophos XGAPI
1.0.0
Sophos XGAPI 는 Sophos XG 방화벽을 요청하기 위한 PHP 라이브러리입니다. 이 라이브러리는 다음을 수행할 수 있습니다.
Sophos 웹사이트에서 지원되는 모든 엔터티의 이름을 찾을 수 있습니다.
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'처럼 합산되므로 주의하세요. 모든 속성을 필터링할 수는 없다는 점에 주의하세요. 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 ());
}
이 방법은 방화벽에 데이터를 설정하는 데 사용됩니다. 추가하려는 각 엔터티에 대해 모든 필수 속성을 설정해야 합니다.
예:
// 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 ());
}