LINUX.ORG.RU
решено ФорумAdmin

OpenVPN: прокси и контроль трафика для клиентов. Как правильно?

 , ,


1

1

Преамбула: Поднял я когда-то дома OpenVPN-сервер для узбагоения своей паранойи при хождении в интернеты через чужие хотспоты Wifi. Всё давно настроено и работает прекрасно.

Фабула: Возникла необходимость дать доступ посторонним людям. Не то, чтобы я им не доверял (иначе бы о доступе речь не шла совсем), но хотелось бы знать, чего они творили в моей сети и в какие интернеты из неё ходили.

Вопрос: Как правильно контролировать трафик OpenVPN-клиентов?

--------------------------

Затыки:

1) Поднял прокси, настроил на перехват трафика, поставил себе CA-сертификат на мобилку. Работает, но криво. Браузер алармит на все https-сайты, утверждая, что меня хотят взломать. Раздражает. Тем более, не хотят, а взломали, и я сам. Как правильно настроить Squid3 для полного ssl-bump? Мануал и доки читал - полного понимания нет, того, что осилил - явно не хватает.

2) Как логировать не-http(s) трафик, чтобы не засирался syslog? Понимаю, что надо копать связку iptables+rsyslogd, но на ум приходят только велосипеды из костылей. Что почитать, чтобы осилить нормальное логирование?

--------------------------

P.S.: OS - Ubuntu 14.04 amd64.

а если надо будет считать трафик то взводи биллинг.

MikeDM ★★★★★ ()
Ответ на: комментарий от MikeDM

Оно уже готово для production? Там можно сделать, чтобы вход в виндовый домен, был по удалёнке? То есть сперва чтобы поднимался VPN, а потом был вход?

DALDON ★★★★★ ()
Ответ на: комментарий от MikeDM

Уж ОЧЕНЬ часто у них выходят новые версии, и все со статусом beta

DALDON ★★★★★ ()

Вопрос: Как правильно контролировать трафик OpenVPN-клиентов?

nfseen. Если надо на более высоких уровнях, то увы - никак... Ну разве, что прозрачный proxy для http можешь натянуть.

DALDON ★★★★★ ()
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от DALDON

Прозрачный прокси для http уже натянут. Меня интересует остальное. Интересно, почему OpenVPN не может запушить на клиента произвольную dhcp-option?

dhameoelin ★★★★★ ()
Ответ на: комментарий от dhameoelin

ничего геройского в своем совете не нашел.

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

MikeDM ★★★★★ ()
Ответ на: комментарий от DALDON

Оно уже готово для production? Там можно сделать, чтобы вход в виндовый домен, был по удалёнке? То есть сперва чтобы поднимался VPN, а потом был вход?

это мультивпн сервер, венды по L2TP могут туда цепляться.

MikeDM ★★★★★ ()
Ответ на: комментарий от dhameoelin

Интересно, почему OpenVPN не может запушить на клиента произвольную dhcp-option?

ccd?

xtraeft ★★☆☆ ()
Ответ на: комментарий от dhameoelin

Например какую опцию? Я тебе реально говорю, посмотри на nfseen, ты сможешь понять, на какой ip, кто у тебя ходил, по какому протоколу и сколько накачал.

Не важно vpn это или нет, но не существуют до сей поры вменяемые способы, которые позволят легко контролировать трафик. ИМХО. Но именно для этого роскомнадзор, не парится, как и провайдеры, а отключают неугодные ip. Ибо сложно всё это. Можешь конечно поставить себе ntop-ng, в бесплатной версии до ребута, будешь смотреть более детальный отчёт по популярным протоколам. Можешь поставить модули для iptables, и пытаться на том уровне распарсить протоколы - но это всё мертво. Ибо я думаю особо бестолково.

Я поставил пока nfseen, очень много интересного узнал... - Звездюлей кому надо выдал.

DALDON ★★★★★ ()
Ответ на: комментарий от DALDON

Ты сам в целом пользуешься этим решением? Доволен?

да доволен.

1) отпала проблема связанная с кучей разных осей мобилок. А про авторизацию я уже писал.

2) серверная часть спокойно работает на линуксах, вендах и маках. что очень сильно расширяет возможности деплоя.

3) у него вменяемая админка, пусть даже и только в виде виндового приложения. (кстати есть и CLI админка работающая в линуксах, ну и plaintext конфиги продолжают радовать.)

MikeDM ★★★★★ ()
Ответ на: комментарий от MikeDM

ничего геройского в своем совете не нашел.

Ты не отвечаешь на вопрос из ОП-поста.

А по делу, в SEVPN есть все что тебе надо вплоть до авторизации в радиус или по ключам

А оно мне зачем? У меня уже давно есть рабочий OpenVPN. Смысл его менять на что-то другое и закрытое?

