The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"IPFW NAT - порядок прохождения правил"
Отправлено михалыч, 24-Апр-17 19:55 
> Ok, скажите, что у вас с переменной sysctl net.inet.ip.fw.one_pass (конкретно с kernel
> nat, natd меня не интересует)?

хм.. по идее эта переменная ни на что не влияет, кроме как на пайпы dummynet и узлы ng_ipfw
хотя.. если вы используете dummynet, то это вроде как ваш случай, пайпы использовать собираетесь или уже ?

вот что по этому поводу говорит
man ipfw | grep -B3 reinjected


Если установлено в 1, то, выходящий пакет из трубы dummynet или из узла ng_ipfw покидает брандмауэр.
В противном случае, пакет обрабатывается последующими правилами брандмауэра.

то есть если net.inet.ip.fw.one_pass=1 то pipe действуют на пакет как allow

возможно я и сам тумана напустил в комментах в своём примере ))
как говорил незабвенный Козьма Прутков -
"Пояснительные выражения объясняют темные мысли"

попробую ещё раз


### очищаем перед загрузкой все правила
-q -f flush

### устанавливаем net.inet.ip.fw.one_pass=1
enable one_pass
### а так в 0
#disable one_pass


### запрещаем сканирование nmap'ом на входящем интерфейсе
add 10 deny tcp from any to any tcpflags syn,fin,ack,psh,rst,urg in recv em0
add 11 deny tcp from any to any tcpflags !syn,!fin,!ack,!psh,!rst,!urg in recv em0
add 12 deny tcp from any to any not established tcpflags fin in recv em0

### антиспуфинг
add 20 deny all from any to any not verrevpath in
#add 21 deny all from any to any not antispoof in

### разрешаем всё на внутреннем интерфейсе
add 100 allow all from any to any via em1

### разрешаем всё на петлевом интерфейсе
add 200 allow all from any to any via lo0

### конфигурируем nat 1
nat 1 config if em0 same_ports unreg_only redirect_port tcp 192.168.1.100:3389 3389 redirect_port tcp 192.168.1.100:8080 8080

### трансляция входящих пакетов для IPv4, IPv6 не работает с NAT
add 300 nat 1 ip4 from any to any in recv em0

### проверяем состояние пакета
add 400 check-state

### ========================== ИСХОДЯЩИЙ ТРАФИК ========================== ###

### разрешаем исходящий трафик для DNS
add 500 skipto 800 tcp from any to any 53 out xmit em0 setup keep-state
add 501 skipto 800 udp from any to any 53 out xmit em0 keep-state

### разрешаем исходящий трафик
#add 510 skipto 800 tcp from any to any 22,80,443 out xmit em0 setup keep-state

### разрешаем исходящий трафик для HTTP
add 511 skipto 800 tcp from any to any 80 out xmit em0 setup keep-state

### разрешаем исходящий трафик для HTTPS
add 512 skipto 800 tcp from any to any 443 out xmit em0 setup keep-state

### разрешаем исходящий трафик для SSH
add 513 skipto 800 tcp from any to any 22 out xmit em0 setup keep-state

### разрешаем исходящий трафик для ICMP PING
add 514 skipto 800 icmp from any to any out xmit em0 keep-state

### разрешаем исходящий трафик для NTP
add 515 skipto 800 udp from any to any 123 out xmit em0 keep-state

### ========================== ВХОДЯЩИЙ ТРАФИК =========================== ###

### запрещаем весь входящий трафик с немаршрутизируемых и серых сетей
add 650 deny all from 192.168.0.0/16  to any in recv em0
add 651 deny all from 172.16.0.0/12   to any in recv em0
add 652 deny all from 10.0.0.0/8      to any in recv em0
add 653 deny all from 127.0.0.0/8     to any in recv em0
add 654 deny all from 0.0.0.0/8       to any in recv em0
add 655 deny all from 169.254.0.0/16  to any in recv em0
add 656 deny all from 192.0.2.0/24    to any in recv em0
add 657 deny all from 204.152.64.0/23 to any in recv em0
add 658 deny all from 224.0.0.0/3     to any in recv em0

