Я пытаюсь узнать, как использовать брандмауэр 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 разных списков контроля доступа для устранения неполадок в одном потоке трафика.