The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Интернет-шлюз с использованием PF
O пакетном фильтре (PF) написано довольно много статей. Вот и я хочу предложить
свою реализацию Интернет-шлюза с
использованием  PF. Раздача Интернета для локальной сети происходит через NAT и
основана на Packet Tagging. Плюсом этого
метода является то что упрощается настройка правил для FTP (ftp-proxy не
используется), как для клиентов за шлюзом, так и для
возможной публикации "внутреннего" ftp-сервера в мир.

Для простоты приведу пример с 1 внешним и 1 внутренним интерфейсом. На шлюзе
также запущен DNS-сервер. Пользователям
локальной сети разрешен доступ на все порты без исключений по протоколам TCP,
UDP, из ICMP разрешен только ping. В качестве
ОС выступает FreeBSD7.0

Для начала определим интерфейсы с помощью макросов

   ext_if="rl0"
   int_if="sk1"

   dns="ААА.ААА.ААА.ААА"
   lan="192.168.1.0/24"

   table <no_if> {BBB.BBB.BBB.BBB, 192.168.1.1, 127.0.0.1} persist

   set skip on lo
   set loginterface rl0
   set ruleset-optimization basic
   set block-policy return
   scrub in all no-df random-id

   ##### INET FOR LAN

   nat on $ext_if tag LAN_INET_NAT_TCP_UDP tagged LAN_INET_TCP_UDP -> $ext_if:0
   nat on $ext_if tag LAN_INET_NAT_ICMP tagged LAN_INET_ICMP -> $ext_if:0

   ######

   block in
   block out
   antispoof quick for { lo $int_if }

   ##############       EXT_IF_OUT

   pass out quick on $ext_if inet tagged LAN_INET_NAT_TCP_UDP
   pass out quick on $ext_if inet tagged LAN_INET_NAT_ICMP
   
   pass out quick on $ext_if inet proto {tcp udp} from $ext_if to $dns port = dns

   pass out quick on $ext_if inet proto icmp from $ext_if to any icmp-type echoreq

   ##############         EXT_IF_IN

   pass in quick on $ext_if inet proto tcp from any to $ext_if port = ssh synproxy state (max 10)
   pass in quick on $ext_if inet proto icmp from any to $ext_if icmp-type echoreq

   ##############   INT_IF_IN

   pass in quick on $int_if inet proto {tcp udp} from $lan to !<no_if> tag LAN_INET_TCP_UDP
   pass in quick on $int_if inet from $lan to $int_if

   pass in quick on $int_if inet proto icmp from $lan to !<no_if>  icmp-type echoreq tag LAN_INET_ICMP
   pass in quick on $int_if inet proto icmp from $lan to $int_if icmp-type echoreq



Пояснения.

Пришедшие на внутр. интерфейс пакеты "метятся". Метятся только те пакеты, у
которых dst addr любой, кроме всех внутренних и
внешних интерфейсов. Это необходимо, если есть несколько подсетей и вы не
хотите, что бы кто-либо из одной сети мог
подключится к висящему сервису на другом интерфейсе.

Впринципе здесь можно  вместо  !<no_if> указать any.
Весь исходящий трафик с сервера в "мир" (кроме ДНС) и локальную сеть блокируется.

ААА.ААА.ААА.ААА - IP DNS-сервера провайдера.
 
