Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» FAQ Установка и настройка Netup UserTrafManager. (UTM)

Автор: vaskes105
Дата сообщения: 19.09.2003 06:11
ФАК По субжу. Просьба не постить сюда просьбы о помощи в поиске вышеозначенного продукта. Для этого есть соответствующая ветка
http://forum.ru-board.com/topic.cgi?forum=35&topic=29627
Так как линух я в первый раз колупать начал токо месяц назад, то и фак этот попробовал сделать для таких же как я чайников . Давайте сделаем так чтобы кустомеры нетупа шли за суппортом не на www.netup.ru а сюды

Итак. Прежде чем устанавливать UTM 4.0 (я ставил именно эту версию) вам понадобяться:
прямые руки
настойчивость и желание победить этот биллинг
море терпения
Linux (у меня RedHat 8.0)
мануал http://www.netup.ru/download/utm4_manual.pdf
официальный faq http://www.netup.ru/faq.html
када ваще ничего получаться не будет загляните сюда http://www.netup.ru/?fid=31
Mysql-3.23.55.tar.gz (почему такое старье? ну видимо потому что в компании NetUp работают консерваторы )
openssl-0.9.7b.tar.gz
apache_1.3.28.tar.gz (up )
modssl-2.8.12-1.3.28.tar.gz
DBI-1.32.tar.gz

ставим все точно по инструкции (как в pdf'ке написано). Шаг влево, шаг вправо - могуть сказаться непонятными косяками в последствии. (не забудте запустить скрипт mysql_install_db). Если вы сделали все точно по инструкции то апач и mysql сконфигурированы и должны запускаться и работать.

1) трафик считает ipcad требующий для свой нармальной работы libpcap
я ставил такой: libpcap-0.7.2.tar.gz
2) ipcad идущий в поставке с UTM - у меня не собирался. не видил pcap.h как я ему ее не подсовывал, поэтому я выкинул ipcad из дистрибутива и положил на его место ipcad-2.8.4.tar.gz
3) проверяем, на месте ли iptables (или чего там у вас)
и установлен ли sudo - если нет замечательно, вы можете облегчить себе жисть сконфигив его вот так:
./configure --with -logpath=/var/log/sudo.log --with-logging=file
теперь распаковываем сам UTM и запускаем скрипт install.
(у меня была простейшая ситуация - када счетчики трафа и биллинг на одном компутере - в такой ситуации все тыкаем по умолчанию и в соответствии с документацией).
После того как он типа поставил ipcad проверяем появилась ли в rc.local строчка /usr/local/bin/ipcad & (не забудте про этот значек end - а то до консоли не достучаться при автозагрузке, если забыли - ткните на клаве ctrl+с - авось поможет ) и есть ли файлик /usr/local/bin/ipcad
если да - то вытирайте пот со лба, чтото установилось.
проверяем на наличие и правильность /usr/local/etc/ipcad.conf

не забудте сменить владельца папки utm_graph

ребутимся, проверяем запустился ли Mysql, httpd, и ipcad - если да, то тада можно лезть в нетуп через http интерфейс и крутить всякие крутилочки.

Чтоб зарегить нетап вам нужны будут два файла key и license. License кладем в /netup, key забиваем на страничке о программе.

Первым делом лезем в кнопку firewall и добавляем правила для подключения и отключения юзера от инета. НЕ ЗАБЫВ В ПОЛЕ ID вместо NULL поставить цифирку (я например ставил 1000).
Добавляем админскому пользователю денег на счет и пробуем ему включить инет.
в консоли роутера набираем iptables -nL (ну или какой вы там файрволл юзаете) и смотрим появилось ли правило. Если нет - грустно, идем в ФАК http://www.netup.ru/?fid=31 читаем первый вопрос и делаем все как написано. Ребутимся, снова включаем инет. Если правило не появилось - тада пипец. Че делать я не знаю - я дистриб линуха поменял..
ну вот вроде и все.

для меня остались открытыми несколько вопросов:
1. в rc.local у меня был включен маскарадинг. Если его выключить - то врубает, не врубает юзер себе инет - инета ему шишь. Если маскарадинг оставить, то юзер весело качает инет в обход всяких биллингов
2. Насколько точно считает ipcad знают наверное только те кто его создал.




Добавлено
да и еще. никто не знает - распространение UTM в закрытом откомпилированном виде - это нарушение gnu?


ПРОДОЛЖЕНИЕ.-----------------------------------------------------------------------------
после того как все типа стоит и типа работает, необходимо хоть интернет настроить. Вот мой файл rc.local с пояснениями:

#iptables -P INPUT DROP
#iptables -A INPUT -i eth1 -j ACCEPT
эти правила типа закрывают доступ к роутеру с наружи и открывают изнутри (с интерфейса eth1) - у меня глючит, т.к. у меня интернет раздается через PPPoE - и похоже закрытие внешнего доступа приводит к безвременному падежу этого интерфейса

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
маскарадинг все из сетки выплевывается в ppp0 и наоборот, если у вас в интернет смотрит eth0 то подставьте вместо ppp0 ваш интерфейс

iptables -P FORWARD DROP
это правило запрещает все пакеты из цепочки forward если не сделать то все юзеры счастливо будут ползать в нете выходя через правило написаное выше
iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT
это разрешает всей сетке входящие пакеты

UTM выполняя правило iptables -A FORWARD -s your_ip -j ACCEPT
открывает доступ юзеру с your_ip

safe_mysqld --user=root &
/usr/local/apache/bin/apachectl startssl &
/usr/local/bin/ipcad &
запуск всей шелухи.

последний штрих - классификация трафика. без нее тож никуда.

В разделе настройка нужно означить билингу какие пакеты к какому классу трафика (входящий, исходящий, локальный) относить
таблица такая
сеть куда уходит, маска сети куда уходит, сеть откуда, маска сети откуда
Интернет входящий 192.168.0.0 255.255.255.0 0.0.0.0 0.0.0.0
Интернет исходящий 0.0.0.0 0.0.0.0 192.168.0.0 255.255.255.0
Локальный 192.168.0.0 255.255.255.0 192.168.0.0 255.255.255.0
Локальный Броадкастовый 192.168.0.0 255.255.255.0 192.168.0.255 255.255.255.255

Настроив это можно идти пить пиво.
Я не догадался как классифицировать трафик сквида - что очень грустно, ибо хочеться чуть чуть но сэкономить.


HINT. Наступил еще на одни грабли. проверьте чтобы раздел где у вас лежит база мускуля (/var как правило) был достаточно вместительный. У меня один юзер подцепил где то вирус-троян который ломился по направлению к моему гейту. Гейт устоял, но упала база мускуля, изза того что место на разделе кончилось. Юзверь разорван, база снесена, винт разбит ладом, билинг поднят заново

.
Автор: ginger
Дата сообщения: 19.09.2003 07:55
vaskes105
Спасибо за описанный процесс установки...;)


Цитата:
для меня остались открытыми несколько вопросов:
1. в rc.local у меня был включен маскарадинг. Если его выключить - то врубает, не врубает юзер себе инет - инета ему шишь. Если маскарадинг оставить, то юзер весело качает инет в обход всяких биллингов

В случае отключения NAT доступа в и-нет пользователям локальной сети быть не должно... за исключением если сервер настроен как роутер и спокойно туда-сюда гоняет пакетики...
А вот что касается обхода системы подсчета трафика... то тут я затрудняюсь ответить... по сути такого быть не должно... возможно не правильно настроен NetUP... нужно еще раз посмотреть файл конфигурации... где там коллектор... и т.д... тогда протоколирование будет вестись...
Автор: valhalla
Дата сообщения: 20.09.2003 12:44
vaskes105

Цитата:
в rc.local у меня был включен маскарадинг. Если его выключить - то врубает, не врубает юзер себе инет - инета ему шишь. Если маскарадинг оставить, то юзер весело качает инет в обход всяких биллингов

Выключать NAT не нужно. Чтобы заработало включение-выключение инета у пользователей, тебе нужно сделать
iptables -P FORWARD DROP

Добавлено
И еще по поводу того, с каких интерфейсов снимать трафик.
1. eth1 - локальный (192.168.0.0), eth0 - внешний. На eth0 поднят NAT.
На интерфейсе, на котором поднят NAT (eth0), локальные адреса светиться не будут.
Статистику надо снимать с eth1.
Если на eth1 у тебя есть алиасы, тогда трафик между алиасами (по сути дела - локальный) тоже будет попадать в базу (т.е. в настройках нужно задать его как локальный).

2. eth1 - локальный (192.168.0.0), eth0 - внешний. На eth0 NAT отсутствует.
Статистику надо снимать с eth0. Локального трафика в базе не будет.

3. eth1 - локальный (192.168.0.0), vpn-интерфейсы (ppp0, ppp1 и т.д.), eth0 - внешний (NAT).
Снимать статистику надо с vpn-интерфейсов. Тогда база не будет забиваться локальным трафиком.
С динамических интерфейсов (vpn) снимать трафик может только коллектор net-acct (в Linux).

Добавлено
И немного по поводу коллекторов (применительно к Linux)
ipcad - умеет снимать трафик с локальных интерфейсов, а также с alias-интерфейсов. Например, если у вас на eht1 существуют eth1:0, eth1:1 и eth1:2, то можно задать в настройках только один из них (например, eth1:2). Тогда трафик с eth1:0 и eth1:1 попадать в базу не будет. Если есть алиасы, и нужно снимать трафик с них со всех, то в настройках ipcad достаточно указать основной интерфейс (eth1) - трафик будет сниматься также со всех алиасов.
В последней версии ipcad появилась псевдо-поддержка динамических интерфейсов: вы действительно можете снимать трафик с ppp0, ppp1 и т.д., но только в том случае, если они были подняты до запуска ipcad. Кроме того, все они должны быть перечислены в ipcad.cfg.
Имеет встроенный rsh-сервер, а также команды, совпадающие с командами на маршрутизаторах cisco (sh ip accou, clear ip accou и т.д.). Т.е. если у вас есть скрипт, который снимает акаунтинг с cisco, он после небольшой перенастройки скорее всего сможет снимать акаунтинг с ipcad.

