Здравтсвуйте!
Пожалуйста, подскажите где проблема?
Надо добавить что-нидь для безопасности?#!/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 30960K65535 deny ip from any to any
> Здравтсвуйте!
> Пожалуйста, подскажите где проблема?
> Надо добавить что-нидь для безопасности?да, грамотного админа добавьте
>> Здравтсвуйте!
>> Пожалуйста, подскажите где проблема?
>> Надо добавить что-нидь для безопасности?
> да, грамотного админа добавьтемда...
А у вас это работает?
Правила загружали, тестировали?Очереди не используете, а вы их очищаете! Зачем?
правило для 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
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
> есть таблица для плохих - 1table 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
> Всё работало, пока я не добавила 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 igb1ps
да, кстати, тогда, как вам и советолвали уже ниже,
можно для заблокированных из таблицы 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хотя, это как-то неправильно что-ли ((
если блок - значит должен быть блок, за периметр нельзя выпускать,
а то это как-то криво.что, разве нельзя на внутреннем сервере разместить ту инфу,
ради которой блоченных клиентов редиректить на внешку приходится? ((
> 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. Я так долго, потому что создала пробный стенд, где и буду тестировать.
>>> add 50 nat 1 all from any to any via igb1
> Так не работает.
> Работает так:
> add 50 nat 1 all from any to any via igb0да, конечно, я неправильно указал интерфейс для nat, ошибся
>>>> add 50 nat 1 all from any to any via igb1
>> Так не работает.
>> Работает так:
>> add 50 nat 1 all from any to any via igb0
> да, конечно, я неправильно указал интерфейс для nat, ошибсяБольшое спасибо! У меня всё заработало.
С меня пиво или чай! :)
> Большое спасибо! У меня всё заработало.
> С меня пиво или чай! :)алкоголь не потребляю, а за чаёк - спасибо!
ну, (поднимая кружечку с чаем), за файервол ))
форвардинг разрешен? 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 ?
> форвардинг разрешен? 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
>[оверквотинг удален]
>> ${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 смотреть
Для проброса портов Испрользуте утилиту rinetd
http://rootmaster.at.ua/publ/redirekt_portov_s_pomoshhju_rin...