Документация по ОС FreeBSD Пятница, 10.04.2020, 08:30
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
IPFW [58]

Главная » Статьи » FireWall » IPFW

Использование IPFILTER (перевод страницы из FreeBSD Handbook) Часть 2 [2010]
30.5.14 NAT

NAT обозначает преобразование сетевых адресов. Также это понятие называют IP Masquerading; NAT и IP Masquerading - это одно и тоже. Одна из многих функций, которые IPF NAT позволяет делать - это возможность иметь локальную сеть (LAN), защищённую межсетевым экраном и использующую один IP адрес для доступа к сети Интернет.

Может возникнуть вопрос, кому это может понадобиться? Обычно ISP назначают физическим лицам динамический IP адрес, который может меняться каждый раз при дозвоне или логоне к вашему ISP или, в случае пользователей кабельных и DSL модемов, при перезагрузке модема. Этот динамический IP адрес используется для идентификации вашей системы в Интернет.

Теперь предположим, что у вас дома пять ПК и каждому необходим доступ в интернет. В этом случае вам пришлось бы платить вашему ISP за учётную запись для каждого ПК и иметь пять телефонных линий.

При использовании же NAT вам необходима только одна учётная запись у вашего ISP. Остальные четыре ПК могут соединяться с коммутатором, а коммутатор с сетевой картой системы FreeBSD, которая будет выполнять роль шлюза в вашей сети. NAT будет автоматически преобразовывать частные IP адреса каждого ПК локальной сети в один внешний IP адрес в момент выхода во внешнюю сеть, а также производит обратное преобразование для возвращающихся пакетов.

Существуют специальные интервалы IP адресов, зарезервированных для использования в локальных сетях с NAT. Согласно RFC 1918, следующие интервалы IP адресов могут использоваться в частных сетях и они никогда не будут напрямую выходить в Интернет:

Start IP 10.0.0.0 - Ending IP 10.255.255.255
Start IP 172.16.0.0 - Ending IP 172.31.255.255
Start IP 192.168.0.0 - Ending IP 192.168.255.255


Правила NAT загружаются с помощью команды ipnat. Обычно правила NAT содержаться в файле /etc/ipnat.rules. Подробее смотрите на справочной странице ipnat(1).

Для изменения правил после запуска NAT, сделайте изменения в файл правил, запустите ipnat с ключами -CF для удаления загруженных правил и очистки таблицы активных записей.

Чтобы перегрузить правила NAT выполните подобную команду:

# ipnat -CF -f /etc/ipnat.rules

Для отображения некоторой статистики о вашем NAT выполните:

# ipnat -s

Чтобы вывести текущие сопоставления таблицы NAT используейте следующую оманду:

# ipnat -l

Для включение подробного режима и отображения информации, относящейся к обработке правил и активных правил/записей таблицы:

# ipnat -v

Правила NAT очень гибкие и могут выполнять различные действия, подходящие под нужды как коммерческих, так и домашних пользователей.

Представленный здесь синтаксис был упрощён до чаще всего используемого в некоммерческих целях. Полное описание можно найти на справочной странице ipnat(5).

Синтаксис NAT правила выглядит примерно так:

map IF LAN_IP_RANGE -> PUBLIC_ADDRESS

Ключевое слово map начинает правило.

Замените IF внешним интерфейсом.

LAN_IP_RANGE - это то, что ваше внутренние клиенты используют для IP адресации, обычно это что-то типа 192.168.1.0/24.

PUBLIC_ADDRESS может быть либо внешний IP адрес, либо специальное ключевое слово 0/32, которое обозначает использование IP адреса, назначенного IF.

Пакет постпает в межсетевой экран из локальной сети с внешним адресом назначения. Он проходит через исходящий фильтр правил, далее NAT получает пакет и применяет к нему свои правила сверху вниз, первое совпавшее правило выигрывает. NAT проверяет каждое правило на совпадение имени интерфейса пакета и IP адреса источника. Когда имя интерфейса пакета совпадает с правилом NAT, тогда IP адрес источника (частный IP адрес ЛВС) првоеряется на попадание в интервал, определённый слева от символа стрелки. При совпадении IP адрес пакета перезаписывается внешним IP адресом, получаемым от ключевого слова 0/32. NAT заносит запись в свою внутреннюю таблицу NAT, чтобы при возвращении пакета из сети Интернет сделать обратное сопоставление IP адресов и после этого направляет пакет на проверку правилами фильтра.

Для включения IPNAT добавьте следующее в /etc/rc.conf.

Для включения возможности маршрутизации трафика между интерфейсами:

gateway_enable="YES"

Для автозапуска IPNAT:

ipnat_enable="YES"

Место, откуда загружать правила IPNAT:

ipnat_rules="/etc/ipnat.rules"

В сетях, имеющих большое число ПК в ЛВС или сетях, имеющих больше одной ЛВС, процесс туннелирования всех частных IP адресов в один внешний IP адрес сталкивается с проблемой нехватки ресурсов, которая вызвана использованием одних и тех же номеров портов, используемых многими транслированными адресами ПК, что вызывает коллизии. Существует два способа решения ресурсной проблемы.

Обычное правило NAT выглядит так:

map dc0 192.168.1.0/24 -> 0/32

В правиле выше исходящий порт не изменяется в процессе прохождения пакета через IPNAT. Если добавить ключевое слово portmap, IPNAT будет использовать исходящие порты только из определённого интервала. Например, следующее правило указывает IPNAT изменять исходящий порт на порт из интервала:

map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp 20000:60000

Более того, мы можем ещё больше упростить задачу, воспользовавшись ключевым словом auto, в этом лсучае IPNAT будет сам определять доступные для использования порты:

map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto

В очень больших ЛВС наступает момент, когда просто напросто используется слишком много частных IP адресов и они уже не могут использовать один внешний адрес. В случае наличия блока внешних IP адресов, эти адреса могут использоваться в качестве "пула", и IPNAT будет выбирать один из адресов при трансляции частных адресов на пути в Интернет.

Например, вместо сопоставления всех пакетов одному внешнему IP адресу, как здесь:

map dc0 192.168.1.0/24 -> 204.134.75.1

Можно задать интервал внешних IP адресов, заданных либо с помощью маски подсети:

map dc0 192.168.1.0/24 -> 204.134.75.0/255.255.255.0

либо с использованием представления CIDR:

map dc0 192.168.1.0/24 -> 204.134.75.0/24

Обычной практикой является размещение web сервера, email сервера, сервера баз данных или DNS сервера отдельно на различных ПК в ЛВС. В этом случае исходящий трафик по-прежнему нужно транслировать, но должен быть путь, чтобы направлять входящий трафик на нужные ПК. Для этой цели IPNAT имеет возможность перенаправления. К примеру, если единственный web сервер в ЛВС имеет адрес 10.0.10.25 и используется единственный внешний IP адрес 20.20.20.5, то правило будет выглядеть следующим образом:

rdr dc0 20.20.20.5/32 port 80 -> 10.0.10.25 port 80

или:

rdr dc0 0.0.0.0/0 port 80 -> 10.0.10.25 port 80

или для DNS сервера ЛВС с частным адресом 10.0.10.33, которому необходимо обслуживать запросы из сети Интернет:

rdr dc0 20.20.20.5/32 port 53 -> 10.0.10.33 port 53 udp

FTP это динозавр, оставшийся с тем времён, когда Интернет ещё не был таким, как сейчас, когда исследовательские университеты были объединены между собой выделенными линиями и FTP использовался для обмена информацией между учёными. Это было время, когда о безопасности данных не задумывались. С течением времени протокол FTP стал одной из основ развивающейся сети Интернет и пересылаемые открытым текстом имя пользователя и пароль никогда не менялись для соответствия новым реалиям безопасности. FTP имеет две разновидности - может работать в активном и пассивном режимах. Разница заключается в том, каким образом открывается канал передачи. Пассивный режим более безопасен, т.к. канал передачи открывается изначально запрашивающей ftp сессию стороной. Для реально хорошего объяснения FTP и различных режимов смотрите http://www.slacksite.com/other/ftp.html.  

IPNAT имеет встроенный FTP прокси, который может быть определён в правилах соответствия NAT. Он может мониторить весь исходящий трафик на наличие запросов начала FTP сессии (активной или пассивной) и динамически создавать временные правила фильтра, содержащие только номер реально используемого для канала данных порта. Это устраняет риск безопасности, которому FTP обычно подвергает межсетевой экран открытыми портами с большими номерами.

Это правило будет управлять всем трафиком для внутренней ЛВС:

map dc0 10.0.10.0/29 -> 0/32 proxy port 21 ftp/tcp

Это правило управляет FTP трафиком от шлюза:

map dc0 0.0.0.0/0 -> 0/32 proxy port 21 ftp/tcp

Это правило управляет всем не-FTP трафиком из внутренней ЛВС:

map dc0 10.0.10.0/29 -> 0/32

Правило сопоставления (маппинга) FTP идёт перед обычным правилом сопоставления. Все пакеты проверяются на соответсивие первом правилу. При совпадении имени интерфейса, затем частного IP адреса ЛВС и опознавании FTP пакета, FTP прокси создаёт временные правила фильтра для разрешения прохождения FTP пакетов; в дополнение к преобразованию FTP пакетов. Все пакеты, не соответствующие первому правилу и не являющиеся FTP пакетами, попадют к третьему правилу и при совпадении имени интерфейса и IP адреса преобразуются.

При использовании FTP прокси необходимо только одно правило.

Без использования FTP прокси потребуются следующие правила:

# Разрешить доступ наружу из ЛВС к FTP в Интернет
# Активный и пассивный режимы
pass out quick on rl0 proto tcp from any to any port = 21 flags S keep state

# Разрешить доступ наружу по "высоким" портам для пассивного режима
pass out quick on rl0 proto tcp from any to any port > 1024 flags S keep state

# Разрешить доступ внутрь для активного режима FTP сервера
pass in quick on rl0 proto tcp from any to any port = 20 flags S keep state


Использованные источники:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-ipf.html
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/firewalls-ipf.html  
Категория: IPFW | Добавил: oleg (25.03.2010)
Просмотров: 796 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2020