net-acct - помимо локальных интерфейсов имеет полноценную поддержку динамических интерфейсов. Как только поднимается интерфейс, net-acct сразу начинает снимать с него трафик, т.е. только что созданные динамические интерфейсы (да и локальные тоже) автоматически подхватываются, даже когда коллектор уже запущен.
Снимать трафик отдельно с alias-интерфейсов не умеет (т.е. если есть алиасы, будет снимать с них со всех), rsh-сервера нет, трафик забирается у него путем парсинга и очистки выходного файла.

Добавлено
Если кто использует UTM 3 (как это делаю я), то структуру некоторых таблиц можно посмотреть здесь
Автор: vaskes105
Дата сообщения: 24.09.2003 00:00
valhalla

Цитата:
2. eth1 - локальный (192.168.0.0), eth0 - внешний. На eth0 NAT отсутствует.
Статистику надо снимать с eth0. Локального трафика в базе не будет.


Как так может быть?
Автор: nikkolay
Дата сообщения: 25.09.2003 14:11
[null]
Автор: GalVad
Дата сообщения: 05.10.2003 20:43
Ситуация у меня такая (RH 7.3 + UTM 4 (спасибо варезнику) + iptables + ipcad)
eth0 10.0.0.1/16 - сетевуха смотрит в локалку
eth1 xxx.xxx.xxx.xxx/xx - выход в Инет
Нат есть само собой. База чистая (я только что поставил УТМ)

Так вот когда у меня такая проблема: если включены ОБЕ сетевухи, то интерфейс администратора (скрипт admin) открывается очень медленно (до 2-3 минут), а кабинет пользовательский грузится нормально. Так а если выключить вторую сетевуху (ifdown eth1), то скрипт админовский начинает работать нормально, так же как и пользовательский кабинет.

Может у кого-то было уже такое, подскажите, плз.
Автор: vaskes105
Дата сообщения: 06.10.2003 05:57
Возможно глюки MySQL - на эту тему есть топик на родном нетаповском серваке (заголовок типа почему тупит mySQL) хотя какая связь с eth не понятно
Автор: GalVad
Дата сообщения: 06.10.2003 10:27
vaskes105
Глюк был из-за того что к сетевухе, которая глядит в мир, не был подключен кабель
УТМ делает запросы насчет домена (штук 20 наверное), и если кабель не подключен, то возникает пауза.
А смотрел я пакеты так : /usr/sbin/tcpdump -i eth1
Подробнее в man tcpdump

Провод втыкнули все стало ОК.

[Флейм]
Посылать на RTFM насчет снифера не буду , самого туда часто отправляют
[/Флейм]
Автор: valhalla
Дата сообщения: 06.10.2003 11:55
vaskes105

Цитата:
2. eth1 - локальный (192.168.0.0), eth0 - внешний. На eth0 NAT отсутствует.
Статистику надо снимать с eth0. Локального трафика в базе не будет.

Как так может быть?

Очень просто
пользователи---eth1---eth0---cisco(nat)----internet
Автор: Guardian Angel
Дата сообщения: 04.11.2003 14:29
А никто не прикручивал UTM к Cisco?

Насколько я знаю у циски есть собственный firewall, вот только сможет ли он вместе c UTM работать..?
Автор: proed
Дата сообщения: 25.11.2003 22:33
при установке MySQL под RedHat 9 возникают следующие грабли:
http://forum.ru-board.com/topic.cgi?forum=8&topic=4207
Автор: Ex3me
Дата сообщения: 17.01.2004 16:32
В utm.conf описан список возможных коллекторов трафика...
Кто-нить умудрялся запускать в качестве коллектора trafd так чтобы всё работало и считалось?
Автор: proed
Дата сообщения: 19.01.2004 09:23

Цитата:
Кто-нить умудрялся запускать в качестве коллектора trafd так чтобы всё работало и считалось?

я не слышал о поддержке UTM такого коллектора, вот выдержка из документации:

Цитата:
Тип коллектора трафика. Может принимать значения: ipcad, nacctd, none, netflow, cisco.
Автор: proed
Дата сообщения: 20.01.2004 00:01
ВНИМАНИЕ описание ошибки в UTM, которую вроде как лечит обновление от 23 сентября 2003 года (если не прав поправьте)

Цитата:
Множественные уязвимости в NetUP
Программа: NetUP
Опасность: Критическая
Наличие эксплоита: Да

Описание: Несколько уязвимостей обнаружено в NetUP. Злонамеренный пользователь может получить доступ к системе и манипулировать учетной записью пользователя.

1. Сценарии "admin" and "utm_stat” не проверяют "sid" параметр. В результате злонамеренный пользователь может внедриться в сессию другого пользователя через SQL инъекцию:
https://[server]/cgi-bin/utm/admin?cmd=full_view&sid=q%22%20OR%201=1%20OR%20%22q%22=%22q
https://[server]/cgi-bin/utm/utm_stat?cmd=user_report&sid=q%22%20OR%201=1%20OR%20%22q%22=%22q

2. Удаленный пользователь может изменять данные других пользователей, используя уязвимость SQL инъекции в '/cgi-bin/utm/user_stat' script сценарии:
https://[server]/cgi-bin/utm/utm_stat?cmd=change_lang?=ru%22,%20bill=10000,%20lang=%22ru&sid=sessionid
Также сообщается, что множество других сценариев уязвимы к SQL инъекции.

