Regras de Saída

Esta é uma API de gerenciamento das regras de saída de Firewall

Regras de saída do firewall, usada para permitir/bloquear tráfego de saída do próprio servidor de firewall.

Listar regras de saída

API de listagem de regras de saída

GET /api/firewall/rules/output

Exemplo de requisição

GET /api/firewall/rules/output HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
response = sdk.firewall.get_output_rules()
print(response.payload)
const response = sdk.firewall.getOutputRules();
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "output_rules": [
    {
      "id": 1,
      "enabled": true,
      "order": 3,
      "group_id": 1,
      "description": "Rule01",
      "action": "accept",
      "protocol": "tcp/udp",
      "log_enabled": false,
      "log_info": null,
      "src_addr_type": "zone",
      "src_addr": "wan",
      "dst_conn_type": "connection",
      "dst_conn": "iface:1",
      "dst_addr_type": "zone",
      "dst_addr": "wan",
      "dst_port_type": "range",
      "dst_port": "8000:8080",
      "created_at": "2018-12-13T12:20:02.932000+00:00",
      "updated_at": "2018-12-13T12:20:02.932000+00:00"
    },
    {
      "id": 2,
      "enabled": true,
      "order": 8,
      "group_id": 2,
      "description": "Rule02",
      "action": "accept",
      "protocol": "ip",
      "log_enabled": false,
      "log_info": null,
      "src_addr_type": "zone",
      "src_addr": "wan",
      "dst_conn_type": "connection",
      "dst_conn": "iface:1",
      "dst_addr_type": "network",
      "dst_addr": "192.168.0.0/24",
      "dst_port_type": null,
      "dst_port": null,
      "created_at": "2018-12-13T14:15:02.932000+00:00",
      "updated_at": "2018-12-13T14:15:02.932000+00:00"
    }
  ]
}
[
    OutputRule(
        id=1,
        enabled=True,
        order=3,
        group_id=1,
        description="Rule01",
        action="accept",
        protocol="tcp/udp",
        log_enabled=False,
        log_info=None,
        src_addr_type="zone",
        src_addr="wan",
        dst_conn_type="connection",
        dst_conn="iface:1",
        dst_addr_type="zone",
        dst_addr="wan",
        dst_port_type="range",
        dst_port="8000:8080",
        created_at=DateTime(2018, 12, 13, 12, 20, 2, tzinfo=Timezone('+00:00')),
        updated_at=DateTime(2018, 12, 13, 12, 20, 2, tzinfo=Timezone('+00:00'))
    ),
    OutputRule(
        id=2,
        enabled=True,
        order=8,
        group_id=2,
        description="Rule02",
        action="accept",
        protocol="ip",
        log_enabled=False,
        log_info=None,
        src_addr_type="zone",
        src_addr="wan",
        dst_conn_type="connection",
        dst_conn="iface:1",
        dst_addr_type="network",
        dst_addr="192.168.0.0/24",
        dst_port_type=None,
        dst_port=None,
        created_at=DateTime(2018, 12, 13, 14, 15, 2, tzinfo=Timezone('+00:00')),
        updated_at=DateTime(2018, 12, 13, 14, 15, 2, tzinfo=Timezone('+00:00'))
    )
]
[
  {
    id: 1,
    enabled: true,
    order: 3,
    groupId: 1,
    description: "Rule01",
    action: "accept",
    protocol: "tcp/udp",
    logEnabled: false,
    logInfo: null,
    srcAddrType: "zone",
    srcAddr: "wan",
    dstConnType: "connection",
    dstConn: "iface:1",
    dstAddrType: "zone",
    dstAddr: "wan",
    dstPortType: "range",
    dstPort: "8000:8080",
    createdAt: "2018-12-13T12:20:02.000Z",
    updatedAt: "2018-12-13T12:20:02.000Z"
  },
  {
    id: 2,
    enabled: true,
    order: 8,
    groupId: 2,
    description: "Rule02",
    action: "accept",
    protocol: "ip",
    logEnabled: false,
    logInfo: null,
    srcAddrType: "zone",
    srcAddr: "wan",
    dstConnType: "connection",
    dstConn: "iface:1",
    dstAddrType: "network",
    dstAddr: "192.168.0.0/24",
    dstPortType: null,
    dstPort: null,
    createdAt: "2018-12-13T14:15:02.000Z",
    updatedAt: "2018-12-13T14:15:02.000Z"
  }
];

