вторник, 13 декабря 2011 г.

Роутер своими силами часть первая

Появилась свободная минутка, решил написать про NetAMS.

Итак, Netams бесплатная система биллинга, имеющая довольно интересный функционал, идеально подходящая для небольших сетей, в которых нужно вести учет трафика пользователей, текущая версия 4.1127

Основная фича Netams это то, что он умеет работать с "сырм" трафиком через libpacp, пакет установки доступен для всех пользователей как linux, так и bsd, windows не рассматриваем как класс.

Подготовим небольшую спецификацию для работы с Netams:
  • ОС - Ubuntu Server 10.04 LTS (почему выбрал ее, родственник дебиана довольно быстро деплоится на железо, минимум времени на установку, почти все стабильное и лежит в репозитариях)
  • Sun Java
  • libpcap версии 1.1.1 (без нее ничего работать не будет в принципе)
  • распакованный пакет Netams 
  • Openssh или telnetd
  • MySQL Server
 Задача развернуть мини роутер  с возможностью ограничения юзеров по трафику с блекджеком и шлюхами DHCP, NAT, VLAN и кеширующим  DNS сервером.

Так как процесс установки довольно прозрачен и понятен, поэтому описывать установку ОС, openssh и telnetd  нет никакого смысла. Все это есть на тематических форумах и в helpах к самой ОС.

1. Этап - Установка
  Ставим все что нам нужно, для того чтобы сократить время при наборе команд следует сделать вот так sudo -s:
  • aptitude install python-software-propertiess
  • apt-add-repository "deb http://archive.canonical.com/ lucid partner"
  • apt-get update && apt-get install sun-java6-jre, mysql-server, mysql-client, build-essential, flex 
Далее необходимо скачать и собрать libpcap версии 1.1.1 для того чтобы все правильно собралось необходимо команду ./configure выполнить с ключем --prefix-path=/usr или поправив в соответствующем месте Makefile, скачиваем с сайта производителя дистрибутив Netams wget http://netams.com/files/netams4/netams4.0.1127-linux-i386.tar.gz распаковываем его в удобный для себя и системы каталог например /opt/netams/.
Теперь необходимо подготовить базу данных для работы netams:
  • mysqladmin -u root -p create netams4
  • mysql -u root -p
  • GRANT ALL ON netams4.* TO netams@localhost IDENTIFIED BY "ваш_пароль";
  • exit
Примичание: для тех кому не нравится консоль mysql, можно все настроить через phpmyadmin. (apt-get install phpmyadmin)
 
 2. Этап - Запуск
Для того чтобы netams корректно запустился необходимо настроить 4 конфигурационных файла
netams4.properties - прописать в параметрах db.sql.mysql.user=netams  db.sql.mysql.password=ваш_пароль.
 
Ддалее в файлах ../webadmin/webadmin-startup.sh ../jserver/jserver-startup.sh и ../repserver/repserver.sh нужно исправить переменную LOGFILE на удобный вам, у меня каждый лог храниться например в /var/log/netams/jserver_run.log и т.д. 
 
.В тех же файлах  ../webadmin/webadmin-startup.sh ../jserver/jserver-startup.sh и ../repserver/repserver.sh исправить переменную JAVA_HOME=/usr/bin на JAVA_HOME=/usr
 
После чего выполнить команду /opt/netams/startup.sh, теперь необходимо проверить что все запустилось, выполним команду  ps aux | grep java, если вывелось на экран 4 запущенных экземпляра с java то наш netams заработал, теперь мы можем попробовать зайти на него через веб интерфейс http://ip_сервера:8080/ должен открыться интерфейс управления netams, по умолчанию логин и пароль netams.

четверг, 1 сентября 2011 г.

Пара приемов с макросами для Asterisk

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

Например выход на межгород

[macro-MGMN]
exten => s,1,Set(CALLERID(num)=${ARG1})
exten => s,n,Dial(SIP/MGMN_OUT/${ARG2}) ; транк на межгород
exten => s,n,Hangup

и далее в контекстах я просто выполняю один и тотже макрос и произвожу замену стандартной 8ки на e.164, т.е. 7 ку: 

