Skip to content

NAT не замена межсетевому экрану на примере Juniper SRX

Вы, наверное, слышали утверждение, что NAT не является системой безопасности. Оно появилось из-за того, что некоторые пользователи NAT считают, что, скрыв внутреннюю адресацию сети, можно добиться ее безопасности. На самом деле это не так и использование NAT не отменяет необходимости настраивать межсетевой экран.

Рассмотрим пример публикации внутреннего веб сервера на Juniper SRX.

Packet flow

Перед тем как перейти к конфигурации следует напомнить, как устройства SRX обрабатывают пакет.

juniper_packet_flow.png

На представленной картинке нас интересует порядок обработки NAT и политик безопасности. Если проследить последовательность, то можно заметить следующий порядок действий:

  • Статический NAT
  • NAT с преобразованием адреса получателя (Destination NAT)
  • Применение политик безопасности
  • Обратный статический NAT
  • NAT с преобразованием адреса отправителя (Source NAT)

Отсюда следует, что при определении политик безопасности, адреса источника и получателя задаются как адреса конечных точек, а не промежуточного звена NAT.

Условия

Для примера используем следующую схему:

picture.png

Конфигурация интерфейсов:

root@jun-srx100-04# show interfaces
fe-0/0/0 {
    description ToInternet;
    unit 0 {
        family inet {
            address 80.80.80.80/24;
        }
    }
}
fe-0/0/2 {
    description ToLan;
    unit 0 {
        family inet {
            address 10.11.1.1/24;
        }
    }
}

Конфигурация зон:

root@jun-srx100-04# show security
zones {
    security-zone Internal {
        interfaces {
            fe-0/0/2.0 {
                host-inbound-traffic {
                    system-services {
                        all;
                    }
                }
            }
        }
    }
    security-zone Internet {
        interfaces {
            fe-0/0/0.0 {
                host-inbound-traffic {
                    system-services {
                        dns;
                        traceroute;
                        ping;
                    }
                }
            }
        }
    }
}

Конфигурация Destination NAT:

nat {
    destination {
        pool webpool {
            address 10.11.1.2/32;
        }
        rule-set webnat {
            from zone Internet;
            rule 1 {
                match {
                    destination-address 80.80.80.80/32;
                    destination-port 80;
                }
                then {
                    destination-nat {
                        pool {
                            webpool;
                        }
                    }
                }
            }
        }
    }
}

Конфигурация политик безопасности:

address-book {
    global {
        address 10.11.1.2/32 10.11.1.2/32;
    }
}
policies {
    from-zone Internal to-zone Internet {
        policy All\Internal\Internet {
            match {
                source-address any;
                destination-address any;
                application any;
            }
            then {
                permit;
            }
        }
    }
    from-zone Internet to-zone Internal {
        policy webpublish {
            match {
                source-address any;
                destination-address 10.11.1.2/32;
                application any;
            }
            then {
                permit;
            }
        }
    }
}

Все что не подпадает под политики будет блокироваться:

root@jun-srx100-04> show security policies
Default policy: deny-all

Тест

Начинаем тесты. Для начала проверим доступность внешнего адреса:

ping 80.80.80.80

Адрес отвечает, и мы можем посмотреть сессии на SRX:

root@jun-srx100-04> show security flow session
Session ID: 13026, Policy name: self-traffic-policy/1, Timeout: 2, Valid
  In: 80.80.80.10/103 --> 80.80.80.80/1;icmp, If: fe-0/0/0.0, Pkts: 1, Bytes: 60
  Out: 80.80.80.80/1 --> 80.80.80.10/103;icmp, If: .local..0, Pkts: 1, Bytes: 60
Session ID: 13027, Policy name: self-traffic-policy/1, Timeout: 2, Valid
  In: 80.80.80.10/104 --> 80.80.80.80/1;icmp, If: fe-0/0/0.0, Pkts: 1, Bytes: 60
  Out: 80.80.80.80/1 --> 80.80.80.10/104;icmp, If: .local..0, Pkts: 1, Bytes: 60
Total sessions: 2

Далее проверим работу трансляции адреса получателя (Destination NAT):

telnet 80.80.80.80 80

NAT работает:

Session ID: 12979, Policy name: webpublish/5, Timeout: 298, Valid
  In: 80.80.80.10/2241 --> 80.80.80.80/80;tcp, If: fe-0/0/0.0, Pkts: 2, Bytes: 92
  Out: 10.11.1.2/80 --> 80.80.80.10/2241;tcp, If: fe-0/0/2.0, Pkts: 1, Bytes: 52
Total sessions: 1

На веб сервере можно запустить запись пакетов:

telnet-80-80-80-80-80.png

Теперь попробуем получить доступ через внешний интерфейс SRX на внутренний адрес сервера:

telnet 10.11.1.2 80

И у нас это получается!

Session ID: 13114, Policy name: webpublish/5, Timeout: 296, Valid
  In: 80.80.80.10/2244 --> 10.11.1.2/80;tcp, If: fe-0/0/0.0, Pkts: 2, Bytes: 92
  Out: 10.11.1.2/80 --> 80.80.80.10/2244;tcp, If: fe-0/0/2.0, Pkts: 1, Bytes: 52
Total sessions: 1

images/telnet-10-11-1-2-80.png

И в довершение проверим сетевую доступность веб сервера:

ping 10.11.1.2
Session ID: 13216, Policy name: webpublish/5, Timeout: 2, Valid
  In: 80.80.80.10/112 --> 10.11.1.2/1;icmp, If: fe-0/0/0.0, Pkts: 1, Bytes: 60
  Out: 10.11.1.2/1 --> 80.80.80.10/112;icmp, If: fe-0/0/2.0, Pkts: 1, Bytes: 60
Session ID: 13218, Policy name: webpublish/5, Timeout: 2, Valid
  In: 80.80.80.10/113 --> 10.11.1.2/1;icmp, If: fe-0/0/0.0, Pkts: 1, Bytes: 60
  Out: 10.11.1.2/1 --> 80.80.80.10/113;icmp, If: fe-0/0/2.0, Pkts: 1, Bytes: 60
Total sessions: 2

images/telnet-10-11-1-2-80.png

Вывод

По результатам тестов можно сделать следующий вывод: воспринимать трансляцию сетевых адресов (NAT) как замену межсетевому экрану ни в коем случае не стоит.