а для контроля биллинг накрутишь и будешь считать трафик.

Ok. Как биллинг мне поможет смотреть куда пошёл клиент? Может, мне на домашнем роутере netflow смотреть ещё предложишь?

dhameoelin ★★★★★ ()
Ответ на: комментарий от dhameoelin

Может, мне на домашнем роутере netflow смотреть ещё предложишь?

У тебя вариантов не то что бы много я думаю в этом плане... :)

DALDON ★★★★★ ()
Ответ на: комментарий от dhameoelin

А смысл..? Дальше то чего с этим делать? Я тебе по сему и предложил nfseen, чтобы мышкой потом тыркать и делать выборки.

DALDON ★★★★★ ()
Ответ на: комментарий от dhameoelin

ИМХО, ты изувер. :-D Будешь писать там правила для iptables и т.п. - ты умрёшь по правилам считать кто, сколько у тебя налазил. Будешь там грепом своим мудрить, кто, когда, куда, сколько..?

Хозяин барин. Но, netflow, это совсем не много, и очень бюджетно в плане ресурсов. Уверяю. Как раз таки iptables - это ядерный overkill! У тебя на уровне ядра будет каждый пакет обрабатываться, и скидываться о нём куча всего.. - Оно не для этого. Для твоей задачи, подойдёт netflow, он пишет очень в сжатом виде, не грузит ни место, ни процессор. А iptables тебе там всё обкакает, грузить будет.

DALDON ★★★★★ ()
Ответ на: комментарий от dhameoelin

iptables LOG предназначена для сист. администраторов. Для отладки. С тем учётом, что он у тебя будет грузить твой CPU, ведь оно будет сваливать в лог каждый пакет. Ну можешь конечно настроить, чтоб оно там фигачило только SYN, ACK. - Но зачем..? - У тебя кроме мусора там больше не будет ничего, ибо один коннект на сайт тебе там SYN ACK с пол мира пооткрывает. В общем мне больше нечего сказать. :) Выбирай.

DALDON ★★★★★ ()
Ответ на: комментарий от dhameoelin

Плюсую нетфлоу, отличная вещь. Попробуй, работает на ура. Визуализаторов ейных вагон есть, как бесплатных\опенсурсных, так и коммерческих. Всё сразу видно. А айпитейблс логгировать и грепать это бред сивой кобылы, нетфлоу займёт гораздо меньше места.

blind_oracle ★★★★★ ()
Ответ на: комментарий от DALDON

Блин) я читаю про netflow и понимаю, что это мне реально дофига. Попробую покрутить на реальном железе.

А логгирую я только -m state --state NEW исходящие пакеты для tun0. Не думаю, что будет дофига. Посмотрим.

dhameoelin ★★★★★ ()

Тоже плюсую netflow. Когда-то настраивал для просмотра кто-куда ходит и сколько трафика жрёт, это как раз для таких целей инструмент.

Nao ★★★★★ ()
Ответ на: комментарий от dhameoelin

Да тебе понимать не нужно ничего, ставишь nfseen, и мышкой тыркаешь. Я думаю, что nfdump и на P-II сможет более чем спокойно работать. Он посылает как раз очень не много инфы, таймштамп, кто, куда, порт, длительность сессии. Тебе вообще не придётся ничего мутить. Ты своего рода провайдер, а для провайдеров и придумали nfdump.

А для отладки правил iptables придумали действие LOG.

От того, что ты увидишь кучу ip со статусом NEW тебе толку... Около нуля. Через nfseen, ты сможешь увидеть количество мегабайт прошедшее с/на ip, таким образом, ты выудишь, откуда кто-то скачал торренты, откуда, кто-то посмотрел видео.

DALDON ★★★★★ ()
Ответ на: комментарий от dhameoelin

А оно мне зачем? У меня уже давно есть рабочий OpenVPN. Смысл его менять на что-то другое и закрытое?

оно открытое, ты хоть по ссылке то сходи, ради приличия.

MikeDM ★★★★★ ()
Ответ на: комментарий от MikeDM

Когда я первый раз про него читал - было закрытое.

И, если уж ты начал про приличия, то перечитай ОП-пост и найди там место, где я прошу совета, на что бы мне сменить OpenVPN.

dhameoelin ★★★★★ ()
Ответ на: комментарий от dhameoelin

я тебе советую лучшее решение. с OpenVPN много секса в плане клиентов. Нет для iOS клиента. Под вендами еще то ололо нормально OpenVPN клиента поставить, особенно в 8ых версиях. L2TP в этом отношении проще будет.

В прочем тебе ведь принимать решение. я так, советчик, не более того.

MikeDM ★★★★★ ()
Ответ на: комментарий от MikeDM

