Назад | Перейти на главную страницу

Списки доступа ASA и фильтрация исходящего трафика

Я пытаюсь узнать, как использовать брандмауэр cisco ASA, и я действительно не знаю, что делаю. Я пытаюсь настроить некоторую фильтрацию исходящего трафика, чтобы разрешить только минимальный объем трафика из сети, даже если он исходит из внутреннего интерфейса. Другими словами, я пытаюсь настроить списки управления доступом dmz_in и inside_in, как будто внутренний интерфейс не слишком надежен.

Я еще не полностью понял все концепции, поэтому у меня есть несколько проблем.

Предположим, мы работаем с тремя интерфейсами: внутренним, внешним и DMZ.

Допустим, у меня есть сервер (X.Y.Z.1), который должен отвечать на PING, HTTP, SSH, FTP, MySQL и SMTP. Мой ACL выглядит примерно так:

access-list outside_in extended permit icmp any host X.Y.Z.1 echo-reply
access-list outside_in extended permit tcp any host X.Y.Z.1 eq www
access-list outside_in extended permit tcp any host X.Y.Z.1 eq ssh
access-list outside_in extended permit tcp any host X.Y.Z.1 eq ftp
access-list outside_in extended permit tcp any host X.Y.Z.1 eq ftp-data established
access-list outside_in extended permit tcp any host X.Y.Z.1 eq 3306
access-list outside_in extended permit tcp any host X.Y.Z.1 eq smtp

и я применяю это так:

access-group outside_in in interface outside

У меня вопрос, что я могу сделать для исходящей фильтрации? Я хочу разрешить только минимальный трафик. Я просто "меняю" правила (т.е. правило smtp становится

access-list inside_out extended permit tcp host X.Y.Z.1 any eq smtp

) и прекратить работу, или я могу продолжить отбраковку своих вариантов? Что я могу безопасно заблокировать?

Более того, достаточно ли при исходящей фильтрации применить «инвертированные» правила к внешнему интерфейсу, или мне также следует подумать о создании acls dmz_in и inside_in?

Я часто слышал термин «исходящая фильтрация», но я действительно не знаю, что делаю. Также были бы полезны любые указатели на хорошие ресурсы и чтение, большинство из найденных мной предполагают, что я знаю намного больше, чем я.

Небольшой обзор, прежде чем перейти к деталям. Каждый интерфейс имеет два ACL; входящий ACL (с именем interface_in) и выходной ACL (с именем interface_out). Уловка с именованием состоит в том, чтобы не думать о нем с точки зрения «внутреннего» и «внешнего»; вместо этого подумайте об этом как о «трафике, входящем (в / из) в этот интерфейс».

Это дает большую гибкость с точки зрения того, где вы применяете данное правило, но также потенциально может стать огромным источником ненужной сложности.

Итак, к вашему примеру. Если вы хотите заблокировать подключения на порту 25 (smtp), которые исходят от внутреннего хоста и предназначены для интернет-хоста, у вас есть два варианта:

access-list inside_in extended deny tcp host X.Y.Z.1 any eq smtp

и

access-list outside_out extended deny tcp host X.Y.Z.1 any eq smtp

Если у вас есть только два интерфейса, эти команды будут иметь идентичный эффект. Когда это становится сложным, это когда у вас больше интерфейсов; скажем, например, интерфейс DMZ.

Первая команда (в ACL inside_in) будет предотвращать этот трафик только тогда, когда он идет внутри-> снаружи, но не dmz-> снаружи. Вторая команда (в ACL external_out) предотвратит оба.

Итак, это варианты того, где применять правила выхода. Мое предложение для вашего собственного здравомыслия - использовать только один из двух вариантов (и продублировать некоторые правила, если необходимо); вы выстрелите себе в ногу, если заставите себя проверить 5 разных списков контроля доступа для устранения неполадок в одном потоке трафика.