Buscar regra de saída

API de consulta de regra de saída

GET /api/firewall/rules/output/id

Exemplo de requisição

GET /api/firewall/rules/output/1 HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
response = sdk.firewall.get_output_rule(id=1)
print(response.payload)
const response = sdk.firewall.getOutputRule({ id: 1 });
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 1,
  "enabled": true,
  "order": 3,
  "group_id": 1,
  "description": "Rule01",
  "action": "accept",
  "protocol": "tcp/udp",
  "log_enabled": false,
  "log_info": null,
  "src_addr_type": "zone",
  "src_addr": "wan",
  "dst_conn_type": "connection",
  "dst_conn": "iface:1",
  "dst_addr_type": "zone",
  "dst_addr": "wan",
  "dst_port_type": "range",
  "dst_port": "8000:8080",
  "created_at": "2018-12-13T12:20:02.932000+00:00",
  "updated_at": "2018-12-13T12:20:02.932000+00:00"
}
OutputRule(
    id=1,
    enabled=True,
    order=3,
    group_id=1,
    description="Rule01",
    action="accept",
    protocol="tcp/udp",
    log_enabled=False,
    log_info=None,
    src_addr_type="zone",
    src_addr="wan",
    dst_conn_type="connection",
    dst_conn="iface:1",
    dst_addr_type="zone",
    dst_addr="wan",
    dst_port_type="range",
    dst_port="8000:8080",
    created_at=DateTime(2018, 12, 13, 12, 20, 2, tzinfo=Timezone('+00:00')),
    updated_at=DateTime(2018, 12, 13, 12, 20, 2, tzinfo=Timezone('+00:00'))
)
{
  id: 1,
  enabled: true,
  order: 3,
  groupId: 1,
  description: "Rule01",
  action: "accept",
  protocol: "tcp/udp",
  logEnabled: false,
  logInfo: null,
  srcAddrType: "zone",
  srcAddr: "wan",
  dstConnType: "connection",
  dstConn: "iface:1",
  dstAddrType: "zone",
  dstAddr: "wan",
  dstPortType: "range",
  dstPort: "8000:8080",
  createdAt: "2018-12-13T12:20:02.000Z",
  updatedAt: "2018-12-13T12:20:02.000Z"
}

Criar regra de saída

API de criação de regra de saída

POST /api/firewall/rules/output

Exemplo de requisição

POST /api/firewall/rules/output HTTP/1.1
Host: api.exemplo.com
Content-Type: application/json
Accept: application/json
Authorization: Bearer <Access-Token>

{
  "enabled": true,
  "order": 11,
  "group_id": 1,
  "description": "New Rule",
  "action": "accept",
  "protocol": "tcp",
  "log_enabled": false,
  "src_addr_type": "zone",
  "src_addr": "wan",
  "dst_conn_type": "connection",
  "dst_conn": "iface:1",
  "dst_addr_type": "zone",
  "dst_addr": "wan",
  "dst_port_type": "range",
  "dst_port": "8000:8080",
  "apply": true
}
from itflex_sdk.firewall.types import CreateOutputRuleRequest

