The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"ipfw + NAT"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"ipfw + NAT"  +/
Сообщение от Sergok (ok) on 27-Янв-15, 21:52 
Здравтсвуйте!
Пожалуйста, подскажите где проблема?
Надо добавить что-нидь для безопасности?

#!/bin/sh
cmd="/sbin/ipfw -q"

## External interface igb0 (white ip 1.2.3.2)
## Internal interface igb1 (10.92.128.1)
## table 1 - allowed ip from 10.92.128.0/24
## table 0 - blocked ip

${cmd} -f flush
${cmd} -f pipe flush
${cmd} -f queue flush

${cmd} add allow ip from any to any via lo0
${cmd} add deny all from any to 127.0.0.0/8
${cmd} add deny all from 127.0.0.0/8 to any

${cmd} add allow ip from 10.92.128.0/24 to 10.92.128.0/24

${cmd} add allow tcp from any to me 3232 # SSH
${cmd} add allow all from me to any keep-state
${cmd} add allow icmp from any to me icmptypes 0,8,11
${cmd} add allow all from any to me 80

${cmd} add fwd 10.92.128.1,80 tcp from "table(0)" to any dst-port 80,8080 via igb1 # to httpd редиректит на 1.2.3.5
не работает. Может эту строчку надо в другое место?

${cmd} nat 1 config log if igb0 reset same_ports deny_in
${cmd} add nat 1 ip from any to any via igb0

${cmd} add allow ip from "table(0)" to 1.2.3.5
${cmd} add allow ip from 1.2.3.5 to "table(0)"
на 1.2.3.5 не заходит, не пингуется.

${cmd} add allow ip from "table(0)" to 1.2.3.6
${cmd} add allow ip from 1.2.3.6 to "table(0)"
это DNS. Адреса выдаются, но не пингуется.

${cmd} add pipe 10 ip from any to "table(1)" out via igb1
${cmd} add pipe 11 ip from "table(1)" to any in via igb1
${cmd} pipe 10 config mask dst-ip 0xffffffff bw 30960K
${cmd} pipe 11 config mask src-ip 0xffffffff bw 30960K

65535 deny ip from any to any

Ответить | Правка | Cообщить модератору

Оглавление

  • ipfw + NAT, Аноним, 22:06 , 27-Янв-15, (1) –1  
    • ipfw + NAT, Sergok, 22:26 , 27-Янв-15, (2)  
  • ipfw + NAT, михалыч, 16:19 , 28-Янв-15, (3)  
  • ipfw + NAT, gfd, 16:39 , 28-Янв-15, (4)  
    • ipfw + NAT, Sergok, 18:47 , 28-Янв-15, (6)  
      • ipfw + NAT, gfd, 23:01 , 28-Янв-15, (8)  
  • ipfw + NAT, noris, 14:09 , 30-Янв-15, (12)  

Сообщения по теме [Сортировка по времени | RSS]


1. "ipfw + NAT"  –1 +/
Сообщение от Аноним (??) on 27-Янв-15, 22:06 
> Здравтсвуйте!
> Пожалуйста, подскажите где проблема?
> Надо добавить что-нидь для безопасности?

да, грамотного админа добавьте


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "ipfw + NAT"  +/
Сообщение от Sergok (ok) on 27-Янв-15, 22:26 
>> Здравтсвуйте!
>> Пожалуйста, подскажите где проблема?
>> Надо добавить что-нидь для безопасности?
> да, грамотного админа добавьте

мда...

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "ipfw + NAT"  +/
Сообщение от михалыч (ok) on 28-Янв-15, 16:19 
А у вас это работает?
Правила загружали, тестировали?

Очереди не используете, а вы их очищаете! Зачем?
правило для icmp отдельно прописываете,
ssh на нестандартном порту разрешаете всем, а зачем?
А смысл тогда в отдельной записи?
80 порт - такая же фигня.
Чего хотите добиться ?

насколько я понял, есть сеть 10.92.128.0/24
есть таблица для хороших - 0
есть таблица для плохих - 1
сеть 10.92.128.0/24 - это вся "хорошая сеть" ?
или в этом адресном пространстве и "плохие" также крутятся?

еще, как я понял нужно ограничить скорость в инет?
указано неверно, в man ipfw сказано "Bandwidth, measured in [K|M]{bit/s|Byte/s}."
то есть измеряется в [K|M]{бит/с|Байт/с}. нет там то, чего вы написали,
кстати, сколько хотели выставить?