URL производителя: http://www.netup.biz/

Решение: Ограничьте доступ к приложению только доверенным пользователям. Используйте альтернативное программное обеспечение.


Добавлено

Цитата:
Multiple Security Issues in Netup UTM

Name : Multiple Security Issues in Netup UTM
Software Package : Netup UserTraffManager
Vendor Homepage : http://www.netup.biz, http://www.netup.ru
Vulnerable Versions: 3.0, 4.0
Platforms : Linux, FreeBSD
Vulnerability Type : SQL injections, remote shell command execution

Introduction
-------
As it is postulated on vendor's website www.netup.biz: "NetUP UserTraffManager
is a universal ISP billing system for Internet Service Providers of any size,
from small offices to global companies".

Actually, UTM is a traffic accounting suite, which consist of
1) scripts for collecting traffic statistics from different devices, and
storing them in MySQL database.
2) web interface for administrators and end-users.

-------
Issue 1: Session hijacking using SQL injection

Web interface of UTM consist of 3 executables: aaa, admin and utm_stat. aaa
handles authentication of user or administrator, and generates unique session
id. After that admin or utm_stat identifies user by session id, which is
passed as a parameter sid in HTTP GET string.
It appears that session data is stored in MySQL, and sid parameter is checked
with simple SELECT, and special characters in parameter sid are not escaped,
so sessions can be easily hijacked with queries altering where-clause,
for example sid='q" OR 1=1 OR "q"="q'. This will give an access to first
currently open session. The resulting query will be:

https://somehost/cgi-bin/utm/admin?cmd=full_view&sid=q%22%20OR%201=1%20OR%20%22q%22=%22q
https://somehost/cgi-bin/utm/utm_stat?cmd=user_report&sid=q%22%20OR%201=1%20OR%20%22q%22=%22q

The attacker can switch between sessions altering the SQL query, for example:
sid=q" OR 1=1 AND uid!=10 OR "q"="q
Once the attacker has found needed session he can stick to it, adding uid=X
(where X is users ID) to the query.

If no sessions are currently active a message "Access denied" is displayed,
however nothing is written to UTM_logs table.

Once the administrator's session is hijacked, attacker can do anything that
this administrator can: alter users' settings, add users, erase logs, steal
UTM registration key and else...

-------
Issue 2: Altering user's parameters using SQL injection

All user's information is stored in a single SQL row. Users can change their
password and language via web interface given by /cgi-bin/utm/user_stat.
Data from HTTP query passes to SQL UPDATE query not escaped. So, using SQL
injection user can alter all his parameters, and amount of money on his
account as well.
Logged in user can alter his information, and in case of session hi-jacking,
attacker can alter session owner's info.
For example, setting lang to 'ru", bill=10000, lang="ru', will put 10000
rubles on user's money bill. And the example query will be:

https://somehost/cgi-bin/utm/utm_stat?cmd=change_lang?=ru%22,%20bill=10000,%20lang=%22ru&sid=XXXXX

(where XXXXX is valid sid, or an SQL injection described in issue 1).

-------

Really all UTM's code suffers from SQL injections. Two most bad where already
described above. So I will skip others, and will go on describing worse bugs.

-------
Issue 3: Executing shell commands

UTM allows its administrators to setup firewall rules. Administrator enters
the parameters for ipchains (in case if Linux) or ipfw (FreeBSD) into
webform, and they are stored in MySQL, and executed with help of sudo. A
malicious administrator can add semicolon and any shell commands to the
firewall rule, and this commands will be executed with uid of httpd process
owner.
However, altering firewall rules is disabled in UTM by default. In this case
an attacker can use more complicated way to execute commands:
The problem is that UTM configuration options from /netup/utm/utm.cfg are
exported to global variables after parsing. This happens on each startup of
aaa, admin or utm_stat. After this, dictionary data for corresponding language
is selected from table dict. This data is also exported to global variables.
Column "variable" becomes variable name, and column "value" its value. So, if
one has access to table dict, he can override configuration options from
/netup/utm/utm.cfg. Overriding option sudo_path allows an attacker to
execute shell commands on server running UTM.
Web interface /cgi-bin/utm/admin allows only to change column value of table
dict. But, further examination shows that admin?cmd=dict_change, is subject
to SQL injection similar to utm_stat?cmd=change_lang, described above.
Passing parameter like

value506='touch /tmp/hacked; /usr/local/bin/sudo", variable="sudo_path'

to admin?cmd=dict_change will rewrite global variable sudo_path, and
'touch /tmp/hacked' will be executed with next call to sudo. The HTTP query
itself is very big, because all rows in table dict are changed with one
query (stupid!), so the query won't be shown here.

-------
Issue 4: Gaining root access

Once an attacker can execute shell commands with uid of httpd process
owner (usually nobody), in most cases he can gain a root shell. The problem
is that in all boxes running UTM sudoers file contains a line:

nobody ALL= NOPASSWD: /bin/mv

So moving from httpd uid to uid 0 is quite easy.

(I don't really know reason for this, but it is even suggested to do it
on vendor's website http://www.netup.ru/?fid=31)

-------
Known workarounds:

1. Change database_login in utm.cfg to non-root value (default root).
2. Remove "nobody ALL= NOPASSWD: /bin/mv" from sudoers.
3. Disallow changing dictionary and adding firewall rules for all
administrators. Set tables actions and dict read-only for
UTM mysql account.
4. Deny access to /cgi-bin/utm from outer networks via .htaccess.
5. Deny access to /cgi-bin/utm/admin.pl from any hosts except of
administrators' ones via .htaccess.
6. Deny POST method in .htaccess. Track access_log for SQL injections.
--
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE

Автор: biglol
Дата сообщения: 23.01.2004 19:15
Блин непойму мочему так получается при установке NetUP 4 ???? :

Enter DB type: mysql Pg [mysql]:mysql
database_type=mysql
Enter Database path (where bin directory allocated) [/usr]:/usr
database_path=/usr
Enter Database login (may be root) [root]:root
Enter Database password []:
Enter Database host [localhost]:
database_host=localhost
Segmentation fault (core dumped)

Мож кто сталкивался с такой проблемой ПОМОГИТЕ плизззз.. как ее можно решить )))

Зарание БЛАГОДАРЕН )))
Автор: proed
Дата сообщения: 23.01.2004 20:04
biglol
см. выше:

Цитата:
ставим все точно по инструкции (как в pdf'ке написано). Шаг влево, шаг вправо - могуть сказаться непонятными косяками в последствии. (не забудте запустить скрипт mysql_install_db). Если вы сделали все точно по инструкции то апач и mysql сконфигурированы и должны запускаться и работать.
Автор: victim1
Дата сообщения: 15.02.2004 21:18
biglol

Цитата:
Enter Database password []:
Enter Database host [localhost]:
database_host=localhost
Segmentation fault (core dumped)


database_host=127.0.0.1 и будет тебе счастье. мне тоже такое попадлось

Автор: proed
Дата сообщения: 15.02.2004 22:04

Цитата:
database_host=127.0.0.1 и будет тебе счастье. мне тоже такое попадлось

решается настройкой файла HOSTS, к примеру во всех HOWTO указывается такая строчка:

Код: 127.0.0.1 localhost localhost.localdomain
Автор: valhalla
Дата сообщения: 18.02.2004 13:02
proed

Цитата:
database_host=127.0.0.1 и будет тебе счастье. мне тоже такое попадлось
решается настройкой файла HOSTS, к примеру во всех HOWTO указывается такая строчка:
127.0.0.1 localhost localhost.localdomain
но мой REDHAT 9 с таким синтаксисом работать отказался, а с таким все ок:
Код:127.0.0.1 server localhost.localdomain localhost

Дело совсем не в этом.
-database_host=localhost - UTM подключается через сокет в /tmp (и только в /tmp)
-database_host=127.0.0.1 - UTM подключается через TCP-сокет
Автор: proed
Дата сообщения: 19.02.2004 01:13
valhalla
согласен, сорри, что ввожу в заблуждение...

кстати наткнулся на оптимизацию запуска мускуля-

mysql запускаем такой вот строчкой:
/usr/local/bin/safe_mysqld --user=root -O key_buffer=64M -O table_cache=256 -O sort_buffer=4M -O record_buffer=1M -O record_rnd_buffer=1M

Стало работать заметно быстрее. И пользолватели заходят на статистику почти без задержки.
Размер всех файлов базы 4,5 Гига.
Автор: valhalla
Дата сообщения: 19.02.2004 08:36
У кого-нибудь есть опыт чрутинга апача на машине с UTM?
Автор: proed
Дата сообщения: 25.02.2004 22:26
кто-нибудь вкурсе, - сентябрьский апдейт латает все дыры или нет ?
в архиве находится только бинарный файл utm_stat, а файла admin нету, хотя в нем тоже есть уязвимость:

Цитата:
Множественные уязвимости в NetUP
Программа: NetUP
Опасность: Критическая
Наличие эксплоита: Да

Описание: Несколько уязвимостей обнаружено в NetUP. Злонамеренный пользователь может получить доступ к системе и манипулировать учетной записью пользователя.

1. Сценарии "admin" and "utm_stat” не проверяют "sid" параметр. В результате злонамеренный пользователь может внедриться в сессию другого пользователя через SQL инъекцию:
https://[server]/cgi-bin/utm/admin?cmd=full_view&sid=q%22%20OR%201=1%20OR%20%22q%22=%22q
https://[server]/cgi-bin/utm/utm_stat?cmd=user_report&sid=q%22%20OR%201=1%20OR%20%22q%22=%22q

2. Удаленный пользователь может изменять данные других пользователей, используя уязвимость SQL инъекции в '/cgi-bin/utm/user_stat' script сценарии:
https://[server]/cgi-bin/utm/utm_stat?cmd=change_lang?=ru%22,%20bill=10000,%20lang=%22ru&sid=sessionid
Также сообщается, что множество других сценариев уязвимы к SQL инъекции.

URL производителя: http://www.netup.biz/

Решение: Ограничьте доступ к приложению только доверенным пользователям. Используйте альтернативное программное обеспечение.

Автор: Skylord
Дата сообщения: 05.03.2004 00:49
Постю по просьбе proed'а.
Итак, цель: поиметь нормальную авторизацию vpn. Предполагается, что все настроено и работает (например, в варианте без радиуса с логинами/ипшниками/паролями в ppp.secret), но хочется большего. Недостатки ppp.secret очевидны - лишнее дергание руками и прочее. Недостатки встроенного в НетУп радиуса: крайняя примитивность. И черт бы с ней, но хочется авторизации MSCHAPv2 и прочих приятных вещей. Выход? Поставить полноценный FreeRadius и настроить его на работу с базой УТМ.
Я это реализовал на FreeBSD 4.9. Что нам надо:
1) Хранить пароли пользователей в plain_text. На этот счет - см. родную доку: как делается и нюансы там опИсаны.
2) Установить FreeRadius из портов командами:
make WITH_MYSQL=yes
make install clean
3) Настроить FreeRadius. Как это делается - процитирую с форума НетУпа (автор OtherSide):