request = CreateOutputRuleRequest(
    enabled=True,
    order=11,
    group_id=1,
    description="New Rule",
    action="accept",
    protocol="tcp",
    log_enabled=False,
    src_addr_type="zone",
    src_addr="wan",
    dst_conn_type="connection",
    dst_conn="iface:1",
    dst_addr_type="zone",
    dst_addr="wan",
    dst_port_type="range",
    dst_port="8000:8080",
    apply=True
)
response = sdk.firewall.create_output_rule(request)
print(response.payload)
const outputRule = sdk.dbc.types.OutputRule();
outputRule.enabled = true;
outputRule.order = 11;
outputRule.groupId = 1;
outputRule.description = "New Rule";
outputRule.action = "accept";
outputRule.protocol = "tcp";
outputRule.logEnabled = false;
outputRule.srcAddrType = "zone";
outputRule.srcAddr = "wan";
outputRule.dstConnType = "connection";
outputRule.dstConn = "iface:1";
outputRule.dstAddrType = "zone";
outputRule.dstAddr = "wan";
outputRule.dstPortType = "range";
outputRule.dstPort = "8000:8080";
outputRule.apply = true;

const response = sdk.firewall.createOutputRule(outputRule);
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 3,
  "enabled": true,
  "order": 11,
  "group_id": 1,
  "description": "New Rule",
  "action": "accept",
  "protocol": "tcp",
  "log_enabled": false,
  "log_info": null,
  "src_addr_type": "zone",
  "src_addr": "wan",
  "dst_conn_type": "connection",
  "dst_conn": "iface:1",
  "dst_addr_type": "zone",
  "dst_addr": "wan",
  "dst_port_type": "range",
  "dst_port": "8000:8080",
  "created_at": "2018-12-14T09:20:02.932000+00:00",
  "updated_at": "2018-12-14T09:20:02.932000+00:00"
}
OutputRule(
    id=3,
    enabled=True,
    order=11,
    group_id=1,
    description="New Rule",
    action="accept",
    protocol="tcp",
    log_enabled=False,
    log_info=None,
    src_addr_type="zone",
    src_addr="wan",
    dst_conn_type="connection",
    dst_conn="iface:1",
    dst_addr_type="zone",
    dst_addr="wan",
    dst_port_type="range",
    dst_port="8000:8080",
    created_at=DateTime(2018, 12, 14, 9, 20, 2, tzinfo=Timezone('+00:00')),
    updated_at=DateTime(2018, 12, 14, 9, 20, 2, tzinfo=Timezone('+00:00'))
)
{
  id: 3,
  enabled: true,
  order: 11,
  groupId: 1,
  description: "New Rule",
  action: "accept",
  protocol: "tcp",
  logEnabled: false,
  logInfo: null,
  srcAddrType: "zone",
  srcAddr: "wan",
  dstConnType: "connection",
  dstConn: "iface:1",
  dstAddrType: "zone",
  dstAddr: "wan",
  dstPortType: "range",
  dstPort: "8000:8080",
  createdAt: "2018-12-14T09:20:02.000Z",
  updatedAt: "2018-12-14T09:20:02.000Z"
}

Editar regra de saída

API de edição de regra de saída

PUT /api/firewall/rules/output/id

Exemplo de requisição

PUT /api/firewall/rules/output/3 HTTP/1.1
Host: api.exemplo.com
Content-Type: application/json
Accept: application/json
Authorization: Bearer <Access-Token>

{
  "enabled": true,
  "order": 11,
  "description": "New Rule",
  "action": "accept",
  "protocol": "ip",
  "log_enabled": true,
  "log_info": "test log message",
  "src_addr_type": "any",
  "dst_conn_type": "any",
  "dst_addr_type": "any",
  "dst_addr": "wan",
  "apply": true
}
from itflex_sdk.firewall.types import UpdateOutputRuleRequest

request = UpdateOutputRuleRequest(
    id=3,
    enabled=True,
    order=11,
    description="New Rule",
    action="accept",
    protocol="ip",
    log_enabled=True,
    log_info="test log message",
    src_addr_type="any",
    dst_conn_type="any",
    dst_addr_type="any",
    apply=True
)
response = sdk.firewall.update_output_rule(request)
print(response.payload)
const outputRule = {
  id: 3,
  enabled: true,
  order: 11,
  description: "New Rule",
  action: "accept",
  protocol: "ip",
  logEnabled: true,
  logInfo: "test log message",
  srcAddrType: "any",
  dstConnType: "any",
  dstAddrType: "any",
  apply: true
};
const response = sdk.firewall.updateOutputRule(outputRule);
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 3,
  "enabled": true,
  "order": 11,
  "group_id": 1,
  "description": "New Rule",
  "action": "accept",
  "protocol": "ip",
  "log_enabled": true,
  "log_info": "test log message",
  "src_addr_type": "any",
  "src_addr": null,
  "dst_conn_type": "any",
  "dst_conn": null,
  "dst_addr_type": "any",
  "dst_addr": null,
  "dst_port_type": null,
  "dst_port": null,
  "created_at": "2018-12-14T09:20:02.932000+00:00",
  "updated_at": "2018-12-14T10:30:02.932000+00:00"
}
OutputRule(
    id=3,
    enabled=True,
    order=11,
    group_id=1,
    description="New Rule",
    action="accept",
    protocol="ip",
    log_enabled=True,
    log_info="test log message",
    src_addr_type="any",
    src_addr=None,
    dst_conn_type="any",
    dst_conn=None,
    dst_addr_type="any",
    dst_addr=None,
    dst_port_type=None,
    dst_port=None,
    created_at=DateTime(2018, 12, 14, 9, 20, 2, tzinfo=Timezone('+00:00')),
    updated_at=DateTime(2018, 12, 14, 10, 30, 2, tzinfo=Timezone('+00:00'))
)
{
  id: 3,
  enabled: true,
  order: 11,
  groupId: 1,
  description: "New Rule",
  action: "accept",
  protocol: "ip",
  logEnabled: true,
  logInfo: "test log message",
  srcAddrType: "any",
  srcAddr: null,
  dstConnType: "any",
  dstConn: null,
  dstAddrType: "any",
  dstAddr: null,
  dstPortType: null,
  dstPort: null,
  createdAt: "2018-12-14T09:20:02.000Z",
  updatedAt: "2018-12-14T10:30:02.000Z"
}

Excluir regra de saída

API de exclusão de regra de saída

DELETE /api/firewall/rules/output/id

Exemplo de requisição

DELETE /api/firewall/rules/output/1 HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
response = sdk.firewall.delete_output_rule(id=1)
const response = sdk.firewall.deleteOutputRule({ id: 1 });

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

Aplicar regras de saída

API de aplicação de regras de saída

POST /api/firewall/rules/output/apply

Exemplo de requisição

POST /api/firewall/rules/output/apply HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
response = sdk.firewall.apply_output_rules()
const response = sdk.firewall.applyOutputRules();

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

Formato dos dados

Parâmetros da url

Campo Descrição
id int

Identificador da regra de saída

Requisição

Campo Descrição
enabled boolrequerido

Flag que determina se regra está habilitada ou desabilitada.

order intrequerido

Campo indicador da ordem da regra em relação às demais regras do grupo.

Deve ser sempre um número positivo.

group_id intrequerido

Identificador do grupo da regra.

description stringrequerido

Breve descrição da regra.

Tamanho máximo: 30 caracteres

action stringrequerido

Ação que a regra executará.

Valores possíveis:

  • accept
  • reject
  • drop
  • log
protocol stringrequerido

Protocolo da regra.

Valores possíveis:

  • tcp/udp
  • tcp
  • udp
  • ip
  • ping
  • ipsec
  • ah
  • esp
  • gre
log_enabled bool

Flag que a indica a geração de uma regra de log.

Ocultar/Ignorar se: campo action possuir valor log.

Valor padrão: False

log_info bool

Texto do log da regra.

Requerido se:

  • Campo action possuir valor log; ou
  • campo log_enabled possuir valor True.

Deve satisfazer a expressão:

[A-Za-z0-9\-_\|\\/<>()@]{0,30}

src_addr_type stringrequerido

Tipo do endereço de origem dos pacotes.

