По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Привет! В статье расскажем про сетевые порты, которые необходимо открыть на вашем фаерволе для корректного пользовательского доступа и работы оконечных устройств. В статье указаны дефолтные и порты, и, с точки зрения безопасности, мы рекомендуем их сменить на нестандартные. Доступ администратора системы Порт Транспорт (UDP/TCP) Назначение Смена порта Безопасность Дополнительно 22 TCP Подключение к SSH консоли Может быть изменен только через Linux CLI Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие) Порт используется для SSH подключения к АТС извне 80 FreePBX2001 PBXact TCP Графический интерфейс по HTTP (не HTTPS) Можно поменять через графический интерфейс по пути System Admin > Port Management Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие) Используется для пользовательского доступа к WEB - интерфейсу АТС 443 TCP Графический интерфейс по HTTPS Можно поменять через графический интерфейс по пути System Admin > Port Management Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие) Используется для пользовательского доступа к WEB - интерфейсу АТС. Использует SSL шифрование Доступ для SIP/IAX устройств Порт Транспорт (UDP/TCP) Назначение Смена порта Безопасность Дополнительно 5060 UDP Порт получения телефонной сигнализации модулем chan_PJSIP Есть возможность изменить порт в рамках графического интерфейса АТС в модуле SIP Settings Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие) Стандартный порт для сигнализации модуля chan_PJSIP 5061 Порт получения защищенной телефонной сигнализации модулем chan_PJSIP Есть возможность изменить порт в рамках графического интерфейса АТС в модуле SIP Settings Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие) Защищенный порт для сигнализации модуля chan_PJSIP 5160 UDP Порт получения телефонной сигнализации модулем chan_SIP Есть возможность изменить порт в рамках графического интерфейса АТС в модуле SIP Settings Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие) Стандартный порт для сигнализации модуля chan_SIP 5161 Порт получения защищенной телефонной сигнализации модулем chan_SIP Есть возможность изменить порт в рамках графического интерфейса АТС в модуле SIP Settings Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие) Защищенный порт для сигнализации модуля chan_SIP 10000-20000 UDP Получение RTP потока в рамках SIP сессии Есть возможность изменить порт в рамках графического интерфейса АТС в модуле SIP Settings Можно открывать данные диапазон и, зачастую, это является требование SIP - провайдеров (RTP трафик зачастую приходит с различных IP - адресов)ё Порты, необходимые для голосовой составляющей телефонного звонка 4569 UDP Работа протокола IAX Есть возможность изменить порт в рамках графического интерфейса АТС в модуле SIP Settings Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие) Используется для транкового объединения серверов и оконечных устройств. Доступ к UCP (User Control Panel) Порт Транспорт (UDP/TCP) Назначение Смена порта Безопасность Дополнительно 81 TCP Графический интерфейс UCP по HTTP (не HTTPS) Порт можно поменять через FreePBX в System Admin > Port Management Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие). Для удаленных пользователей используйте HTTPS Порт доступа к пользовательской панели UCP 4443 TCP Графический интерфейс UCP по HTTPS Порт можно поменять через FreePBX в System Admin > Port Management Можно оставлять открытым в сеть, так как трафик шифрован, а так же происходит аутентификация пользователей Порт доступа к пользовательской панели UCP с помощью SSL шифрования 8088 TCP Порт для WebRTC клиентов Порт можно поменять через FreePBX в Advanced Settings > Asterisk Builtin mini-HTTP > HTTP Bind Port Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие). Для удаленных пользователей используйте HTTPS Необходим для реализации WebRTC звонков через UCP (звонок через броузер) 8089 TCP Порт для шифрования WebRTC клиентов Порт можно поменять через FreePBX в Advanced Settings > Asterisk Builtin mini-HTTP > HTTPS Bind Port Можно оставлять открытым в сеть, так как трафик шифрован, а так же происходит аутентификация пользователей Необходим для реализации WebRTC звонков с шифрованием через UCP (звонок через броузер) 8001 TCP Node Server - получение информации в реальном времени в рамках UCP Порт можно поменять через FreePBX в Advanced Settings > UCP NodeJS Server > NodeJS Bind Port Не рекомендуется оставлять порт открытым в публичную сеть (не вызывающую доверие) Процесс отвечает за real - time активности: всплывающая информация, чаты и прочее 8003 TCP Node Server (защищенные подключения) Порт можно поменять через FreePBX в Advanced Settings > UCP NodeJS Server > NodeJS HTTPS Bind Port Можно оставлять открытым в сеть, так как трафик шифрован, а так же происходит аутентификация пользователей Процесс отвечает за real - time активности: всплывающая информация, чаты и прочее Остальные порты зависят от ваших конкретных требований: наличие RMS компонента мониторинга, Zulu, функционала провижнинга (EPM) и прочие.
img
Процесс анализа программного кода должен быть максимально автоматизирован. Когда вы создаете запрос на включение изменений, как минимум, вам нужно запустить модульные тесты и статический анализ программного кода в функциональной ветке. Средства автоматизации могут многое рассказать о качестве кода: метрики, покрытие кода модульными тестами, обнаружение дублированных строк и т.д. Однако есть как минимум 50 вещей, которые нельзя проверить автоматически. Они нуждаются во внимательном взгляде опытного проверяющего (это дает нам хоть какую-то надежду на то, что роботы не заменят разработчиков в ближайшем будущем). Требования Программный код реализует все функциональные требования, которые необходимы заказчику? Программный код удовлетворяет всем нефункциональным требованиям, таким как производительность и безопасность? Если нефункциональные требования не были упомянуты заказчиком, то этот вопрос необходимо уточнить у проектировщика или у самого заказчика.  Условия сопровождения Помещены ли все интерфейсы, классы и т.д. на соответствующий прикладной уровень в соответствии с архитектурой  Onion/Clean ? Не изобретаете ли вы колесо, когда пишете программный код? Можно ли его заменить чем-то, что уже существует и что предоставляет какая-либо сторонняя библиотека?  Есть ли уже реализованная логика или какие-то ее фрагменты в кодовой базе? Правильно ли была выбрана область жизненного цикла для интерфейса и реализации в контейнере внедрения зависимостей? Являются ли реализованные функции детерминированными (то есть всегда ли они выдают один и тот же результат для одних и тех же входных данных)? Все ли зависимости явно внедряются через конструктор типов? Есть ли сильная связанность между классами, которая может затруднить повторное использование кода? Используются ли  объекты-значения вместо элементарных типов данных для того, чтобы избежать проблемы одержимости элементарными типами? Соответствуют ли реализованные компоненты, такие как функции, классы, интерфейсы и модули,  принципу единственной обязанностей ? Расширяются ли существующие функциональные возможности при помощи декораторов, технологий аспектно-ориентированного программирования (принципа открытия-закрытия) или они модифицируются на месте? Правильно ли реализованы механизмы синхронизации потоков при доступе к объектам-одиночкам в веб-приложениях? Используются ли по возможности  неизменяемые типы данных вместо изменяемых для того, чтобы избежать побочных эффектов? Добавлена ли функция ведения журнала с верными  уровнями ведения протокола в основные места кода, которые требуют отслеживания? Производительность Правильно ли были выбраны  структуры данных ? Например, используется ли структура Hashtable вместо массива, когда нужно часто искать значения, для того, чтобы избежать линейного поиска? Распараллелены ли длительные операции между всеми доступными ядрами для того, чтобы использовать ресурсы компьютера максимально эффективного? Выполняет ли программный код большое количестве  операций по выделению памяти для объектов в куче, оказывая тем самым дополнительную нагрузку на программу сборки мусора? Кэшируются ли данные, которые были считаны из базы данных, локально или в удаленном кэше? Сколько раз текущий код обращается к базе данных? Возможно стоит получить все данные за одно или несколько обращений? Выполняет ли код все обращения к базе данных, ввод-вывод и другие блокирующие вызовы асинхронно? Использует ли код  пул потоков по максимуму вместо того, чтобы создавать новые потоки? Правильно ли выбран баланс между  нормализацией и  денормализацией при создании дополнительных таблиц базы данных? Правильно ли добавляются или исправляются индексы, если запрос на включение изменений содержит новые SQL-запросы? Возникает ли  проблема с N+1 запросами при извлечении данных из базы данных при помощи фреймворка ORM? Установлен ли правильный уровень изоляции транзакций в хранимых процедурах? Возвращают ли SQL-запросы избыточные данные из базы данных, которые не требуются для кода приложения? Используется ли что-то вроде  SELECT * или что-то подобное? Модульное и интеграционное тестирование Полностью ли модульные тесты покрывают дополнительную логику? При появлении исправлений в логике, появляются ли изменения в соответствующем модульном тесте? Всегда ли все реализованные модульные или другие виды тестов ведут себя детерминировано? Например, приостанавливают ли они выполнение потока на какой-то определенный период времени перед утверждением (что по своей сути является ошибочным шаблоном)?  Все ли модульные тесты реализованы в соответствии с принципами  F.I.R.S.T. ? Есть ли какие-либо признаки проблем в модульном тестировании, такие как проблемы с  логикой проверки условий ,  рулеткой с утверждениями ,  дублированием утверждений и другие? Добавлен ли интеграционный тест, как минимум, для happy-path-сценария (сценария счастливого пути) реализованной функции? Все ли зависимости тестируемого объекта имитируются для того, чтобы модульный тест случайно не превратился в интеграционный и не выполнился быстрее положенного? Изолированы ли модульные и интеграционные тесты друг от друга? Конечные точки API Выбираются ли HTTP-команды, такие как  GET, POST, PUT, DELETE и другие, в соответствии с действием их конечной точки? Отвечает ли каждая конечная точка API за выполнение лишь одной бизнес-операции? Или все же нескольких? Возвращает ли конечная точка API правильный код состояния? Например, не возвращает ли она код 401 вместо 500 при несанкционированном запросе? Сжимаются ли объемные ответы перед их отправкой вызывающей стороне? Защищены ли конечные точки API политиками аутентификации и авторизации? Позволяет ли API, который возвращает большой список объектов, фильтровать его и разбивать на страницы? Является ли конечная точка API GET идемпотентной? Используются ли имена существительные вместо глаголов в именах конечных точек API? Критические изменения Имеются ли в конечной точке API такие критические изменения, как переименование API, удаление или переименование его параметров? Имеются ли критические изменения в полезных данных сообщения (в случае, если используется брокер сообщений), например, удаление или переименование его свойств? Повлияют ли такие изменения в схеме базы данных, как удаление столбцов или таблиц, на другие службы системы? Системная среда Насколько загружен ЦП и сколько оперативной памяти потребляет код при выполнении запроса на включение изменений? Будет ли в средах, в которых будет развернут код (среда тестирования, среда приёмочного пользовательского тестирования, производственная среда), достаточно мощный процессор и достаточный объем оперативной памяти для эффективного выполнения кода? Будет ли реализованная логика, алгоритмы, структуры данных и т.д. работать достаточно быстро на большом наборе данных, который может быть в производственной среде? Документация Была ли изменена документация для того, чтобы отразить новые изменения программного кода (документация API, документация по структуре, проектная документация)? Создается ли тикет  технических недоработок , если запрос на внесение изменений содержит неэффективный или «грязный» код, который сейчас невозможно перестроить из-за недостаточного количества времени? Заключение Количество пунктов, на которых проверяющий должен заострить свое внимание, зависит от конкретного проекта и даже от конкретного запроса на внесение изменений. Ваш с коллегами мозговой штурм (если вы примите во внимание вышеприведенные пункты) может значительно снизить риск того, что вы забудете о чем-то важно при анализе программного кода.   
img
Продолжаем рассказывать про Terraform. Предыдущая статья тут. В данной статье мы разберем динамичные блоки кода в Terraform, которые можно использовать в своей работе. Данный функционал значительно облегчает написание кода Terraform с помощью которого мы управляем сервисами Amazon. В статье будет описан сценарий с генерацией кода Terraform. Данный функционал был добавлен в terraform 0.12 версии. Для работы создадим новую директорию, можно путем копирования из предыдущего урока. Директорию назовем lesson-5. Для написания кода мы по-прежнему используем текстовый редактор Atom. Мы можем создать файлик с именем DynamicSecurityGroup.tf или переименуем существующий webserver.tf если вы добавили папку путем копирования. Если вы создавали путем копирования отредактируем файл, убрав строчки, которые создают веб-сервер. Удаляем. Теперь мы начнем писать код Terraform, чтобы у нас появилась динамическая группа безопасности. В прошлой статье мы прописывали 2 правила. Данные правила открывали нам порты 80 и 22, аналогично можно прописать, чтобы открывался порт 443 ну или любой другой, который нам необходим для корректного инстанса и работоспособности сервиса. А теперь представим, что нам необходимо открыть еще 20 разных портов. Можно сделать это с помощью copy-paste, т.е. копированием и вставкой уже существующих блоков кода с редактированием протокола и номеров портов. В terraform версии 0.12 добавили функционал и назвали его DynamicBlocks, что позволит генерировать кусочки кода в Terraform. Добавим следующую часть кода: dynamic "ingress" { for_each = ["80", "443", "8080", "1541", "9092"] content { from_port = ingress.value to_port = ingress.value protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } } Разберем для лучшего понимания. Функция Dynamic, далее кавычки двойные и внутри мы пишем, что-будет динамическим, в нашем случае это функция Ingress. Открываем фигурные скобки и пишем цикл с помощью for_each = ["номерпорта1", "номерпорта2"] указывая номера портов. Следовательно, цикл for_each пройдется по каждому из параметров и будет применена конструкция content. Значения внутри конструкции content, будут заменены, а именно с какого порта на какой порт открывается доступ. Далее в конструкции content описываем используемый протокол сетевого уровня и cider_blocks – с каких IP или диапазонов IP разрешено использовать данной правило. Конструкция 0.0.0.0/0 позволяет указать, что данное правило с данным портом разрешено использовать всему интернету вне зависимости от IP адреса. В целях информационной безопасности рекомендую использовать конкретные подсети или конкретные IP адреса, конечно, если это не публичный сервис. Если посмотреть на пример, то написанное таким образом правило, сгенерирует нам 5 отдельных правил, т.е. получается достаточно удобно и сокращает нам количество строчек в коде, а также потенциально количество ошибок. Код становится более читаемым и легким. После использования в коде функции dynamic, мы можем удалить все ставшие ненужными функции ingress. Не забывайте изменить имя ресурса. Это делается путем редактирования переменной name в разделе функции resource, для читаемости кода и удобства управления ресурсами в облаке AWS. После того, как у нас готов наш код, мы можем его запустить. Так как, была создана новая папка, нам необходимо инициализировать ее использования. Переходим в необходимую директорию, в которой находится файл. И запускаем инициализацию стандартной командой terraform init. После ввода команды ожидаем пару минут, пока Terraform скачает все необходимые модули для подключения и работы. Следующей командой terraform apply мы запускаем код на исполнение. И получаем запрос на подтверждение операции. Среди вывода мы можем видеть: Это значит что все порты, которые были указаны в аргументах будут созданы. Осталось подтвердить и дождаться успешного выполнения операции.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59