Sophos XGAPI เป็นไลบรารี PHP สำหรับการร้องขอไฟร์วอลล์ Sophos XG ห้องสมุดนี้สามารถ:
คุณสามารถค้นหาชื่อหน่วยงานที่รองรับทั้งหมดได้บนเว็บไซต์ 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 ใน Constructor คุณต้องผ่าน :
พารามิเตอร์เสริม:
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 );
วิธีการนี้ใช้เพื่อดึงข้อมูลจากไฟร์วอลล์ คุณต้องกำหนดเอนทิตี/เอนทิตีที่คุณต้องการดึงข้อมูล และคุณสามารถตั้งค่าตัวกรองสำหรับแต่ละรายการได้ โปรดระวัง หากคุณตั้งค่าตัวกรองหลายรายการสำหรับเอนทิตีเดียวกัน ตัวกรองจะรวมกันเป็น '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 ());
}
วิธีการนี้ใช้ในการตั้งค่าข้อมูลบนไฟร์วอลล์ คุณต้องตั้งค่าแอตทริบิวต์บังคับทั้งหมดสำหรับแต่ละเอนทิตีที่คุณต้องการเพิ่ม
ตัวอย่าง :
// 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 ());
}