방화벽 시작하기

SoftLayer는 몇 가지 API 구성요소를 공유하는 방화벽 서비스의 두 가지 요소를 제공합니다. 단일 디바이스 방화벽 솔루션은 SoftLayer_Network_Component_Firewall 서비스를 통해 상호작용하고 VLAN 방화벽은 SoftLayer_Network_Firewall_AccessControlList 서비스를 통해 액세스할 수 있습니다.

단일 디바이스 방화벽

목록 표시

SoftLayer_Network_Component_Firewall 오브젝트가 디바이스에 연결되어 있으므로 보호 기능을 제공합니다. 전용 서버를 보호하는 모든 방화벽 목록을 검색하는 가장 좋은 방법은 "firewallServiceComponent"에 대한 오브젝트 마스크와 함께 SoftLayer_Account::getHardware를 호출하는 것입니다. Cloud Computing Instance를 보호하는 방화벽 목록은 동일한 오브젝트 마스크를 사용하여 SoftLayer_Account::getVirtualGuests를 통해 확인할 수 있습니다.

$client = SoftLayer_SoapClient::getClient('SoftLayer_Account', null, $apiUser, $apiKey);
$objectMask = "mask.firewallServiceComponent";
$client->setObjectMask($objectMask);
$domains = $client->getHardware();
print_r($domains);

규칙

목록 표시

SoftLayer_Network_Component_Firewall 오브젝트는 규칙을 "rules" 관계형 특성에 저장합니다. 이 특성은 SoftLayer_Network_Component_Firewall_Rule 오브젝트 모음을 포함합니다. 이들 오브젝트가 방화벽 규칙과 방화벽의 작동 방식을 정의합니다. SoftLayer_Network_Component_Firewall::getRules를 사용하여 이 규칙 목록을 검색할 수 있습니다.

$client = SoftLayer_SoapClient::getClient('SoftLayer_Network_Component_Firewall', 12345, $apiUser, $apiKey);
$rules = $client->getRules();
print_r($rules);

수정

방화벽의 규칙 세트를 수정하려면 SoftLayer_Network_Firewall_Update_Request 템플리트 오브젝트를 SoftLayer_Network_Firewall_Update_Request::createObject로 전달합니다. 업데이트 요청이 있을 때마다 전체 규칙 세트가 다시 작성됩니다. 이는 수정 또는 추가할 때마다 이전의 변경되지 않은 규칙을 모두 포함해야 한다는 의미입니다. 위에 설명된 대로 기존 규칙을 가져온 다음 수집된 규칙 모음을 수정하면 이 작업을 간편하게 완료할 수 있습니다.
SoftLayer_Network_Component_Firewall_Update_Request_Rule 오브젝트에는 다음이 필요합니다.

  • action - 허용 또는 거부
  • destinationIpAddress - 대상 주소
  • destinationIpSubnetMask - 대상의 서브넷 마스크
  • sourceIpAddress - 원래 주소
  • sourceIpSubnetMask - 시작 주소의 서브넷 마스크
  • protocol - tcp/udp
  • destinationPortRangeStart - 규칙이 적용되는 첫 번째 포트
  • destinationPortRangeEnd - 규칙이 적용되는 마지막 포트
  • orderValue - 규칙이 적용되는 순서(값이 작을수록 빠름)
$firewallId = 123456;
$firewallClient = SoftLayer_SoapClient::getClient('SoftLayer_Network_Component_Firewall', $firewallId, $apiUser, $apiKey);
$rules = $firewallClient->getRules();
 
// Adding a rule
$newRule = new stdClass();
$newRule->action = 'permit';
$newRule->destinationIpAddress = '172.16.0.1';
$newRule->destinationIpSubnetMask = '255.255.255.255';
$newRule->destinationPortRangeStart = 1;
$newRule->destinationPortRangeEnd = 25;
$newRule->orderValue = count(rules) + 1;
$newRule->protocol = 'tcp';
$newRule->sourceIpAddress = '192.168.1.1';
$newRule->sourceIpSubnetMask = '255.255.255.255';
$rules[] = $newRule;
 
// Modifying a rule
$ipToAllow = '192.168.1.2';
foreach ($rules as $key => $rule) {
    if ($rule->sourceIpAddress == $ipToAllow) {
        $rules[$key]->action = 'deny';
    }
}
 
// Deleting a rule
$ipToDelete = '192.168.1.3';
foreach ($rules as $key => $rule) {
    if($rule->sourceIpAddress == $ipToDelete) {
        unset($rules[$key]);
    }
}

업데이트 요청 오브젝트에는 다음 특성이 필요합니다.

$updateRequestClient = SoftLayer_SoapClient::getClient('SoftLayer_Network_Firewall_Update_Request', Null, $apiUser, $apiKey);
$updateRequestTemplate = new stdClass();
$updateRequestTemplate->networkComponentFirewallId = $firewallId;
$updateRequestTemplate->rules = $rules;
$result = $updateRequestClient->createObject($updateRequestTemplate);
print_r($result);

SoftLayer_Network_Firewall_Update_Request::createObject는 전부 채워진 SoftLayer_Network_Firewall_Update_Request 오브젝트를 리턴하고 업데이트 큐로 이동합니다. 요청은 보통 60초 이내에 처리됩니다.

VLAN 경로 지정된 방화벽

