Stateful Firewalls
Visão geral do Junos Network Secure
Os roteadores usam firewalls para rastrear e controlar o fluxo de tráfego. Os PICs de serviços adaptativos e multisserviços empregam um tipo de firewall chamado . Em contraste com um firewall que inspeciona pacotes isoladamente, um firewall stateful fornece uma camada extra de segurança usando informações de estado derivadas de comunicações passadas e outros aplicativos para tomar decisões de controle dinâmico para novas tentativas de comunicação.
Nos roteadores da Série ACX, a configuração de firewall stateful é suportada apenas nos roteadores internos ACX500.
Firewalls stateful agrupam relevantes em . Um fluxo é identificado pelas cinco propriedades a seguir:
Endereço de origem
Porta de origem
Endereço de destino
Porta de destino
Protocolo
Uma conversa típica do Protocolo de Controle de Transmissão (TCP) ou do Protocolo de datagrama de usuário (UDP) consiste em dois fluxos: o fluxo de iniciação e o fluxo de resposta. No entanto, algumas conversas, como uma conversa FTP, podem consistir em dois fluxos de controle e muitos fluxos de dados.
As regras de firewall determinam se a conversa pode ser estabelecida. Se uma conversa for permitida, todos os fluxos dentro da conversa serão permitidos, incluindo fluxos criados durante o ciclo de vida da conversa.
Você configura firewalls stateful usando um poderoso caminho de tratamento de conversas orientado por regras. A consiste em direção, endereço de origem, porta de origem, endereço de destino, porta de destino, valor do protocolo IP e protocolo ou serviço de aplicativo. Além dos valores específicos que você configura, você pode atribuir o valor any a objetos de regra, endereços ou portas, o que permite que eles correspondam a qualquer valor de entrada. Por fim, você pode, opcionalmente, negar os objetos de regra, o que nega o resultado da correspondência específica do tipo.
As regras de firewall são direcionais. Para cada nova conversa, o software do roteador verifica o fluxo de iniciação correspondente à direção especificada pela regra.
As regras de firewall são ordenadas. O software verifica as regras na ordem em que você as inclui na configuração. Na primeira vez que o firewall descobre uma correspondência, o roteador implementa a ação especificada por essa regra. As regras ainda não verificadas são ignoradas.
A partir do Junos OS Release 14.2, as placas de interface MS-MPC e MS-MIC oferecem suporte ao tráfego IPv6 para o Junos Network Secure Firewall com estado.
Para obter mais informações, consulte Configurando regras de Firewall com estado.
- Suporte a Firewall com estado para protocolos de aplicativos
- Verificação de anomalias de Firewall com estado
Suporte a Firewall com estado para protocolos de aplicativos
Ao inspecionar os dados do protocolo do aplicativo, o firewall AS ou MultiServices PIC pode aplicar políticas de segurança de forma inteligente e permitir que apenas o tráfego mínimo de pacotes necessário flua pelo firewall.
As regras de firewall são configuradas em relação a uma interface. Por padrão, o firewall stateful permite que todas as sessões iniciadas a partir dos hosts por trás da interface passem pelo roteador.
Firewall stateful ALGs não são suportados em roteadores ACX500.
Verificação de anomalias de Firewall com estado
O firewall stateful reconhece os seguintes eventos como anomalias e os envia ao software IDS para processamento:
Anomalias de IP:
A versão IP não está correta.
O campo de comprimento do cabeçalho IP é muito pequeno.
O comprimento do cabeçalho IP é definido como maior do que todo o pacote.
Checksum de cabeçalho incorreto.
O campo de comprimento total do IP é menor que o comprimento do cabeçalho.
O pacote tem opções de IP incorretas.
Erro de comprimento de pacote do Internet Control Message Protocol (ICMP).
O tempo de vida (TTL) é igual a 0.
Anomalias de endereço IP:
A fonte de pacote IP é um broadcast ou multicast.
Ataque terrestre (IP de origem é igual a IP de destino).
Anomalias de fragmentação de IP:
Sobreposição de fragmento de IP.
Fragmento de IP perdido.
Erro de comprimento do fragmento de IP.
O comprimento do pacote IP é superior a 64 kilobytes (KB).
Ataque de fragmento minúsculo.
Anomalias de TCP:
Porta TCP 0.
Número de sequência TCP 0 e sinalizadores 0.
Número de sequência TCP 0 e sinalizadores FIN/PSH/RST definidos.
Sinalizadores TCP com combinação errada (TCP FIN/RST ou SYN/(URG|FIN|RST).
Checksum TCP incorreto.
Anomalias de UDP:
Porta de origem ou destino UDP 0.
Falha na verificação do comprimento do cabeçalho UDP.
Checksum UDP incorreto.
Anomalias encontradas por meio de verificações TCP ou UDP stateful:
SYN seguido por pacotes SYN-ACK sem ACK do iniciador.
SYN seguido por pacotes RST.
SYN sem SYN-ACK.
Primeiro pacote de fluxo não SYN.
Erros ICMP inalcançáveis para pacotes SYN.
Erros ICMP inalcançáveis para pacotes UDP.
Pacotes descartados de acordo com regras de firewall stateful.
Os roteadores ACX500 não oferecem suporte a anomalias de fragmentação de IP.
Se você empregar a detecção de anomalias stateful em conjunto com a detecção stateless, o IDS poderá fornecer um aviso antecipado para uma ampla variedade de ataques, incluindo:
Sondagens de rede TCP ou UDP e varredura de portas
Ataques de inundação de SYN
Ataques baseados em fragmentação de IP, como teardrop, bonk e boink
Configuração de regras de Firewall com estado
Para configurar uma regra de firewall stateful, inclua a rule rule-name declaração no nível da [edit services stateful-firewall] hierarquia:
[edit services stateful-firewall] rule rule-name { match-direction (input | output | input-output); term term-name { from { application-sets set-name; applications [ application-names ]; destination-address (address | any-ipv4 | any-ipv6 | any-unicast) <except>; destination-address-range low minimum-value high maximum-value <except>; destination-prefix-list list-name <except>; source-address (address | any-ipv4 | any-ipv6 | any-unicast) <except>; source-address-range low minimum-value high maximum-value <except>; source-prefix-list list-name <except>; } then { (accept <skip-ids>| discard | reject); allow-ip-options [ values ]; syslog; } } }
Os roteadores ACX500 não oferecem suporte a aplicativos e conjuntos de aplicativos noedit services stateful-firewall rule rule-name term term-name from nível de [] hierarquia.
Nos roteadores ACX500, para habilitar o syslog, inclua a stateful-firewall-logs CLI declaração no nível deedit services service-set service-set-name syslog host local class [] hierarquia.
edit services stateful-firewall hierarquia não é suportada na série SRX.
Cada regra de firewall stateful consiste em um conjunto de termos, semelhante a um filtro configurado no nível de [edit firewall] hierarquia. Um termo consiste no seguinte:
fromdeclaração — Especifica as condições de correspondência e os aplicativos incluídos e excluídos. Afromdeclaração é opcional em regras de firewall stateful.thendeclaração — Especifica as ações e modificadores de ação a serem executados pelo software do roteador. Athendeclaração é obrigatória em regras de firewall stateful.
Os roteadores da Série ACX500 não suportam o seguinte ao configurar regras de firewall stateful:
match-direction(output | input-output)post-service-filterno nível da hierarquia de entrada do serviço de interface.Endereço de origem e endereço de destino do IPv6.
application-sets,application,allow-ip-optionsno nível deedit services stateful-firewall[] hierarquia.Camada de aplicativo Gateways (ALGs).
Encadeamento de serviços dentro de Multiservices Modular Interfaces Card (MS-MIC) e com inline-services (-si).
Classe de serviço.
Os seguintes
show services stateful-firewallcomandos da CLI não são suportados:show services stateful-firewall conversations—Mostrar conversasshow services stateful-firewall flow-analysis— Mostrar entradas da tabela de fluxoshow services stateful-firewall redundancy-statistics— Mostrar estatísticas de redundânciashow services stateful-firewall sip-call— Mostrar informações de chamada SIPshow services stateful-firewall sip-register— Mostrar informações de registro SIPshow services stateful-firewall subscriber-analysis—Mostrar entradas da tabela do assinante
As seções a seguir explicam como configurar os componentes das regras de firewall stateful:
- Configuração da direção de correspondência para regras de Firewall com estado
- Configuração de condições de correspondência em regras de Firewall com estado
- Configuração de ações em regras de Firewall com estado
Configuração da direção de correspondência para regras de Firewall com estado
Cada regra deve incluir uma match-direction instrução que especifica a direção na qual a correspondência de regra é aplicada. Para configurar onde a correspondência é aplicada, inclua a match-direction declaração no nível da [edit services stateful-firewall rule rule-name] hierarquia:
[edit services stateful-firewall rule rule-name] match-direction (input | output | input-output);
Os roteadores da Série ACX500 não suportam match-direction (output | input-output).
Se você configurar match-direction input-output, as sessões iniciadas de ambas as direções podem corresponder a essa regra.
A direção da correspondência é usada em relação ao fluxo de tráfego pelo AS ou pelo PIC multisserviços. Quando um pacote é enviado ao PIC, as informações de direção são transportadas junto com ele.
Com um conjunto de serviços de interface, a direção do pacote é determinada pelo fato de um pacote estar entrando ou saindo da interface na qual o conjunto de serviços é aplicado.
Com um conjunto de serviços next-hop, a direção do pacote é determinada pela interface usada para rotear o pacote para o AS ou o PIC multisserviços. Se a interface interna for usada para rotear o pacote, a direção do pacote será a entrada. Se a interface externa for usada para direcionar o pacote para o PIC, a direção do pacote será a saída. Para obter mais informações sobre interfaces internas e externas, consulte Configurando conjuntos de serviços a serem aplicados a interfaces de serviços.
No PIC, é realizada uma pesquisa de fluxo. Se nenhum fluxo for encontrado, o processamento da regra será executado. As regras neste conjunto de serviços são consideradas em sequência até que uma correspondência seja encontrada. Durante o processamento da regra, a direção do pacote é comparada com as direções da regra. Somente as regras com informações de direção que correspondem à direção do pacote são consideradas. A maioria dos pacotes resulta na criação de fluxos bidirecionais.
Configuração de condições de correspondência em regras de Firewall com estado
Para configurar condições de correspondência de firewall stateful, inclua a from declaração no nível da [edit services stateful-firewall rule rule-name term term-name] hierarquia:
[edit services stateful-firewall rule rule-name term term-name] from { application-sets set-name; applications [ application-names ]; destination-address (address | any-ipv4 | any-ipv6 | any-unicast) <except>; destination-address-range low minimum-value high maximum-value <except>; destination-prefix-list list-name <except>; source-address (address | any-ipv4 | any-ipv6 | any-unicast) <except>; source-address-range low minimum-value high maximum-value <except>; source-prefix-list list-name <except>; }
Os roteadores ACX500 não oferecem suporte a aplicativos e conjuntos de aplicativos noedit services stateful-firewall rule rule-name term term-name from nível de [] hierarquia.
O endereço de origem e o endereço de destino podem ser IPv4 ou IPv6.
Você pode usar o endereço de origem ou o endereço de destino como uma condição de correspondência, da mesma forma que configuraria um filtro de firewall; para obter mais informações, consulte o Guia do usuário de políticas de roteamento, filtros de firewall e policiais de tráfego. Você pode usar os valores any-unicastcuringa , que denota a correspondência de todos os endereços unicast, any-ipv4, que denota a correspondência de todos os endereços IPv4 ou any-ipv6, que denota a correspondência de todos os endereços IPv6.
Como alternativa, você pode especificar uma lista de prefixos de origem ou destino configurando a prefix-list declaração no nível da [edit policy-options] hierarquia e, em seguida, incluindo a destination-prefix-list ou a source-prefix-list declaração na regra de firewall stateful. Para obter um exemplo, consulte Exemplos: Configuração de regras de Firewall com estado.
Se você omitir o from termo, o firewall stateful aceitará todo o tráfego e os manipuladores de protocolo padrão entrarão em vigor:
O Protocolo de datagrama de usuário (UDP), o protocolo de controle de transmissão (TCP) e o protocolo de mensagem de controle de Internet (ICMP) criam um fluxo bidirecional com um fluxo reverso previsto.
O IP cria um fluxo unidirecional.
Você também pode incluir definições de protocolo de aplicativo que você configurou no nível de [edit applications] hierarquia; para obter mais informações, consulte Configurando propriedades do aplicativo.
Para aplicar uma ou mais definições específicas de protocolo de aplicativo, inclua a
applicationsinstrução no nível de[edit services stateful-firewall rule rule-name term term-name from]hierarquia.Para aplicar um ou mais conjuntos de definições de protocolo de aplicativo que você definiu, inclua a
application-setsinstrução no nível de[edit services stateful-firewall rule rule-name term term-name from]hierarquia.Observação:Se você incluir uma das declarações que especifica protocolos de aplicação, o roteador deriva informações de porta e protocolo da configuração correspondente no
[edit applications]nível de hierarquia; você não pode especificar essas propriedades como condições de correspondência.
Configuração de ações em regras de Firewall com estado
Para configurar ações de firewall stateful, inclua a then declaração no nível da [edit services stateful-firewall rule rule-name term term-name] hierarquia:
[edit services stateful-firewall rule rule-name term term-name] then { (accept | discard | reject); allow-ip-options [ values ]; syslog; }
Você deve incluir uma das seguintes ações:
accept— O pacote é aceito e enviado ao seu destino.accept skip-ids— O pacote é aceito e enviado para seu destino, mas o processamento de regra IDS configurado em um MS-MPC é ignorado.discard— o pacote não é aceito e não é mais processado.reject— O pacote não é aceito e uma mensagem de rejeição é retornada; O UDP envia um código ICMP inalcançável e o TCP envia RST. Os pacotes rejeitados podem ser registrados ou amostrados.
Os roteadores internos ACX500 não suportam a ação accept skip-ids.
Opcionalmente, você pode configurar o firewall para registrar informações no recurso de registro do sistema, incluindo a syslog declaração no nível da [edit services stateful-firewall rule rule-name term term-name then] hierarquia. Essa declaração substitui qualquer syslog configuração incluída no conjunto de serviços ou na configuração padrão da interface.
Configuração do tratamento de opções de IP
Opcionalmente, você pode configurar o firewall para inspecionar as informações do cabeçalho IP incluindo a allow-ip-options declaração no nível da [edit services stateful-firewall rule rule-name term term-name then] hierarquia. Quando você configura essa declaração, todos os pacotes que correspondem aos critérios especificados na from declaração estão sujeitos a critérios de correspondência adicionais. Um pacote é aceito somente quando todos os seus tipos de opção de IP são configurados como valores na allow-ip-options declaração. Se você não configurar allow-ip-options, somente pacotes sem opções de cabeçalho IP serão aceitos.
Os roteadores internos ACX500 não suportam a configuração da allow-ip-options declaração.
A inspeção de opção de cabeçalho IP adicional se aplica somente às accept reject ações de firewall stateful. Essa configuração não tem efeito sobre a discard ação. Quando a inspeção do cabeçalho IP falha, os quadros de rejeição não são enviados; Nesse caso, a ação tem o mesmo efeito que discard.reject
Se um pacote de opção de IP for aceito pelo firewall stateful, a Network Address Translation (NAT) e o serviço de detecção de invasão (IDS) serão aplicados da mesma forma que aos pacotes sem cabeçalhos de opção de IP. A configuração da opção IP aparece apenas nas regras de firewall stateful; O NAT se aplica a pacotes com ou sem opções de IP.
Quando um pacote é descartado porque falha na inspeção de opção de IP, esse evento de exceção gera mensagens de log do sistema e evento IDS. O tipo de evento depende do primeiro campo de opção de IP rejeitado.
A Tabela 1 lista os valores possíveis para a allow-ip-options instrução. Você pode incluir um intervalo ou conjunto de valores numéricos ou uma ou mais das configurações de opção de IP predefinidas. Você pode inserir o nome da opção ou seu equivalente numérico. Para obter mais informações, consulte http://www.iana.org/assignments/ip-parameters.
Nome da opção de IP |
Valor numérico |
Comentário |
|---|---|---|
|
|
Qualquer opção de IP |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
Veja também
Configuração de conjuntos de regras de Firewall com estado
A rule-set declaração define uma coleção de regras de firewall stateful que determinam quais ações o software do roteador executa em pacotes no fluxo de dados. Você define cada regra especificando um nome de regra e configurando termos. Em seguida, você especifica a ordem das regras incluindo a rule-set instrução no nível da [edit services stateful-firewall] hierarquia com uma rule instrução para cada regra:
[edit services stateful-firewall] rule-set rule-set-name { rule rule-name; }
O software do roteador processa as regras na ordem em que você as especifica na configuração. Se um termo em uma regra corresponder ao pacote, o roteador executará a ação correspondente e o processamento da regra será interrompido. Se nenhum termo em uma regra corresponder ao pacote, o processamento continuará para a próxima regra no conjunto de regras. Se nenhuma das regras corresponder ao pacote, o pacote será descartado por padrão.
Exemplos: Configuração de regras de Firewall com estado
O exemplo a seguir mostra uma configuração de firewall stateful contendo duas regras, uma para correspondência de entrada em um conjunto de aplicativos especificado e outra para correspondência de saída em um endereço de origem especificado:
[edit services]
stateful-firewall {
rule Rule1 {
match-direction input;
term 1 {
from {
application-sets Applications;
}
then {
accept;
}
}
term accept {
then {
accept;
}
}
}
rule Rule2 {
match-direction output;
term Local {
from {
source-address {
10.1.3.2/32;
}
}
then {
accept;
}
}
}
}
O exemplo a seguir tem uma única regra com dois termos. O primeiro termo rejeita todo o tráfego my-application-group que se origina do endereço de origem especificado e fornece um registro de log do sistema detalhado dos pacotes rejeitados. O segundo termo aceita o tráfego HTTP (Hypertext Transfer Protocol) de qualquer pessoa para o endereço de destino especificado.
[edit services stateful-firewall]
rule my-firewall-rule {
match-direction input-output;
term term1 {
from {
source-address 10.1.3.2/32;
application-sets my-application-group;
}
then {
reject;
syslog;
}
}
term term2 {
from {
destination-address 10.2.3.2/32;
applications http;
}
then {
accept;
}
}
}
O exemplo a seguir mostra o uso de listas de prefixos de origem e destino. Isso requer dois itens de configuração separados.
Você configura a lista de prefixos no nível da [edit policy-options] hierarquia:
[edit]
policy-options {
prefix-list p1 {
10.1.1.1/32;
10.2.2.0/24;
}
prefix-list p2 {
10.3.3.3/32;
10.4.4.0/24;
}
}
Você faz referência à lista de prefixos configurada na regra de firewall stateful:
[edit]
services {
stateful-firewall {
rule r1 {
match-direction input;
term t1 {
from {
source-prefix-list {
p1;
}
destination-prefix-list {
p2;
}
}
then {
accept;
}
}
}
}
}
Isso é equivalente à seguinte configuração:
[edit]
services {
stateful-firewall {
rule r1 {
match-direction input;
term t1 {
from {
source-address {
10.1.1.1/32;
10.2.2.0/24;
}
destination-address {
10.3.3.3/32;
10.4.4.0/24;
}
}
then {
accept;
}
}
}
}
}
Você pode usar o except qualificador com as listas de prefixos, como no exemplo a seguir. Nesse caso, o except qualificador se aplica a todos os prefixos incluídos na lista p2de prefixos.
[edit]
services {
stateful-firewall {
rule r1 {
match-direction input;
term t1 {
from {
source-prefix-list {
p1;
}
destination-prefix-list {
p2 except;
}
}
then {
accept;
}
}
}
}
}
Veja exemplos adicionais que combinam a configuração de firewall stateful com outros serviços e com tabelas de roteamento e encaminhamento (VRF) de rede virtual privada (VPN), veja os exemplos de configuração.
Você pode definir o conjunto de serviços e atribuí-lo como estilo de interface ou estilo de próximo salto.
Veja também
Exemplo: endereços BOOTP e broadcast
O exemplo a seguir oferece suporte ao Bootstrap Protocol (BOOTP) e endereços de broadcast:
[edit applications]
application bootp {
application-protocol bootp;
protocol udp;
destination-port 67;
}
[edit services]
stateful-firewall bootp-support {
rule bootp-allow {
direction input;
term bootp-allow {
from {
destination-address {
any-unicast;
255.255.255.255;
}
application bootp;
}
then {
accept;
}
}
}
}
Exemplo: configurar serviços de camada 3 e o SDK de serviços em dois PICs
Você pode configurar o pacote de serviços da Camada 3 e o Services SDK em dois PICs. Para este exemplo, você deve configurar um cliente FTP ou HTTP e um servidor. Nessa configuração, o lado do cliente da interface do roteador é ge-1/2/2.1 e o lado do servidor da interface do roteador é ge-1/1/0.48. Essa configuração permite a Network Address Translation (NAT) com firewall stateful (SFW) no uKernel PIC e identificação de aplicativos (APPID), lista de acesso com reconhecimento de aplicativos (AACL) e detecção e prevenção de intrusão (IDP) no Services SDK PIC para tráfego FTP ou HTTP.
O SDK de serviços ainda não é compatível com NAT. Quando o NAT é necessário, você pode configurar o pacote de serviços de Camada 3 para implantar o NAT junto com o SDK de serviços, como APPID, AACL ou IDP.
A funcionalidade IDP está obsoleta para a Série MX para o Junos OS versão 17.1R1 e superior.
Para implantar o pacote de serviços de Camada 3 e o SDK de Serviços em dois PICs:
Exemplo: roteamento e encaminhamento virtual (VRF) e configuração de serviço
O exemplo a seguir combina roteamento e encaminhamento virtual (VRF) e configuração de serviços:
[edit policy-options]
policy-statement test-policy {
term t1 {
then reject;
}
}
[edit routing-instances]
test {
interface ge-0/2/0.0;
interface sp-1/3/0.20;
instance-type vrf;
route-distinguisher 10.58.255.1:37;
vrf-import test-policy;
vrf-export test-policy;
routing-options {
static {
route 0.0.0.0/0 next-table inet.0;
}
}
}
[edit interfaces]
ge-0/2/0 {
unit 0 {
family inet {
service {
input service-set nat-me;
output service-set nat-me;
}
}
}
}
sp-1/3/0 {
unit 0 {
family inet;
}
unit 20 {
family inet;
service-domain inside;
}
unit 21 {
family inet;
service-domain outside;
}
[edit services]
stateful-firewall {
rule allow-any-input {
match-direction input;
term t1 {
then accept;
}
}
}
nat {
pool hide-pool {
address 10.58.16.100;
port automatic;
}
rule hide-all-input {
match-direction input;
term t1 {
then {
translated {
source-pool hide-pool;
translation-type source napt-44;
}
}
}
}
}
service-set nat-me {
stateful-firewall-rules allow-any-input;
nat-rules hide-all-input;
interface-service {
service-interface sp-1/3/0.20;
}
}
}
Tabela de histórico de alterações
A compatibilidade com recursos é determinada pela plataforma e versão utilizada. Use o Explorador de recursos para determinar se um recurso é compatível com sua plataforma.
accept skip-ids— O pacote é aceito e enviado para seu destino, mas o processamento de regra IDS configurado em um MS-MPC é ignorado.