The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
IPFW отбрасывает пакеты для которых есть разрешающие правила, !*! Isuaven, 06-Июн-12, 17:55  [смотреть все]
Доброго всем времени суток. Только начинаю изучать основы FreeBSD, поэтому не пинайте сильно ногами плз :) По поиску ничего не смог найти. Суть проблемы такова:
По документации http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/firew... практически 1 в 1 скатал файл правил для варианта с NATом, в результате получив такое(лишнее не привожу, дабы избежать оверквотинга):

#################################################################
#!/bin/sh
ipfw -q -f flush
sysctl net.inet.ip.fw.autoinc_step=10
cmd="ipfw -q add"
skip="skipto 65000"
pif="bfe0"
ipfw nat 1 config log if $pif reset same_ports deny_in
$cmd nat 1 ip from any to any in via $pif
$cmd check-state
....
$cmd $skip tcp from any to any 80 out via $pif setup keep-state
$cmd $skip tcp from any to any 443 out via $pif setup keep-state
$cmd $skip tcp from any to any 5938 out via $pif setup keep-state
$cmd $skip udp from any to any 5938 out via $pif keep-state
....
$cmd 60000 deny log all from any to any out via $pif
$cmd 64000 deny log all from any to any
$cmd 65000 nat 1 ip from any to any out via $pif
$cmd allow ip from any to any
#################################################################

И при этом /var/log/security загаживается с первых же секунд и не переставая сообщениями типа:
Jun  6 01:50:24 myserver kernel: ipfw: 60000 Deny TCP 10.12.12.5:49584 173.194.32.54:443 out via bfe0
Jun  6 01:50:24 myserver kernel: ipfw: 60000 Deny TCP 10.12.12.5:49592 199.47.218.147:80 out via bfe0
Jun  6 01:50:24 myserver kernel: ipfw: 60000 Deny TCP 10.12.12.5:49588 92.43.21.138:5938 out via bfe0
Jun  6 01:50:25 myserver kernel: ipfw: 60000 Deny TCP 10.12.12.5:49579 199.47.218.147:80 out via bfe0
Jun  6 01:50:25 myserver kernel: ipfw: 60000 Deny TCP 10.12.12.5:49592 199.47.218.147:80 out via bfe0

Где собственно 10.12.12.5 - компьютер в локальной сети, а
173.194.32.54:443 - google
199.47.218.147:80 - dropbox
92.43.21.138:5938 - teamwiever
И все 3 сервиса на компьютере работают на первый взгляд нормально(почта, синхронизация файлов, удаленное управление)!

Почему такое происходит? Что не так? Заранее спасибо.

  • IPFW отбрасывает пакеты для которых есть разрешающие правила, !*! Дум Дум, 16:40 , 08-Июн-12 (1)
    А ipfw show что показывает?
    • IPFW отбрасывает пакеты для которых есть разрешающие правила, !*! Isuaven, 22:04 , 10-Июн-12 (2)
      > А ipfw show что показывает?

      Показывает такое:

      00010 1486 376555 allow ip from any to any via xl0
      00020    8    760 allow ip from any to any via lo0
      00030  508 168327 nat 1 ip from any to any in via bfe0
      00040    0      0 check-state
      00050    0      0 skipto 65000 tcp from any to any dst-port 53 out via bfe0 setup keep-state
      00060   32   2447 skipto 65000 udp from any to any dst-port 53 out via bfe0 keep-state
      00070  272  84666 skipto 65000 tcp from any to any dst-port 80 out via bfe0 setup keep-state
      00080   44   9875 skipto 65000 tcp from any to any dst-port 443 out via bfe0 setup keep-state
      00090    0      0 skipto 65000 tcp from any to any dst-port 25 out via bfe0 setup keep-state
      00100    0      0 skipto 65000 tcp from any to any dst-port 110 out via bfe0 setup keep-state
      00110    0      0 skipto 65000 tcp from me to any out via bfe0 setup uid root keep-state
      00120    0      0 skipto 65000 icmp from any to any out via bfe0 keep-state
      00130    0      0 skipto 65000 tcp from any to any dst-port 37 out via bfe0 setup keep-state
      00140    0      0 skipto 65000 tcp from any to any dst-port 119 out via bfe0 setup keep-state
      00150    0      0 skipto 65000 tcp from any to any dst-port 22 out via bfe0 setup keep-state
      00160    0      0 skipto 65000 udp from any to any dst-port 123 out via bfe0 keep-state
      00170    0      0 skipto 65000 tcp from any to any dst-port 43 out via bfe0 setup keep-state
      00180   21   2352 skipto 65000 udp from any to any dst-port 27000-27030 out via bfe0 keep-state
      00190    3    132 skipto 65000 tcp from any to any dst-port 27014-27050 out via bfe0 setup keep-state
      00200    0      0 skipto 65000 tcp from any to any dst-port 5938 out via bfe0 setup keep-state
      00210    2    248 skipto 65000 udp from any to any dst-port 5938 out via bfe0 keep-state
      00220   15    930 skipto 65000 udp from any to any dst-port 7024,7022 out via bfe0 keep-state
      00230    0      0 skipto 65000 tcp from any to any dst-port 61620 out via bfe0 setup keep-state
      00260    0      0 deny ip from 192.168.0.0/16 to any in via bfe0
      00270    0      0 deny ip from 172.16.0.0/12 to any in via bfe0
      00280    0      0 deny ip from 10.0.0.0/8 to any in via bfe0
      00290    0      0 deny ip from 127.0.0.0/8 to any in via bfe0
      00300    0      0 deny ip from 0.0.0.0/8 to any in via bfe0
      00310    0      0 deny ip from 169.254.0.0/16 to any in via bfe0
      00320    0      0 deny ip from 192.0.2.0/24 to any in via bfe0
      00330    0      0 deny ip from 204.152.64.0/23 to any in via bfe0
      00340    0      0 deny ip from 224.0.0.0/3 to any in via bfe0
      00350    0      0 deny icmp from any to any in via bfe0
      00360    0      0 deny tcp from any to any dst-port 113 in via bfe0
      00370    0      0 deny tcp from any to any dst-port 137 in via bfe0
      00380    0      0 deny tcp from any to any dst-port 138 in via bfe0
      00390    0      0 deny tcp from any to any dst-port 139 in via bfe0
      00400    0      0 deny tcp from any to any dst-port 81 in via bfe0
      00410    0      0 deny ip from any to any frag in via bfe0
      00420    0      0 deny tcp from any to any established in via bfe0
      00430    0      0 allow tcp from any to me dst-port 22 in via bfe0 setup limit src-addr 2
      00440    0      0 allow tcp from any to me dst-port 21 in via bfe0 setup limit src-addr 2
      00450    0      0 deny log logamount 100 ip from any to any in via bfe0
      60000  272  37522 deny log logamount 10000 ip from any to any out via bfe0
      64000    0      0 deny log logamount 100 ip from any to any
      65000  389 100650 nat 1 ip from any to any out via bfe0
      65010    0      0 allow ip from any to any
      65535    3    304 allow ip from any to any
      ## Dynamic rules (84):
      00070    3    662 (15s) STATE tcp 10.12.12.5 60985 <-> 178.33.227.102 80
      00180    7    736 (3s) STATE udp 10.12.12.5 56491 <-> 146.66.152.15 27019

      • IPFW отбрасывает пакеты для которых есть разрешающие правила, !*! Дум Дум, 09:16 , 13-Июн-12 (3)
        То есть, натится правильно, но не все? Может посмотреть в сторону net.inet.ip.fw.dyn_max (http://ipfw.ism.kiev.ua/nipfw.html) и разных net.inet.ip.fw.ляля_lifetime (http://bezopasnik.org/unix/dok/BSDA-course/apes01.html)?
      • IPFW отбрасывает пакеты для которых есть разрешающие правила, !*! Дум Дум, 09:50 , 13-Июн-12 (4)
        Насколько я понимаю, конструкция для tcp 'setup keep-state' запоминает (keep-state) в таблице динамических правил правила для пакетов, имеющих признак (setup) установки соединения. Когда прилетает пакет, такого признака не имеющий, а динамического правила для него уже или еще нет (устарело и сброшено, либо пакет левый), он проскочит до 60000. Это ИМХО.
      • IPFW отбрасывает пакеты для которых есть разрешающие правила, !*! gruzzy, 17:42 , 07-Дек-13 (6)
        возьми в руки IP-пакет и пройдись по правилам.
        я так понимаю, xl0 - внутренний интерфейс, bfe0 - внешний
        идет клиент на гугель-443 к примеру, то есть в начале у нас идет SETUP.
        входит на интерфейс xl0, попадает на правило 10 - разрешено. пакет уходит на второй круг. теперь он исходящий пакет, должен быть выпнут наружу в соответствии с таблицей маршрутизации. он успешно доходит до правила 80, которое создает динамическую запись и скидывает пакет на правило 65000, там его в НАТ и наружу.
        теперь клиент шлёт уже не-SETUP пакеты, поэтому правило 80 не сработает, хотя исходящий пакет и попадет на него благодаря check-state. после "провала" на правиле 80 у пакета одна дорога - на правило 60000

        Если кратко - убери check-state и keep-state. Эти директивы обычно применяют для правильного роутинга пакетов входящих с наружи на внутренние машины, то есть когда у тебя пудличные сервисы за НАТ-ом.
        Когда ты просто раздаешь интернет для внутренней сети такие динамические правила не приносят никакой пользы, особенно для начинающих.

        Мой совет тебе как новичку - всегда сначала зарубай левый трафик (типа 192.168.0.0/16 to any in via bfe0), потом приступай к разводке нужного. Так проще понимать.




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

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