Цитата:

Настраиваем FreeRadius...

# cd /usr/local/etc/raddb

тут надо внести изменения в некоторые файлы конфигурации (комментарии у большинства строк удалены...):

radius.conf:
#--------------------------------------------------------
##
## radiusd.conf -- FreeRADIUS server configuration file.
##

prefix = /usr/local
exec_prefix = ${prefix}
sysconfdir = ${prefix}/etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/radiusd
log_file = ${logdir}/radius.log
libdir = ${exec_prefix}/lib
pidfile = ${run_dir}/radiusd.pid


# user/group: The name (or #number) of the user/group to run radiusd as.
user = nobody
group = nobody

max_request_time = 8
delete_blocked_requests = no
cleanup_delay = 5
max_requests = 1024

# bind_address: Make the server listen on a particular IP address, and
# send replies out from that address. This directive is most useful
# for machines with multiple IP addresses on one interface.
#
bind_address = *

# port: Allows you to bind FreeRADIUS to a specific port.
#
port = 1812

hostname_lookups = no
allow_core_dumps = no
regular_expressions = yes
extended_expressions = yes
log_stripped_names = yes
log_auth = yes
log_auth_badpass = yes
log_auth_goodpass = no
usercollide = no
lower_user = no
lower_pass = no
nospace_user = no
nospace_pass = no
checkrad = ${sbindir}/checkrad

security {
max_attributes = 200
reject_delay = 1
status_server = no
}

proxy_requests = no
#$INCLUDE ${confdir}/proxy.conf
$INCLUDE ${confdir}/clients.conf
snmp = no
#$INCLUDE ${confdir}/snmp.conf

thread pool {
start_servers = 5
max_servers = 32
min_spare_servers = 3
max_spare_servers = 10
max_requests_per_server = 0
}

modules {
chap {
authtype = CHAP
}

mschap {
authtype = MS-CHAP
}
detail {
detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d
detailperm = 0600
}

$INCLUDE ${confdir}/sql.conf


always fail {
rcode = fail
}
always reject {
rcode = reject
}
always ok {
rcode = ok
simulcount = 0
mpp = no
}

}

authorize {
chap
mschap
sql
}


authenticate {
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
}


accounting {
detail
sql
}
#--------------------------------------------------------



clients.conf:
#--------------------------------------------------------
#
# clients.conf - client configuration directives
#
client 127.0.0.1 {
# The secret can be any string, up to 32 characters in length.
#
secret = ******
shortname = localhost
nastype = other
}

client 192.168.0.1 {
secret = ******
shortname = vpn-nas
nastype = other
}
#--------------------------------------------------------

параметр secret в clients.conf - это пароль для доступа к радиусу... его надо будет вписать в /etc/radius.conf (потом )



acct_users
#--------------------------------------------------------
#
# $Id: acct_users,v 1.3.4.1 2003/08/26 17:41:48 phampson Exp $
#
# This is like the 'users' file, but it is processed only for
# accounting packets.
DEFAULT
Service-Type == Framed-User,
Service-Type == Login-User,
Login-Service == Telnet,
Login-Service == Rlogin,
Login-Service == TCP-Clear,
Login-TCP-Port <= 65536,
Framed-IP-Address == 255.255.255.254,
Framed-IP-Netmask == 255.255.255.255,
Framed-Protocol == PPP,
Framed-Protocol == SLIP,
Framed-Compression == Van-Jacobson-TCP-IP,
Framed-MTU >= 576,
Framed-Filter-ID =* ANY,
Reply-Message =* ANY,
Proxy-State =* ANY,
Session-Timeout <= 2678400,
Idle-Timeout <= 2678400,
Port-Limit <= 2
#--------------------------------------------------------


