Juniper SRX e Cisco ASA: próxima série

A primeira vez que construí o IPSec entre o Juniper SRX e o Cisco ASA foi em 2014. Mesmo assim, foi muito doloroso, porque havia muitos problemas (geralmente um túnel desmoronando durante a regeneração), era difícil de diagnosticar (o ASA estava no local do cliente, portanto, as oportunidades de depuração eram limitadas), mas de alguma forma funcionou.

imagem

Desde então, o JunOS recomendado para SRX foi atualizado para 15.1 (pelo menos para a linha SRX300), e o ASA aprendeu a usar o IPSec baseado em rota (versão de software 9.8), o que simplifica um pouco a configuração. E no trabalho atual, não muito tempo atrás, havia a chance de montar esse esquema novamente. E, novamente, sem sucesso - durante a regeneração, o túnel caiu com segurança (e nem sempre subia sem uma reinicialização manual). E novamente nos logs silêncio e confusão, mas porque A ASA estava com nosso parceiro, então não havia como estrear, respectivamente.

E agora surgiu a oportunidade de montar um esquema no qual os dois lados (SRX e ASA) estão sob nosso controle, respectivamente, você pode jogar para sempre.

Disposição


Então, o que temos:

  • Juniper SRX340 (JunOS 15.1X49D150.2)
  • Cisco ASA 5506 (software 9.8.4)
  • IPSec baseado em rota entre eles (o roteamento será fornecido pelo BGP, também vou dizer algumas palavras)

Esquema




Configuração


Juniper


Vamos começar com a configuração do SRX. Eu tenho alguns túneis diferentes construídos nele, no final cheguei a algo assim:

set security ike policy IKE-ASA mode main set security ike policy IKE-ASA proposals SHA256-AES128-5-86400 set security ike policy IKE-ASA pre-shared-key ascii-text ... set security ike gateway GW-ASA ike-policy IKE-ASA set security ike gateway GW-ASA address 192.0.2.2 set security ike gateway GW-ASA dead-peer-detection interval 10 set security ike gateway GW-ASA dead-peer-detection threshold 3 set security ike gateway GW-ASA local-identity inet 198.51.100.2 set security ike gateway GW-ASA external-interface ae0.4 set security ike gateway GW-ASA version v2-only set security ipsec vpn VPN-ASA bind-interface st0.7 set security ipsec vpn VPN-ASA df-bit clear set security ipsec vpn VPN-ASA vpn-monitor source-interface st0.7 set security ipsec vpn VPN-ASA vpn-monitor destination-ip 169.254.100.2 set security ipsec vpn VPN-ASA ike gateway GW-ASA set security ipsec vpn VPN-ASA ike ipsec-policy SHA256-AES128-3600-14-policy set security ipsec vpn VPN-ASA establish-tunnels immediately set interfaces st0 unit 7 description "ASA AnyConnect router" set interfaces st0 unit 7 family inet mtu 1436 set interfaces st0 unit 7 family inet address 169.254.100.1/30 set routing-options static route 192.0.2.2/32 next-hop 198.51.100.1 set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic system-services ping set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic system-services ike set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic system-services traceroute set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic protocols bgp 

Pode-se observar que o IKEv2 é usado, sem seletores de tráfego (já temos fundos suficientes em nosso arsenal para limitar o fluxo de tráfego - das listas de prefixos BGP às políticas de segurança). Para o heap, DPD (detecção de ponto morto) e vpn-monitor são usados ​​(eles têm um tipo ligeiramente diferente de verificações, eu uso os dois por confiabilidade).

Cisco


Configuração ASA:
 crypto ipsec ikev2 ipsec-proposal SHA256-AES128 protocol esp encryption aes-256 aes-192 aes protocol esp integrity sha-256 crypto ipsec profile IPSEC-PROFILE-AMS1-VPN2 set ikev2 ipsec-proposal SHA256-AES128 set pfs group14 set security-association lifetime kilobytes unlimited set security-association lifetime seconds 3600 crypto ikev2 policy 1 encryption aes-256 aes-192 aes integrity sha256 group 5 prf sha256 lifetime seconds 86400 tunnel-group 198.51.100.2 type ipsec-l2l tunnel-group 198.51.100.2 ipsec-attributes isakmp keepalive threshold 30 retry 10 ikev2 remote-authentication pre-shared-key ... ikev2 local-authentication pre-shared-key ... crypto ikev2 enable outside interface Tunnel7 nameif l2l-ams1-vpn2 ip address 169.254.100.2 255.255.255.252 tunnel source interface outside tunnel destination 198.51.100.2 tunnel mode ipsec ipv4 tunnel protection ipsec profile IPSEC-PROFILE-AMS1-VPN2 

