По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Одной из важнейших потребностей системы Linux является постоянное обновление последних исправлений безопасности, доступных для соответствующего дистрибутива. В этой статье мы объясним, как настроить систему Debian и Ubuntu для автоматической установки и обновления необходимых пакетов безопасности или исправлений при необходимости. Для выполнения задач, описанных в этой статье, вам понадобятся права суперпользователя. Настройка автоматических обновлений безопасности в Debian и Ubuntu Для начала установите следующие пакеты: # aptitude update -y && aptitude install unattended-upgrades apt-listchanges -y где apt-listchanges сообщит, что было изменено во время обновления. Кстати, у нас есть статья, как сделать автоматическое обновление пакетов безопасности на CentOS или RHEL Затем откройте /etc/apt/apt.conf.d/50unattended-upgrades в текстовом редакторе и добавьте эту строку в блок Unattended-Upgrade :: Origins-Pattern : Unattended-Upgrade::Mail "root"; Наконец, используйте следующую команду для создания и заполнения необходимого файла конфигурации /etc/apt/apt.conf.d/20auto-upgrades для активации автоматических обновлений: # dpkg-reconfigure -plow unattended-upgrades Выберите Yes, когда будет предложено установить автоматические обновления (Automatically download and install stable updates? ) и затем убедитесь, что следующие две строки были добавлены в /etc/apt/apt.conf.d/20auto-upgrades: APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; И добавьте эту строку, чтобы сделать отчеты подробными: APT::Periodic::Verbose "2"; Наконец, проверьте /etc/apt/listchanges.conf, чтобы убедиться, что уведомления будут отправлены в root. email_address=root Готово! В этой статье мы объяснили, как обеспечить регулярное обновление вашей системы последними обновлениями безопасности. Кроме того, вы узнали, как настроить уведомления, чтобы держать себя в курсе, когда применяются исправления.
img
Перед тем как начать: это цикл статей. Мы рекомендуем до этого материала ознакомиться со статьей про Interlayer Discovery. Хотя IPv6 является основной темой этих лекций, в некоторых случаях IPv4 представляет собой полезный пример решения; Address Resolution Protocol IPv4 (ARP) является одним из таких случаев. ARP - это очень простой протокол, используемый для решения проблемы межуровневого обнаружения, не полагаясь на сервер любого типа. Рисунок ниже будет использован для объяснения работы ARP. Предположим, A хочет отправить пакет C. Зная IPv4-адрес C, 203.0.113.12 недостаточно, чтобы A правильно сформировал пакет и поместил его на канал связи по направлению к C. Чтобы правильно построить пакет, A также должен знать: Находится ли C на том же канале связи, что и A MAC или физический адрес C Без этих двух частей информации A не знает, как инкапсулировать пакет в канал связи, поэтому C фактически получит пакет, а B проигнорирует его. Как можно найти эту информацию? На первый вопрос, находится ли C на том же канале вязи, что и A, можно ответить, рассмотрев IP-адрес локального интерфейса, IP-адрес назначения и маску подсети. ARP решает вторую проблему, сопоставляя IP-адрес назначения с MAC-адресом назначения, с помощью следующего процесса: Хост A отправляет широковещательный пакет каждому устройству в сети, содержащему адрес IPv4, но не MAC-адрес. Это запрос ARP; это запрос A на MAC-адрес, соответствующий 203.0.113.12. B и D получают этот пакет, но не отвечают, поскольку ни один из их локальных интерфейсов не имеет адреса 203.0.113.12. Хост C получает этот пакет и отвечает на запрос, снова используя unicast пакет. Этот ответ ARP содержит как IPv4-адрес, так и соответствующий MAC-адрес, предоставляя A информацию, необходимую для создания пакетов в направлении C. Когда A получает этот ответ, он вставляет сопоставление между 203.0.113.12 и MAC-адресом, содержащимся в ответе, в локальном кэше ARP. Эта информация будет храниться до истечения времени ожидания; правила тайм-аута записи кэша ARP различаются в зависимости от реализации и часто могут быть настроены вручную. Продолжительность кэширования записи ARP - это баланс между слишком частым повторением одной и той же информации в сети в случае, когда сопоставление IPv4-адресов с MAC-адресами не меняется очень часто, и отслеживанием любых изменений в расположении устройство в случае, когда конкретный адрес IPv4 может перемещаться между хостами. Когда A получает этот ответ, он вставляет сопоставление между 203.0.113.12 и MAC-адресом, содержащимся в ответе, в локальный кэш ARP. Эта информация будет храниться до тех пор, пока не истечет время ожидания; правила для тайм-аута записи кэша ARP варьируются в зависимости от реализации и часто могут быть настроены вручную. Продолжительность кэширования записи ARP - это баланс между тем, чтобы не повторять одну и ту же информацию слишком часто в сети, в случае, когда сопоставление IPv4-MAC-адресов меняется не очень часто, и идти в ногу с любыми изменениями в местоположении устройства, в случае, когда конкретный IPv4-адрес может перемещаться между хостами. Любое устройство, получающее ответ ARP, может принять пакет и кэшировать содержащуюся в нем информацию. Например, B, получив ответ ARP от C, может вставить сопоставление между 203.0.113.12 и MAC-адресом C в свой кэш ARP. Фактически, это свойство ARP часто используется для ускорения обнаружения устройств, когда они подключены к сети. В спецификации ARP нет ничего, что требовало бы от хоста ожидания запроса ARP для отправки ответа ARP. Когда устройство подключается к сети, оно может просто отправить ответ ARP с правильной информацией о сопоставлении, чтобы ускорить процесс начального подключения к другим узлам на том же проводе; это называется gratuitous ARP. Gratuitous ARP также полезны для Duplicate. Gratuitous ARP также полезны для обнаружения дублирующихся адресов (Duplicate Address Detection - DAD); если хост получает ответ ARP с адресом IPv4, который он использует, он сообщит о дублированном адресе IPv4. Некоторые реализации также будут посылать серию gratuitous ARPs в этом случае, чтобы предотвратить использование адреса или заставить другой хост также сообщить о дублирующемся адресе. Что произойдет, если хост A запросит адрес, используя ARP, который не находится в том же сегменте, например, 198.51.100.101 на рисунке 5? В этой ситуации есть две разные возможности: Если D настроен для ответа как прокси-ARP, он может ответить на запрос ARP с MAC-адресом, подключенным к сегменту. Затем A кэширует этот ответ, отправляя любой трафик, предназначенный для E, на MAC-адрес D, который затем может перенаправить этот трафик на E. Наиболее широко распространенные реализации по умолчанию не включают прокси-ARP. A может отправлять трафик на свой шлюз по умолчанию, который представляет собой локально подключенный маршрутизатор, который должен знать путь к любому пункту назначения в сети. IPv4 ARP - это пример протокола, который отображает interlayer идентификаторы путем включения обоих идентификаторов в один протокол. Обнаружение соседей IPv6 IPv6 заменяет более простой протокол ARP серией сообщений Internet Control Message Protocol (ICMP) v6. Определены пять типов сообщений ICMPv6: Тип 133, запрос маршрутизатора Тип 134, объявление маршрутизатора Тип 135, запрос соседа Тип 136, объявление соседа Тип 137, перенаправление Рисунок ниже используется для объяснения работы IPv6 ND. Чтобы понять работу IPv6 ND, лучше всего проследить за одним хостом, поскольку он подключен к новой сети. Хост A на рисунке ниже используется в качестве примера. A начнет с формирования link local address, как описано ранее. Предположим, A выбирает fe80 :: AAAA в качестве link local address. Теперь A использует этот link local address в качестве адреса источника и отправляет запрос маршрутизатору на link local multicast address (адрес многоадресной рассылки для всех узлов). Это сообщение ICMPv6 типа 133. B и D получают этот запрос маршрутизатора и отвечают объявлением маршрутизатора, которое является сообщением ICMPv6 типа 134. Этот одноадресный пакет передается на локальный адрес канала A, используемый в качестве адреса источника, fe80 :: AAAA. Объявление маршрутизатора содержит информацию о том, как вновь подключенный хост должен определять информацию о своей локальной конфигурации в виде нескольких флагов. Флаг M указывает, что хост должен запросить адрес через DHCPv6, потому что это управляемый канал. Флаг O указывает, что хост может получать информацию, отличную от адреса, который он должен использовать через DHCPv6. Например, DNS-сервер, который хост должен использовать для разрешения имен DNS, должен быть получен с помощью DHCPv6. Если установлен флаг O, а не флаг M, A должен определить свой собственный IPv6-адрес интерфейса. Для этого он определяет набор префиксов IPv6, используемых в этом сегменте, исследуя поле информации о префиксе в объявлении маршрутизатора. Он выбирает один из этих префиксов и формирует IPv6-адрес, используя тот же процесс, который он использовал для формирования link local address: он добавляет локальный MAC-адрес (EUI-48 или EUI-64) к указанному префиксу. Этот процесс называется SLAAC. Теперь хост должен убедиться, что он не выбрал адрес, который использует другой хост в той же сети; он должен выполнять DAD. Чтобы выполнить обнаружение повторяющегося адреса: Хост отправляет серию сообщений запроса соседей, используя только что сформированный IPv6-адрес и запрашивая соответствующий MAC-адрес (физический). Это сообщения ICMPv6 типа 135, передаваемые с link local address, уже назначенного интерфейсу. Если хост получает объявление соседа или запрос соседа с использованием того же адреса IPv6, он предполагает, что локально сформированный адрес является дубликатом; в этом случае он сформирует новый адрес, используя другой локальный MAC-адрес, и попытается снова. Если хост не получает ни ответа, ни запроса соседа другого хоста, использующего тот же адрес, он предполагает, что адрес уникален, и назначает вновь сформированный адрес интерфейсу. Устранение ложных срабатываний при обнаружении повторяющегося адреса Процесс DAD, описанный здесь, может привести к ложным срабатываниям. В частности, если какое-то другое устройство на канале связи передает исходные пакеты запроса соседа обратно к A, оно будет считать, что это от другого хоста, требующего тот же адрес, и, следовательно, объявит дубликат и попытается сформировать новый адрес. Если устройство постоянно повторяет все запросы соседей, отправленные A, A никогда не сможет сформировать адрес с помощью SLAAC. Чтобы решить эту проблему, RFC7527 описывает усовершенствованный процесс DAD. В этом процессе A будет вычислять одноразовый номер, или, скорее, случайно выбранную серию чисел, и включать ее в запрос соседей, используемый для проверки дублирования адреса. Этот одноразовый номер включен через расширения Secure Neighbor Discovery (SEND) для IPv6, описанные в RFC3971. Если A получает запрос соседа с тем же значением nonce, который он использовал для отправки запроса соседа вовремя DAD, он сформирует новый одноразовый номер и попытается снова. Если это произойдет во второй раз, хост будет считать, что пакеты зацикливаются, и проигнорирует любые дальнейшие запросы соседей с собственным одноразовым номером в них. Если полученные запросы соседей имеют одноразовый номер, отличный от того, который выбрал локальный хост, хост будет предполагать, что на самом деле существует другой хост, который выбрал тот же адрес IPv6, и затем сформирует новый адрес IPv6. Как только у него есть адрес для передачи данных, A теперь требуется еще одна часть информации перед отправкой информации другому хосту в том же сегменте - MAC-адрес принимающего хоста. Если A, например, хочет отправить пакет в C, он начнет с отправки multicast сообщения запроса соседа на C с запросом его MAC-адреса; это сообщение ICMPv6 типа 135. Когда C получает это сообщение, он ответит с правильным MAC-адресом для отправки трафика для запрошенного IPv6-адреса; это сообщение ICMPv6 типа 136. В то время как предыдущий процесс описывает объявления маршрутизатора, отправляемые в ответ на запрос маршрутизатора, каждый маршрутизатор будет периодически отправлять объявления маршрутизатора на каждом подключенном интерфейсе. Объявление маршрутизатора содержит поле lifetime, указывающее, как долго действует объявление маршрутизатора. А теперь почитайте о проблемах шлюза по умолчанию. У нас получился отличным материал на эту тему.
img
Благодаря Интернету любой человек в мире может получить доступ к ресурсам, на благодаря которым можно научиться программировать за небольшие деньги или вообще без них. Хотя это прекрасно для тех, кто хочет стать разработчиком программного обеспечения, это также создает проблемы, особенно если вы только начинаете. Каждый новый клик приводит к новой рекомендуемой статье, учебному пособию или видео на YouTube для изучения. Но как сделать правильный выбор? Эта статья должна помочь выбрать язык программирования, с которого можно начать изучать программирование или на котором можно сосредоточиться если вы уже изучаете несколько языков. А выбор то действительно большой. Какие сегодня используются языки программирования и что популярно? Веб-приложения: JavaScript, PHP, Ruby, HTML / CSS, TypeScript Мобильные приложения: Swift, Java, JavaScript, Object-C Операционные системы: C, C ++ Распределенные системы: Go Корпоративные приложения: Java, C #, C ++, ErLang Аналитика и машинное обучение: Python, R, Clojure, Julia Математические и научные вычисления: Matlab, FORTRAN, ALGOL, APL, Julia, R, C ++ Визуализация данных: Python, R, Java, C # Большие данные: Java, Python, R, Scala, Clojure Хранение данных: SQL, C #, Java, Python Не уверены, где начать? Вот важный совет - выучите язык общего назначения - general-purpose language. Почему стоит начинать именно с них? Потому что они широко используется и не ограничивается одной областью, это очень важно. Python Простой и понятный синтаксис Python делает его отличным языком общего назначения для освоения. Язык обладает динамической системой типов, автоматическим управлением памятью и поддерживает несколько парадигм программирования, таких как объектно-ориентированная, функциональная и императивная. Многие домены приложений используют его всеобъемлющую стандартную библиотеку. Веб-приложения и приложения для настольных компьютеров, серверы, машинное обучение и приложения для искусственного интеллекта используют Python. Он постоянно входит в число лучших языков программирования каждый год, а количество вакансий с ним просто огромное. JavaScript Согласно ежегодному опросу разработчиков по Stack Overflow, более 70% всех разработчиков используют JavaScript. Он универсален, может применяться практически в любой области программного обеспечения и является одним из основных интерфейсных языков Всемирной паутины. JavaScript также позволяет интерактивные веб-страницы и имеет важное значение для большинства веб-приложений. JavaScript является мультипарадигмальным языком и поддерживает множество стилей программирования от объектно-ориентированного до функционального. У этого также есть огромное, быстро растущее число библиотек, включая некоторые внутренние серверы. Самые известные – React, Angular и Vue.Он настолько популярен, что у него даже есть фреймворки в тех областях, где это не самый лучший вариант, например, в разработке игр и виртуальной реальности. Ruby Как и другие языки, Ruby поддерживает несколько парадигм программирования, таких как объектно-ориентированная, функциональная и императивная. Это также показывает динамическую систему типов и автоматическое управление памятью. Ruby в основном используется в веб-приложениях с платформой Ruby on Rails, но также используется на внутренних серверах и базах данных. Одним из главных достоинств Ruby является его дружелюбие к начинающим. Это один из самых прощающих языков в списке - вы все равно сможете скомпилировать и запустить свою программу до появления проблемы. Его также легко освоить, потому что его синтаксис близок к разговорной речи, и он может делать то же, что и другие языки, с гораздо меньшим количеством строк кода. Java Знаменитый слоган Java - «пиши один раз, запускай где угодно», поскольку он работает на любой платформе, которая его поддерживает. Java является одним из наиболее широко известных языков среди новых разработчиков и вторым наиболее используемым языком в Stack Overflow. Java - это мультипарадигмальный язык, основанный на классах, объектно-ориентированный и разработанный с наименьшей зависимостью от реализации. Благодаря своей структуре он имеет широкий спектр применения в разных областях применения. Одним из наиболее известных применений является разработка приложений для Android, но он также популярен для настольных, веб, серверных и сетевых приложений. Хотя синтаксис Java поначалу может показаться сложным, его освоение может стоить того, чтобы получить первую работу в качестве разработчика. Думаете о конкретной области? Если у вас уже есть конкретная цель - работать над машинным обучением, стать разработчиком мобильных приложений или присоединиться к стартапу, подумайте над освоением языка, соответствующего этой цели. Какой язык программирования нужен для машинного обучения Согласно отчету о GitHub, Python был наиболее часто используемым языком для машинного обучения в 2018 году. Объедините свои знания Python с библиотекой TensorFlow, и вы получите прекрасную возможность получить захватывающую работу, связанную с машинным обучением. Язык программирования R будет следующим лучшим выбором для машинного обучения. Он наиболее эффективен для анализа и обработки данных в статистических целях. Он также предлагает множество пакетов, которые облегчают реализацию алгоритмов машинного обучения. Какой язык программирования изучить для мобильной разработки Если вы заинтересованы в разработке мобильных приложений, вам придется решить, хотите ли вы разрабатывать для устройств Android или Apple. Java - ваш лучший выбор для разработки на Android. Тем не менее, разработка мобильной Java отличается от обычной Java из-за ограниченной мощности смартфонов. Например, обычная Java-программа работает до тех пор, пока вы ее не выключите, а приложение Android можно закрыть в любое время, если оно не запущено на переднем плане. Со стороны iOS, вам стоит изучить Swift, официальный язык Apple для iOS, macOS и другой код, написанный для продуктов Apple. Также можно предложить Objective-C, потому что вы можете создавать графические пользовательские интерфейсы и многофункциональные фреймворки, но Swift легче учить, легче читать, и он одобрен самими Apple. JavaScript - еще один хороший вариант для мобильной разработки. В сочетании с HTML и CSS вы можете создавать приложения, которые можно конвертировать в собственные приложения с помощью Cordova. Другим примером является стек .NET, который также можно использовать для создания приложений и их преобразования с использованием Xamarin. Конечно, эти примеры подчеркивают важность изучения языка общего назначения еще больше. Какой язык программирования выучить для того чтобы запустить стартап Если вы знаете, что хотите создать или присоединиться к стартапу, ничто не сравнится с знанием Ruby и Ruby on Rails. Ruby дружелюбен к новичкам и позволяет разработчикам быстро создавать прототипы, что делает его отличным выбором для быстроразвивающихся стартапов. Каких языков избегать? Есть много других языков на выбор. Некоторые из самых популярных в настоящее время включают Go, Scala, TypeScript, C ++ и Rust. Однако, если вы начинаете изучать разработку программного обеспечения, вам следует избегать большинства из них. Многие языки сложны, продвинуты или слишком сфокусированы на одной области приложения. Итог Гиперфокус на овладение одним языком, а не на изучение нескольких языков Если вы не знаете, с какого языка начать, выберите язык общего назначения Не переживайте о том, какой из них вы должны выбрать, потому что есть рабочие места для каждого языка. Важнее всего ваша мотивация, решимость и способность сосредоточиться на изучении и овладении выбранным вами языком.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59