10.12.2008 , Автор: vitalic
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетный фильтр в FreeBSD: ipfw, IP-Filter

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, skif, 09:50, 10/12/2008 [ответить] [смотреть все]
  • +/
    мда ну и пояснения у вас :) что пояснил что не пояснил :)
     
     
  • 2.2, artemrts, 10:23, 10/12/2008 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    А что не понятно-то ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.5, skif, 11:11, 10/12/2008 [^] [ответить] [смотреть все]  
  • +/
    да я не об этом, ну просто я не вижу смысла например выкладывания конфига просто... весь текст скрыт [показать]
     
  • 1.3, abigor, 10:42, 10/12/2008 [ответить] [смотреть все]  
  • +/
    что-то ни чего нового я для себя тут не нашел
    кажется лучше всего не городить такие вот рецеплы (статьи) а почитать либо man pf.conf ну а если туго с en то обратиться по ссылке http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html и написать правила для себя.
     
     
  • 2.4, abigor, 10:43, 10/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    это я именно в виду не для автора, а для молодых админов которые первый раз с да... весь текст скрыт [показать] [показать ветку]
     
  • 1.6, muaddib, 12:11, 10/12/2008 [ответить] [смотреть все]  
  • +/
    "Интернет шлюз" ну веб и аська с игрушками работать так будут, а ftp, DC++ в активном режиме, IP-TV (IGMP-multicast) ?
    Лучше было назвать статью "Простой пример тэгирования пакетов на BSD PF" - в этом ключе хорошая статья, спасибо :)
    А если поподробнее и для полноценного шлюза - то нет лучше доки по PF чем выше указанный раздел из курса подготовки к BSDA - все разъяснено практически, есть примеры, есть переведенный вариант :-) P.S. отличный пакетный фиьтр, жаль на линукс его не портировали ещё.
     
     
  • 2.7, artemrts, 12:22, 10/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    FTP работает отлично Я привел лишь небольшую часть, что использую сам на св... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.8, muaddib, 12:58, 10/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Было бы здорово если бы вторым вашим примером использования тэгирования было их ... весь текст скрыт [показать]
     
     
  • 4.13, linked, 23:05, 10/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Мне так и не удалсь победить мультикаст Пытался через mrouted ... весь текст скрыт [показать]
     
     
  • 5.18, muaddib, 16:43, 11/12/2008 [^] [ответить] [смотреть все]  
  • +/
    IP-TV на IGMP multicast я нашел только способ описанный на форуме корбины http ... весь текст скрыт [показать]
     
  • 5.20, pepelac, 00:25, 13/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Аналогично - воевал очень долго pf mrouted multicast friendship ipfw mrouted ... весь текст скрыт [показать]
     
     
  • 6.23, muaddib, 14:53, 13/12/2008 [^] [ответить] [смотреть все]  
  • +/
    2 pepelac pf igmpproxy IP-TV friendship - работает, если сделать так как написа... весь текст скрыт [показать]
     
  • 3.9, abigor, 13:31, 10/12/2008 [^] [ответить] [смотреть все]  
  • +/
    При таком подходе, да клиенты внутри сети смогут ходить на ftp в инете, а вот пу... весь текст скрыт [показать]
     
     
  • 4.10, artemrts, 13:46, 10/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Ошибаетесь необходимо просто добавить правило редиректа для внешнего интерфейса... весь текст скрыт [показать]
     
     
  • 5.14, abigor, 05:19, 11/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Да а мы говорим по активный или пассивные режимы ... весь текст скрыт [показать]
     
  • 5.15, muaddib, 12:56, 11/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Просто rdr aka порт-маппинг даст только пассивный режим, делал, уперся в это, пе... весь текст скрыт [показать]
     
     
  • 6.16, artemrts, 13:04, 11/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Чесно сказать, шейпить таким образом не пробовал В тех случаях где нужно ограни... весь текст скрыт [показать]
     
  • 6.17, abigor, 16:34, 11/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Мой вопрос был больше адресован для пользователя artemrts, но оно так и есть, ес... весь текст скрыт [показать]
     
     ....нить скрыта, показать (12)

  • 1.11, slepnoga, 16:15, 10/12/2008 [ответить] [смотреть все]  
  • +/
    PPtP,IPsec,PnP kak sdelat ?
     
     
  • 2.12, iZEN, 19:05, 10/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    http www opennet ru base net mpd_pptp_vpn txt html... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.19, Добрый Дохтур, 12:31, 12/12/2008 [^] [ответить] [смотреть все]  
  • +/
    и где там про pf, точнее, про пропуск pptp из серой сети силами pf ... весь текст скрыт [показать]
     
     
  • 4.21, q, 02:37, 13/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Пропуск PPTP делается средствами какого-нибудь PPTP-прокси, а не файрвола pf не... весь текст скрыт [показать]
     
     
  • 5.22, Добрый Дохтур, 03:10, 13/12/2008 [^] [ответить] [смотреть все]  
  • +/
    угу. а ещё в отличие от ipfilter, natd, ng_nat и ipfw nat.
    Гонять данные из ядра в юзерспей и обратно - это очень полезно.
     
  • 4.27, baradatiy, 12:13, 15/12/2008 [^] [ответить] [смотреть все]  
  • +/
    А на чем споткнулись, когда pptp из серой сети хотели пропустить?
     
     
  • 5.29, slepnoga, 18:02, 26/12/2008 [^] [ответить] [смотреть все]  
  • +/
    на трекинге соединеии (openBSD);
    больше 1 коннекта не проходит;


    Так как все таки  с UPnp ?

     
  • 2.25, iZEN, 14:28, 14/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    http://ezine.daemonnews.org/200406/mpd.html

    http://fiery-fenix.kiev.ua/archives/17-FreeBSD_i_GRE._Proksirovanie_na_odin_V

    оно?

     
     
  • 3.33, slepnoga, 01:52, 08/06/2010 [^] [ответить] [смотреть все]  
  • +/
    >http://ezine.daemonnews.org/200406/mpd.html
    >
    >http://fiery-fenix.kiev.ua/archives/17-FreeBSD_i_GRE._Proksirovanie_na_odin_V
    >
    >оно?

    я же написал - опенок.
    где там ipfw в базе, покажи

     
  • 1.24, ugenk, 01:37, 14/12/2008 [ответить] [смотреть все]  
  • +/
    "из ICMP разрешен только ping"
    Руки за такое отрывать
     
     
  • 2.26, vitalic, 17:56, 14/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >"из ICMP разрешен только ping"
    >Руки за такое отрывать

    Да что ты говоришь.
    Вот таких так ты, таким да отрывать нада))

     
     
  • 3.28, fank, 11:33, 16/12/2008 [^] [ответить] [смотреть все]  
  • +/
    PMTU Discover
    почитай, умник
     
     
  • 4.31, artemrts, 17:27, 01/08/2009 [^] [ответить] [смотреть все]  
  • +/
    Это ты читай, умник...
    http://en.wikipedia.org/wiki/Path_MTU_discovery
    Там же четко написано
    Path MTU discovery works by setting the DF (Don't Fragment) option bit in the IP headers of outgoing packets. Then, any device along the path whose MTU is smaller than the packet will drop it, and send back an ICMP "Fragmentation Needed" (Type 3, Code 4) message containing its MTU, allowing the source host to reduce its path MTU appropriately. The process repeats until the MTU is small enough to traverse the entire path without fragmentation.

    Тут либо ты на en не понимаеш, либо не понимаеш принципы работы keep state в PF...

     
     
  • 5.32, Sem, 15:32, 03/08/2009 [^] [ответить] [смотреть все]  
  • +/
    >[оверквотинг удален]
    >Path MTU discovery works by setting the DF (Don't Fragment) option bit
    >in the IP headers of outgoing packets. Then, any device along
    >the path whose MTU is smaller than the packet will drop
    >it, and send back an ICMP "Fragmentation Needed" (Type 3, Code
    >4) message containing its MTU, allowing the source host to reduce
    >its path MTU appropriately. The process repeats until the MTU is
    >small enough to traverse the entire path without fragmentation.
    >
    >Тут либо ты на en не понимаеш, либо не понимаеш принципы работы
    >keep state в PF...

    Ну и как это будет работать, если "из ICMP разрешен только ping"?

     
  • 1.30, Sem, 02:01, 06/02/2009 [ответить] [смотреть все]  
  • +/
    Не вижу смысла делать два тега LAN_INET_TCP_UDP и LAN_INET_ICMP.
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 12.05 Организация шифрованного бэкапа с помощью rdiff-backup, encfs и Dropbox
    - 11.05 Настройка беспроводного соединения в Debian GNU/Linux
    - 07.05 Использование Google Drive в Linux
    - 18.04 Использование нескольких сетевых стеков в Linux
    - 15.04 Восстановление стандартного KDE меню после его удаления (например, wine)
    - 11.04 Настройка gmirror при использовании GPT во FreeBSD 9
    - 09.04 Маршрутизатор на базе FreeBSD с приоритизация трафика средствами PF и ALTQ
    - 02.04 Частичное восстановление данных MySQL из бэкапа, созданного с использованием LVM
    - 21.03 Настройка DNSSEC в BIND 9.9
    - 17.03 Набор номера на Cisco IP Phone 7960/7940 из скрипта
    RSS | Следующие 15 записей >>


    ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Оформить подписку на год


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList