The OpenNET Project / Index page

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



"FreeBsd Ipfw"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (Firewall и пакетные фильтры / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"FreeBsd Ipfw"  +/
Сообщение от DevSetemail (?), 24-Май-21, 14:52 
Приветствую форумчане!
Прошу помощи в FreeBsd есть довольно много вопросов касательно Ipfw.
1. Нужно ли пересобрать ядро в FreeBSD 13 чтобы включить поддержку ipfw?
В 9 версии пересобрал  с такими параметрами:
# ipfw
options IPFIREWALL
options IPFIREWALL_NAT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options LIBALIAS
options DUMMYNET
options ROUTETABLES=2

Нужно ли сейчас так заморачиваться?

2. Верно ли я понимаю  при параметре options IPFIREWALL_NAT, Nat работает ядерно, а при options DIVERT работает  через демон Natd?

3. Нужно ли включать  в ядре options LIBALIAS при ядерном нате на FreeBsd 13?

4. Если у кого то  есть  пример правил  с сетью  DMZ скиньте пожалуйста не совсем понимаю  реализацию  в плане правил.
Спасибо.

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

Оглавление

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


1. "FreeBsd Ipfw"  +1 +/
Сообщение от dl (??), 24-Май-21, 19:12 
Можно не пересобирать

sysrc firewall_enable="YES"
или ручками в rc.conf

настройка логов через:
sysctl net.inet.ip.fw.verbose
sysctl net.inet.ip.fw.verbose_limit

Ядерный нат:
IN-KERNEL NAT
     ipfw [-q] nat number config config-options

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

2. "FreeBsd Ipfw"  +/
Сообщение от Сергей (??), 24-Май-21, 23:24 
Да уже начиная с 8-мой пересобирать не надо было,
Посмотрите дефолтный /etc/rc.firewall, по моему там все просто расписано...
Ответить | Правка | Наверх | Cообщить модератору

3. "FreeBsd Ipfw"  +1 +/
Сообщение от arachnid (ok), 25-Май-21, 16:36 
как уже сказали выше, нет, не нужно - все можно загрузить модулям

kldload ipfw, ipfw_nat (модуль libalias подгрузится самостоятельно) - только осторожно - по умолчанию ipfw закрыт - deny all from any to any

2. не совсем - модули могут быть загружены и одновременно. divert просто перенапрявляет пакеты демону natd

3. нет

4. схему приложи - накидаю примерно

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

4. "FreeBsd Ipfw"  +/
Сообщение от DevSetemail (?), 27-Май-21, 13:42 
Сейчас конфиг такой:
rc.conf
Internet  
ifconfig_em0="inet 1.1.1.1 netmask 255.255.255.248"  
Alias internet ftp  
ifconfig_em0_alias0="inet 1.1.2.1 netmask 255.255.255.255"  
Local Network  
ifconfig_em1="inet 192.168.1.10 netmask 255.255.255.0"  
DMZ  
ifconfig_em2="inet 192.168.2.10 netmask 255.255.255.0"  

Правила

#!/bin/sh  

#reset rules  
ipfw -q -f flush  

#-------main network-------
#macro  
net="em0"  
lan="em1"  
dmz="em2"  
cmd="ipfw -q add"  
skip="skipto 2000"  

#kernel nat 1 config  
ipfw -q nat 1 config if $net same_ports unreg_only \  
redirect_port tcp 192.168.2.31:21 21 \  
redirect_port tcp 192.168.2.31:20 20 \  
redirect_port tcp 192.168.2.31:30000-31000 30000-31000 \  
redirect_port tcp 192.168.1.58:443 443 \  
redirect_port tcp 192.168.2.60:25 25  

#-------rules network -------
#allow networks  
$cmd 0001 allow all from any to any via $lan  
$cmd 0002 allow all from any to any via $dmz  
$cmd 0004 allow all from any to any via lo0  

#kernel nat 1 in  
$cmd 0040 nat 1 ip from any to any in via $net  

#dinamic rules  
$cmd 0050 check-state  

#-------out network-------
#allow trafic from gate out  
$cmd 0060 $skip tcp from any to any out via $net setup keep-state  
$cmd 0061 $skip udp from any to any out via $net keep-state  
$cmd 0062 $skip icmp from any to any out via $net keep-state  

#exchange trafic out  
$cmd 0070 $skip tcp from 192.168.1.58 443 to any  
$cmd 0071 $skip tcp from 192.168.2.60 25 to any  

#dmz ftp trafic out  
$cmd 0072 $skip tcp from 192.168.2.31 20,21,30000-31000 to any  

#-------in network-------
#exchange trafic in  
$cmd 0130 allow tcp from any to 192.168.1.58 443  
$cmd 0131 allow tcp from any to 192.168.2.60 25  

#dmz ftp trafic in  
$cmd 0130 allow tcp from any to 192.168.2.31 20,21,30000-31000  

#-------end network-------
#deny all  
$cmd 0500 deny log all from any to any in via $net  
$cmd 0510 deny log all from any to any out via $net  

#kernel nat 1 out  
$cmd 2000 nat 1 ip from any to any out via $net  
$cmd 3000 allow ip from any to any  

#deny all other  
$cmd 4000 deny log all from any to any  

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

5. "FreeBsd Ipfw"  +/
Сообщение от DevSetemail (?), 27-Май-21, 13:52 
Проблема в том что  не работает  редирект и не работает  ftp из  интернета по адресу 1.1.1.1 (вымышленный)
Схема
https://ibb.co/BghYSMt

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

8. "FreeBsd Ipfw"  +/
Сообщение от arachnid (ok), 31-Май-21, 17:39 
> Проблема в том что  не работает  редирект и не работает
>  ftp из  интернета по адресу 1.1.1.1 (вымышленный)
> Схема
> https://ibb.co/BghYSMt

и gateway_enable="yes" в /etc/rc.conf есть?

ps. у вас там правила ната не совсем корректно прописаны, но точнее скажу, когда вы приведете вывод ipfw

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

9. "FreeBsd Ipfw"  +/
Сообщение от Devset (ok), 01-Июн-21, 08:38 
>> Проблема в том что  не работает  редирект и не работает
>>  ftp из  интернета по адресу 1.1.1.1 (вымышленный)
>> Схема
>> https://ibb.co/BghYSMt
> и gateway_enable="yes" в /etc/rc.conf есть?
> ps. у вас там правила ната не совсем корректно прописаны, но точнее
> скажу, когда вы приведете вывод ipfw
> и gateway_enable="yes" в /etc/rc.conf есть?

Есть

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

6. "FreeBsd Ipfw"  +/
Сообщение от Devset (ok), 31-Май-21, 11:57 
> как уже сказали выше, нет, не нужно - все можно загрузить модулям
> kldload ipfw, ipfw_nat (модуль libalias подгрузится самостоятельно) - только осторожно
> - по умолчанию ipfw закрыт - deny all from any to
> any
> 2. не совсем - модули могут быть загружены и одновременно. divert просто
> перенапрявляет пакеты демону natd
> 3. нет
> 4. схему приложи - накидаю примерно

Приложил

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

7. "FreeBsd Ipfw"  +1 +/
Сообщение от arachnid (ok), 31-Май-21, 17:14 
и еще вывод команд ipfw show и ipfw nat show config
Ответить | Правка | Наверх | Cообщить модератору

10. "FreeBsd Ipfw"  +/
Сообщение от Devset (ok), 01-Июн-21, 08:44 
> и еще вывод команд ipfw show и ipfw nat show config

gate-01:~ # ipfw show
00001 88144381 64989212950 allow ip from any to any via em1
00002     2620      136240 allow ip from any to any via em2
00003 31867890 18506893372 allow ip from any to any via tun0
00004      678      171322 allow ip from any to any via lo0
00010 21442036 10416892137 allow udp from any to me 1194
00011 23334762 15556716106 allow udp from me 1194 to any
00020        0           0 deny ip6 from any to any
00021        0           0 deny udp from any to any 546
00022        0           0 deny udp from any to any 547
00040 35883220 43530335534 nat 1 ip from any to any in via em0
00050        0           0 check-state :default
00060 49399902 43171443857 skipto 2000 tcp from any to any out via em0 setup keep-state :default
00061  6522916  3133645162 skipto 2000 udp from any to any out via em0 keep-state :default
00062     1778      241239 skipto 2000 icmp from any to any out via em0 keep-state :default
00070     5673     3619426 skipto 2000 tcp from 192.168.1.20 443 to any
00071      788      114095 skipto 2000 tcp from 192.168.1.21 25 to any
00130     6819      567081 allow tcp from any to 192.168.1.20 443
00131      898       68262 allow tcp from any to 192.168.1.21 25
00140        0           0 allow tcp from 192.168.1.250 to me 70000 in via em0 setup limit src-addr 2 :default
00500   132920     9709344 deny log logamount 40 ip from any to any in via em0
00510    31799     3647102 deny log logamount 40 ip from any to any out via em0
02000 20188473  2789072830 nat 1 ip from any to any out via em0
03000 55931055 46309063551 allow ip from any to any
04000        0           0 deny log logamount 40 ip from any to any
65535      754      116157 deny ip from any to any

gate-01:~ # ipfw nat show config
ipfw nat 1 config if em0 same_ports unreg_only redirect_port tcp 192.168.1.21:25 25 redirect_port tcp 192.168.1.20:443 443

С меня на пиво)

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

