По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
В сегодняшней статье расскажем о первичной защите Вашего Asterisk’a - Fail2ban. На самом деле Fail2ban - это стандартный функционал любой операционной системы на базе Linux, который сканирует лог-файлы и блокирует подозрительные IP –адреса.
На самом деле Fail2ban - это стандартный функционал любой операционной системы на базе Linux, который сканирует лог-файлы и блокирует подозрительные IP –адреса.
Fail2ban - это система предотвращения вторжений (Intrusion Prevention System), которая защищает сервер от атак типа Brute-force (Полный перебор). Написанный на языке программирования Python, Fail2ban может работать поверх систем POSIX, которые оперируют локально установленным брандмауэром (Firewall) или системой контроля пакетов, таких как TCP Wrapper или IPTABLES
Стоит заметить, что Fail2ban является лишь системой предотвращения вторжений, но не в коем случае не системой обнаружения вторжений или анти-хакерским инструментом
Когда речь идёт о работе Fail2ban с Asterisk, необходимо рассказать о роли IPTABLES в данном взаимодействии.
IPTABLES - это административный инструмент оболочки Linux, который предназначается для управления фильтрацией IP адресов и NAT.
IPTABLES используется проверки таблиц правил фильтрации пакетов IP в ядре Linux . В IPTABLES могут быть определены несколько различных таблиц. Каждая таблица содержит ряд встроенных цепочек (chains) и может также содержать цепочки, определяемые пользователем.
Каждая цепь представляет собой список правил, которым могут совпадать пакеты. Каждое правило определяет, что делать с пакетом, который имеет соответствие правилам.
Для проверки IPTABLES, необходимо ввести следующую команду с правами рута:
# iptables –L
Эта команда отобразит список цепочек (chains), которые называются INPUT, FORWARD и OUTPUT, в самом низу ещё есть кастомные цепи, созданные пользователем.
Дефолтные IPTABLES выглядят примерно следующим образом:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
По умолчанию , IPTABLES разрешают весь трафик. Когда IPTABLES работает в паре с Fail2ban, то трафик не будет блокироваться, пока Fail2ban не создаст запрещающих правил. Fail2ban , по умолчанию, вставляет правила в верхней части цепи, поэтому они имеют приоритет над правилами, настроенными в IPTABLES пользователем. Это хорошо, потому что можно сначала разрешить весь SIP трафик, а затем Fail2ban будет блокировать отдельных хостов, которые совершили попытку нападения, до тех пор, пока они не будут разрешены этим правилом снова.
Стандартная настройка Fail2ban приведена ниже.
Данные изменения, вносятся в файл /etc/fail2ban/jail.conf
[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@merionet.ru]
logpath = /var/log/asterisk/security
maxretry = 5
bantime = 259200
А теперь расшифруем, что же означает данная запись. Это фильтр, который на 3 дня банит любой IP-адрес, который 5 раз пытался неудачно получить доступ к Asterisk, а потом отправляет e-mail, уведомляющий о данном факте.
Проксирование HTTP и FTP запросов от клиента осуществляется proxy-сервером по средствам сохранения копии (кэширования) запрашиваемых клиентом данных из Интернета на системе, которая расположена ближе к получателю и последующей передачи кэшированных данных получателю с более низкой задержкой. Это может быть страничка сайта, которая расположена на определённом URL'e, например - http://shareit.merionet.ru или же какой-нибудь файл, который лежит на FTP сервере.
Введение
Роутеры MikroTik способны выполнять следующие функции в качестве web-proxy сервера:
Стандартное проксирование HTTP. Когда пользователь сам указывает кто является для него proxy-сервером и настраивает браузер соответствующим образом;
Прозрачное проксирование. Когда пользователь не знает, что его запросы перенаправляются через proxy-сервер;
Настройка списка доступа по адресу источника, назначения, URL и методу передачи запросов (GET, POST др.);
Список кэшируемых объектов. Определяет какие копии каких ресурсов сохранять, а какие нет;
Прямой список доступа. Определяет какие ресурсы доступны без проксирования и для каких нужен proxy-сервер;
Логирование событий и операций proxy-сервера
Поддержка родительских proxy-серверов. В этом случае указывается дополнительный сервер и запрос направляется к нему, если первый сервер не имеет доступа к запрашиваемому объекту.
Proxy-сервер располагается между клиентом и конечным сервером с ресурсом, к которому клиент хочет получить доступ.
Web-proxy сервер случает запросы от клиентов и сохраняет ответы у себя в памяти. Если он получит запрос, содержащий тот же URL, то он может просто отправить имеющуюся копию. Если же копии нет, то он запрашивает её у конечного сервера. То же самое с файлами, если есть сохранённая копия файла, он отправит её клиенту, если нет - скачает с FTP сервера.
Есть несколько целей применения proxy-сервера:
Ускорение получения доступа к ресурсам, которые физически находятся дальше от получателя (большая задержка при передаче пакетов);
Использование в качестве HTTP Firewall'а. Блокирование доступа к нежелательным ресурсам;
Фильтрование web-контента по заданным параметрам, например IP-адрес источника, IP-адрес назначения и порт, URL ресурса, метод HTTP запросов;
Сканирование передаваемого из внутренней сети контента, например, для предотвращения утечек. При этом совсем не обязательно использовать функции кэширования на web-proxy.
Настройка стандартного web-proxy
В роутерах MikroTik, настрока web-proxy через терминал происходит через команду:
/ip proxy set
Ниже приведен список параметров доступных для настройки:
enabled - активирует функционал web-proxy. (yes - включен, no - выключен);
src-address - устанавливает IP-адрес proxy-сервера;
port - задаёт порт, на котором будет работать proxy-сервер;
parent-proxy - задаёт адрес родительского proxy-сервера;
cache-drive - указывает куда складывать кэшируеемых данные.
cache-administrator - email администратора, который будет показан на странице с ошибкой;
max-cache-size - указывает максимальный объём для хранения кэшируемых данных на диске в килобайтах (в случае использования внешнего диска);
max-ram-cache-size - указывает максимальный объём для хранения кэшируемых данных в RAM роутера в килобайтах;
cache-only-on-disk - указывает создавать ли внутреннюю базу данных, описывающую кэшируемый на диске контент. Может сократить потребление памяти, но повлиять на скорость;
maximal-client-connections - максимальное число подключений к proxy-серверу от клиентов. Подключения сверх указанного здесь количества будут отклоняться;
maximal-server-connections - максимальное число подключений к серверам. Подключения от клиентов к другим серверам сверх указанного здесь количества будут находиться в режиме ожидания, пока некоторые текущие подключения не завершатся ;
max-fresh-time - максимальный срок хранения кэшируемого контента;
Настроим стандартный proxy-сервер на адресе 192.168.11.1, для этого через терминал вводим команду:
ip proxy> set enabled=yes port=8080 src-address=192.168.11.1
Для настройки через Winbox открываем IP → Web Proxy ставим галочку напротив Enabled, указываем IP адрес и порт, на котором будет работать наш proxy-сервер, кстати, тут же настраивается родительский прокси в разделе Parent proxy.
При настройке обычного функционала web-proxy, должна быть также выполнена настройка на стороне клиента (браузера) и указан сервер, который выступает в качестве proxy. Для настройки в Google Chrome нужно открыть Settings → Advanced → Confidentiality and Security, крутим в самый низ до пункта System и выбираем Proxy settings. В появившемся окне выбираем LAN settings → ставим галку напротив Use a proxy server for your LAN и заходим в Advanced. В появившемся окне вбиваем параметры нашего proxy-сервера в строку HTTP (в нашем случае 192.168.11.1 и порт 8080) и применяем настройки:
Настройка прозрачного проксирования
Прозрачное проксирование не требует дополнительных настроек на стороне клиентов. Более того, пользователи даже не будут подозревать, что их запросы направляются через proxy-сервер.
Чтобы настроить прозрачное проксирование, необходимо добавить NAT’ирующее правило в Firewall, которое будет определять какие HTTP запросы будут проходить через локальный proxy. Ниже показан пример того, как можно проксировать все запросы пользователей из сети 192.168.11.0/24
ip firewall nat> add chain=dstnat protocol=tcp src-address=192.168.11.0/24
dst-port=80 action=redirect to-ports=8080
Списки доступа или использование Firewall’а на основе proxy
Пожалуй, этот функционал понравится вам больше всего :)
Список доступа работает здесь также, как и в правилах Firewall – сначала читаются самые приоритетные правила, затем, вниз по списку - менее приоритетные. Критерием для применения правил может быть совпадение таких параметров как: адрес источника, порт источника, адрес назначения, порт назначения, запрашиваемый URL или HTTP метод (POST, GET и др.)
В случае совпадения критериев, заданных в правиле и параметров подключения, такое подключение может быть разрешено (allow) или запрещено (deny). Если параметры подключения не подпадают ни под один из критериев правил, то оно по умолчанию разрешается.
Понятно, что использование правил должно применяться вместе с настройками прозрачного проксирования, которые мы рассматривали выше. Итак, допустим мы настроили прозрачное проксирование для сети 192.168.11.0/24 и пустили все HTTP запросы из этой подсети через наш прокси сервер.
ip firewall nat> add chain=dstnat protocol=tcp src-address=192.168.11.0/24
dst-port=80 action=redirect to-ports=8080
Что если мы теперь хотим запретить пользователям в данной подсети сидеть во всеми любимом вконтактике? Очень просто – настроим список доступа. Для этого:
/ip proxy access add src-address=192.168.1.0/24 dst-host=www.vk.com action=deny
Мы также можем заблокировать web-сайты, которые содержат какое-либо ключевое слово или часть слова в названии, например:
/ip proxy access add src-address=192.168.1.0/24 dst-host=:er action=deny
И гуд-бай - Tinder.com, Twitter.com, Viber.com, ну вы поняли :)
Мы даже можем запретить скачивание определённых файлов:
/ip proxy access add src-address=192.168.1.0/24
add path=*.pdf action=deny
add path=*.png action=deny
add path=*.docx action=deny
add path=*.mp3 action=deny
add path=*.zip action=deny
add path=*.rar action=deny
Стоит отдельно рассказать про маски (wildcard), которые позволяют настроить более тонкое соответствие проверяемых URL’лов и других названий.
В dst-host и dst-path можно указывать следующие маски - * - любое количество символов. Например - *ings.docx будет искать .docx файлы, названия которых оканчиваются на ins или же просто файл ings.docx, то есть сюда подходят такие названия файлов – paintings.docx, wings.docx – перед ings может стоять любое количество символов.
Если поставить маску ?, то поиск будет осуществляться по количеству символов. Например маска ??ings.docx найдёт файл wnings.docx, но не найдёт paintings.docx, потому что маска задана на 2 символа.
Также поддерживаются регулярные выражения, но если вы собираетесь их использовать, то перед этим обязательно нужно поставить двоеточие :.
В сегодняшней статье расскажем про настройку IVR (Interactive Voice Response) стандартными способами Asterisk, без использования графической оболочки FreePBX.
Аббревиатура IVR описывает систему, в которой вызывающий абонент, по средствам кнопок на телефоне осуществляет навигацию в голосовом меню и соединяется с нужным отделом, сотрудником и службой. В масштабах крупного "Enterprise", конечно, IVR описывает гораздо более сложные системы, где используются различные технологии интеграции. Но мы рассмотрим простейший вариант.
Про настройку IVR через графический интерфейс FreePBX, читайте в нашей статье.
Немного теории
Перед тем как создать простейший пример IVR, необходимо разобраться во внутренних приложениях, которыми оперирует Asterisk.
Приложение Background() проигрывает звуковую запись и в то же время слушает входящие сигналы DTMF (Dual-Tone Multi-Frequency). Система, тем временем, пытается найти совпадения введённых цифр DTMF и внутреннего номера (extension) в текущем контексте дайл-плана, если совпадение есть, то Asterisk отправит вызов на найденный номер.
Приложение WaitExten() необходимо, если вы хотите заставить Asterisk подождать какое-то время после того, как он воспроизведет звуковую запись. Параметры, задающиеся в WaitExten() - это количество секунд, которые система будет ждать, прежде чем разрешит абоненту совершить набор внутреннего номера, например – WaitExten(10).
Приложение Goto() позволяет переходить с одной позиции в дайл-плане на другую – это может быть контекст (context), внутренний номер (extension) и приоритет (priority).
Конфигурация
Теперь мы можем создать простейший пример голосового меню, используя вышеупомянутые приложения. Как правило, IVR создаётся в новом контексте, таким образом оставаясь независимым от остальных настроенных extension’ов в дайл-плане.
Основная запись, содержащая сценарий голосового меню будет следующей: "Здравствуйте вы позвонили в компанию %companyname%. Для того, чтобы соединиться с отделом поддержки нажмите 1. Для того, чтобы соединиться с отделом продаж нажмите 2. Если Вы знаете внутренний номер абонента, наберите его в тональном режиме".
Настройку IVR проводим в файле extensions.conf и добавляем туда следующую запись:
[ivr-example]
exten => s,1,Answer(500)
same => n(loop),Background(Main_IVR_record)
exten => 1,1,Goto(3445,s,1)
#Переход в контекст отдела поддержки по нажатию кнопки 1. 3444 – Ринг группа отдела поддержки.
exten => 2,1,Goto(3444,s,1)
#Переход в контекст отдела продаж нажатию кнопки 2. 3445 – Ринг группа отдела продаж.
exten => _XXX,1,Dial(SIP/${EXTEN}@Asterisk)
#Набор внутреннего номера сотрудника
Теперь, для инициализации IVR, остается только вызвать контекст [ivr-example].