Я тебе последний раз говорю, не надо мне тут советовать «лучшее решение».

Необходимо использовать имеющийся OpenVPN. По-моему это однозначное условие. Указано в ОП-посте. Хакого крена я читаю кучу постов про что-то другое?

P.S.: Про SoftEther VPN я с твоей подачи таки почитал. Оцениваю целесообразность, трудозатраты и инфраструктурные изменения в случае теоретического перехода на него как «ничтожную», «геморройные» и «ненужные» соответственно.

P.P.S.: Извини за грубость, но ты забодал уже этой своей агитацией.

dhameoelin ★★★★★ ()
Последнее исправление: dhameoelin (всего исправлений: 1)
Ответ на: комментарий от dhameoelin

Извиняю, че уж там =)

Так я тебе и по делу давно писал. Взведи какой нибудь простой биллинг и будет тебе счастие.

Хакого крена я читаю кучу постов про что-то другое?

PS добро пожаловать на ЛОР =))))

MikeDM ★★★★★ ()
Последнее исправление: MikeDM (всего исправлений: 2)
Ответ на: комментарий от MikeDM

зло пожаловать на ЛОР =))))

Починил. Так более актуально))

Взведи какой нибудь простой биллинг и будет тебе счастие.

Если смогу поднять на роутере коллектор netflow - то помотрю на него. У меня очень большое ограничение доступных вариантов. Биллинг толком не к чему приделать.

dhameoelin ★★★★★ ()
Ответ на: комментарий от dhameoelin

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

тебе надо только установить nfsen, настроить коллектор и кинуть скрипт в крон на первый день месяца.

FILE5 - это заголовок хтмл.

#!/bin/bash
SHELL=/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin
DATE=/usr/local/bin/gdate
FILE1=/tmp/$$.nfsen
FILE2=/tmp/result.1
FILE3=/tmp/result.2
FILE4=/tmp/result.3
FILE5=/root/nfsen.1
FILE6=/tmp/result.html
FILE7=/root/nfsen.2
FILE8=/tmp/result.4
FILE9=/tmp/result.5
MonthPrev=`$DATE --date="last month" +%b`
MonthCurr=`$DATE +%m`
MonthNum=`$DATE --date="last month" +%m`
NFD_DIR=/var/db/nfsen/profiles-data/live/upstream1/2014/$MonthNum

VPN1=`grep "Connection Initiated with" /var/log/openvpn/access.log | grep $MonthPrev | wc -l`
#VPN1=`grep "Connection Initiated with" /var/log/openvpn/access.log | grep Apr | wc -l`
let "VPN2 = VPN1 / 2"
echo "<tr><td><b>VPN connections in $MonthPrev:</b></td><td>$VPN2</td></tr>" > $FILE2
echo "<tr><td></td><td></td></tr>" >> $FILE2
echo "<tr><td><b>Person</b></td><td><b>Traffic</b></td></tr>" >> $FILE2

#nfdump -M $NFD_DIR -R $NFD_START:$NFD_END \
nfdump -R $NFD_DIR -a  -A srcip -o 'fmt:%sap %byt' \
'(SRC NET 192.168.5.0/24) and (not DST NET 192.168.2.0/24)' | \
sed -e '1d' -e '/^Time window/d' -e '/^Total flows/d' -e '/^Sys:/d' \
-e 's/^Summary:*/&/w /tmp/result.4' -e '/^Summary:/d' -e 's/:0//g' \
-e 's/^[ \t]*//' -e '/^[0-9. ]*$/d' > $FILE1

awk -F,\  '{print $2}' $FILE8 | \
sed 's/total bytes: \([0-9.G ]*\)/<tr><td><b>Total:<\/b><\/td><td><b>\1<\/b><\/td><\/tr>/' > $FILE9

declare -A IPName
IPName[192.168.5.1]='user1'
IPName[192.168.5.11]='user2'
.
.

while read IP TRAF; do
     if [ "${IPName[$IP]}" ]; then
	echo "<tr><td>${IPName[$IP]}</td><td>$TRAF</td></tr>" >> $FILE3
	    #else
		#echo "<tr><td>$IP</td><td>$TRAF</td></tr>" >> $FILE3
      fi
done < $FILE1
sort $FILE3 > $FILE4
cat $FILE5 $FILE2 $FILE4 $FILE9 > $FILE6
mutt -s "Traffic report" -a $FILE6 -- me@domain.com < $FILE7
rm -f $FILE1 $FILE2 $FILE3 $FILE4 $FILE6 $FILE8 $FILE9 > /dev/null 2>&1

nerve ★★ ()
Последнее исправление: nerve (всего исправлений: 1)

2all: Спасибо за помощь и советы. Буду пробовать.

dhameoelin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.