11. "FreeBsd Ipfw"  +/
Сообщение от arachnid (ok), 03-Июн-21, 14:04 
из того, что вижу (и на что рекомендую обращать внимание в будущем при написании) - выводы того, что мы хотим (в скрипте) и того, что получаем - отличаются. и это сразу повод смотреть в отличия более внимательно :)

плюс, если разбить правило ната на несколько, будет проще по счетчикам смотреть, что и как. ну и для упрощения понимания можно первыми ставить правила ната на уходящий от нас трафик, а потом в конце обрабатывать входящий - можно будет отказаться от skip

$int_lan="192.168.0.0/16"

ipfw nat 10 config if $net deny_in same_port reset
ipfw nat 20 config if $net redirect_port tcp 192.168.2.31:21 21 192.168.2.31:20 20 192.168.2.31:30000-31000 30000-31000
ipfw nat 30 config if $net redirect_port tcp 192.168.2.60:25 25
ipfw nat 40 config if $net redirect_port tcp 192.168.1.58:443 443


#-------rules network -------
#allow networks
$cmd 0001 allow all from any to any via $lan
# а имеет ли смысл правило 2 ? дмз же нужна, что бы изолировать сервисы, а вы разрешаете все - по хорошему вам надо разрешить пользоватлеям из локалки доступ к необходимым сервисам в дмз и доступ из дмз наружу.
$cmd 0002 allow all from any to any via $dmz
$cmd 0004 allow all from any to any via lo0

# разрешаем прохождение трафика снаружи к сервисам внутри
$cmd 0040 nat 20 tcp from any to me 20,21,30000-31000 via $net
$cmd 0041 nat 30 tcp from any to me 25 via $net
$cmd 0041 nat 40 tcp from any to me 443 via $net

# разрешаем пользователям локальной сети и дмз уходить наружу
$cmd 50 nat 10 from $int_lan to any via $net

# правила 60 и 61 не нужны. опять же, два правила можно заменить одним при использовании allow all вместо allow tcp allow udp

# и у вас тут как-то странно - вроде как почтовик то в дмз(.2), то в .1

$cmd 100 allow tcp from 192.168.1.58 443 to any keep-sate


# разрешаем пакетам снуружи попадать на нат  - оно должно быть последним перед полным запретом
$cmd 10000 nat 10 ip from any to me via $net

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

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

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




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

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