Ну и пожалуй самый главный файлик...
sql.conf:
#--------------------------------------------------------
#
# Configuration for the SQL module, when using MySQL.
#
sql {
driver = "rlm_sql_mysql"

# Connect info
server = "localhost"
login = "root"
password = "*****"

# Database table configuration
radius_db = "UTM"

sqltrace = no
sqltracefile = ${logdir}/sqltrace.sql
num_sql_socks = 5
connect_failure_retry_delay = 60

sql_user_name = "%{User-Name}"


authorize_check_query = "SELECT users.id, users.login, 'Password', users.password, ':=' FROM users WHERE users.login = '%{SQL-User-Name}' AND users.block = '0'"
authorize_reply_query = "SELECT users.id, users.login, 'Framed-IP-Address', users.ip, ':=' FROM users WHERE users.login = '%{SQL-User-Name}' AND users.block = '0'"
authorize_group_check_query = "SELECT frad_groupcheck.id,frad_groupcheck.GroupName,frad_groupcheck.Attribute,frad_groupcheck.Value,frad_groupcheck.op FROM frad_groupcheck,frad_usergroup WHERE frad_groupcheck.GroupName = 'users' ORDER BY frad_groupcheck.id"
authorize_group_reply_query = "SELECT frad_groupreply.id,frad_groupreply.GroupName,frad_groupreply.Attribute,frad_groupreply.Value,frad_groupreply.op FROM frad_groupreply,frad_usergroup WHERE frad_groupreply.GroupName = 'users' ORDER BY frad_groupreply.id"
accounting_start_query = "INSERT INTO radius_packets_accounting ( id, uid, recv_date, Code, Identifier, Authentic, Framed_IP_Address, Acct_Authentic, NAS_Port, Acct_Delay_Time, Service_Type, Acct_Session_Id, NAS_Port_Type, User_Name,Framed_Protocol, NAS_IP_Address, Acct_Status_Type, Acct_Input_Packets, Acct_Input_Octets, Acct_Output_Packets, Acct_Output_Octets, Acct_Session_Time ) SELECT NULL, users.id, '%l', 4, 10, '', '%{Framed-IP-Address}', '%{Acct-Authentic}', '%{NAS-Port}', '%{Acct-Delay-Time}', '%{Service-Type}', '%{Acct-Session-Id}', '%{NAS-Port-Type}', '%{SQL-User-Name}', '%{Framed-Protocol}', '%{NAS-IP-Address}', 1, 0, 0, 0, 0, 0 FROM users WHERE users.login='%{SQL-User-Name}'"
accounting_stop_query = "INSERT INTO radius_packets_accounting ( id, uid, recv_date, Code, Identifier, Authentic, Framed_IP_Address, Acct_Authentic, NAS_Port, Acct_Delay_Time, Service_Type, Acct_Session_Id, NAS_Port_Type, User_Name,Framed_Protocol, NAS_IP_Address, Acct_Status_Type, Acct_Input_Packets, Acct_Input_Octets, Acct_Output_Packets, Acct_Output_Octets, Acct_Session_Time ) SELECT NULL, users.id, '%l', 4, 20, '', '%{Framed-IP-Address}', '%{Acct-Authentic}', '%{NAS-Port}', '%{Acct-Delay-Time}', '%{Service-Type}','%{Acct-Session-Id}', '%{NAS-Port-Type}', '%{SQL-User-Name}', '%{Framed-Protocol}', '%{NAS-IP-Address}', 2, '%{Acct-Input-Packets}', '%{Acct-Input-Octets}', '%{Acct-Output-Packets}', '%{Acct-Output-Octets}', '%{Acct-Session-Time}' FROM users WHERE users.login='%{SQL-User-Name}'"
group_membership_query = "SELECT GroupName FROM frad_usergroup WHERE id=1"
}
#--------------------------------------------------------
В файлике sql.conf, нужно ввести адрес сервера MySQL, логин и пароль для доступа к MySQL... (см. server, login, password)


3) Настраиваем MySQL для работы с FreeRadius.
Надо создать несколько дополнительных таблиц в БД UTM. Далее код для MySQL.

use UTM;

CREATE TABLE frad_groupcheck (
id int(11) unsigned NOT NULL auto_increment,
GroupName varchar(64) NOT NULL default '',
Attribute varchar(32) NOT NULL default '',
op char(2) NOT NULL DEFAULT '==',
Value varchar(253) NOT NULL default '',
PRIMARY KEY (id),
KEY GroupName (GroupName(32))
) ;

CREATE TABLE frad_groupreply (
id int(11) unsigned NOT NULL auto_increment,
GroupName varchar(64) NOT NULL default '',
Attribute varchar(32) NOT NULL default '',
op char(2) NOT NULL DEFAULT '=',
Value varchar(253) NOT NULL default '',
prio int unsigned NOT NULL default '0',
PRIMARY KEY (id),
KEY GroupName (GroupName(32))
) ;

INSERT INTO frad_groupreply VALUES (NULL, 'users', 'Framed-IP-Netmask', ':=', '255.255.255.255', 0);

CREATE TABLE frad_usergroup (
id int(11) unsigned NOT NULL auto_increment,
GroupName varchar(64) NOT NULL default '',
PRIMARY KEY (id)
) ;

INSERT INTO frad_usergroup VALUES (NULL, 'users');


4) The End
Теперь можно запустить FreeRadius

vpn# /usr/local/etc/rc.d/radius.sh start

Для того что-бы NAS мог обратиться к радиусу, вносим изменения в /etc/radius.conf ( на том сервере, где стоит NAS )
radius.conf:

auth 127.0.0.1:1812 *****
acct 127.0.0.1:1813 *****

Вместо 127.0.0.1 нужно вписать адрес сервера с FreeRadius (если он находится на другом сервере)
***** - это пароль, который задается в clients.conf (см. выше)


