По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Настроить бэкэнд-службу с нуля сложно. Для облегчения работы можно использовать Firebase, но это не единственное в своем роде решение. В данном материале рассмотрим альтернативные решения бэкэнда для веб-приложений и мобильных приложений. Что такое бэкэнд? Бэкэнд - это программное обеспечение, которое обрабатывает данные мобильного или веб-приложения. Он содержит всю логику доступа и управления данными, к которым обычные пользователи не могут получить доступ. Бэкэнд также отвечает за обработку веб-запросов и веб-ответов. Обычно он известен как часть приложения, которое скрыто от пользователя, и он взаимодействует с фронтэндом (то что пользователь видит), чтобы отобразить запрашиваемые данные. Для создания бэкэнд-решений можно использовать несколько языков программирования, таких как Python, JavaScript и PHP. В дополнение к этим языкам, вы можете использовать серверные фреймворки, такие как Django, NireJS и Laravel, которые обеспечивают «стандартный» способ построения сложных приложений. Чтобы создать пользовательское бэкэнд-решение, требуются хорошие навыки работы с некоторыми из упомянутых выше языков программирования, и, что более важно, много времени. Если вы хотите пропустить этот процесс и сосредоточиться на скорейшем завершении проекта, вы можете использовать готовое к использованию бэкэнд-решение или, если вы предпочитаете модный термин «бэкэнд как услуга» (Baas - Backend-as-a-service). Наиболее популярным сервисом является Firebase, консолидированный продукт, поддерживаемый Google, но у него есть некоторые недостатки: Ограниченная миграция данных Ограниченное хранение данных Больше нацелен на Android (большие улучшения на iOS в последние месяцы) Основная служба не является открытой Для хранения данных приложения и управления ими вы полагаетесь на внешнюю службу Firebase - отличный продукт, особенно если вы только начинаете, но, чтобы иметь выбор, важно знать некоторые альтернативы. 1. Appwrite Appwrite - это комплексное бэкэнд-решение практически для каждого веб- или мобильного приложения, о создании которого вы мечтаете. Он является решением с открытым исходным кодом, имеет нулевые зависимости и легко интегрируется (через SDK) с некоторыми наиболее популярными инструментами и языками. Appwrite - это автономный бэкэнд сервер, который поставляется в виде Docker-образа. Это означает, что ее можно установить в любой ОС, поддерживающей интерфейс командной строки Docker. Эта кроссплатформенная функциональность позволяет запускать Appwrite на локальном рабочем столе или на любом облачном сервере. Appwrite поставляется со встроенной панелью, которая позволяет управлять приложениями как проектами. Каждый проект может интегрироваться непосредственно с вашим приложением. Другие интересные особенности Appwrite: Простота Отличная документация Кроссплатформенность Нулевые зависимости (кроме Docker) 2. Supabase Supabase - это альтернатива Firebase с открытым исходным кодом, которая выполняет повторяющиеся операции CRUD и позволяет сосредоточиться на вашем продукте. Помимо возможности самостоятельного хостинга, Как и Appwrite, Supabase можно развернуть локально. Но в отличии от первого, Supabase также предлагается в облачном варианте. Он предоставляет все бэкэнд-услуги, необходимые для создания продукта. Вот основные: База данных Postgres Идентификация Хранение файлов Автоматически созданные API Вы можете создать учетную запись в GitHub, выбрать бесплатный план и создать приложение за считанные минуты. Supabase поставляется с панелью мониторинга, включающая редактор таблиц (аналогично электронной таблице), встроенный редактор SQL и управление пользователями. Имеется обширная официальная документация, которая позволяет быстро начать разработку приложения на этой платформе. 3. Parse Platform Parse Platform – это полный стек приложений. Его основным продуктом является сервер Parse - бэкэнд сервер с открытым исходным кодом и автономным хостингом, который может быть развернут в любой инфраструктуре, поддерживающей Node.js. Parse Server использует MongoDB или Postgres в качестве базы данных и позволяет использовать собственную инфраструктуру для развертывания внутреннего сервера. Если вы хотите разработать приложение локально, вы можете сделать это с помощью Node. ParseplatformIt имеет несколько SDK с открытым исходным кодом, которые позволяют интегрировать почти все существующие веб-приложения или мобильные приложения за пару команд. Самое интересное в Parse - это широкое сообщество. Они создали множество проектов для расширения функциональности Parse, таких как адаптер MySQL или Live Query for .Net. 4. Cloudboost Cloudboost - это полнофункциональный JavaScript бэкэнд, включающий все инструменты и инфраструктуру, необходимые для создания современных веб-приложений и мобильных приложений. При реализации основных функция вроде поиск или аутентификация пользователей, задачу целостности данных это решение берёт на себя. Все находится на одной платформе, поэтому вы экономите много времени и инвестируете в разработку своего приложения. Главный недостаток: он не является ни открытым, ни бесплатным. 5. Nhost Хотите использовать современный бэкэнд для создания современных приложений? Если да, Nhost то, что вам нужно. Вдохновленный от Firebase, это готовый к производству бэкэнд, который включает базу данных Postgres, Hasura, GraphQL, встроенную аутентификацию и хранилище. Как и в случае с каждым из представленных до сих пор бэкэнд-решений, оно предлагает набор SDK для интеграции вашего приложения. Это решение с открытым исходным кодом, но он предлагает облачную версию, которую вы можете начать использовать бесплатно и выбрать план после того, как вы попробуете его функции. Лучше всего в Nhost то, что у вас есть полный доступ к вашим данным (в отличии от Firebase), и вы можете экспортировать их в любое время. Nhost только становится, и вы можете наблюдать за их прогрессом и статистикой на их сайте. Заключение Backend-as-a-service позволяет делегировать базовае функции приложения и стандартные операции CRUD третьей стороне, чтобы сосредоточиться на создании наилучшего проекта за меньшее время.
img
Сегодня в статье будут кратко описаны главные функции текстового редактора Vim – данный редактор очень часто является самым простым способом отредактировать конфигтекстовый файл, но он обладает не самым дружелюбным интерфейсом. Давайте разберём основные моменты. Текстовый редактор Vim Этот текстовый редактор умеет работать в нескольких режимах: режиме вставки, командном режиме и «ex mode» режиме (режим последней строки). Сразу после открытия файла с помощью команды vim %file_name% редактор запуститься в так называемом «командном режиме» - ввод текста будет недоступен, Vim будет воспринимать только команды. Для переключения в режим вставки необходимо нажать "i" – у вас появится возможность редактировать текст. После того как все манипуляции будут завершены, вам необходимо будет перейти в режим последней строки и дать команду сохранитьвыйтисохранить и выйти и так далее – для этого необходимо: если находитесь в командном режиме нажать ":" (двоеточие) и ввести команду, а если находитесь в режиме вставки – сначала нужно нажать Escape и затем нажать двоеточие. Командный режим и его возможности В командном режиме доступно очень большое количество команд, с полным списком которых можно ознакомиться по ссылке: https://www.fprintf.net/vimCheatSheet.html, я же приведу здесь только самые часто используемые и полезные. Самое главное, что нужно запомнить – это клавиши, используемые для перемещения по тексту – это h, j, k, l. h - сдвиг на один символ влево j сдвиг на один символ вниз k сдвиг на один символ вверх l сдвиг на один символ вправо Кроме того, есть возможность перемещаться на одно слово вперед или назад – важно помнить, что словом является нечто вида "aesr1001k", то есть без дефиса и прочих разделительных знаков – "aesr-1001k" – это будет восприниматься редактором как два слова. Итак, для перехода на одно слово вперед нужно нажать "w", а для перехода назад – "b". Не очень интуитивно, не правда ли?:) Если вам нужно что-то копировать – в Виме это делается достаточно просто – для этого нужно сначала переключиться в режим редактирования текста (клавиши "V" (выделение целых строк),"v"(посимвольное выделение) или "Ctrl-v"(блочное выделение) – после переключения можно будет выделять текст используя кнопки описанные выше или же используя клавиши со стрелками. После выделения нужно нажать клавишу "y" для копирования фрагмента в буфер обмена. Для вставки используются маленькая и большая "p" – маленькая для вставки после курсора и большая, соответственно, до. Что касается удаления – здесь тоже есть свои «трюки»: d или x - удаление символов – курсор нужно ставить над нужным символом и нажимать указанную клавишу dw - удаление слова под курсором db - удаление предыдущего слова dd - удаление целой строки d$ - удаление части строки от позиции курсора до конца строки d^ - удаление части строки от позиции курсора до начала строки Что если вам необходимо найти какую-нибудь информацию в тексте? Для этого вам потребуется переключиться в режим поиска, причём есть два режима поиска: при нажатии на "/" - включиться поиск в прямом направлении, и при нажатии на на "?" - включиться поиск в обратном направлении. После этого нужно ввести шаблон поиска – к примеру: :/ipaddress Также возможен поиск и замена – данный режим включается командой :s, после чего вам необходимо будет указать слово для поиска и слово, на которое произойдет замена: :%s/192.168.1.1/192.168.2.2/ - в данном примере указана глобальная область поиска, и первый найденный сетевой адрес 192.168.1.1 будет заменен на 192.168.2.2. Если же необходимо заменить все найденные адреса на новые и запрашивать подтверждение при каждой замене – нужно добавить буквы "gc" - :%s/192.168.1.1/192.168.2.2/gc У многих мог возникнуть вопрос – как же сделать столь привычное Undo, то есть отменить последние действие – для этого нужно воспользоваться командой "u" - но, к сожалению, отменить можно только последние действие. Если же нужно повторить отмененное действие (т.е сделать UnUndo) нужно нажать "Ctrl+r". Важно – если отменен режим совместимости с Vi, то отменять можно большее количество действий. Сохранение и выход Теперь перейдем к важному моменту – сохранению и выходу. Тут есть несколько опций: :w сохранение изменений без выхода :wq или :x - старое доброе «сохранить и выйти» :q! - выход без сохранения изменений :w %file_name% - «сохранить как» в новый файл На этом всё, помните, что Vim не является самым удобным редактором, и, если есть возможность – лучше установите что-то более привычное для вас. Но навыки использования Vim важны, так как часто это единственно доступный инструмент для редактирования конфигов на удаленных серверах.
img
Сетевая инфраструктура (роутеры, коммутаторы, МСЭ, АТС и так далее) являются очень важными ресурсами организации, и поэтому очень важно корректно настроить доступ к данным устройствам – для достижения нужного уровня защиты. Множество корпораций фокусируются на защите своих серверов, приложений, баз данных и прочих компонентов сети, но они могут совершенно забыть о том, что часть установленных у них устройств содержат, к примеру, дефолтные логин и пароль. К примеру, скомпрометированный маршрутизатор может доставить гигантское количество проблем – злоумышленники могут получить доступ к информации, трафик может улетать на другое направление и так далее. Так что корректная настройка устройств с точки зрения сетевой безопасности является крайне важным моментом при обеспечении защиты информации вашей организации. К примеру Cisco разделяет любое сетевое устройство на 3 функциональных плоскости, а именно: Плоскость менеджмента – это все о том, как непосредственно управлять железкой. То есть данная плоскость используется для доступа, настройки и мониторинга устройства. В нашей статье мы непосредственно расскажем, как защитить данную плоскость; Плоскость управления – данная плоскость содержит в себе сигнальные протоколы и процессы, которые отвечают за связность между устройствами – например такие известные вам протоколы как OSPF, EIGRP и так далее; Плоскость данных – плоскость, ответственная за перемещение информации по сети от источника до ее назначения. В данной плоскости и происходит, как правило, обмен пакетами между устройствами; Из этих трех плоскостей наиболее защитить первую и вторую плоскости, однако в нашей статье мы сконцентрируемся на плоскости менеджмента и обсудим 10 важных шагов по улучшению защищенности сетевого устройства Cisco с IOS. Десять пунктов ниже не являются избыточными, но они включают в себя наиболее важные команды и настройки, которые позволят «закрыть» устройство от нежелательного доступа и повысить степень защищенности. Данные пункты применимы как к маршрутизаторам, так и к коммутаторам. Создание секретного пароля В целях предоставления доступа к IOS устройству только людям, имеющим право (например, сисадмину/эникею/инженеру) всегда нужно создавать сложный «секретный» пароль (enable secret). Мы советуем придумать/сгенерировать пароль минимум 12 знаков, содержащий цифры, буквы и специальные символы. Проверьте, что вы вводите именно enable secret - тогда в конфиге пароль будет отображаться в зашифрованном виде. Router# config terminal Router(config)# enable secret сложныйпароль Зашифруйте пароли на устройстве Все пароли, настроенные на устройстве (за исключением «секретного»), не шифруются от слова совсем и легко видны в конфиге. Чтобы зашифровать все пароли в конфиге, необходимо использовать глобальную команду service password encryption Router# config terminal Router(config)# service password-encryption Используйте внешний сервер авторизации для аутентификации пользователей Вместо использования локальных учетных записей на каждом устройстве для доступа администратора, мы рекомендуем использование внешнего AAA сервера (TACACS+ или RADIUS) для обеспечения Аутентификации, Авторизации и Учета (вольный перевод Authentication, Authorization, Accounting). С централизованным ААА сервером гораздо проще управлять учетными записями, реализовывать политики безопасности, мониторить использование аккаунтов и многое другое. Ниже на схеме вы можете видеть как настроить TACACS+ и RADIUS серверы с использованием enable secret пароля в случае отказа этих серверов. TACACS+ Router# config terminal Router(config)# enable secret K6dn!#scfw35 //создаем “секретный ” пароль Router(config)# aaa new-model //включаем ААА службу Router(config)# aaa authentication login default group tacacs+ enable //Используем TACACS сервер и обычный пароль на случай отказа Router(config)# tacacs-server host 192.168.1.10 //указываем внутренний ААА сервер Router(config)# tacacs-server key ‘secret-key’ //указываем секретный ключ для ААА сервера Router(config)# line vty 0 4 Router(config-line)# login authentication default //применяем ААА аутентификацию для линий удаленного доступа (telnet, ssh) Router(config-line)# exit Router(config)# line con 0 //применяем ААА аутентификацию для консольного порта Router(config-line)# login authentication default RADIUS Router# config terminal Router(config)# enable secret K6dn!#scfw35 //создаем “секретный ” пароль Router(config)# aaa new-model //включаем ААА службу Router(config)# aaa authentication login default group radius enable //Используем RADIUS сервер и обычный пароль на случай отказа Router(config)# radius-server host 192.168.1.10 //указываем внутренний ААА сервер Router(config)# radius-server key ‘secret-key’ //указываем секретный ключ для ААА сервера Router(config)# line vty 0 4 Router(config-line)# login authentication default //применяем ААА аутентификацию для линий удаленного доступа (telnet, ssh) Router(config-line)# exit Router(config)# line con 0 //применяем ААА аутентификацию для консольного порта Router(config-line)# login authentication default Создайте отдельные аккаунты для пользователей Если у вас отсутствует возможность использовать внешний ААА сервер, по инструкции, описанной в предыдущем шаге, то как минимум, вам необходимо создать несколько отдельных локальных аккаунтов для всех, у кого должен быть доступ к устройству. Приведем пример создания трех локальных аккаунтов для троих системных администраторов. Кроме того, в версии IOS начиная с 12.2(8)T и позднее, есть возможность настроить повышенную надежность паролей (Enhanced Password Security) для локальных учетных записей – это зашифрует пароли с помощью MD5 хэша. Ниже пример настройки трех учетных записей: Router# config terminal Router(config)# username efstafiy-admin secret Lms!a2eZf*%_rete Router(config)# username evlampiy-admin secret d4N3%sffeger Router(config)# username vova-admin secret 54sxSFT*&_(!zsd Настройте лимит возможных попыток подключения Для того, чтобы избежать взламывания вашей учетной записи на маршрутизаторе с помощью брутфорса, вы можете настроить ограничение количества попыток подключения, когда после определенного предела система заблокирует пользователя. Это работает для локальных учетных записей. Router# config terminal Router(config)# username john-admin secret Lms!a2eZSf*% Router(config)# aaa new-model Router(config)# aaa local authentication attempts max-fail 5 //max 5 failed login attempts Router(config)# aaa authentication login default local Открытие доступа на управление устройством только для определенных IP – адресов Данный пункт является одним из наиболее важных для сетевых устройств Cisco – необходимо оставить доступ к Telnel или SSH только для определенных сетевых адресов (например, рабочей станции системного администратора). В нашем примере сисадмин находится в пуле 192.168.1.0/28 Router# config terminal Router(config)# access-list 10 permit 192.168.1.0 0.0.0.15 Router(config)# line vty 0 4 Router(config)# access-class 10 in //применить ограничения на все VTY линии (SSH/Telnet) Включить логирование Логирование является очень полезной функцией для отслеживания, аудита и контроля инцидентов. Вы можете включить логирование во внутренний буфер устройства или на внешний лог-сервер. Вторая опция является более предпочтительной, так как вы можете хранить там больше информации и проще производить различного рода аналитику. Всего существует 8 уровней логирования (от 0 до 7), каждый из которых делает лог более насыщенным деталями. Лучше всего избегать 7 уровень логирования (дебаг), т.к это может легко потратить все ресурсы вашего устройства. Ниже пример, как включить логирование и на внешний сервер, и на сам девайс (можно использовать два варианта одновременно). Router# config terminal Router(config)# logging trap 6 //Включить 6 уровень логирования для логов, отправляемых на внешний сервер Router(config)# logging buffered 5 //Включить 5 уровень логирования для логов, хранимых на самом девайсе Router(config)# service timestamps log datetime msec show-timezone //Включить таймстампы с милисекундной точностью Router(config)# logging host 192.168.1.2 //Отправлять логи на внешний сервер Router(config)# logging source-interface ethernet 1/0 //Использовать интерфейс Eth1/0 для отправки логов Включение NTP (Network Time Protocol) Данный шаг необходим для корректной работы логирования – т.к вам необходимо синхронизированное и точное системное время на всех сетевых устройствах, для правильного понимания ситуации при траблшутинге. Вы можете использовать как публичный, так и свой собственный NTP cервер. Router# config terminal Router(config)# ntp server 3.3.3.3 Router(config)# ntp server 4.4.4.4 Использование безопасных протоколов управления По умолчанию, протоколом, с помощью которого можно управлять устройством является Telnet. Однако весь трафик передается в незашифрованном виде – поэтому предпочтительно использовать SSH. Важно – для использования SSH необходимо настроить хостнейм и доменное имя, а также сгенерировать SSH ключи. Также следует разрешить только протокол SSH на VTY линиях Защитить SNMP доступ Про SNMP мы писали в одной из наших статей – это протокол для управления сетью, который, однако, также может служить «дырой» для доступа в вашу сеть. Для защиты данного направления, вам необходимо установить сложную Community String (что-то вроде пароля для SNMP) и разрешить доступ только с определенных рабочих станций. Давайте настроим две Community String – одну с правами на чтение, и другую с правами на чтение и изменение. Также добавим ACL с нужными сетевыми адресами. Router# config terminal Router(config)# access-list 11 permit 192.168.1.0 0.0.0.15 Router(config)# access-list 12 permit 192.168.1.12 Router(config)# snmp-server community Mer!0nET RO 11 //создание community string с правами на чтение и использование ACL 11 для SNMP доступа Router(config)# snmp-server community Mer!0NeTRules RW 12 //создание community string с правами на чтение/запись и использование ACL 12 для SNMP доступа Команды выше позволят сети сисадмина 192.168.1.0/28 иметь доступ на чтение и хосту 192.168.1.12 иметь полный доступ на SNMP чтение / запись к устройствам.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59