The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Чего не хватает в rc.firewall, !*! nda, 20-Янв-08, 12:30  [смотреть все]
Доброго времени суток. Организовал дома небольшой интернет сервер на базе FreeBSD 6.2.
Карта сети:
ADSL <-> FreeBSD Internet Server <-> Local Network
Связь с провайдером через pppoe, использую модем D-Link 2300U в режиме bridge.
Для доступа хостов в интернет поднят natd. IP адреса внутри локалки раздаются по DHCP.
Проблем в приципе нет, но хотелось бы услышать мнение специалиста по составленному rc.firewall, может чего-то не хватает, может есть что-то лишнее.
Вот несколько вопросов которые у меня возникли:
1. Если использовать правило "add deny ip from any to 192.168.0.0/16 in via ${out_if}" то  локальные хосты в инет попасть не могут.
2. Через divert правило пакетов вообще не проходит, почему? И вообще непонятно как тогда хосты лазают в инет, если через natd они не проходят? А они лазают :)
3. Есть ли ошибки в последовательности правил?
Буду рад любым советам и исправлениям. Спасибо.

/**< rc.firewall listing */

#!/bin/sh -q

ipfw_cmd="/sbin/ipfw -q"

lan_if="rl1"
out_if="tun0"
lan_net="192.168.13.0/24"


${ipfw_cmd} -f flush
${ipfw_cmd} add check-state
${ipfw_cmd} add deny ip from any to 10.0.0.0/8 in via ${out_if}
${ipfw_cmd} add deny ip from any to 172.16.0.0/12 in via ${out_if}
# ${ipfw_cmd} add deny ip from any to 192.168.0.0/16 in via ${out_if}
${ipfw_cmd} add deny ip from any to 0.0.0.0/8 in via ${out_if}
${ipfw_cmd} add deny ip from any to 169.254.0.0/16 in via ${out_if}
${ipfw_cmd} add deny ip from any to 240.0.0.0/4 in via ${out_if}
${ipfw_cmd} add deny icmp from any to any frag
${ipfw_cmd} add deny log icmp from any to 255.255.255.255 in via ${out_if}
${ipfw_cmd} add deny log icmp from any to 255.255.255.255 out via ${out_if}
${ipfw_cmd} add allow tcp from any to any established
${ipfw_cmd} add allow ip from any to any via lo0
${ipfw_cmd} add allow ip from any to any via ${lan_if}
${ipfw_cmd} add allow udp from any to any domain via ${out_if}
${ipfw_cmd} add allow udp from any domain to any via ${out_if}
${ipfw_cmd} add allow tcp from any to any http,https,ftp,5190 out via ${out_if}
${ipfw_cmd} add allow ip from me to any out via ${out_if}
${ipfw_cmd} add allow icmp from any to any icmptypes 0,8,11
${ipfw_cmd} add allow tcp from any to me 80 via ${out_if}
${ipfw_cmd} add divert natd ip from ${lan_net} to any out via ${out_if}
${ipfw_cmd} add 65535 deny ip from any to any

  • Чего не хватает в rc.firewall, !*! CrAzOiD, 12:55 , 20-Янв-08 (1)
    я бы еще добавил
    ${ipfw_cmd} add deny ip from 192.168.0.0/16 to any out via ${out_if}

    что бы исключить случайный проброс

    • Чего не хватает в rc.firewall, !*! nda, 14:54 , 20-Янв-08 (2)
      >я бы еще добавил
      >${ipfw_cmd} add deny ip from 192.168.0.0/16 to any out via ${out_if}
      >
      >что бы исключить случайный проброс

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

      • Чего не хватает в rc.firewall, !*! CrAzOiD, 15:15 , 20-Янв-08 (3)
        >>я бы еще добавил
        >>${ipfw_cmd} add deny ip from 192.168.0.0/16 to any out via ${out_if}
        >>
        >>что бы исключить случайный проброс
        >
        >Спасибо, но, как видишь, в листинге это правило у меня закоментировано, по
        >причине того что с этим правилом ни один хост из локалки
        >не может выйти в инет.

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


        • Чего не хватает в rc.firewall, !*! nda, 15:21 , 20-Янв-08 (4)
          >не, у меня другое правило, исключающее случайный проброс наружу адресов локальной сети
          >через внешний интерфейс

          Извини, не обратил внимание. Попробовал, у всех хостов отключился инет. Пакеты режутся как раз на этом правиле.

          00100   0     0 check-state
          00200   0     0 deny ip from any to 10.0.0.0/8 in via tun0
          00300   0     0 deny ip from any to 172.16.0.0/12 in via tun0
          00400   0     0 deny ip from any to 0.0.0.0/8 in via tun0
          00500   0     0 deny ip from any to 169.254.0.0/16 in via tun0
          00600   0     0 deny ip from any to 240.0.0.0/4 in via tun0
          00700  17   980 deny ip from 192.168.0.0/16 to any out via tun0
          00800   0     0 deny icmp from any to any frag
          00900   0     0 deny log icmp from any to 255.255.255.255 in via tun0
          01000   0     0 deny log icmp from any to 255.255.255.255 out via tun0
          01100  39  2918 allow tcp from any to any established
          01200   0     0 allow ip from any to any via lo0
          01300   6   360 allow ip from any to any via rl1
          01400   0     0 allow udp from any to any dst-port 53 via tun0
          01500   0     0 allow udp from any 53 to any via tun0
          01600   0     0 allow tcp from any to any dst-port 80,443,21,5190 out via tun0
          01700   0     0 allow ip from me to any out via tun0
          01800   0     0 allow icmp from any to any icmptypes 0,8,11
          01900   0     0 allow tcp from any to me dst-port 80 via tun0
          02000   0     0 divert 8668 ip from 192.168.13.0/24 to any out via tun0
          65535 170 26450 deny ip from any to any

          • Чего не хватает в rc.firewall, !*! CrAzOiD, 15:29 , 20-Янв-08 (5)
            мне кажется что дело в том что правило где происходит трансляция в самом конце.
            т.е. сначала режешь, а потом уже и транслировать нечего
            размести правила по-другому.
            то что я предложил где-то в самом конце должно быть - редкая ситуация, ну и тоже после ната
            • Чего не хватает в rc.firewall, !*! nda, 15:40 , 20-Янв-08 (6)
              >мне кажется что дело в том что правило где происходит трансляция в
              >самом конце.
              >т.е. сначала режешь, а потом уже и транслировать нечего
              >размести правила по-другому.
              >то что я предложил где-то в самом конце должно быть - редкая
              >ситуация, ну и тоже после ната

              Сделал, действительно работает. Но вот чего странно, если я размещаю за divert`ом, правила
              ${ipfw_cmd} add allow udp from any to any domain via ${out_if}
              ${ipfw_cmd} add allow udp from any domain to any via ${out_if}
              ${ipfw_cmd} add allow tcp from any to any http,https,ftp,5190 out via ${out_if}
              они перестают работать, инета нет, зато само правило divert срабатывает, иначе все наборот инет есть, правила работают, но в обход divert`а.

              • Чего не хватает в rc.firewall, !*! idle, 17:10 , 21-Янв-08 (7)
                >[оверквотинг удален]
                >>ситуация, ну и тоже после ната
                >
                >Сделал, действительно работает. Но вот чего странно, если я размещаю за divert`ом,
                >правила
                >${ipfw_cmd} add allow udp from any to any domain via ${out_if}
                >${ipfw_cmd} add allow udp from any domain to any via ${out_if}
                >${ipfw_cmd} add allow tcp from any to any http,https,ftp,5190 out via ${out_if}
                >
                >они перестают работать, инета нет, зато само правило divert срабатывает, иначе все
                >наборот инет есть, правила работают, но в обход divert`а.

                Ничего странного, эти правила(allow,divert) терминирующие, когда пакет в них попадает дальнейший поиск по правилам не производится.
                man ipfw

  • Чего не хватает в rc.firewall, !*! Pahanivo, 11:21 , 13-Мрт-08 (8)
    >${ipfw_cmd} add divert natd ip from ${lan_net} to any out via ${out_if}

    Как оно с таким правилом вообще может работать?
    Это получается что исходящие пакеты мы прогоняем через divert (NAT), а входящие нет?




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

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