Веб сервер и почтовый сервер внутри – случай NAT

            Давайте немного вернемся и начнем снова с базовым сценарием, где пример клиентов из главы 3 получающих трех новых соседей: почтовый сервер,  веб-сервер и файловый сервер. На этот раз адреса внешне видимые либо  отсутствуют, либо слишком дороги и запускать ряд других служб на машине, которая в первую очередь является брандмауэром нежелательно. Это означает, что мы вернулись назад, к ситуации где мы делаем наш NAT шлюзом. К счастью, механизмы перенаправления в PF делют его относительно простым в поддержке на внутренней строне шлюза, который выполняет роль NAT.

Характеристики сети такие же, как для установки example.com: мы должны  запустить веб-сервер, который подает данные в открытом виде (http) и зашифрованном (https), а также почтовый сервер, который посылает и  получает почту пока резрешено клиентам внутри и вне локальной сети  использовать ряд хорошо известных протоколов. Короче говоря, нам нужны  такие же функции, что и в установке из предыдущего раздела, но только с одним маршрутизируемым адресом.

3.  Смотрите страницу man для OpenSSL для дальнейшего объяснения параметров связанных с шифром.

Из трех серверов, только веб-сервер и почтовый сервер должны быть  видимыми из внешнего мира, так мы добавим макросы для их IP адресов и сервисов в набор правил из главы 3:

webserver = "192.168.2.7" webports = "{ http, https }" emailserver = "192.168.2.5"

email = "{ smtp, pop3, imap, imap3, imaps, pop3s }"

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

match in on $ext_if proto tcp to $ext_if port $webports rdr-to $webserver match in on $ext_if proto tcp to $ext_if port $email rdr-to $emailserver pass proto tcp to $webserver port $webports

pass proto tcp to $emailserver port $email pass proto tcp from $emailserver to port smtp

Эта комбинация правил match и pass очень похожим путем все эти вещи  могут быть сделаны в pre-OpenBSD 4.7 PF версиях, и если вы модернизируете из предыдущих версий, этот тип быстрой правки мог бы быть мостом через небольшой разрыв в синтаксисе. Но вы также можете выбрать новый стиль, и написать это более копактно:

pass in on $ext_if inet proto tcp to $ext_if port $webports rdr-to $webserver pass in on $ext_if inet proto tcp to $ext_if port $email rdr-to $mailserver pass on $int_if inet proto tcp to $webserver port $webports

pass on $int_if inet proto tcp to $mailserver port $email

Обратите внимание на разрешающие правила с rdr-to. Эта комбинация  фильтрации и перенаправления поможет сделать вещи легче и меньше пока, так как в этой комбинации. В pre-OpenBSD 4.7 PF, набор правил будет совершенно похожим, исключая то, что мы сделали с перенаправлениями

webserver = "192.168.2.7" webports = "{ http, https }" emailserver = "192.168.2.5"

email = "{ smtp, pop3, imap, imap3, imaps, pop3s }"

rdr on $ext_if proto tcp to $ext_if port $webports -> $webserver rdr on $ext_if proto tcp to $ext_if port $email -> $emailserver pass proto tcp to $webserver port $webports

pass proto tcp to $emailserver port $email

pass proto tcp from $emailserver to any port smtp

Источник: Книга о PF, by Peter N.M. Hansteen, Перевод выполнил Михайлов Алексей aka iboxjo

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий