По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Сразу перейду к делу. Пользователями FreePBX 14 замечен крайне серьёзный баг в утилите fail2ban. Версия fail2ban, на которой замечен баг - 0.8.14-11 и ниже. Проверить можно командой rpm -qa | grep fail2ban: fail2ban-fpbx-0.8.14-11.sng7.noarch Данный баг заключается в том, что после установки чистой FreePBX Distro 14 сервис fail2ban хоть и в активном статусе, однако никаких “тюрем" (jails) он не подгружает и их количество = 0. Проверить можно командой fail2ban-client status, если Ваш сервер подвержен багу, то Вы увидите: [root@merionlab]# fail2ban-client status Status |- Number of jail: 0 `- Jail list: Это значит, что например, максимальное число попыток ввода пароля для доступа к вэб-интерфейсу FreePBX или попыток регистрации SIP-клиента с неверным паролем - не ограничено, а IP-адрес, с которого приходят эти запросы не блокируется. Естественно, что модуль Intrusion Detection во FreePBX также не будет работать. "Тюрьмы" или jails - это такие секции в файле /etc/fail2ban/jail.local, в которых указано, логи какого сервиса необходимо мониторить, чтобы выявлять и блокировать несанкционированные попытки доступа к этому сервису, а также такие параметры как время блокировки, максимальное число попыток и действие, которое необходимо предпринять в случае выявления. Например, вот секция [asterisk-iptables]: [asterisk-iptables] enabled = true filter = asterisk-security action = iptables-allports[name=SIP, protocol=all] sendmail[name=SIP, dest=none@yourpbx.com, sender=none@yourpbx.com] logpath = /var/log/asterisk/fail2ban maxretry = 5 bantime = 1800 В ней указано, что нужно мониторить лог /var/log/asterisk/fail2ban, искать в нём 5 попыток неуспешной регистрации (например SIP телефон пытается зарегистрироваться с неверным паролем) и банить IP-адрес на 30 минут. Ну и ещё можно отправку по email настроить о данном факте. По умолчанию, в файле /etc/fail2ban/jail.local должно быть 7 таких секций - [apache-tcpwrapper], [recidive], [ssh-iptables], [apache-badbots], [pbx-gui], [asterisk-iptables], [vsftpd-iptables]. В каждой указан путь к логам соответствующего сервиса. Решение Итак, есть два решения данной проблемы. Первое – остановить сервис fail2ban командой systemctl stop fail2ban и внести следующие изменения в файл /usr/lib/systemd/system/fail2ban.service: [Unit] Description=Fail2Ban Service After=httpd.service [Service] Type=forking ExecStartPre=/bin/mkdir -p /var/run/fail2ban ExecStart=/usr/bin/fail2ban-client -x start ExecStop=/usr/bin/fail2ban-client stop ExecReload=/usr/bin/fail2ban-client reload PIDFile=/var/run/fail2ban/fail2ban.pid Restart=always [Install] WantedBy=default.target Затем запустить сервсис fail2ban командой systemctl start fail2ban и сделать так, чтобы сервис включался после ребута автоматически systemctl enable fail2ban. И вторая – обновить сам fail2ban. Для этого вводим следующие команды: yum install sangoma-devel yum update Проверяем версию fail2ban после обновления - rpm -qa | grep fail2ban: fail2ban-fpbx-0.8.14-75.sng7.noarch После данных действий, команда fail2ban-client status должна отобразить верное количество jails и fail2ban с Intrusion Detection должны вновь встать на стражу Вашего сервера: [root@merionlab]# fail2ban-client status Status |- Number of jail: 7 `- Jail list: apache-tcpwrapper, recidive, ssh-iptables, apache-badbots, pbx-gui, asterisk-iptables, vsftpd-iptables Чтобы случайно не заблокировать свой адрес и игнорировать любые неуспешные попытки доступа к серверу с адресов, находящихся в локальной сети или других доверенных адресов, внесите их или всю доверенную подсеть в секцию [DEFAULT] в поле ignoreip в том же файле /etc/fail2ban/jail.local
img
На базе нашего опыта реализации проектов, хайринга, консультаций с действующими техническими тренерами по Cisco в сетевых академиях мы сформировали уникальную программу курса, которая на наш взгляд, позволит человека с нуля (без начальных знания) освоить сетевые технологии (всею необходимую теорию, коммутацию, маршрутизацию, настройка и траблшутинг), а также курс прекрасно подойдет для DevOps специалистов, которые хотят углубить свои знания по сетям. В курсе мы используем примеры конфигураций, лабораторные работы и тестирование в разрезе вендора Cisco - именно с Cisco конфигами и сетапами связан курс. Именно поэтому прохождение курса даст вам нужную базу для сдачи CCNA и частично подготовит к CCNP. Давайте разберемся в деталях. Для кого этот курс? Новички: если вы начинающий специалист и хотите прокачать свои скиллы и знания по сетевым технологиям и DevOps, то мы обучим вас с нуля всем необходимым навыкам, а наши онлайн-тренажеры позволят вам отточить приобретенные знания на практике; Опытный инженер: данный курс пригодится вам, если вы уже работаете с корпоративными сетями и хотите расширить набор знаний, узнать куда движется тренд технологий, что нового появится в стеке, а также освежить в памяти теоретические знания и потренироваться на тренажерах; Full-stack специалистам: если вы DevOps инженер, инженер-телефонист, сотрудник оператора связи или хотите просто развить свой профессиональный кругозор, то этот курс позволит вам прокачать знания в корпоративных сетях и разговаривать на одном языке с опытными специалистам. Полная программа онлайн-курса Мы тщательно продумали программу курса шаг за шагом, где блок за блоком в указанном ниже порядке вы будете осваивать тот или иной блок, с тестированием и лабораторной работой. Введение в сетевые технологии Модель OSI Маршрутизатор. Коммутатор. Хаб. Что это и в чем разница? IP, LAN и WAN, TCP и UDP - deep dive в основы DNS, Ethernet, VLSM, ARP - что это? Как вашу сеть будут атаковать злоумышленники? NAT на пальцах и введение в IPv6 Сравнение проводных и беспроводных сетей и режимы передачи данных Что такое VPN, DHCP, MAC и QoS - важнейшее Что такое витая пара и как ее обжать? Иерархическая модель сети от Cisco и почему сегментация сетей так важна? ОС, CLI, структура команд и траблшутинг в Cisco IOS Про VLAN (Virtual Local Area Network) Настройка сетей VLAN Настройка маршрутизации между сетями VLAN с использованием конфигурации ROS (Router-on-a-Stick) TCP и UDP Протоколы TCP/IP 4 уровня: TCP и UDP Популярные приложения TCP/IP Установление и прекращение TCP соединения Что нужно знать: про TCP и UDP Принципы построения коммутируемых сетей Принципы коммутации и маршрутизации Работа с маршрутизатором Базовая конфигурация маршрутизатора Настройка статических маршрутов Настройка NAT на Cisco Port Forwarding: теория и настройка Cisco Протокол динамической маршрутизации EIGRP EIGRP (Enhanced Interior Gateway Routing Protocol) что это? Базовая настройка протокола EIGRP для IPv4 Полное руководство по EIGRP Протокол динамической маршрутизации OSPF OSPF что это? Настройка базового протокола OSPFv2 для одной области Поиск и устранение неполадок в работе OSPFv2 для одной области Настройка OSPFv2 для нескольких областей Протокол динамической маршрутизации BGP (Border Gateway Protocol) BGP (Border Gateway Protocol)- что это? Полное руководство по BGP Говорим про Route Redistribution Перераспределение маршрутов (Route redistribution) Про DHCP (Dynamic Host Configuration Protocol) Все, что вам нужно знать про DHCP Рассказываем про динамические адреса Настройка DHCP на оборудовании Cisco Пример настройки DHCPv6 Как настроить DHCPv6 форвардинг сообщений между DHCP - клиентом и DHCP - сервером на Cisco Настройка DHCP Snooping и Dynamic Arp Inspection на Cisco Пошаговая настройка DHCP Snooping и Dynamic Arp Inspection на Cisco Технология, которая защитит от подмены DHCP сервера Траблшутинг DHCP на оборудовании Cisco Настройка протокола DHCP с помощью команд Cisco IOS Листы контроля доступа (ACL) Основы IPv4 Access Control Lists Соответствие пакетов в IP ACL Wildcard в ACL: бинарные обратные маски Стандартные листы контроля доступа (ACL) Расширенные листы контроля доступа (Extended ACL) ACL check - анализ списков доступа сетевого оборудования Cisco Настройка стандартных именованных ACL-списков Настройка расширенных ACL-списков Протокол Spanning Tree (STP) Протокол Spanning Tree (STP) - что это? Агрегация по технологии EtherChannel Настройка EtherChannel на Cisco Настройка LACP и PAgP на Cisco Как с минимальным даунтаймом на продакшн оборудовании настроить EtherChannel Устранение неисправностей EtherChannel На примерах объясним, как происходит устранение неисправностей EtherChannel Настройка EtherChannel Поиск и устранение неполадок в работе EtherChannel WLAN (беспроводные сети) Топологии беспроводных сетей Анатомия защищенного соединения в беспроводных сетях KIP, CCMP и GCMP. Про безопасность Wi-Fi Рассказываем про безопасность Wi-Fi. Подробно про TKIP, CCMP, GCMP, WPA, WPA2 и WPA3 Настройка VPN (Site-To-Site IPSec, DMVPN Настройка Site-To-Site IPSec VPN на Cisco Настройка DMVPN на оборудовании Cisco Dynamic Multipoint VPN - гибкое и масштабируемое решение в области виртуальных частных сетей от компании Cisco Частный траблшутинг и устранение неисправностей Траблшутинг NAT/PAT на Cisco Устранение неисправностей DHCP на Cisco FHRP траблшутинг на Cisco Траблшутинг Network Management Protocols Сброс пароля на коммутаторах и маршрутизаторах Cisco Troubleshooting в Cisco IOS Проверка и отладка настроек NAT Пройти курс Как происходит обучение Поговорим как будет происходить ваше обучение в нашей онлайн образовательной системе. Изучаете тему В курсе - практические видеоуроки и материал для чтения: Выполняете задания В темпе, который подходит именно вам: Как в игре, но только будет еще и полезно. Если возникнут вопросы - поможем найти нужный материал Чат с участниками обучения и наш бот будут всегда на связи. Пройти курс Финальный тест и получение сертификата Добавляете сертификат в свое резюме ;)
img
Многим приложениям нужно обмениваться данными между клиентом и сервером. Долгое время эталонным форматом данных для обмена информацией между двумя объектами считался XML. Затем, в начале 2000-х, появился альтернативный формат JSON. В данной статье вы узнаете все о JSON. Мы рассмотрим, что это, и как им пользоваться, а также разберем ряд популярных заблуждений. Что такое JSON? JSON (JavaScript Object Notation, нотация объектов JavaScript) - это текстовый формат обмена данными. Он представлен наборами пар "ключ-значение", причем ключ - это всегда строка, а значение может задаваться одним из следующих типов: число; строка; логическое значение; массив; объект; нулевое значение null. Несколько важных правил: В формате данных JSON ключи прописываются в двойных кавычках. Ключ и значение разделяются двоеточием (:). Может быть несколько пар "ключ-значение". Каждая пара отделяется запятой (,). В данных JSON недопустимы комментарии (// или /* */). (Но при желании это ограничение можно обойти) Ниже приведен пример простых данных в JSON: { "name": "Alex C", "age": 2, "city": "Houston" } Допустимые данные в JSON возможны в 2 разных форматах: Набор пар «ключ-значение» в фигурных скобках {...}. Это показано в примере выше. Упорядоченные списки пар «ключ-значение», разделенных запятой (,) и заключенных в квадратные скобки [...]. См. пример ниже: [ { "name": "Alex C", "age": 2, "city": "Houston" }, { "name": "John G", "age": 40, "city": "Washington" }, { "name": "Bala T", "age": 22, "city": "Bangalore" } ] Предположим, вы уже писали что-то на JavaScript. Тогда у вы можете ошибочно предположить, что формат JSON и объекты JavaScript (и массивы объектов) очень похожи. Но это не так. Чуть позже мы подробно об этом поговорим. Структура JSON разработана на основе синтаксиса объектов JavaScript, и это единственное, что объединяет JSON и объекты JavaScript. Формат JSON не зависит от языка программирования. Мы можем использовать JSON в Python, Java, PHP и многих других языках. Примеры формата данных JSON Сохранять данные JSON можно в файле с расширением .json. Давайте создадим файл employee.json с атрибутами сотрудника. Они представлены в виде ключей и значений. { "name": "Aleix Melon", "id": "E00245", "role": ["Dev", "DBA"], "age": 23, "doj": "11-12-2019", "married": false, "address": { "street": "32, Laham St.", "city": "Innsbruck", "country": "Austria" }, "referred-by": "E0012" } В примере выше присутствуют следующие атрибуты сотрудника: name – имя сотрудника. Значение в строковом формате (String). Оно указано в двойных кавычках. id – уникальный идентификатор сотрудника. Опять же, в строковом формате. role – роли, которые сотрудник выполняет в организации. Таких ролей может быть несколько, поэтому лучше перечислять эти данные в формате массива (Array). age – текущий возраст сотрудника. Это числовое значение (Number). doj – дата найма сотрудника. Поскольку это дата, ее добавляют в двойных кавычках и обрабатывают как строку. married – замужем/женат ли сотрудник? Ответом может быть да/нет (то есть true или false), так что это логический формат (Boolean). address – адрес сотрудника. Может состоять из нескольких частей: улица, город, страна, индекс и т.д. Такое поле лучше представлять в виде объекта (Object с парами «ключ-значение»). referred-by – идентификатор сотрудника, который порекомендовал этого человека на должность в организацию. Если сотрудник пришел по рекомендации, то атрибут имеет значение. В остальных случаях поле остается пустым, т.е. null. Теперь давайте создадим набор данных по сотрудникам в формате JSON. Если мы хотим добавить несколько записей о разных сотрудниках, то необходимо прописать их в квадратных скобках [...]. [ { "name": "Aleix Melon", "id": "E00245", "role": ["Dev", "DBA"], "age": 23, "doj": "11-12-2019", "married": false, "address": { "street": "32, Laham St.", "city": "Innsbruck", "country": "Austria" }, "referred-by": "E0012" }, { "name": "Bob Washington", "id": "E01245", "role": ["HR"], "age": 43, "doj": "10-06-2010", "married": true, "address": { "street": "45, Abraham Lane.", "city": "Washington", "country": "USA" }, "referred-by": null } ] Обратите внимание на значение атрибута referred-by для сотрудника Боба Вашингтона (Bob Washington). Оно пустое. То есть никто из сотрудников не давал ему рекомендаций. Как использовать данные JSON в качестве значения строки Мы узнали, как форматировать данные внутри файла JSON. Еще можно использовать данные JSON в качестве строковых значений и присваивать их переменной. Поскольку JSON считается текстовым форматом, в большинстве языков программирования его можно обрабатывать как строку. Давайте рассмотрим пример, как это делается JavaScript. Вы можете добавить данные JSON в одну строку. Перечисление делается через одинарные кавычки '...'. const user = '{"name": "Alex C", "age": 2, "city": "Houston"}'; Если вы хотите сохранить форматирование, то данные JSON лучше создавать с помощью шаблонных литералов (template literals). const user = `{ "name": "Alex C", "age": 2, "city": "Houston" }`; Кроме того, это очень удобное решение, если нужно создать данные JSON с динамическими значениями. const age = 2; const user = `{ "name": "Alex C", "age": ${age}, "city": "Houston" }`; console.log(user); // Output { "name": "Alex C", "age": 2, "city": "Houston" } Объекты JavaScript и JSON – это НЕ одно и то же Формат данных JSON создавался на базе объектной структуры JavaScript. Но все сходства на этом заканчиваются. Объекты в JavaScript: у объектов JavaScript могут быть методы, а у JSON – нет; ключи можно добавлять без кавычек; разрешены комментарии; отдельные сущности Как преобразовать JSON в объект JavaScript и наоборот В JavaScript есть 2 встроенных метода по преобразованию данных JSON в объекты JavaScript и наоборот. Как преобразовать данные JSON в объект JavaScript Для преобразования данных JSON в объект JavaScript используется метод JSON.parse(). Он проводит синтаксический разбор (парсинг) допустимой строки JSON в объект JavaScript. const userJSONData = `{ "name": "Alex C", "age": 2, "city": "Houston" }`; const userObj = JSON.parse(userJSONData); console.log(userObj); Вывод: Как преобразовать объект JavaScript в данные JSON Для преобразования объекта JavaScript в данные JSON используется метод JSON.stringify(). const userObj = { name: 'Alex C', age: 2, city: 'Houston' } const userJSONData = JSON.stringify(userObj); console.log(userJSONData); Вывод: Должно быть, вы обратили внимание на слово JSON, которое используется для вызова методов parse() и stringify(). Это встроенный объект JavaScript, который, хоть и называется JSON (хотя с тем же успехом он мог бы называться JSONUtil), но не имеет никакого отношения к формату JSON. Так что, пожалуйста, помните об этом. Как обрабатывать ошибки "Unexpected token u in JSON at position 1" и другие? При обработке JSON могут возникать ошибки. Это нормально. Например, при разборе данных JSON в объект JavaScript вдруг появляется следующее сообщение: Если возникает такая ошибка, обязательно проверьте корректность ваших данных в JSON. Чаще всего причина синтаксического сбоя кроется в небольшой ошибке, которую вы случайно сделали в исходных данных JSON. Проверить правильность данных и форматов JSON можно с помощью JSON Linter.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59