Вот. По-моему, все достаточно прозрачно написано, а конфиги по большому счету можно просто скопировать отсюда и кинуть подправив пару строк - secret word, прежде всего.
4) Дальнейшная настройка самого УТМа полностью соответствует родной доке: убираем из utm.cfg строчки про ppp.secret (ну, там где путь к нему и формат), если они были. В ppp.conf в профиле для vpn ставим
set radius /etc/radius.conf
в котором пишем точно то, что написано в доке...
В общем, все как в родной доке, только радиус другой. ))
5) Вся система у меня заработала моментально и без проблем, а ppp.secret был забыт как страшный сон. Чего и вам желаю.

ps: Кстати, если у кого проблемы с vpn - могу кинуть конфиги, как оно работает у меня. Инструкция по настройке pptpd в родной доке мягко говоря не очень. Точнее, совсем никак.
Автор: MSY
Дата сообщения: 05.03.2004 10:41
Skylord

У меня такой вопрос:
Щас стоит биллинг, который считает трафик путем взаимодействия MPD и FreeRADIUS. Т.е. MPD считает трафик и записывает его в базу Радиуса, откуда эту информацию и берет биллинг.

Благодаря переходу авторизации в NetUP4 на FreeRADIUS, возможно ли отказаться от установки дополнительных коллекторов, и считать по той же схеме, что я указал выше или всё-же это неприменимо для NetUP4?
Автор: proed
Дата сообщения: 05.03.2004 20:53
MSY
если тебе необходимо считать трафик только по ВПН сессиям (не видя ни айпишников, куда обращался юзер не деля трафик по подсетям),- что к примеру для диалапа и нужно, то можно считать просто радиусом...
но если хочешь иметь полноценную инфу по работе народа, то здесь без коллектора не обойтись, и работа радиуса сводится только к разрешению или запрещению РРР интерфейса для пользователей, куда бы он не выдавался для ВПН или диалапа...

Добавлено
имеется ввиду работа NetUp UTM 4, что про:

Цитата:
взаимодействия MPD и FreeRADIUS

не вкурсе...
уверен что инфа о трафике через радиус ходит ?
Автор: Skylord
Дата сообщения: 06.03.2004 00:24
MSY
Вообще-то, proed правильно сказал - радиус не самая лучшая штука для подсчета трафика... Как ты например в нем разделяешь внутрисетевой и инетовский трафик? Опять же - я в mpd не силен, у меня на обычном pptpd VPN сделан... Но, ИМХО, нормальный коллектор по любому нужен - и для НетУпа роднее, и возможностей больше. А радиус, как никак, просто система авторизации - он для считания и не предназначен.
И все-таки, что-то я не очень понимаю, как ты сбрасываешь инфу по трафику из ФриРадиуса в нетуп... Расскажи, оно интересно.
Автор: MSY
Дата сообщения: 06.03.2004 06:55
Я щас работаю с FreeNIBS, который сам построен на общих таблицах с FreeRadius'ом... MPD alive пакетами сбрасывает данные о трафике подключенного юзера в базу FreeRADIUS'a, откуда NIBS их и берет.
Согласен, наворотов в таком биллинге заметно меньше, но зато основные функции работают довольно стабильно...
Щас буду пробовать поднимать NetUP4. Будет лучше - перейду.
Автор: Skylord
Дата сообщения: 06.03.2004 21:48
MSY
NetUP фактически дает только достаточно симпотный интерфейс. FreeNIBS не видел, но все самописные фейсы, которые попадали на глаза (например, тот, который юзают в локалке моего района), были исключительно примитивны и слабофункциональны... Возможно, просто фигня попадалась - не знаю. А нетуп несмотря на все крики в его адрес работает вполне нормально - большинство глюков только от кривых рук, но ведь все хотят, чтобы купили биллинг - и ничего самому делать не надо. ))
В общем, лично меня пока все устраивает: poptop держит VPN (кстати, никто не просветит, в чем, например, преимущество mpd перед poptop'ом? Или по фиг? Мне poptop удобнее показался...), FreeRadius авторизует, нетуповский коллектор ndsad успешно считает и юзеров, которые ходят по VPN и тех, которые нет (собственно, именно поэтому считать только радиусом или тем же mpd не подходит), netflow собирает трафик, а UTM обрабатывает и показывает красивые статистики с графиками и детализациями, кто куда ходил.
Автор: MSY
Дата сообщения: 07.03.2004 05:02
Skylord

Вот один из самописных интерфейсов к FreeNIBS: http://www.mabill.ru

А есть ли в NetUP'е такая фича - как привязка логина к определенному ip (т.е. юзеру разрешается логинится только с определенного Ip)?
Автор: valhalla
Дата сообщения: 07.03.2004 19:32
MSY

Цитата:
А есть ли в NetUP'е такая фича - как привязка логина к определенному ip (т.е. юзеру разрешается логинится только с определенного Ip)?

При создании юзера выбирается тип IP - статический или динамический (это относится к доступу в личный кабинет). Или ты имеешь в виду по VPN?

Страницы: 123456789101112131415161718192021222324252627

Предыдущая тема: Sarg - анализатор логов squid'а


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.