A estrutura das configurações é aproximadamente a mesma nos dois roteadores, mas, como sempre, os nomes das seções não coincidem.Vamos ver o que corresponde ao quê.

Comparação de configuração


Política / proposta de IKE


 crypto ikev2 policy 1 encryption aes-256 aes-192 aes integrity sha256 group 5 prf sha256 lifetime seconds 86400 

 set security ike proposal SHA256-AES128-5-86400 description ike-phase1-proposal1 set security ike proposal SHA256-AES128-5-86400 authentication-method pre-shared-keys set security ike proposal SHA256-AES128-5-86400 dh-group group5 set security ike proposal SHA256-AES128-5-86400 authentication-algorithm sha-256 set security ike proposal SHA256-AES128-5-86400 encryption-algorithm aes-128-cbc set security ike proposal SHA256-AES128-5-86400 lifetime-seconds 86400 set security ike policy IKE-ASA mode main set security ike policy IKE-ASA proposals SHA256-AES128-5-86400 set security ike policy IKE-ASA pre-shared-key ascii-text ... 

Aqui começa alguma confusão na terminologia. O que a Cisco chama de política IKE, a Juniper tem a Proposta IKE. E a política IKE da Juniper é semelhante ao grupo de túneis da ASA ... Pessoalmente, gosto mais da abordagem Juniper, mas aqui, é claro, é uma questão de hábito.

Devo dizer que configurar o IKEv2 (especialmente com base em rotas) no ASA ainda parece muito mais lógico do que mapas de criptografia e a outra desgraça que era antes.

Política / proposta de IPSec


 crypto ipsec ikev2 ipsec-proposal SHA256-AES128 protocol esp encryption aes-256 aes-192 aes protocol esp integrity sha-256 crypto ipsec profile IPSEC-PROFILE-SHA256-AES128-3600-14 set ikev2 ipsec-proposal SHA256-AES128 set pfs group14 set security-association lifetime kilobytes unlimited set security-association lifetime seconds 3600 

 set security ipsec proposal SHA256-AES128-3600 description ipsec-phase2-proposal set security ipsec proposal SHA256-AES128-3600 protocol esp set security ipsec proposal SHA256-AES128-3600 authentication-algorithm hmac-sha-256-128 set security ipsec proposal SHA256-AES128-3600 encryption-algorithm aes-128-cbc set security ipsec proposal SHA256-AES128-3600 lifetime-seconds 3600 set security ipsec policy SHA256-AES128-3600-14-policy description SHA256-AES128-3600-14-policy set security ipsec policy SHA256-AES128-3600-14-policy perfect-forward-secrecy keys group14 set security ipsec policy SHA256-AES128-3600-14-policy proposals SHA256-AES128-3600 

Aqui, os dois fornecedores fazem mais ou menos da mesma maneira - primeiro criamos uma proposta com parâmetros de criptografia / autenticação e depois penduramos a vida útil e os pfs nela.

Gateway


 tunnel-group 198.51.100.2 type ipsec-l2l tunnel-group 198.51.100.2 ipsec-attributes isakmp keepalive threshold 30 retry 10 ikev2 remote-authentication pre-shared-key ... ikev2 local-authentication pre-shared-key ... 

 set security ike gateway GW-ASA ike-policy IKE-ASA-LEGAL set security ike gateway GW-ASA address 192.0.2.2 set security ike gateway GW-ASA dead-peer-detection interval 10 set security ike gateway GW-ASA dead-peer-detection threshold 3 set security ike gateway GW-ASA local-identity inet 198.51.100.2 set security ike gateway GW-ASA external-interface ae0.4 set security ike gateway GW-ASA version v2-only 

E aqui as diferenças são mais pronunciadas. No ASA PSK é indicado diretamente nas configurações do mesmo nível. O Juniper permite que você especifique a interface de saída e opções adicionais como identidade local, além de se referir à política do ike (onde especificamos o PSK).

A propósito, se você deseja converter IKEv2 em IKEv1 no ASA (e vice-versa), a Cisco precisará recriar todo o grupo de túneis. E no SRX, basta alterar uma opção. (Opções verdadeiras e incompatíveis podem surgir mais tarde com o commit, mas esses são os detalhes)

VPN / VTI


 interface Tunnel7 nameif l2l-ams1-vpn2 ip address 169.254.100.2 255.255.255.252 tunnel source interface outside tunnel destination 198.51.100.2 tunnel mode ipsec ipv4 tunnel protection ipsec profile IPSEC-PROFILE-SHA256-AES128-3600-14 

 set security ipsec vpn VPN-ASA bind-interface st0.7 set security ipsec vpn VPN-ASA df-bit clear set security ipsec vpn VPN-ASA vpn-monitor source-interface st0.7 set security ipsec vpn VPN-ASA vpn-monitor destination-ip 169.254.100.2 set security ipsec vpn VPN-ASA ike gateway GW-ASA set security ipsec vpn VPN-ASA ike ipsec-policy SHA256-AES128-3600-14-policy set security ipsec vpn VPN-ASA establish-tunnels immediately set interfaces st0 unit 7 description "AnyConnect router" set interfaces st0 unit 7 family inet mtu 1436 set interfaces st0 unit 7 family inet address 169.254.100.1/30 

E, novamente, a configuração do Juniper me parece mais lógica. A VPN é configurada separadamente (também pode ser baseada em políticas), o próprio túnel de segurança é separado. Agradecimentos especiais para os "estabelecer túneis imediatamente". Uma opção muito útil;) (tsiskovody entende o que quero dizer). Outro "bônus" do SRX é que é possível criar IPSecs multiponto, ambos com detecção automática de pares (infelizmente, ele funciona apenas entre SRXs) e com roteamento manual. Obviamente, isso não é um DMVPN completo, mas a vida em configurações como “um centro - muitos ramos” facilita muito.

Interfaces


Vou abordar separadamente a configuração das interfaces nas quais o IPSec é construído. Para Juniper é, respectivamente, ae0.4 , para ASA está fora

 crypto ikev2 enable outside 

 set security zones security-zone ZONE-INTERNET interfaces ae0.4 host-inbound-traffic system-services ike set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic system-services ping set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic system-services traceroute set security zones security-zone ZONE-VPN interfaces st0.7 host-inbound-traffic protocols bgp 

Nas interfaces, é necessário ativar o ike, caso contrário, nada funcionará :) Além disso, para o SRX, é necessário ativar o bgp / ospf / o que for para conexões de entrada na interface st0.x.

Configurar BGP


Tudo é bastante banal aqui (por um lado)

 set protocols bgp group ASA type external set protocols bgp group ASA description "AnyConnect router" set protocols bgp group ASA hold-time 30 set protocols bgp group ASA import IMPORT-EBGP-ASA set protocols bgp group ASA export EXPORT-EBGP-ASA set protocols bgp group ASA local-as 64666 set protocols bgp group ASA neighbor 169.254.100.2 peer-as 65001 set policy-options policy-statement EXPORT-EBGP-ASA term 0 from route-filter 10.0.0.0/8 exact set policy-options policy-statement EXPORT-EBGP-ASA term 0 then accept set policy-options policy-statement EXPORT-EBGP-ASA term 1 then reject set policy-options policy-statement IMPORT-EBGP-ASA term 1 then reject 

No ASA, damos o prefixo agregado da nossa LAN - eu terei 10/8. Não aceitamos nada do ASA, porque a partir da versão 9.8.4 do software você ainda não pode anunciar os endereços das interfaces de gerenciamento (o que é compreensível) e o BVI (o que é muito inconveniente) via BGP. Mas se você tiver outras redes por trás do ASA, precisará adicioná-las à política, é claro.

 asa(config-router-af)# network 10.255.32.252 mask 255.255.255.254 ERROR: BGP configuration not supported on management-only/BVI interface 

Para "ver" a interface interna, você precisará registrar uma rota estática no SRX em direção ao ipsec:

 set routing-options static route 10.255.32.252/31 next-hop 169.254.100.2 

Além disso, o ASA ainda não sabe como fazer um loopback de interfaces, portanto enviaremos todo o / netflow e outros logs de dentro.