VLAN 경로 지정된 방화벽은 특정 서버가 아닌 전체 SoftLayer_Network_Vlan에 대한 보호 기능을 제공합니다. 단일 디바이스 방화벽과 관련된 많은 개념이 VLAN 경로 지정된 방화벽에도 적용되지만, 몇 가지 작은 차이가 있습니다. VLAN 경로 지정된 방화벽의 상호작용 지점은 SoftLayer_Network_Firewall_AccessControlList 서비스입니다.

각 VLAN마다 'inside'와 'outisde'라는 두 가지 유형의 firewallInterface가 있습니다. firewallContextAccessControlLists는 'in' 또는 'out' 방향을 기준으로 구성됩니다. 현재 SoftLayer 플랫폼은 'outside' firewallInterfaces와 'in' ACL을 지원합니다.

목록 표시

모든 VLAN 경로 지정된 방화벽 목록은 firewallInterfaces.firewallContextAccessControlLists에 대한 오브젝트 마스크와 함께 SoftLayer_Account::getNetworkVlans를 호출하여 수집할 수 있습니다.

$client = SoftLayer_SoapClient::getClient('SoftLayer_Account', null, $apiUser, $apiKey);
$objectMask = "mask.firewallInterfaces.firewallContextAccessControlLists";
$client->setObjectMask($objectMask);
$vlans = $client->getNetworkVlans();
 
foreach ($vlans as $vlan) {
    if ($vlan->firewallInterfaces) {
        print_r($vlan);
    }
}

규칙

목록 표시

SoftLayer_Network_Firewall_AccessControlList 오브젝트는 규칙을 "rules" 관계형 특성에 저장합니다. 이 특성은 SoftLayer_Network_Component_Firewall_Rule 오브젝트 모음을 포함합니다. 이들 오브젝트가 방화벽 규칙과 방화벽의 작동 방식을 정의합니다. SoftLayer_Network_Firewall_AccessConrtolList::getRules를 사용하여 이 규칙 목록을 검색할 수 있습니다.

$vlanFirewalId = 1234;
$client = SoftLayer_SoapClient::getClient('SoftLayer_Network_Firewall_AccessControlList', $vlanFirewalId, $apiUser, $apiKey);
$rules = $client->getRules();
print_r($rules);

수정

방화벽의 규칙 세트를 수정하려면 SoftLayer_Network_Firewall_Update_Request 템플리트 오브젝트를 SoftLayer_Network_Firewall_Update_Request::createObject로 전달합니다. 업데이트 요청이 있을 때마다 전체 규칙 세트가 다시 작성됩니다. 이는 수정 또는 추가할 때마다 이전의 변경되지 않은 규칙을 모두 포함해야 한다는 의미입니다. 위에 설명된 대로 기존 규칙을 가져온 다음 수집된 규칙 모음을 수정하면 이 작업을 간편하게 완료할 수 있습니다.
SoftLayer_Network_Component_Firewall_Update_Request_Rule 오브젝트에는 다음이 필요합니다.

  • action - 허용 또는 거부
  • destinationIpAddress - 대상 주소
  • destinationIpSubnetMask - 대상의 서브넷 마스크
  • sourceIpAddress - 원래 주소
  • sourceIpSubnetMask - 시작 주소의 서브넷 마스크
  • protocol - tcp/udp
  • destinationPortRangeStart - 규칙이 적용되는 첫 번째 포트
  • destinationPortRangeEnd - 규칙이 적용되는 마지막 포트
  • orderValue - 규칙이 적용되는 순서(값이 작을수록 빠름)
$vlanFirewalId = 123456;
$firewallClient = SoftLayer_SoapClient::getClient('SoftLayer_Network_Firewall_AccessControlList', $vlanFirewalId, $apiUser, $apiKey);
$rules = $firewallClient->getRules();
 
// Adding a rule
$newRule = new stdClass();
$newRule->action = 'permit';
$newRule->destinationIpAddress = '172.16.0.1';
$newRule->destinationIpSubnetMask = '255.255.255.255';
$newRule->destinationPortRangeStart = 1;
$newRule->destinationPortRangeEnd = 25;
$newRule->orderValue = count(rules) + 1;
$newRule->protocol = 'tcp';
$newRule->sourceIpAddress = '192.168.1.1';
$newRule->sourceIpSubnetMask = '255.255.255.255';
$rules[] = $newRule;
 
// Modifying a rule
$ipToAllow = '192.168.1.2';
foreach ($rules as $key => $rule) {
    if ($rule->sourceIpAddress == $ipToAllow) {
        $rules[$key]->action = 'deny';
    }
}
 
// Deleting a rule
$ipToDelete = '192.168.1.3';
foreach ($rules as $key => $rule) {
    if($rule->sourceIpAddress == $ipToDelete) {
        unset($rules[$key]);
    }
}

업데이트 요청 오브젝트에는 다음 특성이 필요합니다.

$updateRequestClient = SoftLayer_SoapClient::getClient('SoftLayer_Network_Firewall_Update_Request', Null, $apiUser, $apiKey);
$updateRequestTemplate = new stdClass();
$updateRequestTemplate-> firewallContextAccessControlListId = $vlanFirewalId;
$updateRequestTemplate->rules = $rules;
$result = $updateRequestClient->createObject($updateRequestTemplate);
print_r($result);

SoftLayer_Network_Firewall_Update_Request::createObject는 전부 채워진 SoftLayer_Network_Firewall_Update_Request 오브젝트를 리턴하고 업데이트 큐로 이동합니다. 요청은 보통 60초 이내에 처리됩니다.