### запрещаем MS/Windows сервисы и Netbios службы
### 81=hosts2, 113=ident, 137=name, 138=datagram, 139=session
add 660 deny tcp from any to any 81  in recv em0
add 661 deny tcp from any to any 113 in recv em0
add 662 deny tcp from any to any 137 in recv em0
add 663 deny tcp from any to any 138 in recv em0
add 664 deny tcp from any to any 139 in recv em0

### запрещаем любые фрагментированные пакеты
add 670 deny all from any to any frag in recv em0

### запрещаем не соответствующие динамической таблице правил ACK пакеты
add 680 deny tcp from any to any established in recv em0

### разрешаем входящий трафик
#add 700 allow tcp from any to me 22,80,443 in recv em0 setup limit src-addr 2

### разрешаем входящий трафик для SSH
add 701 allow tcp from any to me 22 in recv em0 setup limit src-addr 2

### разрешаем входящий трафик для HTTP
add 702 allow tcp from any to me 80 in recv em0 setup limit src-addr 3

### разрешаем входящий трафик для HTTPS
add 703 allow tcp from any to me 443 in recv em0 setup limit src-addr 5

### ========================== ПРОБРОС ТРАФИКА =========================== ###

### делаем проброс в LAN за NAT для входящего трафикка
#add 720 skipto 800 tcp from any to any 3389,8080 in recv em0 setup limit src-addr 2

### делаем проброс в LAN за NAT для входящего трафикка RDP
add 721 skipto 800 tcp from any to any 3389 in recv em0 setup limit src-addr 1

### делаем проброс в LAN за NAT для входящего трафикка HTTP:8080
add 722 skipto 800 tcp from any to any 8080 in recv em0 setup limit src-addr 3

### отбрасываем и заносим в журнал все неразрешенные входящие соединения из глобальной сети
add 750 deny log all from any to any in recv em0

### отбрасываем и заносим в журнал все неразрешенные исходящие соединения в глобальную сеть
add 751 deny log all from any to any out xmit em0

### трансляция исходящих пакетов
### место для skipto в правилах с сохранением состояния для соединений
add 800 nat 1 ip4 from any to any out xmit em0
add 801 allow all from any to any

### всё остальное запрещено по умолчанию
### запрещаем и заносим в журнал все пакеты для дальнейшего анализа
add 999 deny log all from any to any

### ============================ END OF FILE ============================= ###


обращаю внимание на следующие моменты

входящий трафик на порты 22 80 и 443 это трафик предназначенный для самого сервера (шлюза)
трафик на порты 3389 и 8080 - пробрасываемый за NAT в локальную сеть

правила для входящего трафика (не пробрасываемого!) имеют отличный синтаксис от
секции с пробрасываемым трафиком: any to me в отличии от any to any и skipto

правила можно группировать по портам, но в таком случае мы лишаемся гибкости
задавать раздельные ограничения (limit) на количество соединений от одного хоста
и придётся довольствоваться некоторым средним значением

в данном листинге в конфигурации nat отсутствует deny_in
это принципиально, в противном случае не будет работать секция для входящего трафика
(не редиректа, он будет продолжать работать, как верно было подмечено выше)

если хочется сохранить deny_in то нужно секцию правил для входящего трафика (700-703)
разместить выше правила 300 для nat входящих пакетов
например под номерами 250-253

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

можешь поиграться с net.inet.ip.fw.one_pass повключть и повыключать его прямо из листинга, после сброса правил,
но повторюсь, без пайпов это ни на что не влияет

хотя тут => https://ctopmbi4.wordpress.com/2013/11/12/nat-one_pass/
привязывают к нату, у меня сомнения

может проверка на стенде с локальными адресами не совсем корректно происходит?
или на реальных адресах?

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру