The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
ограничение доступа и вип клиенты, !*! flangel, 05-Май-09, 14:24  [смотреть все]
такая ситуация:
есть локальная сеть 192.168.1.0/24
есть городская сеть 10.0.0.0/8
есть сервер на freebsd 7.1 c ipfw + natd
ip: 192.168.1.1 и 10.110.73.130 соответсвенно
есть список клиентов в table(1) которым разрешен весь интернет
остальным позволена только городская сеть
вот правила:

#!/bin/sh

FwCMD="/sbin/ipfw" # собственно где лежит бинарник ipfw
LanOut="xl1"            # внешний интерфейс
LanIn="xl0"            # внутренний интерфейс
IpOut="10.110.73.130" # внешний IP адрес машины
IpIn="192.168.1.1"   # внутренний IP машины
NetMask="24"            # маска сети (если она разная для внешней
                        # и внутренней сети - придётся вводить ещё
                        # одну переменную, но самое забавное, что
                        # можно и забить - оставить 24 - всё будет
                        # работать, по крайней мере я пробовал -
                        # работаало на 4-х машинах, в разных сетях,
                        # с разными масками - настоящими разными! но -
                        # это неправильно.)
NetIn="192.168.1.0"    # Внутренняя сеть
NetOut="10.0.0.0"    #Городская сеть
NetOutMask="8"        #маска городской сети

# Сбрасываем все правила:
${FwCMD} -f flush

#таблица с разрешенными адресами:
${FwCMD} table 1 add 192.168.1.1
${FwCMD} table 1 add 192.168.1.99
${FwCMD} table 1 add 192.168.1.100
${FwCMD} table 1 add 192.168.1.11
${FwCMD} table 1 add 192.168.1.12

# Проверяем - соответствует ли пакет динамическим правилам:
${FwCMD} add check-state

# Разрешаем весь траффик по внутреннему интерфейсу (петле)
# Вообще я во многих местах читал что без него может ничё не заработать вообще
# и прочие страшилки. Работает - почта, апач, .... А вот squid - не работает :)
# так что без него и правда - никуда.
${FwCMD} add allow ip from any to any via lo0

# пропускаем траффик через трансляцию сетевых адресов (NAT)
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}

# разрешаем все установленные соединения (если они установились -
# значит по каким-то правилам они проходили.)
${FwCMD} add allow tcp from any to any established

# разрешаем весь исходящий траффик (серверу-то в инет можно? :))
${FwCMD} add allow ip from ${IpOut} to any out xmit ${LanOut}

# разрешаем весь tcp траффик внутри локалки (на внутреннем интерфейсе)
${FwCMD} add allow tcp from any to any via ${LanIn}
# разрешаем весь udp траффик внутри локалки (на внутреннем интерфейсе)
${FwCMD} add allow udp from any to any via ${LanIn}
# разрешаем весь icmp траффик внутри локалки (на внутреннем интерфейсе)
${FwCMD} add allow icmp from any to any via ${LanIn}

#Разрешаем кому можно в интернет
${FwCMD} add allow ip from "table(1)" to any
${FwCMD} add allow ip from any to "table(1)"

#разрешаем городскую сеть всем
${FwCMD} add allow ip from ${NetIn}/${NetMask} to ${NetOut}/${NetOutMask}
${FwCMD} add allow ip from ${NetOut}/${NetOutMask} to ${NetIn}/${NetMask}

${FwCMD} add deny ip from any to any

но такой конфиг не работает :(  все равно всем можно в инет. Подскажите как сделать так что бы работало...

  • ограничение доступа и вип клиенты, !*! Pahanivo, 16:14 , 05-Май-09 (1)
    1) куууча статей по данной теме, те паче что тема у вас ТИПОВАЯ!
    2) man ipfw - нужно таки почитать, клонирование HOWTO не рулит, ибо пишется людми понимающими в теме для людей также понимающих
    кроме тупого копирования правил, причем из нескольких хауту, я у вас ничего не узрел

    >[оверквотинг удален]
    >
    >#таблица с разрешенными адресами:
    >${FwCMD} table 1 add 192.168.1.1
    >${FwCMD} table 1 add 192.168.1.99
    >${FwCMD} table 1 add 192.168.1.100
    >${FwCMD} table 1 add 192.168.1.11
    >${FwCMD} table 1 add 192.168.1.12
    >
    ># Проверяем - соответствует ли пакет динамическим правилам:
    >${FwCMD} add check-state

    клево - а где keep-state если уж вы делаете динамический фаервол?
    советую вам пока не заморачиваться вообще на эту тему
    >[оверквотинг удален]
    >
    ># разрешаем все установленные соединения (если они установились -
    ># значит по каким-то правилам они проходили.)
    >${FwCMD} add allow tcp from any to any established
    >
    ># разрешаем весь исходящий траффик (серверу-то в инет можно? :))
    >${FwCMD} add allow ip from ${IpOut} to any out xmit ${LanOut}
    >
    ># разрешаем весь tcp траффик внутри локалки (на внутреннем интерфейсе)
    >${FwCMD} add allow tcp from any to any via ${LanIn}

    пакет пройдет по вашему списку дважды - согласно количесву интерфейсов
    на первом проходе он успешно проскочит через внутр интерфейс согласно этого правила
    вообще правило надо назвать "разрешить все через вн интерфейс", а не локалки
    ># разрешаем весь udp траффик внутри локалки (на внутреннем интерфейсе)
    >${FwCMD} add allow udp from any to any via ${LanIn}

    аналогично
    ># разрешаем весь icmp траффик внутри локалки (на внутреннем интерфейсе)
    >${FwCMD} add allow icmp from any to any via ${LanIn}
    >
    >#Разрешаем кому можно в интернет
    >${FwCMD} add allow ip from "table(1)" to any

    вот ключевая ошибка
    на первом проходе пакет не дойдет до этого правила - см выше
    на втором проходе дойтет - НО, пакетик то уже прошел дайверт и соурс айпи у него уже не локальный
    >${FwCMD} add allow ip from any to "table(1)"
    >#разрешаем городскую сеть всем
    >${FwCMD} add allow ip from ${NetIn}/${NetMask} to ${NetOut}/${NetOutMask}
    >${FwCMD} add allow ip from ${NetOut}/${NetOutMask} to ${NetIn}/${NetMask}
    >
    >${FwCMD} add deny ip from any to any
    >

    >
    >но такой конфиг не работает :(  все равно всем можно в
    >инет. Подскажите как сделать так что бы работало...

    по пакетам идущим в обратную сторону - аналогично

    • ограничение доступа и вип клиенты, !*! flangel, 17:07 , 05-Май-09 (2)
      >># Проверяем - соответствует ли пакет динамическим правилам:
      >>${FwCMD} add check-state
      >
      >клево - а где keep-state если уж вы делаете динамический фаервол?
      >советую вам пока не заморачиваться вообще на эту тему

      значит это удаляем

      >>[оверквотинг удален]
      >>
      >># разрешаем все установленные соединения (если они установились -
      >># значит по каким-то правилам они проходили.)
      >>${FwCMD} add allow tcp from any to any established

      эту строку значит тоже

      >[оверквотинг удален]
      >
      >вот ключевая ошибка
      >на первом проходе пакет не дойдет до этого правила - см выше
      >
      >на втором проходе дойтет - НО, пакетик то уже прошел дайверт и
      >соурс айпи у него уже не локальный
      >[оверквотинг удален]
      >>${FwCMD} add allow ip from any to "table(1)"
      >>${FwCMD} add allow ip from ${NetIn}/${NetMask} to ${NetOut}/${NetOutMask}
      >>${FwCMD} add allow ip from ${NetOut}/${NetOutMask} to ${NetIn}/${NetMask}

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

      • ограничение доступа и вип клиенты, !*! Pahanivo, 17:17 , 05-Май-09 (3)
        >т.е. получается эти правила на разрешения надо ставить до дайверта? или до
        >того правила где пакеты ходят на внутренем интерфейсе?

        как вам удобней
        незабываем некоторые важные вещи: 1) пакет проходить список правил каждый раз заново попадая на интерфейс - те в случае шлюза с натом это как минимум 2 раза
        2) дайверт меняет соурс пакета на внешний в случае исзодящего трафика и с точность наоборот в случае входящего 3) при составление списка правил следует как можно четче формулировать условия - например привязывать по вохможности правило в интерфейсу и направлению типа out via / in via




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

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