Инструменты пользователя

Инструменты сайта


acl.conf

acl.conf Asterisk

Access Control List или ACL — список контроля доступа, который определяет, кто или что может получать доступ к конкретному объекту, и какие именно операции разрешено или запрещено проводить над объектом.

Контексты

Диалпланы разбиты на разделы, называемые контекстами. Контексты – это именованные группы добавочных номеров, которые выполняют несколько функций. Контексты изолируют разные части диалплана, предотвращая возможность их взаимодействия. Добавочный номер, определенный в одном контексте, полностью изолирован от добавочных номеров другого контекста, если только взаимодействие не разрешено специально. Контексты различаются по именам. Имена контекстов заключаются в квадратные скобки ([ ]). Допустимыми символами для образования имени являются буквы от A до Z (верхнего и нижнего регистра), цифры от 0 до 9, дефис и символ подчеркивания. Например, контекст для входящих вызовов может выглядеть так: [incoming] Все инструкции, размещаемые после описания контекста и до описания следующего контекста, являются частью данного контекста. В начале диалплана находятся два специальных контекста, [general] и [globals]. Раздел [general] содержит список общих настроек диалплана (о которых, вероятно, вам никогда не придется беспокоиться), а о контексте [globals] мы поговорим в другой статье, когда речь пойдет о «Глобальных переменных». Пока что достаточно знать, что эти два контекста являются специальными. Созданные вами контексты можно называть как угодно, только не используйте имена [general] и [globals]! При описании канала (а именно так выполняется подключение элементов к системе) одним из параметров этого описания является контекст. Иначе говоря, контекст – это точка диалплана, с которой будет начинаться обработка соединений, выполняемых через этот канал. Другое важное применение контекстов (возможно, самое важное) – обеспечение безопасности. Правильно применяя контексты, определенным абонентам можно предоставить доступ к функциям (таким, как междугородная связь), которые недоступны для других. Если диалплан разработан неаккуратно, пользователи из-за ваших же косяков могут получить возможность мошенничать в вашей системе. Контекст default Наиболее распространённой ошибкой администраторов Asterisk является неправильное использование контекста default. Контекст default следует использовать только в одном случае – если надо разрешить анонимные (гостевые) звонки, например, на адрес домена компании ([SIP domain dialing]). Однако, в большинстве случаев в контексте default администраторы описывают своих пользователей, планы набора и другие правила обработки вызова. Эта практика чревата тем, что злоумышленник сможет использовать такой сервер, бесплатно и безнаказанно совершая МГ/МН звонки, осуществляя DoS атаки и хулиганские выходки по отношению к внутренним пользователям. При разрешении гостевого звонка следует принять меры предосторожности в отношении перечисленных вопросов. Каким должен быть контект default по умолчанию? Очень простым:

exten = > _X.,1,Hangup

При такой настройке все попытки звонков, не прошедшие нормальную авторизацию, будут моментально завершаться. Контексты каналов Каждый тип канала имеет как контексты по-умолчанию, так и явно указанные для разных групп линий или пользователей. Следует помнить простое правило: если контекст в настройке линий или пира не указан, звонок попадет в тот контект, который указан в опции context секции general. Хорошей практикой является использования шаблонов, например:

[user]  (!)
type=friend
host=dynamic
context=users
nat=yes
qualify=yes
callgroup=1
pickupgroup=1
dtmfmode=rfc2833

[709]  (user)
secret=as09TYInbd873K
mailbox=709
callerid=  «User» <709>

[710]  (user)
secret=udFls34Dssd2
mailbox=710
callerid=  «User» <710>

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

[default]
exten = > _7XX,1,Dial  (SIP/${EXTEN}) //внутренние звонки
exten = > _9XXX.,1,Dial  (SIP/g1/${EXTEN:1}) //внешние
// входящие по линии FXO
exten = > s,1,Answer
exten = > s,n,Background  (hello-please-enter-number-you-wish-to-call)
exten = > s,n,WaitExten  (5)
exten = > s,n,Queue  (support|t)

В приведённом примере по причине использования одного контекста звонящий по FXO линиям из города могут донабрать не только локального пользователя, но также использовать другие свободные линии в своих целях, например, для звонков в другой регион. Все что для этого надо сделать – набрать 9-ку и номер назначения. Правильным будет следующих план набора:

[users]
include = > local-users
include = > numberplan

[local-users] //внутренние
exten = > _7XX,1,Dial  (SIP/${EXTEN})

[numberplan] //внешние
exten = > _9XXX.,1,Dial  (Zap/g1/${EXTEN:1})

[fxo-in] //входящие FXO
include = > local-users
exten = > s,1,Answer
exten = > s,n,Background  (hello-please-enter-number-you-wish-to-call)
exten = > s,n,WaitExten  (5)
exten = > s,n,Queue  (support|t)

Все SIP пользователи должны иметь контекст users, в котором при помощи директивы include включаются правила внутрениих и внешних звонков. В настройках линий (dahdi.conf) следует указать контекст fxo-in, в котром включается контекст local-users. Таким образом, из IVR компании можно будет связаться только с внутренними пользователями, что чаще всего и требуется.

Права пользователей

Запуск Asterisk из-под не — root пользователя. По умолчанию Asterisk запускается из-под root, что может быть небезопасно. Для изменения пользователя раскомментируйте строки в файле /etc/init.d/asterisk.

AST_USER=  «asterisk»
AST_GROUP=  «asterisk»

Создайте группу и пользователя asterisk.

/usr/sbin/groupadd asterisk 
/usr/sbin/useradd -d /var/lib/asterisk -g asterisk asterisk 

Измените права на использование следующих файлов:

chown --recursive asterisk:asterisk /var/lib/asterisk
chown --recursive asterisk:asterisk /var/log/asterisk
chown --recursive asterisk:asterisk /var/run/asterisk
chown --recursive asterisk:asterisk /var/spool/asterisk
chown --recursive asterisk:asterisk /usr/lib/asterisk
## Если Вы мспользуете Zaptel
chown --recursive asterisk:asterisk /dev/zap
## Если Вы используете DAHDI
chown --recursive asterisk:asterisk /dev/dahdi
#----------------------------------------------------
chmod --recursive u=rwX,g=rX,o= /var/lib/asterisk
chmod --recursive u=rwX,g=rX,o= /var/log/asterisk
chmod --recursive u=rwX,g=rX,o= /var/run/asterisk
chmod --recursive u=rwX,g=rX,o= /var/spool/asterisk
chmod --recursive u=rwX,g=rX,o= /usr/lib/asterisk
## Если Вы мспользуете Zaptel
chmod --recursive u=rwX,g=rX,o= /dev/zap
## Если Вы используете DAHDI
chmod --recursive u=rwX,g=rX,o= /dev/dahdi
#----------------------------------------------------
chown --recursive root:asterisk /etc/asterisk
chmod --recursive u=rwX,g=rX,o= /etc/asterisk 
/etc/init.d/asterisk restart

Ссылка на оригинал

acl.conf.txt · Последние изменения: 2016/07/06 13:38 — kov