Правила для Firewall

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-07 16:05:39

Здравствуйте, помогите пожалуйста создать правило для firewall

Такая ситуация:
Компьютер с FreeBSD 9.3, подключен к инету следующим образом: ИНЕТ-> ИНТЕРНЕТ ШЛЮЗ -> 192.168.99.88(1 сетевая) FREEBSD (2 сетевая) - 192.168.0.4 -> Прочие компы...
Такая непонятная схема, реализована лишь для целей изучения FreeBSD

Проблема в том, что настроив firewall на FreeBSD следующим содержанием:

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

LIF="rl0"  #Внутрення карта    
WIF="bfe0" #Внешняя карта

ipfw add 100 allow ip from any to any via lo0 
ipfw add 200 deny ip from any to 127.0.0.0/8
ipfw add 300 deny ip from 127.0.0.0/8 to any  #Запрет локального трафика не через локальный интерфейс

ipfw add deny from any to 10.0.0.0/8 via ${external}
ipfw add deny from any to 172.16.0.0/12 via ${external}
ipfw add deny from any to 192.168.0.0/16 via ${external} #Трафик с адресами внутренних сетей (RFC 1918) не должен приходить через внешний интерфейс.

ipfw add deny from 10.0.0.0/8 to any via ${external}
ipfw add deny from 172.16.0.0/12 to any via ${external}
ipfw add deny from 192.168.0.0/16 to any via ${external} #Такой же трафик не должен и уходить

ipfw add 4000 allow udp from ${external} to any 53
ipfw add 4100 allow udp from any 53 to ${external} #правило относится к UDP-трафику

ipfw add 5000 deny icmp from any to ${external} in icmptypes 8
ipfw add 5100 allow icmp from ${external} to any out icmtypes 8
ipfw add 5200 allow icmp from any to ${external} in icmptypes 0

ipfw add 64000 deny ip from any to any
ipfw add 65000 allow ip from any to any
Я получается запретил локальный трафик, а следовательно трафик который приходил на сетевую карту 192.168.99.88 запрещен, следовательно FreeBSD теперь без выхода в ИНЕТ.

Помогите пожалуйста составить правило, которое разрешит 192.168.99.88 принимать локальный трафик с вышестоящего интернет шлюза

Хостинговая компания 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/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Правила для Firewall

Непрочитанное сообщение Alex Keda » 2015-12-17 8:33:36

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

ipfw show
огласите пожалуйста.
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Правила для Firewall

Непрочитанное сообщение Гость » 2015-12-17 10:25:37

Убери эти правила, у тебя внешний интерфейс в локальной сети, следовательно они не нужны:

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

ipfw add deny from any to 10.0.0.0/8 via ${external}
ipfw add deny from any to 172.16.0.0/12 via ${external}
ipfw add deny from any to 192.168.0.0/16 via ${external} #Трафик с адресами внутренних сетей (RFC 1918) не должен приходить через внешний интерфейс.

Гость
проходил мимо

Правила для Firewall

Непрочитанное сообщение Гость » 2015-12-17 10:26:23

Ну и аналогичные тоже

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Правила для Firewall

Непрочитанное сообщение snorlov » 2015-12-17 11:35:31

Гость писал(а):Ну и аналогичные тоже
Ну зачем же так жестоко, исходя из адресов сетки, достаточно разрешить хождение 192.168.99.* и 192.168.0.*

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-17 12:45:08

Спасибо за советы...
snorlov писал(а):достаточно разрешить хождение 192.168.99.* и 192.168.0.*
Подскажите пожалуйста, как правильно составить это правило?

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Правила для Firewall

Непрочитанное сообщение snorlov » 2015-12-17 13:11:25

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

ipfw add allow all from  192.168.99.0/24 to 192.168.0.0/24
ipfw add allow  all from  192.168.0.0/24 to 192.168.99.0/24
ipfw add deny from any to 192.168.0.0/16 via ${external
И вообще настройка файера подразумевает хорошее знание протокола TCP/IP и его маршрутизации, почитайте книжечку по нему

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-21 10:13:15

Сможете подсказать пожалуйста, почему при загрузке ipfw ругается:

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

ipfw2 (+ipv6) initialized, divert loadable, nat loadable, default to deny, logging disabled
ipfw: missing "to"
ipfw: missing "to"
ipfw: unrecognised option [-1]
Почему ему "to" не нравится...

И после загрузки всё время ругается:

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

freebsd ntpd_initres[1110] host name not found: 0.freebsd.pool.ntp.org
freebsd ntpd_initres[1110] host name not found: 1.freebsd.pool.ntp.org
freebsd ntpd_initres[1110] host name not found: 2.freebsd.pool.ntp.org

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Правила для Firewall

Непрочитанное сообщение snorlov » 2015-12-21 10:32:50

Вы как грузите правила? Через скрипт наверное, ну так смотрите что там вписано, обычно какие то непонятные для ipfw символы.
по поводу ntpd, днс криво работает или не настроена...

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-21 11:02:12

snorlov писал(а):Вы как грузите правила? Через скрипт наверное, ну так смотрите что там вписано, обычно какие то непонятные для ipfw символы
Да вроде бы нету там незнакомых символов, раньше такая конфигурация работала, на другом компе...
snorlov писал(а):по поводу ntpd, днс криво работает или не настроена...
Когда в firewall следующие правила:

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

FwCMD="/sbin/ipfw -q"
LanOut="bfe0"

${FwCMD} -f -q flush

${FwCMD} nat 1 config log if ${LanOut} same_ports
${FwCMD} add nat 1 ip from any to any
DNS не ругается...

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Правила для Firewall

Непрочитанное сообщение snorlov » 2015-12-21 11:11:40

ipfw не грузит некорректные с его точки зрения правила, а последнее в вашем случае deny from any to any, вот наверное и все блокируется... Еще раз спрашиваю, как вы грузите правила для ipfw...
всегда можно посмотреть через

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

ipfw  -a  list
какие конкретно действуют...

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-21 11:42:57

snorlov писал(а):Еще раз спрашиваю, как вы грузите правила для ipfw...
В rc.conf
firewall_nat_enable="YES"
firewall_enable="YES"
firewall_script="/etc/rc.firewall.my" #Я скриптом правила гружу

Вот содержание rc.firewall.my

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

###FIREWALL###
/sbin/ipfw -q -f flush #SBROS VSEH PRAVIL
fwcmd="/sbin/ipfw -q" #OBOZNACHENIE KOMANDI
LIF="rl0" #LOKALNI INTERFEIS
LIP="`ifconfig $LIF|awk '/inet/{print \$2}'`" #LOKALNI IP
LAN="$LIP/24" #LOKALNAYA SET
WIF="bfe0" #VNESNI INTERFEIS
WIP="`ifconfig $WIF|awk '/inet/{print \$2}'`" #VNESHNI IP
WAN="$WIP/24" #VNESHNAYA SET

##################################################

${fwcmd} add 1100 allow ip from any to any via lo0 
${fwcmd} add 1110 deny ip from any to 127.0.0.0/8 
${fwcmd} add 1120 deny ip from 127.0.0.0/8 to any 

${fwcmd} add 1150 allow ip from me to me 

${fwcmd} add 1200 deny ip from $LAN to any in via $WIF 
${fwcmd} add 1210 deny ip from $WAN to any in via $LIF 

#${fwcmd} add 2000 deny ip from any to 10.0.0.0/8 in via $WIF 
${fwcmd} add 2005 deny ip from any to 172.16.0.0/12 in via $WIF 
#${fwcmd} add 2010 deny ip from any to 192.168.0.0/16 in via $WIF 
${fwcmd} add 2050 deny ip from any to 0.0.0.0/8 in via $WIF 

${fwcmd} add 2055 deny ip from any to 169.254.0.0/16 in via $WIF 
${fwcmd} add 2060 deny ip from any to 244.0.0.0/4 in via $WIF 
${fwcmd} add 2065 deny ip from any to 240.0.0.0/4 in via $WIF 

#${fwcmd} add 2100 deny ip from 10.0.0.0/8 to any out via $WIF 
${fwcmd} add 2105 deny ip from 172.16.0.0/12 to any out via $WIF 
#${fwcmd} add 2110 deny ip from 192.168.0.0/16 to any out via $WIF 
${fwcmd} add 2175 deny ip from 0.0.0.0/8 to any out via $WIF 
${fwcmd} add 2180 deny ip from 169.254.0.0/16 to any out via $WIF 
${fwcmd} add 2185 deny ip from 224.0.0.0/4 to any out via $WIF
${fwcmd} add 2190 deny ip from 240.0.0.0/4 to any out via $WIF 

${fwcmd} add 3000 allow ip from any to $LAN in via $LIF 
${fwcmd} add 3005 allow ip from $LAN to any out via $LIF 

${fwcmd} add 3010 allow icmp from any to $WIP icmptypes 0,3,4,11,12 in via $WIF 
${fwcmd} add 3011 allow icmp from $WIP to any icmptypes 3,8,12 out via $WIF 
${fwcmd} add 3012 allow icmp from $WIP to any frag out via $WIF
${fwcmd} add 3014 deny icmp from any to any in via $WIF 

${fwcmd} add 3100 allow udp from any to $WIP 53 in via $WIF 
${fwcmd} add 3110 allow udp from $WIP 53 to any out via $WIF
${fwcmd} add 3120 allow udp from any 53 to $WIP in via $WIF
${fwcmd} add 3130 allow udp from $WIP to any 53 out via $WIF

${fwcmd} add 3200 allow udp from any to any 123 via $WIF 
${fwcmd} add 3300 allow tcp from any to $WIP 53 in via $WIF setup


###############################################################

#SSH CONNECTION#
${fwcmd} add 3450 deny tcp from any to me dst-port 22 
${fwcmd} add 3455 deny tcp from any to me dst-port 2298 
${fwcmd} add 3505 deny tcp from any to me dst-port 81 
${fwcmd} add 3555 deny tcp from any to me dst-port 5222 

###############################################################

${fwcmd} add 10000 nat 1 all from any to any via $WIF
${fwcmd} add 65533 allow all from any to any
${fwcmd} add 65534 deny all from any to any


snorlov писал(а):всегда можно посмотреть через ipfw -a list какие конкретно действуют...
Вот такой результат:

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

01100 550 38992 allow ip from any to any via lo0
01110   0     0 deny ip from any to 127.0.0.0/8
01120   0     0 deny ip from 127.0.0.0/8 to any
01150   0     0 allow ip from me to me
02005   0     0 deny ip from any to 172.16.0.0/12 in via bfe0
02050   0     0 deny ip from any to 172.16.0.0/8 in via bfe0
02055   0     0 deny ip from any to 169.254.0.0/16 in via bfe0
02060   1    68 deny ip from any to 240.0.0.0/4 in via bfe0
02065   0     0 deny ip from any to 240.0.0.0/4 in via bfe0
02105   0     0 deny ip from 172.16.0.0/12 to any out via bfe0
02175   0     0 deny ip from 0.0.0.0/8 to any out via bfe0
02180   0     0 deny ip from 169.254.0.0/16 to any out via bfe0
02185   0     0 deny ip from 224.0.0.0/4 to any out via bfe0
02190   0     0 deny ip from 240.0.0.0/4 to any out via bfe0
03014   0     0 deny icmp from any to any in via bfe0
03200   0     0 allow udp from any to any dst-port 123 via bfe0
03450   0     0 deny tcp from any to me dst-port 22
03455   0     0 deny tcp from any to me dst-port 2298
03505   0     0 deny tcp from any to me dst-port 81
03555   0     0 deny tcp from any to me dst-port 5222
10000 316 23331 nat 1 ip from any to any via bfe0
65533   0     0 allow ip from any to any
65534   0     0 deny ip from any to any
65535   0     0 deny ip from any to any
P.S. У меня во внешнюю сетевую карту приходит кабель из подсети 192.168.99.0/24. Так как есть вышестоящий шлюз. Может это как то влияет?

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Правила для Firewall

Непрочитанное сообщение snorlov » 2015-12-21 11:58:20

Ну и где у вас 1200 и 1210 правила, ну и другие, где фигурируют $WIP и $LIP
Вы уверены, что здесь все правильно
Reken писал(а): WIP="`ifconfig $WIF|awk '/inet/{print \$2}'`" #VNESHNI IP
LIP="`ifconfig $LIF|awk '/inet/{print \$2}'`" #LOKALNI IP

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-21 14:18:36

snorlov писал(а):Ну и где у вас 1200 и 1210 правила, ну и другие, где фигурируют $WIP и $LIP
Вы уверены, что здесь все правильно
Reken писал(а): WIP="`ifconfig $WIF|awk '/inet/{print \$2}'`" #VNESHNI IP
LIP="`ifconfig $LIF|awk '/inet/{print \$2}'`" #LOKALNI IP
Наверное глупо прозвучит, но не уверен...
Эти четыре строчки: К сожалению мне мало понятны, я их из другого конфига подсмотрел.

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

LIP="`ifconfig $LIF|awk '/inet/{print \$2}'`" #LOKALNI IP
LAN="$LIP/24" #LOKALNAYA SET
WIP="`ifconfig $WIF|awk '/inet/{print \$2}'`" #VNESHNI IP
WAN="$WIP/24" #VNESHNAYA SET
Я думал что LIP и WIP автоматически определяются. Что я тут перепутал?

Отправлено спустя 2 часа 13 минут 7 секунд:
Пробела не хватало...
Источник цитаты WIP="`ifconfig $WIF|awk '/inet/{print \$2}'`" #VNESHNI IP
Источник цитаты LIP="`ifconfig $LIF|awk '/inet/{print \$2}'`" #LOKALNI IP

А нужно так...
Источник цитаты WIP="`ifconfig $WIF|awk '/inet /{print \$2}'`" #VNESHNI IP
Источник цитаты LIP="`ifconfig $LIF|awk '/inet /{print \$2}'`" #LOKALNI IP

После всё заработало...

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Правила для Firewall

Непрочитанное сообщение snorlov » 2015-12-21 16:20:09

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

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-21 16:27:44

snorlov писал(а):Не все советы хороши, но даже хорошие советы все-равно требуют осмысления, не надо бездумно копипастить, особенно если плохо знаешь предмет...
Стараюсь осмыслить всё что перекопировал...

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-22 9:40:21

Firewall работает. Но вот теперь у меня получается так:
В правилах firewall есть пункты которые запрещают прохождение локальных адресов через внешний сетевой интерфейс...
Так как у меня используется вышестоящий шлюз, то как раз во внешнюю сеть FreeBSD смотрит адрес 192.168.99.* следовательно эта подсеть блокируется...

Компы которые подключены к внутренней сетевой карте FreeBSD не могут выйти в ИНЕТ, пишут что "соединение с 192.168.99.4 не удалось"
В логах FreeBSD в /var/log/squid/cache.log следующее:
TCP connection to 192.168.99.4/3128 failed

Добавление следующих правил в начале скрипта Firewall не помогло:
${fwcmd} add 1000 allow all from 192.168.99.0/24 to 192.168.0.0/24
${fwcmd} add 1010 allow all from 192.168.0.0/24 to 192.168.99.0/24

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Правила для Firewall

Непрочитанное сообщение snorlov » 2015-12-22 10:00:21

Снова надо включить голову, поэтому вопросы:
1. на самой фре инет есть или нет.
2. у вас сетка 192.168.99.0 пингуется с компов 192.168.0.0 или нет
3. у вас сетка 192.168.0.0 пингуется с компов 192.168.99.0 или нет

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-22 10:47:17

snorlov писал(а):на самой фре инет есть или нет.
Похоже что нет, Фря перестала работать как почтовый сервер, в логах EXIM пишет "Permission denied", следовательно похоже нету интернета...
snorlov писал(а):у вас сетка 192.168.99.0 пингуется с компов 192.168.0.0 или нет
Нет, не пингуется. Ни при включенном ни при выключенном firewall на FreeBSD.
snorlov писал(а):у вас сетка 192.168.0.0 пингуется с компов 192.168.99.0 или не
Нет, не пингуется. Ни при включенном ни при выключенном firewall на FreeBSD.

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Правила для Firewall

Непрочитанное сообщение snorlov » 2015-12-22 11:17:19

Reken писал(а): Похоже что нет, Фря перестала работать как почтовый сервер, в логах EXIM пишет "Permission denied", следовательно похоже нету интернета...
А это еще ничего не значит... пинг с нее на yandex.ru есть и при включенном файере и при выключенном?
Reken писал(а): Нет, не пингуется. Ни при включенном ни при выключенном firewall на FreeBSD.
Читаем про маршрутизацию TCP/IP, вкратце сетка 192.168.99.0 не знает, что за 192.168.99.88 есть сетка 192.168.0.0

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-22 11:44:25

snorlov писал(а):пинг с нее на yandex.ru есть
На вышестоящем шлюзе, запрет на пинг, поэтому пинг до yandex.ru не пройдет ни с одного компа 192.168.99.*, только yandex.ru преобразует в IP и всё, что собственно FreeBSD и делает при пинге.
snorlov писал(а): Читаем про маршрутизацию TCP/IP, вкратце сетка 192.168.99.0 не знает, что за 192.168.99.88 есть сетка 192.168.0.0
Понятно, спасибо

Отправлено спустя 11 минут 1 секунду:
Всё из-за firewall, потому что когда он настроен ка "всё и всем разрешить", то и на компах которые к внешней сетевой (192.168.0.*) FreeBSD подключены есть ИНЕТ, и на самой Freebsd есть ИНЕТ

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Правила для Firewall

Непрочитанное сообщение snorlov » 2015-12-22 12:41:01

Еще раз я посмотрел ваши правила, некоторые пропускаю

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

###FIREWALL###

##################################################
......


${fwcmd} add 10000 nat 1 all from any to any via $WIF
${fwcmd} add 65533 allow all from any to any
${fwcmd} add 65534 deny all from any to any
Вы что настраиваете, шлюз в инет или чистый роутер, в чистом роутере нат фафиг нужен нужна только марщрутизация, да и файер не всегла, вот если шлюз в инет, то тут другое дело нужна и трансляция адресов и их маршрутизация.
Другими словами те правила, которые я вам предложил годятся для чистого роутера и тогда правила с натом соответственно не нужны и грузить его через rc.conf не надо,
Если же шлюз в инет, то там включаем нат и вы должны выключить правило
ipfw add deny from any to 192.168.0.0/16 via ${external} #Трафик с адресами внутренних сетей (RFC 1918) не должен приходить через внешний интерфейс.
поскольку у вас для этого шлюза внешняя сетка является приватной...
Кстати тут есть статейка http://www.lissyara.su/articles/freebsd ... /ipfw_nat/, почитайте ее и честно говоря книжечку по TCP/IP почитайте, потом про ipfw и только после этого начать тренировку...

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-22 14:13:35

Я шлюз собираю, а не просто роутер...
Спасибо за статейку. Я уже прочитал много книг, пока что не хватает опыта реализовывать.

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Правила для Firewall

Непрочитанное сообщение snorlov » 2015-12-22 14:33:11

На самом деле, то что на внешнем интерфейсе болтаются пакеты приватных сетей, это в большинстве случаев проблема провайдеров, вам достаточно будет блокировать свою внутренную сеть на внешнем интерфейсе...

Reken
лейтенант
Сообщения: 619
Зарегистрирован: 2014-06-30 11:23:24

Правила для Firewall

Непрочитанное сообщение Reken » 2015-12-22 14:38:14

Я вообще попробую, вывести FreeBSD из под вышестоящего шлюза. И подключу FreeBSD напрямую к ИНЕТУ. Так будет как мне кажется намного проще, а то танцы с бубном какие то получаются...