The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
FreeBsd Ipfw, !*! DevSet, 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 скиньте пожалуйста не совсем понимаю  реализацию  в плане правил.
Спасибо.

  • FreeBsd Ipfw, !*! dl, 19:12 , 24-Май-21 (1) +1
    Можно не пересобирать

    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

  • FreeBsd Ipfw, !*! arachnid, 16:36 , 25-Май-21 (3) +1
    как уже сказали выше, нет, не нужно - все можно загрузить модулям

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

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

    3. нет

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

    • FreeBsd Ipfw, !*! DevSet, 13:42 , 27-Май-21 (4)
      Сейчас конфиг такой:
      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  

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

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

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

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

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

            Есть

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

      Приложил

      • FreeBsd Ipfw, !*! arachnid, 17:14 , 31-Май-21 (7) +1
        и еще вывод команд ipfw show и ipfw nat show config
        • FreeBsd Ipfw, !*! Devset, 08:44 , 01-Июн-21 (10)
          > и еще вывод команд 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

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

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

            плюс, если разбить правило ната на несколько, будет проще по счетчикам смотреть, что и как. ну и для упрощения понимания можно первыми ставить правила ната на уходящий от нас трафик, а потом в конце обрабатывать входящий - можно будет отказаться от 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




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

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