The OpenNET Project / Index page

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

Авторизация пользователей в сети при помощи authpf (auth pf firewall openbsd)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: auth, pf, firewall, openbsd,  (найти похожие документы)
From: Anton Karpov <toxa@toxahost.ru.> Date: Mon, 19 Sep 2005 03:39:46 +0600 (YEKST) Subject: Авторизация пользователей в сети при помощи authpf Одной из проблем в организации домашней сети является защита пользовательского трафика. Речь идет не о шифровании данных, а о возможности скачать пару-тройку гигабайт информации "за счет" другого абонента. Ведь, как правило, домашние сети строятся на дешевом оборудовании, и часто о применении дорогих коммутаторов с возможностью привязки IP/MAC к порту не может быть и речи. Так как использование средств типа статической arp-таблицы или простое отслеживание смены адреса утилитами вроде arpwatch неэффективно (поменять себе MAC-адрес, пока жертва не находится в сети, весьма легко), традиционно для защиты от кражи трафика применяют различные VPN-решения, с ипользованием FreeRadius, MySQL/PostgreSQL, mpd/poptop, и т.д. Это весьма громоздко, и не всегда надежно (достаточно посмотреть на историю обсуждения проблем "FreeBSD+mpd+WindowsXP" здесь же, на OpenNET). А в то же время есть, на мой взгляд, гораздо более элегантное решение, которое состоит в использовании пакетного фильтра OpenBSD/PF и авторизационного шелла authpf. PF и authpf входят в базовую систему OpenBSD и портированы во FreeBSD начиная с ветки 5, а в NetBSD - начиная с ветки 3. Authpf - это авторизационный шелл, назначаемый пользователю системы в качестве login shell. При авторизации пользователя в системе (по ssh), к текущим правилам пакетного фильтра присоединяются (с помощью механизма anchor'ов) правила, указанные в файле /etc/authpf/authpf.rules либо в /etc/authpf/$USER/authpf.rules, где USER - имя пользователя. При этом в добавляемых правилах допустимо использование переменных $user_ip (IP-адрес пользователя) и $user_id (имя пользователя), которые берутся из переменных окружения ssh. Отличное руководство по authpf входит в OpenBSD FAQ: http://www.openbsd.org/faq/pf/authpf.html Так что считаю лишним дублировать информацию оттуда, приводя здесь шаги настройки системы для использования authpf. Наша задача - настроить правила авторизации таким образом, чтобы при заходе пользователя по ssh поднимался NAT на тот адрес, который присвоен этому пользователю. Так, если пользователю foobar назначен адрес 192.168.0.100, то на шлюзе создаем файл: # echo " nat pass on $ext_if inet from 192.168.0.100 to any -> $ext_if" > /etc/authpf/users/foobar/authpf.rules Разумеется, трансляции адресов из пользовательской подсети в pf.conf глобально присутствовать не должны. Теперь, даже если foobar изменит свой IP-адрес на адрес соседа, в надежде выкачать пару гигабайт смешных картинок, пока сосед отдыхает на даче, при авторизации на шлюзе поднимется NAT-правило для родного foobar'овского адреса, 192.168.0.100, и любитель халявы останется ни с чем. Foobar - это пользователь в системе, с паролем и назначенным в качестве login shell /usr/sbin/authpf. Под Windows для ssh-авторизации проще всего использовать консольную утилиту plink из набора putty: http://the.earth.li/~sgtatham/putty/latest/x86/plink.exe. Для комфортной работы пользователя следует создать bat-файл с командой "plink.exe user@gateway -pw userpass", и положить его на рабочий стол. Теперь двойной клик по файлу активизирует ssh-сессию, поднимет NAT-правило для заранее указанного адреса, и пользователь сможет работать в интернете. Файл можно также поместить в автозагрузку. Использование такой авторизации позволит доверять простому учету трафика, например программой cnupm, и избавит от необходимости использовать громоздкие конструкции авторизации по VPN с использованием RADIUS-сервера, и т.п.
  • См. также http://www.opennet.me/base/sec/authpf_howto.txt.html

  • << Предыдущая ИНДЕКС Правка src / Печать Следующая >>

    Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Andriy (??), 22:54, 20/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    полезно и актуально, а как ето под linux сделать?
     
  • 1.2, Burder (?), 11:43, 21/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да интересная идея , под Linux не помешало-бы такое!
     
  • 1.3, ffoton (??), 12:54, 21/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    классная идейка :)
    только как быть, если юзер захочет с другого компа в инет выйти?
     
     
  • 2.6, ShyLion (??), 15:04, 21/09/2005 [^] [^^] [^^^] [ответить]  
  • +/
    > классная идейка :)
    > только как быть, если юзер захочет с другого компа в инет выйти?
    какая разница? на файрволе прописывается тот айпи, с которого есть ssh соединение. как только соединение обрывается, эти правила с файрвола извлекаются.
     

  • 1.4, nnmd (?), 13:02, 21/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Думаете, что никто не догадается сначала поменять свой ip на ip foobar'a и только после этого авторизоваться?
     
  • 1.5, i_destr (??), 14:36, 21/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Думаете, что никто не догадается сначала поменять свой ip на ip foobar'a и только после этого авторизоваться?

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

    Что же касается вашего комментария, то ответ сводится к следующему: как покруче заныкать свою базу паролей, чтобы никто из пользователей сети ее не смог получить. Ситуация, когда любой пользователь знает пароль любого пользователя сводит на нет любые программные реализации процесса авторизации (прямо стихами:)), будь то ВПН, будь то любая примочка клиент-серверного исполнения c изменением фаервольных правил.

    Автору респект за совет, буду смотреть наличие подобного решения в FreeBSD

     
     
  • 2.16, sergey (??), 19:35, 21/11/2005 [^] [^^] [^^^] [ответить]  
  • +/
    Прочитал все ссылки на OpenBSD и все равно для меня остается непонятным следующее:
    1.как прикрутить authpf к пакетному фильтру pf
    2.что должно быть в конф.файле /etc/authpf/authpf.conf
    3. как anchor должен быть прописан в /etc/pf.conf

    Если у кого имеюся образцы конф.фойлов authpf.conf, pf.conf ну и authpf.rules то пришлите плиз или дайте ссылку.

     

  • 1.7, Chris (??), 15:21, 21/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А нахрена? Вот в чем вопрос, такие биллинговые системы как UTM позволяют это делать пользователю из веб интерфейса. Потом VPN не кончается MPD'шкой... Есть ещё и PPTP или PPPOE тот же... чем они громозки?

    Насчет спирта, конечно Форма уважаю, но пока делать там netflow ещё бы... а то если обьем трафика большой памяти не хватает...

     
  • 1.8, Serg77 (ok), 15:45, 21/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А я считаю, что этот способ слишком громоский. Проще поставить и настроить STARGAZER!
     
  • 1.9, rage (??), 18:18, 21/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    1)зачем arpwatch, можно просто тупо связать пары mac+ip.
    2)можно использовать pppoe
    3)трафик считать с помощью netams(благо, способов сбора трафика он умеет много).
     
  • 1.10, Av (??), 22:36, 21/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Даже в этом случае можно без проблем своровать трафик у уже авторизованного клиента - это решение только "на время" (пока клиенты не научаться обманывать эту систему)
     
     
  • 2.11, fa (??), 22:46, 21/09/2005 [^] [^^] [^^^] [ответить]  
  • +/
    Расскажите, как это сделать без проблем. Читал уже подобное обсуждение. Можно сменить ip/mac на ip/mac авторизованного пользователя, в данный момент находящегося в сети. Тогда из-за конфликта мак-адресов клиент или нарушитель вылетят из сети, либо оба будут работать с огромными тормозами. То есть в любом случае проблемы будут. Или я что-от упускаю.
     

  • 1.12, vip3r (?), 13:18, 23/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если использовать для аккаунтинга трафика что-либо не ориентирующееся на счетчики правил fw (i.e. ipa), то можно добавлять адрес узера в таблицу вместо добавления нового правила.
     
  • 1.13, Viktor (??), 12:42, 26/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    По предидущему посту: из статьи я понял, что привязка идет авторизация пользователя и привязка к нему адреса и если я поменяю адрес и попробую авторизоваться у мне будет борода из ваты, так как нет соответствия имя пользователя и IP ИЛИ я чего то не догнал?
    А без NAT это работать будет? у пользователей в подсетке реальные IP
     
  • 1.14, Viktor (??), 12:46, 26/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    УПС надо было обновить страничку :) (пост 4) но вопрос насчет NAT остается в силе
     
  • 1.15, Celcion (?), 09:50, 28/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    authpf - знатный костыль. Для лентяев, которые не против юзать совершенно тугое и неудобное решение, лишь бы не делать что-то самому.
    Почитайте документацию к PF, вернее - к pfctl (man pfctl, man pf.conf), в частности - к пункту, касающемуся anchor - и станет ясно, что все это можно сделать и без использования authpf вообще, причем - куда более удобным и естественным способом. Хоть веб-интерфейс, хоть простой коннект сокетами, хоть прозрачную виндовую авторизацию туда прикручивай - у кого на что фантазии и знаний хватит.
     
  • 1.17, hmd (??), 23:27, 07/10/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    откуда вы все такие умные ))
     

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




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

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