По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В нашей базе знаний есть довольно много статей о различных полезных трюках и командах для Linux, которые облегчают жизнь системному администратору – сегодня поговорим ещё о нескольких командах и объясним их синтаксис. История введённых команд Представьте себе долгую и утомительную сессию по настройке вашего сервера, и, вдруг, вы понимаете, что какой-то шаг был выполнен неверно – в таком случае может очень пригодиться команда history - как видно на скриншоте ниже, она выводит все введённые команды. Более того, если вы хотите повторить какую-нибудь уже введённую команду, достаточно ввести !####, где #### - номер команды. Однако номер команды даёт не очень много информации о том, когда эта команда была введена – для изменения этого факта, достаточно ввести команду HISTTIMEFORMAT="%d/%m/%y %T " - теперь вы увидите время, когда команда была исполнена. Итак, более подробное описание синтаксиса: history - непосредственно команда для вывода истории команд (библиотека GNU); HISTIMEFORMAT - переменная, отвечающая за вывод и формат даты; %d - дни; %m - месяцы; %y - годы; %T - описание; Файлы в системе, занимающие больше всего места и файловая информация Драгоценное место на сервере имеет тенденцию заканчиваться, особенно, если это сервер, служащий для записи звонков или IP-АТС - для вывода списка основных файлов «жрущих» место можно воспользоваться командой: du –hsx * | sort -rh | head -6 du - оценка занимаемого пространства; -hsx (-h) вывод в читаемом формате,(-s) суммаризация вывода команды, (-x) использование одного формата файла; sort - сортировка; -rh -(-r) вывод в обратном порядке,(h) вывод в читаемом формате; head - вывод первых N строк, в данном случае – 6; Команда stat filename_ext позволяет вывести информацию о файле – его объем, права, дату правки и так далее. Забавная команда для новичков, позволяющая постепенно постигать Linux Многие знакомы с командой man, которая показывает мануал по незнакомой команде, изучения – а скрипт ниже выводит какой-нибудь случайный мануал. Таким образом можно постоянно обучаться или просто развлекаться :) man $(ls /bin | shuf | head -1) man - страницы Linux Man; ls - команда ls; /bin - местоположение системного файла Binary; shuf - случайная генерация; head - вывод первых N строк, в данном случае – 1;
img
Суть работы специалиста по информационной безопасности – предотвращение кибератак. Для этого повышается стоимость затрат на проведение атаки. Зачем это нужно? Это необходимо чтобы стоимость предполагаемой атаки была в разы меньше больше чем прибыть, по данной причине проводить ее злоумышленнику будет просто невыгодно. Для усложнения кибератак используются такой комплекс мер: обучение персонала правилам работы: не скачивать непонятные файлы с непонятных сайтов, не открывать странные ссылки на почте, не разглашать данные о системе работы, сохранять всю корпоративную информацию в тайне. Конечно же куда без антивируса! Многие ошибочно полагают что антивирус только нагружает компьютер и от него нет никакой пользы. Даже самый просто бесплатный антивирус сможет защитить вас от 99 процентов всех вредоносных программ. В прошлом компании не особо волновались за безопасность и выделяли на нее очень мало времени. Парой и вовсе доходило до того, что собственники фирм говорят о том, что они не нужны хакерам так как их незачем взламывать. В теперешнем времени все кардинально изменилось, особенно сразу после событий 2015 года. Теперь компании обязали использовать необходимые средства защиты от кибератак, кроме того их обязали находить и исправлять уязвимости в системе. Именно по этой причине данное направление стало активно развивается и у специалистов ИБ стало больше работы. Иногда случается так, что у сотрудников той или иной компании нахватает навыков, компетенции или же полномочий для устранения проблем и ошибок. Если такое происходит, привлекают сторонние организации, которые смогут предоставить необходимый уровень защиты сети. В самом простом случае специалисту по ИБ покупают программу, с помощью которой он сможет найти ошибки после чего устранить их. Но так работают только те «специалисты», которые не понимают, как проводится сканирование и слепо следуют предлагаемым инструкциям. В небольших компаниях за ИБ отвечают один или два человека, которые выделяют на свою основную работу по 3-4 часа в неделю. Также в больших корпорациях под данные задачи могут выделить целое подразделение специалистов, у которых гораздо больше возможностей, навыков и компетенции. Любой специалист по ИБ сам должен быть немного хакером, а именно понимать принцип работы этичного хакинга и выполнять их, для того чтобы понимать, как действует и рассуждает злоумышленник. В ином случае действия специалиста можно расценивать как противозаконные. Для избегания таких оплошностей необходимо четко обговорить с работодателем область допустимых действий, после чего подписать договор, в котором они будут указаны. Что же имеется ввиду, когда говорят неэтичный хакинг? Неэтичный хакинг включает в себя распространение информации добытой незаконным путем, уязвимостей, устройства системы и структуры ее защиты. То есть специалист по ИБ не должен обсуждать совою работу вовремя дружеских посиделок, ибо тем самым он нарушает закон. Очень часто такие вопросы задают на собеседованиях. Это делают, для того чтобы проверить человека на, то сольет ли он информацию своему следующему работодателю. Каждый специалист по ИБ должен понимать к чему могут привести его действия.
img
Bellman-Ford - один из наиболее простых для понимания протоколов, поскольку он обычно реализуется путем сравнения недавно полученной информации о пункте назначения с существующей информацией о том же пункте назначения. Если вновь обнаруженный маршрут лучше, чем известный в настоящее время, маршрут с более высокой стоимостью просто заменяется в списке путей - в соответствии с правилом кратчайшего пути для поиска путей без петель в сети. Таким образом, перебирая всю топологию, можно найти набор кратчайших путей к каждому месту назначения. Рисунок 7 используется для иллюстрации этого процесса. Примечание. Хотя Bellman-Ford в основном известен своим распределенным вариантом, реализованным в широко распространенных протоколах, таких как Routing Information Protocol (RIP), он изначально был разработан как алгоритм поиска, выполняемый в единой структуре, описывающей топологию узлов и ребер. Беллман-Форд рассматривается здесь как алгоритм. Алгоритм Bellman-Ford Bellman-Ford рассчитывает Shortest Path Tree к каждому достижимому пункту назначения в наихудшем случае O (V * E), где V - количество узлов (вершин) в сети, а E - количество каналов (ребер). По сути, это означает, что время, необходимое Bellman-Ford для работы с топологией и вычисления Shortest Path Tree, линейно зависит от количества устройств и каналов. Удвоение количества любого из них удвоит время, необходимое для выполнения. Удвоение обеих одновременно увеличит время работы в 4 раза. Таким образом, алгоритм Bellman-Ford является умеренно медленным при использовании против более крупных топологий, когда узлы в таблице топологии начинаются в порядке от самого дальнего от корня до ближайшего к корню. Если таблица топологии отсортирована от ближайшего к корню до самого дальнего, Bellman-Ford может завершить работу за O(E), что намного быстрее. В реальном мире трудно обеспечить любой порядок, поэтому фактическое время, необходимое для построения Shortest Path Tree, обычно находится где-то между O(V * E) и O(E). Bellman-Ford - это greedy алгоритм, предполагающий, что каждый узел в сети, кроме локального, доступен только по бесконечным стоимостям, и заменяющий эти бесконечные стоимости фактическими стоимостями по мере прохождения топологии. Предположение, что все узлы бесконечно удалены, называется ослаблением вычислений, так как он использует приблизительное расстояние для всех неизвестных пунктов назначения в сети, заменяя их реальной стоимостью после ее расчета. Фактическое время выполнения любого алгоритма, используемого для расчета Shortest Path Tree, обычно ограничивается количеством времени, требуемым для передачи информации об изменениях топологии по сети. Реализации всех этих протоколов, особенно в их распределенной форме, будут содержать ряд оптимизаций, чтобы сократить время их выполнения до уровня, намного меньшего, чем наихудший случай, поэтому, хотя наихудший случай дается в качестве контрольной точки, он часто имеет мало влияющие на производительность каждого алгоритма в реальных развернутых сетях. Чтобы запустить алгоритм Bellman-Ford в этой топологии, ее необходимо сначала преобразовать в набор векторов и расстояний и сохранить в структуре данных, такой как показано в Таблице 1. В этой таблице девять записей, потому что в сети девять звеньев (граней). Алгоритмы кратчайшего пути вычисляют однонаправленное дерево (в одном направлении вдоль графа). В сети на рисунке 7 показано, что SPT берет начало в узле 1, а расчет показан удаленным от узла 1, который будет точкой, из которой будут выполняться вычисления. Алгоритм в псевдокоде следующий: // создаем набор для хранения ответа, по одной записи для каждого узла // первый слот в результирующей структуре будет представлять узел 1, // второй узел 2 и т. д. define route[nodes] { predecessor // как узел cost // как целое число } // установите для источника (меня) значение 0 // позиция 1 в массиве - это запись исходной точки. route[1].predecessor = NULL route[1].cost = 0 // таблица 1, приведенная выше, содержится в массиве под именем topo // Обходим таблицу вершин (граней) один раз для каждой записи в маршруте // (результаты) таблица, замены более длинных записей на более короткие i = nodes while i > 0 { j = 1 while j <= nodes { // перебирает каждую строку в топологии table source_router = topo[j].s destination_router = topo[j].d link_cost = topo[j].cost if route[source_router].cost == NULL { source_router_cost = INFINITY } else { source_router_cost = route[source_router].cost } if route[destination_router].cost == NULL { destination_router_cost = INFINITY } else { destination_router_cost = route[destination_router].cost } if source_router_cost + link_cost <= destination_router_cost { route[destination_router].cost = source_router_cost + link_ cost route[destination_router].predecessor = source_router } j = j + 1 //or j++ depending on what pseudocode this is representing } i = i - 1 } Этот код обманчиво выглядит сложнее, чем есть на самом деле. Ключевой строкой является сравнение if route [topo [j] .s] .cost + topo [j] .cost route [topo [j] .d] .cost. Полезно сосредоточиться на этой строке в примере. При первом прохождении внешнего цикла (который выполняется один раз для каждой записи в таблице результатов, здесь называется маршрутом): Для первой строки topo-таблицы: j равно 1, поэтому topo[j] .s - это узел 6 (F), источник вектора в таблице граней j равно 1, поэтому topo[j] .d - это узел 7 (G), адресат вектора в таблице граней. route[6].cost = infinity, topo[1].cost = 1, and route[7].cost = infinity (где infinity - бесконечность) infinity + 1 == infinity, поэтому условие не выполняется и больше ничего не происходит Любая запись в topo-таблице с исходной стоимостью infinity даст тот же результат, что и infinity + все, что всегда будет равно infinity. Остальные строки, содержащие источник со стоимостью infinity, будут пропущены. Для восьмой строки topo-таблицы (восьмая грань): j равно 8, поэтому topo[j].s - это узел 1 (A), источник вектора в таблице граней j равно 8, поэтому topo[j].d - это узел 2 (B), место назначения вектора в таблице граней. route [1].cost = 0, topo[8].cost=2 и route[2].cost = infinity. 0 + 2 = infinity, поэтому условие выполняется route[2].predecessor установлен на 1, а route [2].cost установлен на 2 Для девятой строки topo -таблицы (девятая грань): j равно 9, поэтому topo[j].s - это узел 1 (A), источник вектора в таблице граней j равно 9, поэтому topo[j].d - это узел 3 (C), место назначения вектора в таблице граней. route[1].cost=0, topo[9].cost=1 и route[3].cost = infinity. 0 + 1 = infinity, поэтому условие выполняется route[3].predecessor установлен на 1, а route[3].cost установлен на 1 Во втором прогоне внешнего цикла: Для пятой строки topo-таблицы (пятая грань): j равно 5, поэтому topo[j].s - это узел 2 (B), источник вектора в таблице граней j равно 5, поэтому topo[j].d - это узел 6 (F), место назначения вектора в таблице граней. route[2].cost=2,topo[5].cost=1 и route[6].cost = infinity. 2 + 1 = infinity, поэтому условие выполняется route[6].predecessor установлен на 2, а route[6].cost установлен на 3 Для шестой строки topo -таблицы (шестая грань): j равно 6, поэтому topo[j].s равно 2 (B), источник вектора в таблице граней j равно 6, поэтому topo[j].d равно 5 (E), место назначения вектора в таблице граней route[2].cost=2, topo[6].cost=2 и route[5].cost = infinity. 2 + 2 = infinity, поэтому условие выполняется route[5].predecessor установлен на 2, а route[5].cost установлен на 4 Окончание этого прогона показан в Таблице 2. В третьем прогоне внешнего цикла узел 8 представляет особый интерес, поскольку есть два пути к этому месту назначения. Для второй строки topo -таблицы (вторая грань): j равно 2, поэтому topo[j].s - это узел 5 (E), источник вектора в таблице граней j равно 2, поэтому topo[j].d - это узел 8 (H), место назначения вектора в таблице граней route[5].cost=4, topo[2].cost=1 и route[8].cost = infinity. 4 + 1 = infinity, поэтому условие выполняется route[8].predecessor установлен на 5, а route[8].cost установлен на 5 Для третьей строки topo -таблицы (третья грань): j равно 3, поэтому topo[j].s - это узел 4 (D), источник вектора в в таблице граней j равно 3, поэтому topo[j].d - это узел 8 (H), источник вектора в таблице граней route[4].cost=2,topo[3].cost=2 и route[8].cost = 5. 2 + 2 = 4, поэтому условие выполняется route[8].predecessor установлен на 4, а route[8].cost установлен на 4 Интересным моментом в третьем цикле в topo-таблице является то, что запись для грани [5,8] обрабатывается первой, которая устанавливает передатчик 8 (H) на 5 и стоимость на 5. Однако когда обрабатывается следующая строка в таблице topo [4,8], алгоритм обнаруживает более короткий путь к узлу 8 и заменяет существующий. Таблица 2 показывает состояние таблицы маршрутов при каждом проходе через таблицу topo. В таблице 2 верхняя строка представляет запись в таблице маршрутизации и узел, доступный в сети. Например, A (1) представляет лучший путь к A, B (2) представляет лучший путь к B и т. д. Столбец P представляет предшественника или узел, через который A должен пройти, чтобы достичь указанного пункта назначения. C представляет собой стоимость достижения этого пункта назначения. Рассмотренный пример сети может быть завершен за три цикла, если алгоритм настроен так, чтобы обнаруживать завершение дерева. Псевдокод, как показано, не имеет никакого теста для этого завершения и в любом случае будет выполнять полные 8 циклов (по одному для каждого узла). Теперь почитайте про алгоритм диффузного обновления DUAL.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59