нехороших нужно заворачивать на какой-то сервер (с белым ip?!) , для чего?
показать грозный банер? типа "Давай раскошеливайся! Гони бабло!"

по днс не понял, он поднят на шлюзе? или у него также какой-то отдельный сервер, с опять же белым ip?!

бр-р-р-р, жесть.. вроде и правил у вас немного, но в трех соснах запутались.

вот ниже, я попробовал составить, но эти правила предполагают следующее,
днс установлен на этом же сервере (шлюзе), апач или какой-то другой сервер httpd установлен и крутится также на нём

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

# скорость подключения - входящая
pipe 10 config mask dst-ip 0xffffffff bw 30Mbit/s
# скорость подключения - исходящая
pipe 20 config mask src-ip 0xffffffff bw 30Mbit/s

# ограничение по входящей скорости
add 10 pipe 10 all from any to table(1) out xmit igb1
# ограничение по исходящей скорости
add 20 pipe 20 all from table(1) to any in recv igb1

# настройка и конфигурация nat
nat 1 config log if igb0 reset # (deny_in same_ports unreg_only - при необходимости)
add 50 nat 1 all from any to any via igb1

# петлевой ифейс
add 100 allow all from any to any via lo0
add 200 deny all from any to 127.0.0.0/8
add 300 deny all from 127.0.0.0/8 to any

# разрешаем серверу и к нему
add 400 allow all from 1.2.3.2 to any
add 410 allow all from any to 1.2.3.2

# разрешаем трафик на внутреннем ифейсе
add 500 allow all from 10.92.128.0/24 to 10.92.128.0/24 via igb1

# заворот bad boys blue and pink girls
add 600 fwd 10.92.128.1,80 tcp from table(0) to any 80 in recv igb1

# разрешаем хорошим инет
add 700 allow all from table(1) to any
add 800 allow all from any to table(1)

# запрещаем всё остальное
add 900 deny all from any to any


если, как я спрашивал выше, сеть 10.92.128.0/24 на внутреннем ифейсе igb1 одна (только одно адресное пространство, никаких алиасов не висит),
и нехорошие пользователи из таблицы 0 составляют только часть этой сети,
то правило 50 можно ужесточить, разбив его на два и граничить нат только для хороших
(а-ля параноид )))

add 50 nat 1 all from table(1) to any out xmit igb1
add 60 nat 1 all from any to 1.2.3.2/32 in recv igb1

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "ipfw + NAT"  +/
Сообщение от Sergok (ok) on 28-Янв-15, 18:40 
FreeBSD 9.3-RELEASE на всякий случай.
> А у вас это работает?
> Правила загружали, тестировали?

Всё работало, пока я не добавила deny_in к nat (мне это надо)

> Очереди не используете, а вы их очищаете! Зачем?

Очередей нет, уберу.

> правило для icmp отдельно прописываете,
> ssh на нестандартном порту разрешаете всем, а зачем?

Мне надо заходить на сервер с разных, непредсказуемых ip

> А смысл тогда в отдельной записи?

Чтоб не использовать такую строчку: add allow all from any to 1.2.3.2
Она мне кажется страшной. Я не права?
> 80 порт - такая же фигня.
> Чего хотите добиться ?
> насколько я понял, есть сеть 10.92.128.0/24
> есть таблица для хороших - 0
> есть таблица для плохих - 1

table 0 - заблокированные, table 1 - разрешённые.

> сеть 10.92.128.0/24 - это вся "хорошая сеть" ?
> или в этом адресном пространстве и "плохие" также крутятся?

В этой сети и плохие и хорошие.

> еще, как я понял нужно ограничить скорость в инет?
> указано неверно, в man ipfw сказано "Bandwidth, measured in [K|M]{bit/s|Byte/s}."  
> то есть измеряется в [K|M]{бит/с|Байт/с}. нет там то, чего вы написали,
> кстати, сколько хотели выставить?

Да, конечно. Лимит в 30 Мбит/c. Работало и по-моему. Исправлю.

> нехороших нужно заворачивать на какой-то сервер (с белым ip?!) , для чего?
> показать грозный банер? типа "Давай раскошеливайся! Гони бабло!"

Какой вы проницательный человек! Сначала заворачивать на локальный httpd, а с него редирект (html-код) на другой http-сервер с белым ip 1.2.3.5 (к нему надо дать доступ для table 0)