O ASA5506 possui um switch interno, para que você possa usar a interface BVI virtual (especialmente útil quando você possui um esquema de roteador no stick e apenas uma porta física é usada.

 interface BVI1 nameif inside security-level 100 ip address 10.255.32.253 255.255.255.254 management-access inside 

Depois disso, nos lugares certos (registro, snmp, fluxo), você precisará especificar `inside` como a interface de origem.

Se algo der errado, também conhecido como solução de problemas


IKE / IPSec


Primeiro, você deve instalar as duas fases do IPSec (para Juniper, na verdade, é IKE / IPSec).

Nós olhamos:

 admin@srx> show security ike security-associations Index State Initiator cookie Responder cookie Mode Remote Address 2128190 UP ae7d7d447326218a 2be3b3004ae0e36a IKEv2 192.0.2.2 admin@srx> show security ipsec security-associations Total active tunnels: 6 ID Algorithm SPI Life:sec/kb Mon lsys Port Gateway <131077 ESP:aes-cbc-128/sha256 fec3c7d1 2867/ unlim U root 500 192.0.2.2 >131077 ESP:aes-cbc-128/sha256 74d792ca 2867/ unlim U root 500 192.0.2.2 

No ASA:

 asa# sho crypto ikev2 sa IKEv2 SAs: Session-id:5, Status:UP-ACTIVE, IKE count:1, CHILD count:1 Tunnel-id Local Remote Status Role 585564345 192.0.2.2/500 198.51.100.2/500 READY RESPONDER Encr: AES-CBC, keysize: 128, Hash: SHA256, DH Grp:5, Auth sign: PSK, Auth verify: PSK Life/Active Time: 86400/47018 sec Child sa: local selector 0.0.0.0/0 - 255.255.255.255/65535 remote selector 0.0.0.0/0 - 255.255.255.255/65535 ESP spi in/out: 0xc989d9ea/0xcca8b6d5 

No Juniper, você ainda pode ver estatísticas no túnel ipsec, incluindo os motivos da queda:

 admin@srx> show security ipsec security-associations index 131078 detail ID: 131078 Virtual-system: root, VPN Name: VPN-ASA-LEGAL-PL Local Gateway: 198.51.100.2, Remote Gateway: 192.0.2.2 Local Identity: ipv4_subnet(any:0,[0..7]=0.0.0.0/0) Remote Identity: ipv4_subnet(any:0,[0..7]=0.0.0.0/0) Version: IKEv2 DF-bit: clear, Copy-Outer-DSCP Disabled, Bind-interface: st0.7 Port: 500, Nego#: 734, Fail#: 0, Def-Del#: 0 Flag: 0x600a29 Tunnel events: Mon Dec 09 2019 13:40:35: IPSec SA rekey successfully completed (48 times) Mon Dec 09 2019 00:30:47: IKE SA rekey successfully completed (10 times) Fri Nov 29 2019 02:13:55: IPSec SA negotiation successfully completed (1 times) Fri Nov 29 2019 02:13:55: IKE SA negotiation successfully completed (1 times) Fri Nov 29 2019 02:13:55: No response from peer. Negotiation failed (7 times) Fri Nov 29 2019 02:10:14: DPD detected peer as down. Existing IKE/IPSec SAs cleared (1 times) Fri Nov 29 2019 01:39:15: IPSec SA rekey successfully completed (1 times) Fri Nov 29 2019 00:49:50: IPSec SA negotiation successfully completed (1 times) Fri Nov 29 2019 00:49:50: IKE SA negotiation successfully completed (1 times) Fri Nov 29 2019 00:49:30: No response from peer. Negotiation failed (23 times) Fri Nov 29 2019 00:37:24: DPD detected peer as down. Existing IKE/IPSec SAs cleared (1 times) Fri Nov 29 2019 00:30:00: IPSec SA rekey successfully completed (77 times) Thu Nov 28 2019 20:11:31: IKE SA rekey successfully completed (7 times) Tue Nov 26 2019 08:51:44: IPSec SA negotiation successfully completed (1 times) Thu Nov 21 2019 21:24:32: IKE SA negotiation successfully completed (1 times) Thu Nov 21 2019 01:06:27: IKE SA rekey successfully completed (6 times) Direction: inbound, SPI: 4bd2e2bd, AUX-SPI: 0 , VPN Monitoring: UP Hard lifetime: Expires in 3132 seconds Lifesize Remaining: Unlimited Soft lifetime: Expires in 2495 seconds Mode: Tunnel(10 10), Type: dynamic, State: installed Protocol: ESP, Authentication: hmac-sha256-128, Encryption: aes-cbc (128 bits) Anti-replay service: counter-based enabled, Replay window size: 64 Direction: outbound, SPI: 504f306e, AUX-SPI: 0 , VPN Monitoring: UP Hard lifetime: Expires in 3132 seconds Lifesize Remaining: Unlimited Soft lifetime: Expires in 2495 seconds Mode: Tunnel(10 10), Type: dynamic, State: installed Protocol: ESP, Authentication: hmac-sha256-128, Encryption: aes-cbc (128 bits) Anti-replay service: counter-based enabled, Replay window size: 64 

Se tudo estiver em ordem com o IPSec, será necessário examinar a ACL (políticas de segurança, regras de entrada do host etc.). Em casos extremos, você pode tentar recarregar a caixa (ASA) - que costumava me ajudar.
UPD: Sobre a depuração do IPsec no Juniper que eu já designei ao Habr

BGP


Tudo é bastante padrão aqui - se a sessão não estiver instalada, você poderá ver através da captura se o BGP-hello está voando nas duas direções.

Total


Isso é tudo. Não sei se o novo software é o culpado ou se as estrelas se uniram assim - mas o túnel ASA <> SRX mantém-se estável e não cai uma vez por dia, como era antes.

Espero que você tenha sucesso também!

Source: https://habr.com/ru/post/pt481620/


All Articles