Valores possíveis:

  • any
  • connection
  • zone
  • ip
  • network
src_addr string

Endereço de origem dos pacotes.

O preenchimento deste campo está relacionado ao valor do campo src_addr_type

src_addr_type Preenchimento válido
any Campo src_addr é Ocultado/Ignorado
connection Campo src_addr requer um Identificador de Connection existente
zone Campo src_addr requer um dos valores possíveis: wan, dmz, guest, vpn-s2s, vpn-s2u, lan
ip Campo src_addr requer um endereço IP no formato IPv4Address
network Campo src_addr requer um endereço de rede no formato IPv4Network

dst_conn_type stringrequerido

Tipo da conexão de saída dos pacotes.

Valores possíveis:

  • any
  • connection
  • zone

dst_conn string

Conexão ou Zona de origem dos pacotes.

O preenchimento deste campo está relacionado ao valor do campo dst_conn_type

dst_conn_type Preenchimento válido
any Campo dst_conn é Ocultado/Ignorado
connection Campo dst_conn requer um Identificador de Connection existente
zone Campo dst_conn requer um dos valores possíveis: wan, dmz, guest, vpn-s2s, vpn-s2u, lan

dst_addr_type stringrequerido

Tipo do endereço de destino dos pacotes.

Valores possíveis:

  • any
  • connection
  • zone
  • ip
  • network

dst_addr string

Endereço de destino dos pacotes.

O preenchimento deste campo está relacionado ao valor do campo dst_addr_type

dst_addr_type Preenchimento válido
any Campo dst_addr é Ocultado/Ignorado
connection Campo dst_addr requer um Identificador de Connection existente
zone Campo dst_addr requer um dos valores possíveis: wan, dmz, guest, vpn-s2s, vpn-s2u, lan
ip Campo dst_addr requer um endereço IP no formato IPv4Address
network Campo dst_addr requer um endereço de rede no formato IPv4Network

dst_port_type string

Tipo da porta de destino dos pacotes.

Se o valor do campo protocol for ip, ping, ipsec, ah, esp ou gre, este campo irá ser desconsiderado

Valor do campo protocol Preenchimento válido
tcp/udp, tcp ou udp Este campo requer um dos valores possíves: any, port, range
ip, ping, ipsec, ah, esp ou gre Este campo deve ser null

dst_port string

Porta ou faixa de portas de destino do pacote.

Se o valor do campo protocol for ip, ping, ipsec, ah, esp ou gre, este campo irá ser desconsiderado

O preenchimento deste campo está relacionado ao valor do campo dst_port_type

dst_port_type Preenchimento válido
any Campo dst_port é Ocultado/Ignorado
port Campo dst_port requer uma porta entre 1 e 65535
range Campo dst_port requer uma faixa de portas no formato start_port:end_port

apply bool

Flag que indica se as informações serão provisionadas imediatamente após a criação ou edição

Valor padrão: False

Resposta

Campo Descrição
id int

Identificador da regra de saída

enabled bool

Flag que determina se regra está habilitada ou desabilitada.

order int

Campo indicador da ordem da regra em relação às demais regras do grupo.

group_id int

Identificador do grupo da regra.

description string

Breve descrição da regra.

action string

Ação que a regra executará.

protocol string

Protocolo da regra.

log_enabled string

Flag que a indica a geração de uma regra de log.

log_info bool

Texto do log da regra.

src_addr_type string

Tipo do endereço de origem dos pacotes.

src_addr string

Endereço de origem dos pacotes.

dst_conn_type string

Tipo da conexão de saída dos pacotes.

dst_conn string

Conexão ou Zona de origem dos pacotes.

dst_addr_type string

Tipo do endereço de destino dos pacotes.

dst_addr string

Endereço de destino dos pacotes.

dst_port_type string

Tipo da porta de destino dos pacotes.

dst_port string

Porta ou faixa de portas de destino do pacote.

created_at string

Data de criação

Formato: ISO-8601

updated_at string

Data da última edição

Formato: ISO-8601