> по днс не понял, он поднят на шлюзе? или у него также
> какой-то отдельный сервер, с опять же белым ip?!

Отдельный DNS-сервер с белым ip 1.2.3.6

>[оверквотинг удален]
> nat 1 config log if igb0 reset # (deny_in same_ports unreg_only -
> при необходимости)
> add 50 nat 1 all from any to any via igb1

[удален]
> # разрешаем серверу и к нему
> add 400 allow all from 1.2.3.2 to any
> add 410 allow all from any to 1.2.3.2

Можно эти два правила заменить этим?: add allow all from me to any keep-state

> # разрешаем трафик на внутреннем ифейсе
> add 500 allow all from 10.92.128.0/24 to 10.92.128.0/24 via igb1
> # заворот bad boys blue and pink girls
> add 600 fwd 10.92.128.1,80 tcp from table(0) to any 80 in recv
> igb1
> # разрешаем хорошим инет
> add 700 allow all from table(1) to any
> add 800 allow all from any to table(1)

Эти два правила лишние с net.inet.ip.fw.one_pass: 1 ? или лучше поставить в 0 ?

> # запрещаем всё остальное
> add 900 deny all from any to any
> если, как я спрашивал выше, сеть 10.92.128.0/24 на внутреннем ифейсе igb1 одна
> (только одно адресное пространство, никаких алиасов не висит),
> и нехорошие пользователи из таблицы 0 составляют только часть этой сети,
> то правило 50 можно ужесточить, разбив его на два и граничить нат
> только для хороших
> (а-ля параноид )))
> add 50 nat 1 all from table(1) to any out xmit igb1  
> add 60 nat 1 all from any to 1.2.3.2/32 in recv igb1

В перспективе будет несколько table, каждый для своей скорости. А заблокированные будут сидеть в table 0

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "ipfw + NAT"  +/
Сообщение от михалыч (ok) on 28-Янв-15, 19:23 
> Всё работало, пока я не добавила deny_in к nat (мне это надо)

Во-о-о-т! Ну-у-у, а вы чего ожидали? deny_in запрещает входящие ((

>> ssh на нестандартном порту разрешаете всем, а зачем?
> Мне надо заходить на сервер с разных, непредсказуемых ip
>> А смысл тогда в отдельной записи?
> Чтоб не использовать такую строчку: add allow all from any to 1.2.3.2

так увас оно и так разрешено по дефолту, зачем же ещё раз явно??

>> # разрешаем серверу и к нему
>> add 400 allow all from 1.2.3.2 to any
>> add 410 allow all from any to 1.2.3.2
> Можно эти два правила заменить этим?: add allow all from me to any keep-state

тогда уж делаем по букварю

# разрешить пакеты, состояние для которых было установлено
${fwcmd} add check-state

# для сервисов указанных ниже
${fwcmd} add pass tcp  from me to any established

# разрешить любые соединения, добавляя состояние для каждого
${fwcmd} add pass tcp  from me to any setup keep-state
${fwcmd} add pass udp  from me to any       keep-state
${fwcmd} add pass icmp from me to any       keep-state

но я бы не рекомендовал это, во всяком случае на первоночальном этапе знакомства с ipfw,
до понимания механизма работы, а то вот у вас с натом и deny_in и возникли проблемы

>> add 700 allow all from table(1) to any
>> add 800 allow all from any to table(1)
> Эти два правила лишние с net.inet.ip.fw.one_pass: 1 ? или лучше поставить в 0 ?

а вы загрузите и посмотрите счетчики на этих правилах, меняются?
если да, то нет, не лишние ))
с net.inet.ip.fw.one_pass = 0 я бы поосторожничал, легко оставить дыру по невнимательности

>> add 50 nat 1 all from table(1) to any out xmit igb1
>> add 60 nat 1 all from any to 1.2.3.2/32 in recv igb1
> В перспективе будет несколько table, каждый для своей скорости. А заблокированные будут сидеть в table 0

ну тогда можно попробовать что-то вроде

add 50 nat 1 all from not table(0) to any out xmit igb1
add 60 nat 1 all from any to 1.2.3.2/32 in recv igb1

ps
да, кстати, тогда, как вам и советолвали уже ниже,
можно для заблокированных из таблицы 0, использовать второй нат

