Exemplo: Configure um filtro para bloquear o acesso à Telnet e SSH
Requisitos
Você precisa de dois dispositivos em execução Junos OS com um link de rede compartilhado. Nenhuma configuração especial além da inicialização básica de dispositivos (interface de gerenciamento, acesso remoto, contas de login do usuário etc.) é necessário antes de configurar este exemplo. Embora não seja um requisito rigoroso, o acesso ao console ao dispositivo R2 é recomendado.
Nossa equipe de testes de conteúdo validou e atualizou este exemplo.
Visão geral e topologia
Neste exemplo, você cria um filtro de firewall stateless IPv4 que registra e rejeita pacotes Telnet ou SSH enviados ao mecanismo de roteamento local, a menos que o pacote se o origine da sub-rede 192.168.1.0/30 . O filtro é aplicado à interface de loopback para garantir que apenas o tráfego destinado ao dispositivo local seja afetado. Você aplica o filtro na direção de entrada. Um filtro de saída não é usado. Como resultado, todo o tráfego gerado localmente é permitido.
-
Para combinar pacotes originados de uma sub-rede específica ou prefixo IP, você usa a
source-address
condição de correspondência IPv4 aplicada na direção de entrada. -
Para combinar pacotes destinados à porta Telnet e portas SSH, você usa a condição de
protocol tcp
correspondência combinada comport telnet
condições de correspondência IPv4 eport ssh
aplicadas na direção de entrada.
Topologia de exemplo
Figura 1 mostra a topologia de teste para este exemplo. O filtro de firewall é aplicado ao dispositivo R2, tornando-o o dispositivo em teste (DUT). O R1 e os dispositivos R2 compartilham um link que é atribuído a uma sub-rede de 192.168.1.0/30. Ambos os dispositivos têm endereços de loopback atribuídos a partir do prefixo 192.168.255.0/30 usando uma máscara de sub-rede /32. Rotas estáticas oferecem acessibilidade entre endereços de loopback porque um protocolo de gateway interior não está configurado neste exemplo básico.
Configuração
O exemplo a seguir exige que você navegue por vários níveis na hierarquia de configuração. Para obter informações sobre como navegar na CLI, consulte Usando o Editor de CLI no modo de configuração.
Ao projetar o filtro de amostra, o acesso de Telnet e SSH ao R2, a menos que se origine da sub-rede compartilhada na R1. Se você usar SSH ou Telnet para acessar diretamente o dispositivo R2, você perderá a conectividade quando o filtro for aplicado. Recomendamos que você tenha acesso ao console ao configurar este exemplo. Se necessário, você pode usar o dispositivo R1 como um host de salto para lançar uma sessão de SSH ao R2 após a aplicação do filtro. Alternativamente, considere modificar o filtro de amostra para também permitir que a sub-rede IP atribuída à máquina que você usa acesse o dispositivo R2.
Execute as seguintes tarefas para configurar este exemplo:
- Configuração rápida da CLI
- Configure o dispositivo R1
- Verifique e confirme a configuração no dispositivo R1
- Configure o dispositivo R2
- Verifique e confirme a configuração no dispositivo R2
Configuração rápida da CLI
Configuração rápida para o dispositivo R1
Para configurar rapidamente o dispositivo R1, edite os seguintes comandos conforme necessário e cole-os no CLI no [edit]
nível de hierarquia. Certifique-se de emitir um commit
modo de configuração para ativar as mudanças.
set system host-name R1 set system services ssh root-login allow set interfaces ge-0/0/0 description "Link from R1 to R2" set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.1/30 set interfaces lo0 unit 0 family inet address 192.168.255.1/32 set routing-options static route 192.168.255.2/32 next-hop 192.168.1.2
Configuração rápida para o dispositivo R2
Para configurar rapidamente o dispositivo R2, edite os seguintes comandos conforme necessário e cole-os no CLI no nível de [edit]
hierarquia. Certifique-se de emitir um commit
modo de configuração para ativar as mudanças.
Considere usar commit-confirmed
ao fazer alterações que possam afetar o acesso remoto ao seu dispositivo. Ativando uma configuração do Junos OS, mas exigindo confirmação
set system host-name R2 set system services ssh root-login allow set system services telnet set interfaces ge-0/0/0 description "Link from R2 to R1" set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.2/30 set interfaces lo0 unit 0 family inet filter input local_acl set interfaces lo0 unit 0 family inet address 192.168.255.2/32 set firewall family inet filter local_acl term terminal_access from source-address 192.168.1.0/30 set firewall family inet filter local_acl term terminal_access from protocol tcp set firewall family inet filter local_acl term terminal_access from port ssh set firewall family inet filter local_acl term terminal_access from port telnet set firewall family inet filter local_acl term terminal_access then accept set firewall family inet filter local_acl term terminal_access_denied from protocol tcp set firewall family inet filter local_acl term tcp-estab from protocol tcp set firewall family inet filter local_acl term tcp-estab from tcp-established set firewall family inet filter local_acl term tcp-estab then accept set firewall family inet filter local_acl term terminal_access_denied from port ssh set firewall family inet filter local_acl term terminal_access_denied from port telnet set firewall family inet filter local_acl term terminal_access_denied then log set firewall family inet filter local_acl term terminal_access_denied then reject set firewall family inet filter local_acl term default-term then accept set routing-options static route 192.168.255.1/32 next-hop 192.168.1.1
Configure o dispositivo R1
Procedimento passo a passo
Siga essas etapas para configurar o dispositivo R1:
-
Configure as interfaces:
[edit] user@R1# set interfaces ge-0/0/0 description "Link from R1 to R2" user@R1# set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.1/30 user@R1# set interfaces lo0 unit 0 family inet address 192.168.255.1/32
-
Configure o nome do host e a rota estática para o endereço loopback do dispositivo R2. Você também configura o acesso à Telnet e SSH:
[edit] user@R1# set system host-name R1 user@R1# set system services ssh root-login allow user@R1# set system services telnet user@R1# set routing-options static route 192.168.255.2/32 next-hop 192.168.1.2
Verifique e confirme a configuração no dispositivo R1
Procedimento passo a passo
Preencha as seguintes etapas para verificar e comprometer a configuração do candidato no dispositivo R1:
-
Confirme a configuração da interface com o comando do
show interfaces
modo de configuração. Se a saída de comando não exibir a configuração pretendida, repita as instruções neste exemplo para corrigir a configuração.[edit] user@R1# show interfaces ge-0/0/0 { description "Link from R1 to R2"; unit 0 { family inet { address 192.168.1.1/30; } } } lo0 { unit 0 { family inet { address 192.168.255.1/32; } } }
-
Verifique a rota estática usada para alcançar o endereço loopback do dispositivo R2 e se o acesso SSH e Telnet está habilitado. Use os comandos do
show routing-options
modo eshow system services
configuração. Se a saída de comando não exibir a configuração pretendida, repita as instruções neste exemplo para corrigir a configuração.[edit] user@R1# show routing-options static { route 192.168.255.2/32 next-hop 192.168.1.2; } user@R1# show system services ssh { root-login allow; } telnet;
-
Quando satisfeito com a configuração no dispositivo R1, comprometa a configuração do seu candidato.
[edit] user@R1# commit
Configure o dispositivo R2
Procedimento passo a passo
Preencha as seguintes etapas para configurar o dispositivo R2. Você começa definindo o filtro de firewall sem estado que bloqueia seletivamente o acesso à Telnet e ao SSH:
-
Posicione-se na
edit firewall family inet filter
local_acl hierarquia:[edit] user@R2# edit firewall family inet filter local_acl
-
Definir o termo terminal_accessfiltro. Este termo permite que a Telnet e a SSH a partir do(s) prefixo(s) de origem especificado:
[edit firewall family inet filter local_acl] user@R2# set term terminal_access from source-address 192.168.1.0/30 user@R2# set term terminal_access from protocol tcp user@R2# set term terminal_access from port ssh user@R2# set term terminal_access from port telnet user@R2# set term terminal_access then accept
-
Definir o termo terminal_access_deniedfiltro. Este termo rejeita SSH e Telnet de todos os outros endereços de origem. Este termo é configurado para registrar correspondências ao termo e gerar uma resposta explícita do Protocolo de Mensagem de Controle de Internet (ICMP) de volta à fonte do pacote. Veja ações de registro de filtros de firewall para obter detalhes sobre opções de registro de filtros.
Dica:Você pode usar a ação
discard
para suprimir a geração de mensagens de erro do ICMP de volta à fonte. Consulte ações de terminação do filtro de firewall para obter mais detalhes.[edit firewall family inet filter local_acl] user@R2# set term terminal_access_denied from protocol tcp user@R2# set term terminal_access_denied from port ssh user@R2# set term terminal_access_denied from port telnet user@R2# set term terminal_access_denied then log user@R2# set term terminal_access_denied then reject user@R2# set term default-term then accept
- Opcional.
Definir o termo tcp-estabfiltro. Este termo permite o acesso de saída à Internet para oferecer suporte a conexões à nuvem Juniper Mist (tcp-established é uma condição de jogo de campo pequeno, tcp-flags "(ack | rst)"que indica uma sessão TCP estabelecida, mas não o primeiro pacote de uma conexão TCP):
[edit firewall family inet filter local_acl] user@R2# set term tcp-estab from protocol tcp user@R2# set term tcp-estab from tcp-established user@R2# set term tcp-estab then accept
-
Definir o termo default-termfiltro. Este termo aceita todos os outros tráfegos. Lembre-se que Junos OS os filtros sem estado têm um termo de negação implícito no final. A default-term substituição desse comportamento ao encerrar o filtro com uma ação de aceitação explícita. O término do filtro resulta em todos os outros tráfegos sendo aceitos pelo filer.
Nota:Por este exemplo, estamos permitindo todo o outro tráfego, mas para sua rede você pode querer proteger o mecanismo de roteamento. Consulte a proteção do mecanismo de roteamento para obter mais informações.
[edit firewall family inet filter local_acl] user@R2# set term default-term then accept
-
Configure a interface de loopback e aplique o filtro na direção de entrada:
[edit] user@R2# set interfaces lo0 unit 0 family inet filter input local_acl user@R2# set interfaces lo0 unit 0 family inet address 192.168.255.2/32
-
Configure o nome do host, a interface ge-0/0/0, a rota estática para o endereço loopback do dispositivo R1 e habilite o acesso remoto por SSH e Telnet:
[edit] user@R2# set system host-name R2 user@R2# set system services ssh root-login allow user@R2# set system services telnet user@R2# set interfaces ge-0/0/0 description "Link from R2 to R1" user@R2# set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.2/30 user@R2# set routing-options static route 192.168.255.1/32 next-hop 192.168.1.1
Verifique e confirme a configuração no dispositivo R2
Procedimento passo a passo
Preencha as seguintes etapas para verificar e confirmar a configuração do seu candidato no dispositivo R2:
-
Confirme a configuração do filtro de firewall sem estado com o comando do
show firewall
modo de configuração. Se a saída de comando não exibir a configuração pretendida, repita as instruções neste exemplo para corrigir a configuração.[edit] user@R2# show firewall family inet { filter local_acl { term terminal_access { from { source-address { 192.168.1.0/30; } protocol tcp; port [ssh telnet]; } then accept; } term terminal_access_denied { from { protocol tcp; port [ssh telnet]; } then { log; reject; } } term default-term { then accept; } } }
-
Confirme a configuração da interface e filtre o aplicativo com o comando do
show interfaces
modo de configuração. Se a saída de comando não exibir a configuração pretendida, repita as instruções neste exemplo para corrigir a configuração.[edit] user@R2# show interfaces ge-0/0/0 { description "Link from R2 to R1"; unit 0 { family inet { address 192.168.1.2/30; } } } lo0 { unit 0 { family inet { filter { input local_acl; } address 192.168.255.2/32; } } }
-
Verifique a rota estática usada para alcançar o endereço de loopback do dispositivo R1 e verifique se o acesso Telnet e SSH está habilitado. Use os comandos do
show routing-options
modo eshow system services
configuração. Se a saída de comando não exibir a configuração pretendida, repita as instruções neste exemplo para corrigir a configuração.[edit] user@R2# show routing-options static { route 192.168.255.1/32 next-hop 192.168.1.1; } user@R2# show system services ssh { root-login allow; } telnet;
-
Quando satisfeito com a configuração no dispositivo R2, comprometa a configuração do seu candidato.
Dica:Considere usar
commit-confirmed
ao fazer alterações que possam afetar o acesso remoto ao seu dispositivo.[edit] user@R2# commit
Verifique o filtro de firewall sem estado
Confirme que o filtro de firewall para limitar o acesso à Telnet e SSH está funcionando corretamente.
Verificar pacotes aceitos
Propósito
Verifique se o filtro de firewall permite a SSH e a Telnet corretamente quando o tráfego é originado a partir da sub-rede 192.168.1.0/30 .
Ação
-
Libere o log de firewall em seu roteador ou switch.
user@R2> clear firewall log
-
De um host em um endereço IP dentro da sub-rede 192.168.1.0/30 , use um
ssh 192.168.255.2
comando para verificar se você pode fazer login no dispositivo usando SSH a partir de um endereço de origem permitido. Este pacote deve ser aceito, mas as informações de cabeçalho de pacote para este pacote não devem ser registradas no buffer de log de filtro de firewall no Mecanismo de encaminhamento de pacotes. Você será solicitado a salvar a chave de host SSH se este for o primeiro login SSH como user entre esses dispositivos.Nota:Por padrão, o dispositivo R1 obterá o tráfego SSH da interface de saída usada para chegar ao destino. Como resultado, esse tráfego é originado do endereço 192.168.1.1 atribuído à interface ge-0/0/0 do dispositivo R1.
user@R1>ssh 192.168.255.2 Password: Last login: Wed Aug 19 09:23:58 2020 from 192.168.1.1 --- JUNOS 20.2R1.10 Kernel 64-bit JNPR-11.0-20200608.0016468_buil user@R2>
-
Faça o login da CLI no dispositivo R2 para fechar a sessão de SSH.
user@R2> exit logout Connection to 192.168.255.2 closed. user@R1>
-
De um host em um endereço IP dentro da sub-rede 192.168.1.0/30 , use o
telnet 192.168.255.2
comando para verificar se você pode fazer login no seu roteador ou switch usando a Telnet a partir de um endereço de origem permitido. Este pacote deve ser aceito, mas as informações de cabeçalho de pacote para este pacote não devem ser registradas no buffer de log de filtro de firewall no Mecanismo de encaminhamento de pacotes.user@host-A> telnet 192.168.255.2 Trying 192.168.255.2... Connected to 192.168.255.2. Escape character is '^]'. login: user Password: --- JUNOS 20.2R1.10 Kernel 64-bit JNPR-11.0-20200608.0016468_buil user@R2>
-
Faça login na CLI para fechar a sessão da Telnet ao dispositivo R2.
user@R2:~ # exit Connection closed by foreign host. root@R1>
-
Use o
show firewall log
comando para verificar se o buffer de log de firewall no Mecanismo de encaminhamento de pacotes (PFE) do dispositivo R2 não contém nenhuma entrada com um endereço fonte na sub-rede 192.168.1.0/30 .user@R2> show firewall log
Verificar pacotes logados e rejeitados
Propósito
Verifique se o filtro de firewall rejeita corretamente o tráfego SSH e Telnet que não se origina da sub-rede 192.168.1.0/30 .
Ação
-
Libere o log de firewall em seu roteador ou switch.
user@R2> clear firewall log
-
Gere tráfego SSH originado no endereço de loopback do dispositivo R1. O endereço fonte desse tráfego está fora da sub-rede 192.168.1.0/30 permitida. Use o
ssh 192.168.255.2 source 192.168.255.1
comando para verificar se você não pode fazer login no dispositivo usando SSH a partir deste endereço de origem. Este pacote deve ser rejeitado, e as informações de cabeçalho de pacote devem ser registradas no buffer de log do filtro de firewall.user@R1 ssh 192.168.255.2 source 192.168.255.1 ssh: connect to host 192.168.255.2 port 22: Connection refused root@R1>
A saída mostra que a conexão SSH é recusada. Essa saída confirma que o filtro está gerando uma mensagem de erro do ICMP e que bloqueia corretamente o tráfego SSH quando enviado de um endereço de origem não permitido.
-
Gere tráfego Telnet originado no endereço de loopback do dispositivo R1. O endereço fonte desse tráfego está fora da sub-rede 192.168.1.0/30 permitida. Use o
telnet 192.168.255.2 source 192.168.255.1
comando para verificar se você não pode fazer login no dispositivo usando a Telnet a partir deste endereço fonte. Este pacote deve ser rejeitado, e as informações de cabeçalho de pacote para este pacote devem ser registradas no buffer de log de filtro de firewall no PFE.user@R1> telnet 192.168.255.2 source 192.168.255.1 Trying 192.168.255.2... telnet: connect to address 192.168.255.2: Connection refused telnet: Unable to connect to remote host
A saída mostra que a conexão Telnet foi recusada. Essa saída confirma que o filtro está gerando uma mensagem de erro do ICMP e que bloqueia corretamente o tráfego da Telnet quando enviado de um endereço de origem não permitido.
-
Use o
show firewall log
comando para verificar se o buffer de log de firewall no dispositivo R2 contém entradas mostrando que os pacotes com um endereço fonte de 192.168.255.1 foram rejeitados .user@R2> show firewall log Log : Time Filter Action Interface Protocol Src Addr Dest Addr 15:17:11 pfe R ge-0/0/0.0 TCP 192.168.255.1 192.168.255.2 15:12:04 pfe R ge-0/0/0.0 TCP 192.168.255.1 192.168.255.2
A saída confirma que o tráfego do endereço fonte 192.168.255.1 correspondia ao termo do terminal_access_denied filtro. A
Action
coluna exibe uma indicaçãoR
de que esses pacotes foram rejeitados. A interface, o protocolo de transporte e os endereços de origem e destino também estão listados. Esses resultados confirmam que o filtro de firewall está funcionando corretamente para este exemplo.