exten => _8.,1,Macro(MGMN,номер с которого будем звонить,7${EXTEN:1})

Вот таким нехитрым образом диал план превращаяется в нечто осмысленное и читабельное.


воскресенье, 28 августа 2011 г.

Переход на Asterisk 1.8.5

Версия asterisk 1.6 меня в конец достала, когда в часы максимальной нагрузки атс начала падать в dead block с завидной регулярностью.

Итак, было приято решение перехать на LTS asterisk 1.8, так как в продакшене я использую ubuntu server 10.04, то соответвенно самый быстрый способ это установка новой версии из оффициального репозитария digium.

Первое, что нужно сделать это грохнуть версию 1.6 со всеми составляющими иначе 1.8 просто не будет работать, для начала сохраним все конфиги и сколдуем волшебную комбинацию sudo apt-get purge asterisk*, после чего все что связанно с asterisk из системы будет удаленно, вплоть до конфигов, на всякий случай я рекомендую сказать системе sudo apt-get autoremove && sudo apt-get clean. Теперь можно приступить к установке версии 1.8.5.0.

Второе sudo add-apt-repository deb http://packages.asterisk.org/deb `lsb_release -cs` main" и deb-src http://packages.asterisk.org/deb `lsb_release -cs`-proposed main"

Тертье apt-get update && apt-get install asterisk-1.8 asterisk-dahdi, после чего мы станем обладателем asterisk-1.8.5.0 и можно копировать конфиг с сип юзерами и диалпланом обратно, после чего проверить работу системы на предмет работоспособности диалплана и регистрации юзеров и транков.

Прошла неделя с момента апдейта пока полет нормальный. Единствено с чем пока не разобрался это с поддержкой кодека g722, digium объявила о его полной поддержке, но почему то телефоны Fanwil которые работали по g722 с версией 1.6 перестали работать в 1.8, показывает ubsupported codec в нотисах, но это уже совсем другая история.

суббота, 26 марта 2011 г.

В поисках идеальной СЭД.

Недавно, у меня появилась задача унифицировать хранение и обмен информацией внутри компании, под информацией понимается: документы, фотографии, обсуждения, схемы инструкции и т.д. Логично предположить, что для этого нужно использовать сэд (системы электронного документооборота), из того что есть на рынке либо в принципе неюзабельно, либо стоит безумных денег. По сути все сэды одинаковы вот довольно интересный вебинар которой я нашел в рамках поиска сэд.
В общем негусто и довольно плачевная ситуация, интерфейс вырви глаз, да и переучивать пользователей довольно проблематично. Но, это всего лишь наш российский рынок суровый и беспощадный :), а что же в Европе ? Не ужели западный опыт нельзя применить на российские реалии ? Целенаправленный поиск привел меня сюда http://www.alfresco.com/ это сложно назвать типичным СЭД,  к которому привыкли российские пользователи, по научному это ECM система управления информацией. Как раз то что нужно для меня подробно об этой системе можно почитать тут. Проект по модернизации пока в стадии разработки и тестирования, но материал по нему уже начал накапливаться, итак краткий анонс того что будет в следующих статьях:

1) установка и руссификация alfresco
2) настройка под себя
3) "что нам стоит сэд построить" расчет затрат на систему
4) и конечно тот материал, который был обещан ранее уже почти весь готов, потихоньку начинаю выкладывать.

воскресенье, 20 марта 2011 г.

Мульткаст или IPTV своими руками

Когда-то давно один из моих друзей спросил, каким образом можно быстро и на основе  opensource  сделать небольшое ip-телевидение. Тогда я просто не мог ему помочь из-за отсутствия опыта и знаний в этой области.

Пока не столкнулся с протоколом igmp в лоб. В этой статье я не буду вдаваться в подробности самого протокола  и в теорию сетей, а постараюсь на пальцах объяснить основу вещания в сеть с картинками.

Итак нам понадобиться три пк, желательно под управлением ос linux, мультимедиа плеер vlc

Первое что необходимо сделать, это  разрешить broadcast запросы, делается это так: echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts.

Данную процедуру сделаем на всех трех наших ПК, в итоге если мы ввдем ping 224.0.0.1 все наши три компьютера должны ответить сразу.

224.0.0.1 - это мультикаст группа включающая в себя все узлы локальной сети. Ее и будем использовать для нашего меленького телевидения. 

Итак приступим:
1) определимся с источником вещания например ваша веб-камера, жмем кнопку "Поток"






2) дойдем до этого пункта кнопкой "Вперед", пусть все будет по умолчанию, включаем вещание на адрес 224.0.0.1 по UDP



 
3) теперь нам осталось только посмотреть поток который пришел к нашим клиентам.

4) Теперь нам нужо настроить пункт 3 на всех  компьютерах, с которых мы желаем смотреть наш импровизированный телеканал.

Таким вот нехитрым способом мы можем воспроизводить видео и аудио, и все наши клиенты будут видеть одно и тоже.

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

вторник, 22 февраля 2011 г.

Творческий застой

Пока завал на текущей работе нет времени выложить написанное, а материала уже накопилось довольно много, банально не успеваю. Завтра выходной думаю, что получиться выложить основную часть написанного.

пятница, 14 января 2011 г.

Правила безопасности Asterisk

Хоть тема и избитая, и перелопаченная, все-таки, сделаю я заметку для себя так и для читающих эту публикацию.

В связи с ростом популярности IP-АТС Asterisk* участились нападения на эту платформу. Суть атаки сводится к тому, чтобы получить доступ к международной или междугородней связи, чем это грозит обычным пользователям Asterisk, я думаю, не имеет смысла рассказывать. 

Как пострадавший и наблюдатель сего действа, опишу как это выглядит и постараюсь дать небольшие рекомендации по ограждению себя от этой напасти.

Итак, как происходит процесс взлома:
1.  ищется жертва методом сканирования, социальной инженерии или просто на удачу;
2. определяется тип АТС, искомая цель - asterisk( примерно так наш астериск отзывается на специальные команды:
| SIP Device | User Agent | Fingerprint |
-------------------------------------------------------------------------------------------------------------
| ip:5060       | Asterisk      | Asterisk    |
);
3. дальше происходит сканирование екстеншенов, по умолчанию Asterisk дружелюбен и расскажет обо всех екстеншенах, которые не смогут авторизоваться, ответ выглядеть будет так |XXXX| nоauth|;
4.  начинается брутфорс логина и пароля;
5. как только пароль будет подобран, за частую это происходит на ура, так как начинающие администраторы asterisk делают все по шаблону как написано в интернетах, начинается перебор всех возможных направлений, и попыток набора номера;
6. заводится voip гейт с полученным логином и паролем и пропускается бешеный трафик на Кубу, Сомали, Словению, Швецию и т.п..

Итак, правила безопасности:
1. в файле конфигурации sip.conf ставим параметр alwaysauthreject=yes;
2. при настройке пользователей делайте так, чтобы username не совпадал с именем екстеншена;
3. используйте для паролей md5;
4. закройте все порты кроме 5060 и RTP ;
5. воздержитесь от использования сборок asteriska по типу elastix, trixbox они хороши, но не застрахованы от дыр в веб-интерфейсе;
6. контролируйте свой номерной план, будьте в нем уверенны, что он работает так как вы его спроектировали, а не так как вам кажется;
7. следить и выгружать не используемые модули астриска, это не только сохранит вам нервы, но, возможно, в некоторых случаях прибавит производительности системе;
8. сделайте так, чтобы консоль астериска была вам всегда видна, брутфорс увидите сразу, как только он начнется, консоль просто засыпет сообщениями о том, что кто-то пытается подобрать пароль, или перенаправте ее вывод, например, на ваш джабер или аську это будет более эффективнее, как это сделать, я постараюсь описать в будущих статьях;
9. ограничьте доступ к астериску физически и бейте по рукам линейкой всех, кто не имеет права к нему прикасаться. :)

четверг, 13 января 2011 г.

Поехали

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

Вобщем, поехали, много статей хороших и разных.