add 70 nat 2 all from table(0) to 1.2.3.5/32 out xmit igb1
add 80 nat 2 all from 1.2.3.5/32 to 1.2.3.2/32 in recv igb1

хотя, это как-то неправильно что-ли ((
если блок - значит должен быть блок, за периметр нельзя выпускать,
а то это как-то криво.

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

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "ipfw + NAT"  +/
Сообщение от Sergok (ok) on 29-Янв-15, 17:33 
> FreeBSD 9.3-RELEASE на всякий случай.
>> nat 1 config log if igb0 reset # (deny_in same_ports unreg_only -
>> при необходимости)
>> add 50 nat 1 all from any to any via igb1

Так не работает.
Работает так:
add 50 nat 1 all from any to any via igb0
это нормально? (igb0 - внешний интерфейс с адресом 1.2.3.2)
p.s. Я так долго, потому что создала пробный стенд, где и буду тестировать.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

10. "ipfw + NAT"  +/
Сообщение от михалыч (ok) on 30-Янв-15, 07:19 
>>> add 50 nat 1 all from any to any via igb1
> Так не работает.
> Работает так:
> add 50 nat 1 all from any to any via igb0

да, конечно, я неправильно указал интерфейс для nat, ошибся

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "ipfw + NAT"  +/
Сообщение от Sergok (ok) on 30-Янв-15, 12:52 
>>>> add 50 nat 1 all from any to any via igb1
>> Так не работает.
>> Работает так:
>> add 50 nat 1 all from any to any via igb0
> да, конечно, я неправильно указал интерфейс для nat, ошибся

Большое спасибо! У меня всё заработало.
С меня пиво или чай! :)

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

13. "ipfw + NAT"  +/
Сообщение от михалыч (ok) on 30-Янв-15, 18:51 
> Большое спасибо! У меня всё заработало.
> С меня пиво или чай! :)

алкоголь не потребляю, а за чаёк - спасибо!
ну, (поднимая кружечку с чаем), за файервол ))

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

4. "ipfw + NAT"  +/
Сообщение от gfd on 28-Янв-15, 16:39 
форвардинг разрешен? aka gateway_enable="YES" в rc.conf ?

${cmd} add fwd 10.92.128.1,80 tcp from "table(0)" to any dst-port 80,8080 via igb1 # to httpd редиректит на 1.2.3.5
не работает. Может эту строчку надо в другое место?

1 - куда всё же редиректит - раз. ну и при fwd source addr не меняется. потому или из юзерспейса redir использовать, или натить тоже.
2 - а что с one_pass ?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "ipfw + NAT"  +/
Сообщение от Sergok (ok) on 28-Янв-15, 18:47 
> форвардинг разрешен? aka gateway_enable="YES" в rc.conf ?

Конечно!

> ${cmd} add fwd 10.92.128.1,80 tcp from "table(0)" to any dst-port 80,8080 via
> igb1 # to httpd редиректит на 1.2.3.5
> не работает. Может эту строчку надо в другое место?
> 1 - куда всё же редиректит - раз. ну и при fwd
> source addr не меняется. потому или из юзерспейса redir использовать, или
> натить тоже.

На себя,(у меня lighttpd на 10.92.128.1) а далее с помощью html-кода редирект на другой сервер.

> 2 - а что с one_pass ?

net.inet.ip.fw.one_pass: 1

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "ipfw + NAT"  +/
Сообщение от gfd on 28-Янв-15, 23:01 
>[оверквотинг удален]
>> ${cmd} add fwd 10.92.128.1,80 tcp from "table(0)" to any dst-port 80,8080 via
>> igb1 # to httpd редиректит на 1.2.3.5
>> не работает. Может эту строчку надо в другое место?
>> 1 - куда всё же редиректит - раз. ну и при fwd
>> source addr не меняется. потому или из юзерспейса redir использовать, или
>> натить тоже.
> На себя,(у меня lighttpd на 10.92.128.1) а далее с помощью html-кода редирект
> на другой сервер.
>> 2 - а что с one_pass ?
> net.inet.ip.fw.one_pass: 1

в правилах ваервола счетчики растут? если да - что в логах lighttpd смотреть

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

12. "ipfw + NAT"  +/
Сообщение от noris email on 30-Янв-15, 14:09 
Для проброса портов Испрользуте утилиту rinetd
http://rootmaster.at.ua/publ/redirekt_portov_s_pomoshhju_rin...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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