O conjunto de documentação deste produto faz o possível para usar uma linguagem imparcial. Para os fins deste conjunto de documentação, a imparcialidade é definida como uma linguagem que não implica em discriminação baseada em idade, deficiência, gênero, identidade racial, identidade étnica, orientação sexual, status socioeconômico e interseccionalidade. Pode haver exceções na documentação devido à linguagem codificada nas interfaces de usuário do software do produto, linguagem usada com base na documentação de RFP ou linguagem usada por um produto de terceiros referenciado. Saiba mais sobre como a Cisco está usando a linguagem inclusiva.
A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento descreve como habilitar o SNMP (Simple Network Management Protocol) no Firepower Device Management versão 6.7 com a API REST.
A Cisco recomenda que você tenha conhecimento destes tópicos:
Firepower Threat Defense gerenciado pelo Firepower Device Management versão 6.7.
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
A API REST do dispositivo FTD oferece suporte à configuração e ao gerenciamento de servidores, usuários, hosts e grupos de hosts SNMP. Com o suporte à API REST do dispositivo SNMP FTD no FP 6.7:
Os exemplos incluídos no documento descrevem as etapas de configuração executadas pelo FDM API Explorer.
Observação: o SNMP só pode ser configurado via API REST quando o FTD executa a versão 6.7 e é gerenciado pelo FDM.
Visão geral do recurso - Suporte à API REST do dispositivo SNMP FTD
Terminais SNMP API/URL
URL |
Métodos |
Modelos |
/devicesettings/default/snmpservers |
GET |
ServidorSNMP |
/devicesettings/default/snmpservers/{objId} |
COLOCAR, OBTER |
ServidorSNMP |
/object/snmphosts |
POSTAR, OBTER |
SNMPHost |
/object/snmphosts/{objId} |
COLOCAR, EXCLUIR, OBTER |
SNMPHost |
/object/snmpusergroups |
POSTAR, OBTER |
SNMPUserGroup |
/object/snmpusergroups/{objId} |
COLOCAR, EXCLUIR, OBTER |
SNMPUserGroup |
/object/snmpusers |
POSTAR, OBTER |
SNMPUser |
/object/snmpusers/{objId} |
COLOCAR, EXCLUIR, OBTER |
SNMPUser |
O host SNMP tem 3 versões principais:
Cada um deles tem um formato específico para securityConfiguration. Para V1 e V2C: contém uma sequência de caracteres de comunidade e um campo de tipo que identifica a configuração como V1 ou V2C.
Para SNMP V3: contém um usuário SNMP V3 válido e um campo de tipo que identifica a configuração como V3.
1. Acesse o API Explorer do FDM.
Para acessar o Explorador da API REST do FDM na GUI do FDM, selecione os 3 pontos e, em seguida, Explorador da API. Como alternativa, navegue até o URL API Explorer.
2. Configuração de Objetos de Rede
Crie um novo objeto de rede para o host SNMP. No FDM API Explorer, selecione NetworkObject e depois POST /object/networks:
O formato SNMP Host JSON é este. Cole esse JSON na seção do corpo e altere o valor do endereço IP no para corresponder ao endereço IP do host SNMP:
{
"version": "null",
"name": "snmpHost",
"description": "SNMP Server Host",
"subType": "HOST",
"value": "192.168.203.61",
"isSystemDefined": false,
"dnsResolution": "IPV4_ONLY",
"type": "networkobject"
}
Role para baixo e selecione o botão TRY IT OUT! para executar a chamada à API. Uma chamada bem-sucedida retorna o código de resposta 200.
Copie os dados JSON do corpo da resposta para um bloco de notas. Mais tarde, você precisa preencher as informações sobre o host SNMP.
3. Crie um novo usuário SNMPv3.
No FDM API Explorer, selecione SNMP e depois POST /object/snmpusers.
Copie esses dados JSON em um bloco de notas e modifique as seções de seu interesse (por exemplo, authenticationPassword, encryptionPassword ou os algoritmos):
{
"version": null,
"name": "snmpUser",
"description": "SNMP User",
"securityLevel": "PRIV",
"authenticationAlgorithm": "SHA",
"authenticationPassword": "cisco123",
"encryptionAlgorithm": "AES128",
"encryptionPassword": "cisco123",
"id": null,
"type": "snmpuser"
}
Cuidado: as senhas usadas nos exemplos são apenas para fins de demonstração. Em um ambiente de produção, assegure-se de usar senhas fortes
Copie os dados JSON modificados para a seção do corpo:
Role para baixo e selecione o botão TRY IT OUT! para executar a chamada à API. Uma chamada bem-sucedida retorna o código de resposta 200. Copie os dados JSON do corpo da resposta para um bloco de notas. Posteriormente, você precisará preencher as informações sobre o usuário SNMP.
4. Obter informações da interface.
No FDM API Explorer, selecione Interface e GET /devices/default/interfaces. Você precisa coletar informações da interface que se conecta ao servidor SNMP.
Role para baixo e selecione o botão TRY IT OUT! para executar a chamada à API. Uma chamada bem-sucedida retorna o código de resposta 200. Copie os dados JSON do corpo da resposta para um bloco de notas. Mais tarde, você precisa preencher as informações sobre a interface.
Lembre-se da versão da interface, nome, id e tipo dos dados JSON. Exemplo de um dado JSON da interface interna:
{
"version": "kkpkibjlu6qro",
"name": "inside",
"description": null,
"hardwareName": "Ethernet1/2",
"monitorInterface": true,
"ipv4": {
"ipType": "STATIC",
"defaultRouteUsingDHCP": false,
"dhcpRouteMetric": null,
"ipAddress": {
"ipAddress": "192.168.203.71",
"netmask": "255.255.255.0",
"standbyIpAddress": null,
"type": "haipv4address"
},
"dhcp": false,
"addressNull": false,
"type": "interfaceipv4"
},
"ipv6": {
"enabled": false,
"autoConfig": false,
"dhcpForManagedConfig": false,
"dhcpForOtherConfig": false,
"enableRA": false,
"dadAttempts": 1,
"linkLocalAddress": {
"ipAddress": "",
"standbyIpAddress": "",
"type": "haipv6address"
},
"ipAddresses": [
{
"ipAddress": "",
"standbyIpAddress": "",
"type": "haipv6address"
}
],
"prefixes": null,
"type": "interfaceipv6"
},
"managementOnly": false,
"managementInterface": false,
"mode": "ROUTED",
"linkState": "UP",
"mtu": 1500,
"enabled": true,
"macAddress": null,
"standbyMacAddress": null,
"pppoe": null,
"speedType": "AUTO",
"duplexType": "AUTO",
"present": true,
"tenGigabitInterface": false,
"gigabitInterface": false,
"id": "fc3d07d4-49d2-11eb-85a8-65aec636a0fc",
"type": "physicalinterface",
"links": {
"self": "https://10.62.148.231/api/fdm/v6/devices/default/interfaces/fc3d07d4-49d2-11eb-85a8-65aec636a0fc"
}
},
A partir dos dados JSON, você pode ver que a interface interna tem estes dados que precisam ser associados ao servidor SNMP:
5. Crie um novo host SNMPv3.
No FDM API Explorer, selecione SNMP e depois POST /object/snmphosts/ no SNMP.
Use este JSON como um modelo. Copie e cole os dados das etapas anteriores no modelo de acordo:
{
"version": null,
"name": "snmpv3-host",
"description": null,
"managerAddress": {
"version": "bsha3bhghu3vmk",
"name": "snmpHost",
"id": "1d10ce6d-49de-11eb-a432-e320cd56d5af",
"type": "networkobject"
},
"pollEnabled": true,
"trapEnabled": true,
"securityConfiguration": {
"authentication": {
"version": "bmwzw4iw7php7",
"name": "snmpUser",
"id": "65da6c50-49df-11eb-a432-e7823944dabc",
"type": "snmpuser"
},
"type": "snmpv3securityconfiguration"
},
"interface": {
"version": "kkpkibjlu6qro",
"name": "inside",
"id": "fc3d07d4-49d2-11eb-85a8-65aec636a0fc",
"type": "physicalinterface"
},
"id": null,
"type": "snmphost"
}
Note:
Copie os dados JSON modificados para a seção body.
Role para baixo e selecione o botão TRY IT OUT! para executar a chamada à API. Uma chamada bem-sucedida retorna o código de resposta 200.
Navegue até FDM GUI e Implante as alterações. Você pode ver a maior parte da configuração SNMP:
Para v2c, você não precisa criar um usuário, mas ainda precisa:
Este é um exemplo de um payload JSON que cria um objeto SNMPv2c:
{
"version": null,
"name": "snmpv2-Host",
"description": null,
"managerAddress": {
"version": "bsha3bhghu3vmk",
"name": "snmpv4hostgrp",
"id": "1d10ce6d-49de-11eb-a432-e320cd56d5af",
"type": "networkobject"
},
"pollEnabled": true,
"trapEnabled": true,
"securityConfiguration": {
"community": "cisco123",
"type": "snmpv2csecurityconfiguration"
},
"interface": {
"version": "kkpkibjlu6qro",
"name": "inside",
"id": "fc3d07d4-49d2-11eb-85a8-65aec636a0fc",
"type": "physicalinterface"
},
"id": null,
"type": "snmphost"
}
Use o método POST para implantar o payload JSON:
Role para baixo e selecione o botão TRY IT OUT! para executar a chamada à API. Uma chamada bem-sucedida retorna o código de resposta 200.
Etapa 1.
Obtenha as informações do host SNMP (SNMP > /object/snmphosts):
Role para baixo e selecione o botão TRY IT OUT! para executar a chamada à API. Uma chamada bem-sucedida retorna o código de resposta 200.
Você obtém uma lista de objetos. Anote o id do objeto snmphost que você deseja remover:
{
"items": [
{
"version": "ofaasthu26ulx",
"name": "snmpv2-Host",
"description": null,
"managerAddress": {
"version": "bsha3bhghu3vm",
"name": "snmpHost",
"id": "1d10ce6d-49de-11eb-a432-e320cd56d5af",
"type": "networkobject"
},
"udpPort": 162,
"pollEnabled": true,
"trapEnabled": true,
"securityConfiguration": {
"community": "*********",
"type": "snmpv2csecurityconfiguration"
},
"interface": {
"version": "kkpkibjlu6qro",¬
"name": "inside",
"hardwareName": "Ethernet1/2",
"id": "fc3d07d4-49d2-11eb-85a8-65aec636a0fc",
"type": "physicalinterface"
},
"id": "1bfbd1f0-4ac6-11eb-a432-e76cd376bca7",
"type": "snmphost",
"links": {
"self": "https://10.62.148.231/api/fdm/v6/object/snmphosts/1bfbd1f0-4ac6-11eb-a432-e76cd376bca7"
}
},
Etapa 2.
Escolha a opção DELETE em SNMP > /object/snmphosts{objId}. Cole a ID que você coletou na etapa 1:
Role para baixo e selecione o botão TRY IT OUT! para executar a chamada à API. A chamada retorna o código de resposta 400.
Etapa 3.
Implante a alteração:
A implantação remove as informações do host:
FP1120-1# show run snmp-server
snmp-server group AUTH v3 auth
snmp-server group PRIV v3 priv
snmp-server group NOAUTH v3 noauth
snmp-server location null
snmp-server contact null
snmp-server community *****
snmpwalk para v2c falha:
root@kali2:~# snmpwalk -v2c -c cisco123 -OS 192.168.203.71
Timeout: No Response from 192.168.203.71
Para v3, você deve excluir os objetos nesta ordem.
Se você tentar excluir os objetos na ordem errada, receberá este erro:
{
"error": {
"severity": "ERROR",
"key": "Validation",
"messages": [
{
"description": "You cannot delete the object because it contains SNMPHost: snmpv3-host2, SNMPHost: snmpv3-host.
You must remove the object from all parts of the configuration before you can delete it.",
"code": "deleteObjWithRel",
"location": ""
}
]
}
}
Após a implantação, navegue até a CLI do FTD para verificar a configuração do SNMP. Observe que o valor engineID é gerado automaticamente.
FP1120-1# connect ftd
> system support diagnostic-cli
Attaching to Diagnostic CLI ... Press 'Ctrl+a then d' to detach.
Type help or '?' for a list of available commands.
FP1120-1> enable
Password:
FP1120-1# show run all snmp-server
snmp-server group AUTH v3 auth
snmp-server group PRIV v3 priv
snmp-server group NOAUTH v3 noauth
snmp-server user snmpUser PRIV v3 engineID 80000009febdf0129a799ef469aba2d5fcf1bfd7e86135a1f8 encrypted auth sha ca:1b:18:f3:62:b1:63:7e:92:34:92:b3:cf:54:86:f9:8e:2a:4c:fd priv aes 128 ca:1b:18:f3:62:b1:63:7e:92:34:92:b3:cf:54:86:f9
snmp-server listen-port 161
snmp-server host inside 192.168.203.61 version 3 snmpUser udp-port 162
snmp-server location null
snmp-server contact null
snmp-server community *****
snmp-server enable traps snmp authentication linkup linkdown coldstart warmstart
no snmp-server enable traps syslog
no snmp-server enable traps ipsec start stop
no snmp-server enable traps entity config-change fru-insert fru-remove fan-failure power-supply power-supply-presence cpu-temperature chassis-temperature power-supply-temperature chassis-fan-failure accelerator-temperature l1-bypass-status
no snmp-server enable traps memory-threshold
no snmp-server enable traps interface-threshold
no snmp-server enable traps remote-access session-threshold-exceeded
no snmp-server enable traps connection-limit-reached
no snmp-server enable traps cpu threshold rising
no snmp-server enable traps ikev2 start stop
no snmp-server enable traps nat packet-discard
no snmp-server enable traps config
no snmp-server enable traps failover-state
no snmp-server enable traps cluster-state
snmp-server enable oid mempool
snmp-server enable
teste snmpwalk
root@kali2:~# snmpwalk -v3 -l authPriv -u snmpUser -a SHA -A cisco123 -x AES -X cisco123 192.168.203.71
iso.3.6.1.2.1.1.1.0 = STRING: "Cisco Firepower Threat Defense, Version 6.7.0 (Build 65), ASA Version 9.15(1)"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.9.1.2663
iso.3.6.1.2.1.1.3.0 = Timeticks: (1616700) 4:29:27.00
iso.3.6.1.2.1.1.4.0 = STRING: "null"
iso.3.6.1.2.1.1.5.0 = STRING: "FP1120-1"
iso.3.6.1.2.1.1.6.0 = STRING: "null"
iso.3.6.1.2.1.1.7.0 = INTEGER: 4
...
FP1120-1# show run snmp-server
snmp-server host inside 192.168.203.61 community ***** version 2c
snmp-server location null
snmp-server contact null
snmp-server community *****
snmpwalk para v2c:
root@kali2:~# snmpwalk -v2c -c cisco123 -OS 192.168.203.71
iso.3.6.1.2.1.1.1.0 = STRING: "Cisco Firepower Threat Defense, Version 6.7.0 (Build 65), ASA Version 9.15(1)"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.9.1.2663
iso.3.6.1.2.1.1.3.0 = Timeticks: (10482200) 1 day, 5:07:02.00
iso.3.6.1.2.1.1.4.0 = STRING: "null"
iso.3.6.1.2.1.1.5.0 = STRING: "FP1120-1"
iso.3.6.1.2.1.1.6.0 = STRING: "null"
iso.3.6.1.2.1.1.7.0 = INTEGER: 4
Habilitar captura com rastreamento no firewall:
FP1120-1# capture CAPI trace interface inside match udp any any eq snmp
Use a ferramenta snmpwalk e verifique se você pode ver os pacotes:
FP1120-1# show capture
capture CAPI type raw-data trace interface inside [Capturing - 3137 bytes]
match udp any any eq snmp
O conteúdo da captura:
FP1120-1# show capture CAPI
154 packets captured
1: 17:04:16.720131 192.168.203.61.51308 > 192.168.203.71.161: udp 39
2: 17:04:16.722252 192.168.203.71.161 > 192.168.203.61.51308: udp 119
3: 17:04:16.722679 192.168.203.61.51308 > 192.168.203.71.161: udp 42
4: 17:04:16.756400 192.168.203.71.161 > 192.168.203.61.51308: udp 51
5: 17:04:16.756918 192.168.203.61.51308 > 192.168.203.71.161: udp 42
Verifique se os contadores de estatísticas do servidor SNMP mostram solicitações e respostas SNMP Get ou Get-next:
FP1120-1# show snmp-server statistics
62 SNMP packets input
0 Bad SNMP version errors
0 Unknown community name
0 Illegal operation for community name supplied
0 Encoding errors
58 Number of requested variables
0 Number of altered variables
0 Get-request PDUs
58 Get-next PDUs
0 Get-bulk PDUs
0 Set-request PDUs (Not supported)
58 SNMP packets output
0 Too big errors (Maximum packet size 1500)
0 No such name errors
0 Bad values errors
0 General errors
58 Response PDUs
0 Trap PDUs
Rastreie um pacote de entrada. O pacote é UN-NAT para a interface NLP interna:
FP1120-1# show capture CAPI packet-number 1 trace
30 packets captured
1: 17:04:16.720131 192.168.203.61.51308 > 192.168.203.71.161: udp 39
Phase: 1
Type: CAPTURE
Subtype:
Result: ALLOW
Config:
Additional Information:
MAC Access list
Phase: 2
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
MAC Access list
Phase: 3
Type: UN-NAT
Subtype: static
Result: ALLOW
Config:
Additional Information:
NAT divert to egress interface nlp_int_tap(vrfid:0)
Untranslate 192.168.203.71/161 to 169.254.1.3/4161
Phase: 4
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
Phase: 5
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 6
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 7
Type: NAT
Subtype: rpf-check
Result: ALLOW
Config:
Additional Information:
Phase: 8
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 9
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 1078, packet dispatched to next module
Phase: 10
Type: INPUT-ROUTE-LOOKUP-FROM-OUTPUT-ROUTE-LOOKUP
Subtype: Resolve Preferred Egress interface
Result: ALLOW
Config:
Additional Information:
Found next-hop 169.254.1.3 using egress ifc nlp_int_tap(vrfid:0)
Phase: 11
Type: ADJACENCY-LOOKUP
Subtype: Resolve Nexthop IP address to MAC
Result: ALLOW
Config:
Additional Information:
Found adjacency entry for Next-hop 169.254.1.3 on interface nlp_int_tap
Adjacency :Active
MAC address 3208.e2f2.b5f9 hits 0 reference 1
Result:
input-interface: inside(vrfid:0)
input-status: up
input-line-status: up
output-interface: nlp_int_tap(vrfid:0)
output-status: up
output-line-status: up
Action: allow
A regra NAT é implantada automaticamente como parte da configuração SNMP:
FP1120-1# show nat
Manual NAT Policies (Section 1)
1 (nlp_int_tap) to (inside) source dynamic nlp_client_0_192.168.203.61_intf4 interface destination static nlp_client_0_ipv4_40 nlp_client_0_ipv4_40 service nlp_client_0_17svc162_39 nlp_client_0_17svc162_39
translate_hits = 0, untranslate_hits = 0
Auto NAT Policies (Section 2)
…
2 (nlp_int_tap) to (inside) source static nlp_server_0_snmp_intf4 interface service udp 4161 snmp
translate_hits = 0, untranslate_hits = 2
Na porta de back-end, o UDP 4161 escuta o tráfego SNMP:
> expert
admin@FP1120-1:~$ sudo netstat -an | grep 4161
Password:
udp 0 0 169.254.1.3:4161 0.0.0.0:*
udp6 0 0 fd00:0:0:1::3:4161 :::*
Em um caso de configuração incorreta/incompleta, o pacote SNMP de entrada é descartado, já que não há fase UN-NAT:
FP1120-1# show cap CAPI packet-number 1 trace
6 packets captured
1: 18:36:35.868485 192.168.203.61.50105 > 192.168.203.71.161: udp 42
Phase: 1
Type: CAPTURE
Subtype:
Result: ALLOW
Config:
Additional Information:
MAC Access list
Phase: 2
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
MAC Access list
Phase: 3
Type: ROUTE-LOOKUP
Subtype: No ECMP load balancing
Result: ALLOW
Config:
Additional Information:
Destination is locally connected. No ECMP load balancing.
Found next-hop 192.168.203.71 using egress ifc identity(vrfid:0)
Phase: 4
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 5
Type: ACCESS-LIST
Subtype:
Result: DROP
Config:
Implicit Rule
Additional Information:
Result:
input-interface: inside(vrfid:0)
input-status: up
input-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule, Drop-location: frame 0x0000557415b6347d flow (NA)/NA
Os syslogs de FTD LINA mostram que o pacote de entrada é descartado:
FP1120-1# show log | include 161
Dec 30 2020 18:36:38: %FTD-7-710005: UDP request discarded from 192.168.203.61/50105 to inside:192.168.203.71/161
Dec 30 2020 18:36:39: %FTD-7-710005: UDP request discarded from 192.168.203.61/50105 to inside:192.168.203.71/161
P. Posso usar a interface de gerenciamento FTD para enviar mensagens SNMP?
Não, não há suporte para isso no momento.
Defeito de aprimoramento relacionado: 6.7 Suporte à API Rest SNMP para interface ngfw-mgmt
Revisão | Data de publicação | Comentários |
---|---|---|
3.0 |
28-Jun-2024 |
Texto Alt adicionado.
Introdução, requisitos de estilo e formatação atualizados. |
2.0 |
02-Jun-2023 |
Recertificação |
1.0 |
30-Dec-2020 |
Versão inicial |