Как через ipfw закрыть доступ к определенной сети?

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Хрюша
рядовой
Сообщения: 39
Зарегистрирован: 2009-04-06 14:09:43

Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение Хрюша » 2012-12-20 13:35:09

Есть сеть согласно рисунка.
Документ1.jpg
На FreeBSD (8.0) ipfw+squid (прозрачный).
ipfw:

Код: Выделить всё

fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush
wifiasus="10.1.159.194"
${fwcmd} add fwd 10.1.159.193,8081 tcp from ${wifiasus} to any 80 via em2
${fwcmd} add divert natd all from any to any via em0
${fwcmd} add allow ip from any to any via em0
${fwcmd} add allow ip from any to any via lo0
${fwcmd} add allow icmp from any to any
${fwcmd} add allow udp from any 53 to any via em1
${fwcmd} add allow udp from any to any 53 via em1
${fwcmd} add allow udp from any 53 to any via em2
${fwcmd} add allow udp from any to any 53 via em2
${fwcmd} add deny ip from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any
${fwcmd} add allow ip from ${wifiasus} to any 443,5190
Ядро собрано с опциями:

Код: Выделить всё

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_FORWARD
options MROUTING
options IPDIVERT
options DUMMYNET
options HZ=1000
options DEVICE_POLLING
rc.conf:

Код: Выделить всё

firewall_enable="YES"
firewall_script="/my/rc.firewall'
Пользователи через Wifi router asus(он же DHCP server) подключаются к сети 10.1.159.184/29 без проблем, и у них работает доступ к интернету. Но при это они так же могут доступаться к терминалу на сервер 10.1.1.2. Как закрыть доступ пользователям сети 10.1.159.184/29 к сети 10.1.1.0/24?
Пробовал из ipfw убирать все строки относящиеся с wifiasus - у пользователей доступ к инету пропадает, а к терминалу на сервер 10.1.1.2 все равно доступ есть.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
dekloper
ст. лейтенант
Сообщения: 1331
Зарегистрирован: 2008-02-24 15:43:19
Откуда: давно здесь сидим..
Контактная информация:

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение dekloper » 2012-12-20 14:15:24

Хрюша писал(а):закрыть доступ пользователям сети 10.1.159.184/29 к сети 10.1.1.0/24
тоже самое по-английски написать

Код: Выделить всё

ipfw add deny all from 10.1.159.184/29 to 10.1.1.0/24
ТОВАгИЩИ! БгАТЬЯ И СЕСТгЫ! ДОЛОЙ гАВНОДУШИЕ!

Хрюша
рядовой
Сообщения: 39
Зарегистрирован: 2009-04-06 14:09:43

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение Хрюша » 2012-12-20 14:50:13

Все равно пускает даже с таким правилом! Почему? И почему пускает даже без этого правила, по идее фаервол по умолчанию все закрывает, и по этому не должен пропускать к серверу 10.1.1.2?

DimS
проходил мимо
Сообщения: 1
Зарегистрирован: 2012-12-20 14:35:18

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение DimS » 2012-12-20 15:34:36

ipfw show

Показывает список правил и, AFAIK, порядок их применения. Проверьте, может у вас таки последним стоИт: "allow ip from any to any".

Хрюша
рядовой
Сообщения: 39
Зарегистрирован: 2009-04-06 14:09:43

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение Хрюша » 2012-12-21 9:28:07

Всем спасибо разобрался, действительно правило надо было в самый вверх ставить. Я забыл еще что у меня разрешения pipe было, но чего то я подумал, что правило pipe на deny не влияет. То есть с такими правила все работает как надо:

Код: Выделить всё

fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush
wifiasus="10.1.159.194"
${fwcmd} add deny all from 10.1.159.192/30 to 10.1.1.0/24
${fwcmd} add pipe 1 ip from any to 10.1.159.194
${fwcmd} pipe 1 config bw 200MBytes/s
${fwcmd} queue 1 config pipe 1 mask dst-ip 0xffffffff 
${fwcmd} add fwd 10.1.159.193,8081 tcp from ${wifiasus} to any 80 via em2
${fwcmd} add divert natd all from any to any via em0
${fwcmd} add allow ip from any to any via em0
${fwcmd} add allow ip from any to any via lo0
${fwcmd} add allow icmp from any to any
${fwcmd} add allow udp from any 53 to any via em1
${fwcmd} add allow udp from any to any 53 via em1
${fwcmd} add allow udp from any 53 to any via em2
${fwcmd} add allow udp from any to any 53 via em2
${fwcmd} add deny ip from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any
${fwcmd} add allow ip from ${wifiasus} to any 443,5190


А вот таки правила не срабатывают:

Код: Выделить всё

fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush
wifiasus="10.1.159.194"
${fwcmd} add pipe 1 ip from any to 10.1.159.194
${fwcmd} pipe 1 config bw 200MBytes/s
${fwcmd} queue 1 config pipe 1 mask dst-ip 0xffffffff
${fwcmd} add deny all from 10.1.159.192/30 to 10.1.1.0/24
${fwcmd} add fwd 10.1.159.193,8081 tcp from ${wifiasus} to any 80 via em2
${fwcmd} add divert natd all from any to any via em0
${fwcmd} add allow ip from any to any via em0
${fwcmd} add allow ip from any to any via lo0
${fwcmd} add allow icmp from any to any
${fwcmd} add allow udp from any 53 to any via em1
${fwcmd} add allow udp from any to any 53 via em1
${fwcmd} add allow udp from any 53 to any via em2
${fwcmd} add allow udp from any to any 53 via em2
${fwcmd} add deny ip from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any
${fwcmd} add allow ip from ${wifiasus} to any 443,5190
Не ужели pipe влияет на разрешение запрета? Я думал, что pipe-ом можно разграничивать только скорость доступа?

Дмитрий Иванович
проходил мимо

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение Дмитрий Иванович » 2012-12-21 9:43:42

сусцтл нет.инет.ип.фв.ван_пасс

Хрюша
рядовой
Сообщения: 39
Зарегистрирован: 2009-04-06 14:09:43

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение Хрюша » 2012-12-21 10:40:41

У меня net.inet.ip.fw.one_pass: 1.
Насколько я понял при таком значении пакеты после попадания в трубу идут дальше по правилам ipfw, но они не проходят дальше. Почему?

RAGNAR
ст. прапорщик
Сообщения: 530
Зарегистрирован: 2009-07-10 22:12:06
Откуда: Ржев
Контактная информация:

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение RAGNAR » 2012-12-23 0:43:39

сделай проще, укажи явно кто может остольных в банку
тоесть какая сеть куда может ходить

еще как у тебя нат поднят?
... Да освятится имя твое и pасшиpение твое, Господи...

Хрюша
рядовой
Сообщения: 39
Зарегистрирован: 2009-04-06 14:09:43

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение Хрюша » 2012-12-24 16:45:20

Нат прописан в rc.conf:

Код: Выделить всё

natd_enable="YES"
natd_flags="-config /etc/natd.conf"
natd_interface="em0"

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение FreeBSP » 2012-12-24 19:57:49

Хрюша писал(а):У меня net.inet.ip.fw.one_pass: 1.
Насколько я понял при таком значении пакеты после попадания в трубу идут дальше по правилам ipfw, но они не проходят дальше. Почему?
при таком значении пакеты вылетают из файера на первой трубе, нате, очереди.. если ноль - то обрабатываются трубой и идут дальше по правилам
man ipfw
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

Хрюша
рядовой
Сообщения: 39
Зарегистрирован: 2009-04-06 14:09:43

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение Хрюша » 2012-12-26 16:24:16

Точно при 0 проходит дальше по трубе, это я man ipfw не дочитал до конца:)
Если я выставляю net.inet.ip.fw.one_pass: 0, то у меня при таком наборе правил:

Код: Выделить всё

fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush
wifiasus="10.1.159.194"
${fwcmd} add pipe 1 ip from any to 10.1.159.194
${fwcmd} pipe 1 config bw 200MBytes/s
${fwcmd} queue 1 config pipe 1 mask dst-ip 0xffffffff
${fwcmd} add deny all from 10.1.159.192/30 to 10.1.1.0/24
${fwcmd} add fwd 10.1.159.193,8081 tcp from ${wifiasus} to any 80 via em2
${fwcmd} add divert natd all from any to any via em0
${fwcmd} add allow ip from any to any via em0
${fwcmd} add allow ip from any to any via lo0
${fwcmd} add allow icmp from any to any
${fwcmd} add allow udp from any 53 to any via em1
${fwcmd} add allow udp from any to any 53 via em1
${fwcmd} add allow udp from any 53 to any via em2
${fwcmd} add allow udp from any to any 53 via em2
${fwcmd} add deny ip from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any
${fwcmd} add allow ip from ${wifiasus} to any 443,5190
ничего вообще не работает. Почему тогда при net.inet.ip.fw.one_pass: 1, и при таком наборе правил:

Код: Выделить всё

fwcmd="/sbin/ipfw -q"
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush
wifiasus="10.1.159.194"
${fwcmd} add pipe 1 ip from any to 10.1.159.194
${fwcmd} pipe 1 config bw 200MBytes/s
${fwcmd} queue 1 config pipe 1 mask dst-ip 0xffffffff
${fwcmd} add fwd 10.1.159.193,8081 tcp from ${wifiasus} to any 80 via em2
${fwcmd} add divert natd all from any to any via em0
${fwcmd} add allow ip from any to any via em0
${fwcmd} add allow ip from any to any via lo0
${fwcmd} add allow icmp from any to any
${fwcmd} add allow udp from any 53 to any via em1
${fwcmd} add allow udp from any to any 53 via em1
${fwcmd} add allow udp from any 53 to any via em2
${fwcmd} add allow udp from any to any 53 via em2
${fwcmd} add deny ip from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any
${fwcmd} add allow ip from ${wifiasus} to any 443,5190
все работает в частности, нормально срабатывает fwd?
Насколько я понимаю при net.inet.ip.fw.one_pass: 1 все правила после pipe не выполняются? Я правильно понимаю?

Dampire_лень
проходил мимо

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение Dampire_лень » 2013-01-09 13:12:46

Неправильно. У тебя в пайп загоняется трафик, предназначенный для 10.1.159.194 (т.е. он разрешается). Остальной трафик ходит по правилам. А вообще белые люди, если им нужен суперзакрытый фаервол, при ванпасс = 1 сначала разрешают/запрещают что-то, а потом натят, пихают в пайпы и производят другие интересные операции. Во-первых убираются лишние расчеты, во-вторых все логично и понятно работает. man ipfw секция skipto.

P.S.
Метод копипасты не катит. Сам полгода назад писал фаервол, пока не осознал принципы - ничего правильно не работало.

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Как через ipfw закрыть доступ к определенной сети?

Непрочитанное сообщение FreeBSP » 2013-01-10 12:38:14

ipfw show
во-первых, почему где то ип а где-то макрос ${wifiasus}
во-вторых, вот это в начало поcле flush

Код: Выделить всё

${fwcmd} add allow ip from any to any via lo0
${fwcmd} add deny ip from any to 127.0.0.0/8
${fwcmd} add deny ip from 127.0.0.0/8 to any
в третьих,
при one_pass == 1 исходящий трафик от асуса вылетает на fwd в сквид, а далее уже от сквида вылетает на разрешающих по lo0 и em0 и на диверте в нат. входящий вылетает на разрешении em0, на диверте и на трубе. все работает
при one_pass == 0 исходящий опять же пролетает через сквид и натд, а вот входящий на em0 пролетает через диверт и allow а на em2 он нигде не останавливается, проходит до 65535 и дропается им/ ответ не доходит
тоесть разрешил чтото в одну сторону - разреши и в другую, за вас ничего делаться само не будет. и про правило по умолчанию не надо забывать

ну и стоит нарисовать таблички,рисуночки там всякие, кто куда должен ходить и как он ходить будет, разобраться как вообще пакеты ходят по файеру. тут кому то достаточно то все в голове представить, а кому то надо обложиться ватманами со схемами сети и порядком обработки пакетов.
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!