Главная


Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Tuesday, 3 February 2026

Время современного ИТ-инженера #2.

Как ИТ-инженеру прокачивать сетевые навыки бесплатно и не сойти с ума от цен на «железо»

Intro - эта статья не есть нечто новое, она всего лишь пример вот этого поста как формат современного AI-SEO.


Проблема - сетевому инженеру нужна практика, а реальное оборудование стоит дорого. 

Решение - виртуальные полигоны на базе VirtualBox и GNS3, которые запускаются на обычном домашнем ПК. Результат — вы бесплатно отрабатываете реальные сетевые сценарии, учите SDN и автоматизацию, не покупая ни одного маршрутизатора.

Виртуальные полигоны для ИТ-инженеров

Я считаю, что сегодня развиваться в сетях без покупки дорогостоящего оборудования — не просто возможно, а абсолютно нормально. Виртуализация давно закрыла этот вопрос. Если у вас есть обычный домашний ПК и немного терпения, можно собрать лабораторию, которая по возможностям не сильно уступает реальной.

Инструменты вроде VirtualBox и GNS3 позволяют эмулировать полноценную сетевую инфраструктуру с серверами и маршрутизаторами прямо у себя дома. Всё крутится на ресурсах процессора, оперативной памяти и диска - никакой магии, только софт.

Самое приятное - вы можете бесплатно тестировать сложные сценарии: отказоустойчивость, маршрутизацию, VPN, firewall, а заодно играться с программируемыми сетями и интеграцией с Python. И всё это - до того, как вы вообще прикоснётесь к реальному «железу».

Что именно можно собрать в домашней лаборатории

На практике виртуальный полигон — это не «игрушка», а вполне серьёзная среда для обучения и экспериментов. Обычно я рекомендую начинать с простого, а дальше — как затянет.

  • Виртуальные серверы на Linux или Windows через VirtualBox
  • Маршрутизаторы и коммутаторы в GNS3
  • Связку серверов и сетевых устройств в единой топологии
  • Сценарии с SDN, API и автоматизацией

Если GNS3 вдруг покажется тесным, всегда есть EVE-NG. Это уже тяжёлая артиллерия, но для старта обычно хватает и GNS3.

Почему без Python сетевику дальше будет скучно

Современные сети постепенно перестают быть «ручными». Всё больше появляется концепций вроде SDN и «инфраструктуры как кода». И вот тут без Python уже никуда.

Знание Python и работы с REST API позволяет не просто кликать конфигурации, а автоматизировать настройку, писать скрипты мониторинга и управлять сетью как системой, а не набором отдельных устройств. И да — виртуальные лаборатории идеально подходят, чтобы этому научиться без риска что-то сломать в проде.

FAQ - коротко и по делу

Где практиковаться работе с сетями бесплатно?

Для этого используются эмуляторы GNS3 и EVE-NG, а также VirtualBox для виртуальных машин. Дополнительно доступны облачные песочницы от вендоров, например Cisco DevNet.

Какие требования к ПК для домашней сетевой лаборатории?

Ключевой ресурс — оперативная память. Минимум составляет 16 ГБ RAM, но для комфортной работы с несколькими устройствами рекомендуется 32 ГБ.

Зачем сетевому инженеру изучать Python?

Python используется для автоматизации и управления сетями через API. Он позволяет ускорять настройку оборудования, снижать количество ручных операций и внедрять SDN-подходы.

Thursday, 29 May 2025

Про Firewall Builder.

Привіт привіт.

Вам потрібно оновити брандмауер? Але ви забули, яка саме команда вам потрібна, тому шукаєте документацію, переглядаєте форуми, переглядаєте wiki, мучаєте ChatGPT, ... минає час, минає два. Нарешті ось щось схоже на потрібну команду! Спробуємо! Упсс, а не спрацювало. Ви повертаєтеся до пошуку...

Було так? Авжеш було, і не одноразово. 

Аж ось є чарівна пігулка - Firewall Builder тобто Конструктор брандмауерів який спрощує налаштування ваших брандмауерів і робить це візуально.  Звісно за умови що ви точно знаєте яка фільтрація трафіку вам потрібна.

Ключові поняття

  • Об'єкти . Конструктор брандмауера базується на концепції об'єктів. Користувачі створюють об'єкти, такі як IP-мережі та IP-адреси, для представлення елементів, які будуть використовуватися в правилах брандмауера.
  • Бібліотеки . Об'єкти зберігаються в бібліотеках. За замовчуванням Firewall Builder постачається з двома бібліотеками об'єктів. Бібліотека під назвою User використовується для зберігання об'єктів, створених користувачем. Бібліотека лише для читання під назвою Standard містить сотні попередньо визначених об'єктів, таких як поширені служби TCP та UDP.
  • Компіляція . Після створення політики з правилами брандмауера в Firewall Builder вам потрібно скомпілювати політику. Компіляція перетворює ваші правила з синтаксису Firewall Builder на синтаксис команд, який використовується цільовою платформою брандмауера. Щоразу, коли ви змінюєте правила брандмауера, вам потрібно перекомпілювати набір правил.

Макет графічного інтерфейсу

Програма Firewall Builder складається з трьох основних панелей, показаних на знімку екрана нижче.


  • Панель об’єктів . Об’єкти в активній бібліотеці відображаються в дереві об’єктів на панелі об’єктів. Для всіх можливих типів об’єктів, які користувач може створити в бібліотеці користувача, визначено порожні папки.
  • Панель правил . Коли об’єкт політики відкривається для редагування, він відображається на панелі правил. Натискання кнопки «+» у верхній частині панелі створює нове правило.
  • Панель редактора . Подвійне клацання на об’єктах відкриває їх для редагування на панелі редактора. Зміни в полях атрибутів об’єкта набувають чинності негайно.

Панелі відкриваються динамічно залежно від того, яку дію виконує користувач. Наприклад, подвійне клацання об’єкта для його редагування відкриє панель редактора, якщо вона ще не відкрита.

Thursday, 1 May 2025

Локализация Linux.

Всем привет.

10 лет тому мне пришлось "бороться" в CentOS 7 за русскую консоль, точнее за буковки кирилицы в наборе. Как оказалось, также всегда полезно на первых шагах провести локализацию временной зоны и следом локализацию окружения Linux, чтобы было меньше сюрпризов в будущем. 

Делай раз, локализация временной зоны.

Для Ubuntu:

# timedatectl set-timezone Europe/Kyiv


Для FreeBSD:

# rm /etc/localtime

# ln -s /usr/share/zoneinfo/Europe/Kyiv /etc/localtime

# cp /usr/share/zoneinfo/Etc/GMT-2 /etc/localtime

Friday, 13 December 2024

About Ultralytics crypto miner situation.

Всем привет.

Небольшой шухер в сообществе ComfyUI. В некоторых версиях пакета ultralytics pip был обнаружен майнер криптовалют. Оригинал тревоги здесь.

Кто может пострадать?

Люди, установившие версии v8.3.41 и v8.3.42 пакета ultralytics pip на Mac и Linux. Windows пока не затронута. Анализ взломанного пакета ultralytics показал, что майнер загружается только на Mac и Linux. Скорее всего, это связано с тем, что атака была направлена на серверы, а не на обычных пользователей.

Ultralytics не является основной зависимостью ComfyUI, но он является зависимостью некоторых очень популярных пользовательских узлов, таких как ComfyUI-Impact-Pack. Одна из взломанных версий могла установиться, если вы установили новую версию некоторых узлов, которые от нее зависят. Простое обновление пользовательских узлов обычно не приводит к обновлению зависимостей, поэтому, скорее всего, пострадали только те, кто установил совершенно новую версию в то время, когда взломанные пакеты находились в рабочем состоянии.

Вы можете проверить, затронуты ли вы, обновив менеджер ComfyUI, чтобы проверить наличие этих зависимостей и предупредить себя, или вручную проверив, установлена ли у вас версия 8.3.41 или 8.3.42 с помощью: pip show ultralytics


Чем это плохо?

Скомпрометированный ultralytics загружает двоичный файл (криптомайнер) на Mac и Linux в /tmp/ultralytics_runner и запускает его на выполнение.

Friday, 4 October 2024

Лаборатория с REMnux.

Всем привет.

Форензика (Forensics) - это компьютерная криминалистика, наука о расследовании киберпреступлений, то есть прикладная наука о раскрытии преступлений, связанных с компьютерной информацией. Неотъемлемой частью форензики является исследование цифровых доказательств, использование методов поиска, получения и закрепления данных доказательств.

Когда произошел инцидент, необходимо оперативно получить ответы на следующие вопросы:

  • понять, как была реализована атака;
  • построить сценарий взлома;
  • восстановить хронологию (таймлайн) атаки;
  • собрать артефакты, оставшиеся после атаки следы, и проанализировать их;
  • предложить превентивные защитные меры, чтобы такого впредь не повторилось.

Форензика делится на следующие направления:

  • computer forensics – к ней относится все, что связано с поиском артефактов взлома на локальной машине: анализ ram, hdd, реестра, журналов ОС и т. д.;
  • network forensics – анализ сетевого трафика;
  • forensic data analysis – посвящена анализу файлов, структур данных и бинарных последовательностей, оставшихся после атаки или использовавшихся при вторжении;
  • mobile device forensics – занимается всем, что касается особенностей извлечения данных из android и ios;
  • hardware forensic – экспертиза аппаратного обеспечения и технических устройств прошивки, bios и т. д.

В задачи исследователя входит анализ скомпрометированной машины на наличие доказательств компрометации (улик). То есть, по сути, нам важно понимать, как злоумышленник проник в систему, какие уязвимости он использовал, какие учетные записи были скомпрометированы и т. д.

Важно отметить, что доказательства должны быть сохранены в исходном виде, для того чтобы впоследствии эксперты со стороны защиты не смогли заявить, что эти доказательства были подделаны или изменены.

Экспертиза взломанного хоста состоит из Статического анализа и Динамического анализа.

Статический анализ

Задачи статического анализа:

  • создать образ жесткого диска или дампа оперативной памяти;
  • выявить и восстановить удаленные файлы;
  • остатки аномальных файлов в %temp% и системных директориях;
  • собрать историю серфинга веб-браузера;
  • системные логи события авторизации;
  • аудит доступа к файлам и директориям и т. д.;
  • получить список запущенных в памяти процессов и открытых коннектов сети.

Thursday, 12 September 2024

Cканер кода SonarQube

Всем привет.

Большинство кодировщиков пишут, как им часто кажется, совершенный код. Некоторые уже используют в IDE инструменты статического анализа, такие как ESLint, которые выявляют возможности улучшения каких-то частей кода в процессе его написания. Практика хорошая, и не стоит от нее отказываться.

Сегодня будет представлен инструмент для повышения качества кода, выводящий этот процесс на новый уровень - SonarQube. Вы узнаете:

  • что такое SonarQube;
  • как установить этот инструмент на локальный компьютер;
  • как сканировать файлы проекта;
  • как провести анализ проекта в SonarQube.

В статье будет рассмотрена открытая версия для сообщества. SonarQube невероятно полезный инструмент, так что я с радостью поделюсь своими знаниями о нем.


Что такое SonarQube?

SonarQube - это платформа с открытым исходным кодом, разработанная SonarSource, для непрерывной оценки качества кода путем статического анализа.

Иначе говоря, она не выполняет код, а лишь просматривает его. Причем, можете мне поверить, делает это очень тщательно. Неудивительно, что у SonarQube довольно внушительный список клиентов и репутация одного из востребованных инструментов статического анализа кода.

Завершив сканирование кода, о чем будет рассказано далее, SonarQube формирует отчет, который можно посмотреть в GUI через браузер. Все обнаруженные проблемы представляют собой “интерактивные тикеты”, позволяющие писать к ним комментарии, делегировать их другим пользователям, открывать или закрывать и т. д.


К подробному описанию проблемы сразу же прилагается соответствующий код.



SonarQube также объясняет суть проблемы при нажатии на соответствующую ссылку “Why is this an issue?” .


Tuesday, 23 July 2024

Легкий старт з Prometheus.

Всім привіт.

Моніторинг сьогодні - фактично обов'язкова частина ІТ-інфраструктури для компанії будь-яких розмірів. Але сьогодні я не буду зупинятися на різноманітті програмного забезпечення для моніторингу, а просто покажу як легко можно дати старт такому функціоналу з одним із популярних рішень - пара на основі Prometheus плюс Grafana.


То ж щодо теорії то вам сюди, бо далі сама практика від Дениса Астахова. Піднімемо сервер Prometheus та сервер Grafana, з'єднаємо їх, та запустимо моніторинг на інші сервери.

Інсталюємо сервер Prometheus:

#!/bin/bash

#--------------------------------------------------------------------

# Script to Install Prometheus Server on Linux Ubuntu

# Tested on Ubuntu 22.04, 24.04

# Developed by Denis Astahov in 2024

#--------------------------------------------------------------------

# визначення глобальних констант

PROMETHEUS_VERSION="2.51.1"

PROMETHEUS_FOLDER_CONFIG="/etc/prometheus"

PROMETHEUS_FOLDER_TSDATA="/etc/prometheus/data"


# отримання пакету PROMETHEUS з мережі internet

cd /tmp

wget https://github.com/prometheus/prometheus/releases/download/v$PROMETHEUS_VERSION/prometheus-$PROMETHEUS_VERSION.linux-amd64.tar.gz

tar xvfz prometheus-$PROMETHEUS_VERSION.linux-amd64.tar.gz

cd prometheus-$PROMETHEUS_VERSION.linux-amd64


mv prometheus /usr/bin/

rm -rf /tmp/prometheus*


# створення теки для PROMETHEUS

mkdir -p $PROMETHEUS_FOLDER_CONFIG

mkdir -p $PROMETHEUS_FOLDER_TSDATA


# створення конфігурації для сервера PROMETHEUS

cat <<EOF> $PROMETHEUS_FOLDER_CONFIG/prometheus.yml

global:

  scrape_interval: 15s


scrape_configs:

  - job_name      : "prometheus"

    static_configs:

      - targets: ["localhost:9090"]

EOF


# визначення користувача PROMETHEUS та надання йому відповідних прав

useradd -rs /bin/false prometheus

chown prometheus:prometheus /usr/bin/prometheus

chown prometheus:prometheus $PROMETHEUS_FOLDER_CONFIG

chown prometheus:prometheus $PROMETHEUS_FOLDER_CONFIG/prometheus.yml

chown prometheus:prometheus $PROMETHEUS_FOLDER_TSDATA


# створення конфігурації PROMETHEUS як сервісу Linux

cat <<EOF> /etc/systemd/system/prometheus.service

[Unit]

Description=Prometheus Server

After=network.target


[Service]

User=prometheus

Group=prometheus

Type=simple

Restart=on-failure

ExecStart=/usr/bin/prometheus \

  --config.file       ${PROMETHEUS_FOLDER_CONFIG}/prometheus.yml \

  --storage.tsdb.path ${PROMETHEUS_FOLDER_TSDATA}


[Install]

WantedBy=multi-user.target

EOF


# запуск сервісу PROMETHEUS, перевірка його статусу, та визначення його на автозапуск

systemctl daemon-reload

systemctl start prometheus

systemctl enable prometheus

systemctl status prometheus --no-pager

prometheus --version

Wednesday, 17 July 2024

Timeline forensics.

Hi all.

One question, which is very prominent in forensics is, “When?”

In other words, time is a very important factor at which analytics is based in the process of forensics. There are many artifacts that we use in an investigation which have temporal characteristics. These characteristics allow us to build the whole picture of an incident. Moreover, timeline analysis could help when we analyze different types of evidence. Timeline analysis may be built on the base of any source that has timestamps. This could be the metadata of the filesystem, registry, event log files, log files of applications, memory, network traffic, and so on.

Certainly, the timeline is one of the most useful techniques that is applied in digital forensics. However, this is based on the analysis of particular artifacts, so it is very important to understand how to analyze the artifacts that are suppliers of timeline events. Despite the apparent simplicity of the idea underlying the timeline, in practice, it is not so easy. One of the difficulties is the large amount of data that has to be analyzed. The issue with a running system is that there are a few users and many system services, which produce a lot of events. We need to filter out such activities from normal users. The idea of a timeline is not very new. It has been around since the year 2000, when Rob Lee and some other forensic people started applying it in digital forensics. Originally, filesystems served as a source of data for the timeline. We will consider the NTFS filesystem as the most prevalent filesystem in our review. 

The timeline of the NTFS filesystem is based on the timestamps in some attributes of the filesystem objects.

Every object of the filesystem has the following timestamps:

⦁ M: This is the date of data modification

⦁ A: This is the date of data access

⦁ C: This is the date of metadata change

⦁ B: This is the date of metadata creation

Based on the analysis of this data, we can determinate when a file was created, copied, moved, and so on. The NTFS filesystem uses FILETIME as its time format in UTC. UTC is  Coordinated Universal Time. FILETIME contains a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601 (UTC). MS Windows also uses other time formats. They are the UNIX time format, DOS Date format, and SYSTEMTIME format.

Sunday, 12 May 2024

Кросс-платформенное удалённое управление в Powershell.


Всем привет.

В своей практике мы осознали, что создатели PowerShell слегка ленивы, и это хорошо. Поскольку они не хотели кодировать параметр -HostName для каждого отдельного командлета, они создали систему удалённого взаимодействия, охватывающую всю оболочку. Данная система позволяет запускать любой командлет в удалённом компьютере. На самом деле, вы даже можете запускать команды, которые имеются в самом удалённом компьютере, но при этом отсутствуют в вашем собственном, то есть вам не всегда необходимо устанавливать все административные командлеты в своей рабочей станции. Такая система удалённого взаимодействия мощная и предлагает интересные административные возможности.

Основная мысль за удалённым PowerShell

Удалённое взаимодействие PowerShell работает схожим образом с Telnet и прочими древними технологиями удалённого управления. Когда вы запускаете некую команду, она исполняется в самом удалённом компьютере - обратно в ваш компьютер приходят лишь получаемые результаты этой команды.

Удалённое взаимодействие на устройствах Windows

PowerShell применяет протокол взаимодействия с названием Web Services for Management (WSMan). WSMan работает целиком поверх HTTP или HTTPS (HTTP по умолчанию), упрощая маршрутизацию через межсетевые экраны в случае их необходимости (поскольку каждый из таких протоколов пользуется для взаимодействия единственным портом). Реализация Microsoft для WSMаn поступает в виде службы в фоновом режиме, Windows Remote Management (WinRM). WinRM по умолчанию устанавливается в устройствах Windows 10, а также в сервере 2012 и выше. По умолчанию, эти службы отключены, но запросто могут включаться индивидуально или групповой политикой.

Удалённое взаимодействие на устройствах macOS и Linux

Как вы могли догадаться, WSMan и WinRM это службы только для Windows. Поэтому, чтобы PowerShell обладал возможностями удалённого взаимодействия, его команда приняла решение что было бы лучше воспользоваться стандартном отрасли Безопасной оболочки (SSH, Secure Shell)/ SSH упрощает маршрутизацию через межсетевые экраны, в случае такой необходимости (потому как этот протокол применяет для взаимодействия единственный порт), и десятилетиями применялся профессионалами Linux. Microsoft портировал в Windows OpenSSH, а потому вы даже можете применять его для удалённого взаимодействия в Windows.

Кросс-платформенное удалённое взаимодействие

Вы уже изучили что все командлеты PowerShell в качестве своего вывода производят объекты. Когда вы выполняете некую удалённую команду, она выдаёт объекты, которые необходимо поместить в некий вид, который запросто передаётся через сетевую среду. Как оказалось, XML - отличный способ для осуществления этого, а потому PowerShell автоматически такие объекты вывода выстраивает в последовательную форму (упорядочение, serializes) в XML. Данный XML передаётся через сетевую среду и затем в вашем компьютере выполняется обратное преобразование в параллельную форму (развёртывание, deserialized) в объекты, с которыми вы можете работать внутри PowerShell.

Упорядочение и развёртывание это всего лишь некий вид преобразования формата: из объектов в XML (упорядочение) и из XML в объекты (развёртывание). Зачем вам беспокоиться относительно того как возвращается такой вывод? Поскольку такие упорядоченные и затем развёрнутые объекты это всего лишь некого рода моментальные снимки; они не обновляются сами по себе непрерывно. Например, когда вы получили определённые объекты, которые представляют тот процесс, который запущен в удалённом компьютере, то что вы получили обратно будет в точности тем, что имелось в тот конкретный момент времени, в который был выработаны эти объекты. Такие объекты, как применение памяти и использование ЦПУ не будут обновляться чтобы отражать последующие условия. Кроме того, вы не можете заставлять свои развёрнутые объекты выполнять что бы то ни было - вы не можете указывать им останавливать себя, например. 

Именно в этом состоят основные ограничения удалённого взаимодействия, однако это не мешает вам выполнять удивительные вещи. На самом деле, вы можете приказать удалённому процессу остановить себя, но для этого нужно быть сообразительным. 

Для работы удалённого взаимодействия у вас имеются два основных требования:

  • Ваш компьютер, и тот, в который вы желаете отправлять команды, оба, должны исполнять PowerShell v7.1 или последнюю версию. 
  • В идеале, оба компьютера должны быть участниками одного и того же домена или доменам с двусторонним доверием. Существует возможность получения удалённого взаимодействия для работы вне домена, однако это слишком заумно.

Saturday, 9 March 2024

Обновление версии Windows Server.

Всем привет.

Использование современной версии Windows Server позволит нам внедрять новые функции этой ОС, получить высокую безопасность и более высокую производительность. Сейчас есть два канала распространения LTSC (Long-term servicing channel) – релиз с 5-летней основной и 5-летней расширенной поддержкой и Semi-Annual Channel – версии, которые выходят гораздо чаще, примерно каждые полгода, имеют основной цикл поддержки 6 месяцев, а расширенную в течение 18 месяцев. Компании, использующие Semi-Annual канал получают возможность использовать все самые новые функции, например, контейнеры с Linux и совместную работу с облачной платформой Azure.

По представленной ниже схеме можно выбрать путь обновления («Обновление на месте») до Windows Server 2019, в зависимости от используемой на текущий момент версии. 


 Есть несколько путей обновления с предыдущих версий Windows Server:

  • «Обновление на месте» используется, если вы хотите сохранить все установленные роли, настройки и приложения. Рекомендуется сделать предварительный backup данных. Такое обновление происходит путем запуска программы установки (setup.exe) с установочного носителя в работающий системе. Вначале инсталлятор предложит вам загрузить необходимые обновления и драйвера, затем предстоит выбрать необходимую редакцию. Далее будьте внимательны! Следующий параметр выбрать «Сохранить мои данные и приложения». После нескольких перезагрузок вы получите новую ОС.
  • «Чистая установка». Полное удаление старой ОС путем установки новой ОС. Предварительно вам нужно будет сделать резервную копию данных и список установленного программного обеспечения. 
  • Миграция. Производится установка новой ОС на другом оборудовании или на виртуальной машине. Затем поочередно переносятся все роли, работающие на старом сервере и данные. Для этого шага рекомендуется иметь предварительный план миграции. 
  • Обновление кластера. При выборе этого пути, вам будет нужно последовательно обновить все узлы кластера на новую ОС, причем весь процесс происходит без остановки сервисов, т.е. этот вариант позволяет избежать простоев. Как и с миграцией у вас должен быть четкий план действий.  
  • Преобразование лицензии. Выполняется повышение редакции. Например, сервер под управлением Windows Server 2016 Standard можно повысить до Server 2016 Datacenter. Внимание! Преобразование лицензии работает только в одну сторону, в сторону повышения редакции. Для этого используется встроенная утилита DISM и соответствующий ключ продукта. Запускаем от имени Администратора PowerShell и последовательно вводим команды:

dism /Online /Get-CurrentEdition //в ответ увидим установленную редакцию

dism /Online /Get-TargetEditions //покажет до какой редакции можно обновиться

И чтобы перейти на другую редакцию нужна команда: 

DISM.exe /Online /Set-Edition:ServerDatacenter /AcceptEula /ProductKey:<product_key>

Где ServerDatacenter – нужная редакция, AcceptEula – согласие с лицензией, <product_key> - ваш ключ продукта. После применения команды, сервер должен быть перезагружен.  

Для активации компьютеров в вашей сети может использоваться ключ многократной установки (Multiple Activation Key) или KMS (Key Management Service). KMS начинает работать, если счетчик наберет от 25 клиентских (5 для серверных) запросов на активацию. Кроме этого, необходимо чтобы компьютеры минимум раз в 180 miдней могли подключиться к KMS серверу. Иначе активация «слетает» и Windows переходит в ознакомительный режим. Ключ MAK активирует систему один раз, используя сервера активаций Майкрософт:

slmgr /ipk <product_key>

cscript c:\windows\system32\slmgr.vbs /skms kms03.forza.com:1688

cscript c:\windows\system32\slmgr.vbs /ato

Удачи.

Sunday, 3 March 2024

Работа с сетью в командной строке Windows, #4.

Всем привет.

Продолжаем рассматривать сетевые утилиты командной строки Windows, сегодня у нас в фокусе NSLOOKUP, PATHPING, PING, ROUTE, TELNET и  TRACERT.

Утилита NSLOOKUP

    Утилита NSLOOKUP присутствует во всех версиях операционных систем Windows и является классическим средством диагностики сетевых проблем, связанных с разрешением доменных имен в IP-адреса. NSLOOKUP предоставляет пользователю возможность просмотра базы данных DNS-сервера и построения определенные запросов, для поиска нужных ресурсов DNS. Практически, утилита выполняет функции службы DNS-клиент в командной строке Windows. 

После запуска, утилита переходит в режим ожидания ввода. Ввод символа ? или команды help позволяет получить подсказку по использованию утилиты.

Примеры использования:

nslookup - запуск утилиты

google.com. - отобразить IP-адрес (а) узла с именем google.com . Точка в конце имени желательна для минимизации числа запросов на разрешение имени к серверу DNS. Если завершающей точки нет, то NSLOOKUP сначала попытается разрешить указанное имя как часть доменного имя компьютера, на котором она запущена. 

server 8.8.4.4 - установить в качестве сервера имен DNS-сервер Google с IP-адресом 8.8.4.4 

google.com. - повторить запрос с использованием разрешения имени DNS-сервером Google.

set type=MX - установить тип записи MX

google.com. - отобразить MX-запись для домена google.com - В примере узел обмена почтой для домена - mx.google.com

mx.google.com. - отобразить информацию по mx.google.com

set type=A - установить тип записи в A 

mx.google.com - получить IP-адреса для mx.google.com .

exit - завершить работу с nslookup


Возможно использование утилиты NSLOOKUP не в интерактивном режиме:

nslookup odnoklassniki.ru - определить IP-адрес узла odnokassniki.ru с использованием сервера DNS, заданного настройками сетевого подключения.

nslookup odnoklassniki.ru 8.8.8.8 - определить IP-адрес узла odnokassniki.ru с использованием DNS-сервера 8.8.8.8 (публичный DNS-сервер Google) 

nslookup 8.8.8.8 - определить имя узла, IP-адрес которого равен 8.8.8.8 с использованием DNS-сервера, заданного настройками сетевого подключения. 

Saturday, 3 February 2024

Шпаргалка - Linux та домен AD.


Всім привіт.

Ще одна шпаргалка щодо введення сервера Linux в домен AD. Перед самим введенням сервер  Linux (Ubuntu) повинен відповідати наступним вимогам:

1) підтримка FQDN

2) підтримка NTP синхронізації

3) правильно підключені репозіторії

4) локальна облікова типу SuperAdmin з правами Sudo для адміністратора який буде виконувати безпосередньо введення хоста в AD.


Ок, далі виконуємо наш план по кроках.

1) Заміна імені хоста згідно вимог FQDN:

hostname 

sudo hostnamectl set-hostname newbuzzy.forza.com


2) Налаштування NTP синхронізації:

sudo timedatectl set-timezone Europe/Kiev

sudo sed -i "s/^#NTP=/NTP=sd01-ntp-forza.com sd02-ntp-forza.com/g" /etc/systemd/timesyncd.conf

sudo sed -i "s/^#FallbackNTP=ntp.ubuntu.com/FallbackNTP=192.168.10.9 192.168.10.8/g" /etc/systemd/timesyncd.conf

sudo systemctl restart systemd-timesyncd.service

timedatectl timesync-status

-АБО-

timedatectl status

timedatectl set-ntp on

Friday, 18 August 2023

Как завершить процесс в Linux.

Всем привет.

Процесс — это программа в Linux, которая выполняется в отдельном адресном пространстве. При этом GNU / Linux — это многозадачная система, которая одновременно выполняет множество процессов, принадлежащих одному или нескольким пользователям. К сожалению, бывает, что некоторые приложения могут перестать отвечать на запросы пользователя или других приложений. Тогда приходиться либо перезагружать систему, либо выполнять завершение отдельного процесса.

Прежде всего чтобы завершить процесс, Вам нужно знать PID или его имя. При каждом новом запуске программы автоматически генерируется уникальный PID для соответствующего процесса. Тогда как его имя остается одним и тем же.

Первый процесс, который запускается при загрузке системы Linux — это systemd или init, которые являются основными, поэтому их невозможно уничтожить даже случайно. В большинстве случаев в операционной системе этим процессам присваивается значение PID равное 1.

Чтобы увидеть все запущенные процессы и соответствующие им значения PID — выполните следующую команду:

ps -A


Чтобы узнать идентификатор конкретного процесса — используя его имя. Для этого Вы можете применить следующую команду (в качестве примера мы использовали имя mysqld):

pidof mysqld

 

Для этой же цели Вы можете ввести комбинацию команд, приведенную ниже (при этом она выводит гораздо больше информации о процессе):

ps aux | grep mysqld

 

Третий способ вывода идентификатора процесса предполагает использование команды pgrep:

pgrep mysql


Команды kill, pkill и killall.

Команда kill — это встроенный инструмент ОС семейства Linux, который используется для завершения процессов вручную. Она посылает сигнал выбранному процессу, который и завершает его. По умолчанию команда kill посылает сигнал SIGTERM запущенному процессу. Это действие обычно останавливает работающие процессы. Если Вы хотите остановить процесс — просто укажите его идентификатор PID в переменной ProcessID.

Синтаксис команды kill выглядит следующим образом:

kill [-s sigspec | -n signum | -sigspec] pid

 

При этом элементы команды имеют следующее значение:

  • sigspec — посылает сигнал процессу, названному по спецификации задания jobspec;
  • signum — посылает сигнал процессу, названному по идентификатору процесса PID.

Существует семь базовых сигналов, которые Вы можете послать, используя команду kill:

  • SIGHUP(1) — сигнал для сообщения о потере соединения с управляющим терминалом пользователя;
  • SIGINT(2) — сигнал о прерывании процесса с клавиатуры (обычно при нажатии комбинации клавиш Ctrl+C);
  • SIGQUIT(3) — сигнал, аналогичный SIGINT, но при этом вызывается символом QUIT, и при завершении процесса производит дамп ядра;
  • SIGABRT(6) — сигнал, посылаемый процессом самому себе при выполнении аварийной остановки с выполнением дампа памяти в случае невозможности дальнейшего продолжения работы программы;
  • SIGKILL(9) — сигнал используется для немедленного завершения программы (не может быть обработан, проигнорирован или заблокирован);
  • SIGTERM(15) — сигнал для завершения работы программы, который можно блокировать, обрабатывать и игнорировать (используется как сигнал по умолчанию);
  • SIGSTOP(17,19,23) — сигнал для приостановки процесса (процесс не возобновится автоматически, пока Вы не отправите ему сигнал SIGCONT — позволяет приостановить процесс, не завершая его).

Saturday, 22 July 2023

Invalid arithmetic operator в Zabbix.


Всем привет.

SSL (TLS) сертификаты стали важным компонентом современной инфраструктуры, поэтому администратору нужно следить за тем, чтобы они не истекали и вовремя их обновлять. Удобно отслеживать срок действия SSL сертификатов на ваших сайтах с помощью системы мониторинга Zabbix.

В ранних версиях Zabbix для мониторинга SSL сертификатов приходилось использовать консольные скрипты, которые передают значения в Zabbix через UserParameter. В Zabbix Agent 2 появись возможность получения информации о сертификате с помощью встроенного плагина WebCertificate. 

Вот здесь рассмотрены оба способа мониторинга срока действия SSL.

По второму способу скажу сразу что скрипт автора /usr/lib/zabbix/externalscripts/sslcert_expiration.sh однозначно рабочий:

#!/bin/bash

data=`echo | openssl s_client -servername $1 -connect $1:${2:-443} 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`

ssldate=`date -d "${data}" '+%s'`

nowdate=`date '+%s'`

diffdate="$((${ssldate}-${nowdate}))"

echo $((${diffdate}/86400))

Кстати им же можно проверять сертификаты и на сереверах в локальной сети предприятия.

Но есть нюас.) В Linux без них никуда. При его тестировании на моем сервере Zabbix выскочил глюк на определении diffdate, что ему не делал скрипт тут падал в ошибку: «syntax error: invalid arithmetic operator (error token is «.

Решил я прибегнуть к помощи ChatGPT, сейчас это модно. Далее приведу варианты его решения которые он мне предлагал вчера вечером. Показываю только то те строки где он предлагал изменить в исходном коде для устранения ошибки:

1)

data=$(echo | openssl s_client -servername "$1" -connect "$1":${2:-443} 2>/dev/null | openssl x509 -noout -enddate | awk -F '=' '{print $2}')

2)

diffdate=$((`date -d "$ssldate" '+%s'`- `date -d "$nowdate" '+%s'`))

3)

# Using Python to calculate the difference in seconds

diffdate=$(python -c "from datetime import datetime; print(int((datetime.strptime('$data', '%b %d %H:%M:%S %Y %Z') - datetime.now()).total_seconds()))")

4)

# Retrieve the SSL certificate end date

data=$(echo | openssl s_client -servername "$1" -connect "$1":${2:-443} 2>/dev/null | openssl x509 -noout -dates | grep 'notAfter' | cut -d '=' -f 2)

5)

# Calculate the difference in seconds using 'bc' command

diffdate=$(echo "$ssldate - $nowdate" | bc)


Проверка решений своим поиском по Google привела к тем же вариантам, так что ChatGPT не соврал. Но увы, ни один из способов к успеху не привел. Видно хорошо был сформатирован код моего Zabbix appliance.

Надеюсь вам повезет больше. Удачи.

Thursday, 22 June 2023

GUI для Stable Diffusion.

Всем привет.

Уже полгода как пользователи Интернет-а плотно используют ИИ для генерации изображений на любой манер.  Нейронных сетей для этого десятки и больше, но выгодно отличается среди них Stable Diffusion  прежде всего тем что она бесплатная. Она имеет не просто тарифный план с нулевой ценой, а она еще с открытым исходным кодом, т.е. этакая Linux среди нейронок.

Таким образом на данный момент я не вижу смысла искать что-то еще. Работать с этой сетью хорошо помогает интерфейс (UI) AUTOMATIC1111. Авторы UI постарались  втиснуть в него всю функциональность  Stable Diffusion. Он имеет возможность установки на ваш ПК, но вам будет нужна видеокарта NVIDIA так как нейронка использует ее GPU. Если NVIDIA у вас нет, то можно по быстрому развернуть AUTOMATIC1111 в Google Colab где вы будете ограничены размером вашего Google Drive (15 Gb) и ресурсами вашей онлайн-сессии. В yоutube полно роликов как это сделать за пару минут, с той лишь разницей что алгоритм установки может меняться визуально.

Место на Google Drive может быть критично если вам захочется использовать более одной модели в Stable Diffusion, потому как каждая из них весит от 2 Гб и больше.

Работая с Stable Diffusion в Colab следует отслеживать уровень используемых онлайн ресурсов CPU,RAM,GPU, а также время от времени сам Colab любит проверять вас popup сообщением что вы не бот.

Есть еще один UI для Stable Diffusion который называется ComfyUI. Благодара концепции потоков он более нагляден для всего процесса генерации изображений, хотя по началу может вас испугать. Но поверьте что осваивать его просто.  Требования к ресурсам у него те же. Он также имеет вариант развертывания в Colab, но не все в нем  автоматизировано до клика мышкой, поэтому следует заранее определиться какие модели вы хотите использовать. Благодаря нодовой структуре в ComfyUI можно увидеть промежуточные результаты и настроить потоки (workflows) на одновременную генерацию и обработку изображений по разным параметрам и условиям.


В тоже время есть онлайн ресурсы (Lexica, Playground) которые позволяют вам заниматься со Stable Diffusion без разворачивания какого либо кода у себя. В некоторых случаях вы получите почти все возможности Stable Diffusion с ограничением то ли на максимальное разрешение изображения в результате то ли на их количество за день.

Friday, 10 March 2023

Терминальный мультиплексор tmux.

Всем привет.

В мире Linux bash процессы, которые вы запускаете из командной строки, привязаны к вашему активному пользовательскому сеансу. Для удобства понимания вы можете думать о каждой команде, которую вы вводите, как о небольшом приложении с собственным значком на панели задач Windows. Если ваш сеанс bash завершается по какой ­либо причине, ваши процессы прекращаются.

По этой причине были изобретены терминальные мультиплексоры. Самый лучший терминальный мультиплексор в мире называется tmux. С ним вы попадаете в своего рода виртуальную терминальную среду, работающую в фоновом режиме. Вы можете выйти из сеанса tmux, закрыть свой терминал, выйти из системы, снова войти в систему, открыть новый терминал и снова подключиться к тому же сеансу tmux. Кроме того, tmux имеет множество других замечательных функций, которые я рекомендую вам изучить за рамками этого поста. 

Мне нравится tmux и использую его по двум основным причинам:

  • возможность сохранить сеанс, выйти из системы, а затем вернуться к тому же сеансу;
  • возможность совместной работы и совместного использования одного интерактивного терминала разными пользователями.

Как вы, вероятно, знаете, для обработки некоторых команд требуется много времени. У кого есть лишнее время ждать? Вместо этого вы можете запустить свою «долгоиграющую» команду в одном окне терминала, а затем открыть другое окно, чтобы заняться другими делами. Вы можете считать это аналогом нескольких вкладок в одном окне браузера, но, вероятно, будет лучше, если я покажу вам пример терминала. Откройте терминал в вашей виртуальной машине Ubuntu и введите tmux:


Пусть вас не смущает строка состояния на этом снимке экрана. Самая важная вещь, на которую следует обратить внимание, – это лента внизу слева со словом bash (или zsh) и числом 0. В языке tmux это называется окном, и все окна имеют числовой идентификатор, начинающийся с 0, и заголовок текущего запущенного процесса, которым по умолчанию является bash. Переименовать это окно легко, если вы знаете команды tmux.

Friday, 24 February 2023

Не виключайте ваш ПК.

Привіт всім.

Можу вас запевнити що людина може дуже довго дивитися на три речі: на те як горить вогонь, на те як біжить ріка, і на те як... оновлюється Windows). Не згодні зі мною?

А ось на таке повідомлення яке висить на екрані вашого ПК вже понад двадцять хвилин зможете?


Особливо тут дратує цифра 100. До речі якщо читати повідомлення буквально то там є вимога "НЕ ВИКЛЮЧАЙТЕ ВАШ ПК", але це не значить що його не можно перезавантажувати.)) Іноді ребут йде йому на користь, але це вже ваш персональний ризик.

Щасти.

Wednesday, 15 February 2023

Конвертация HyperV в VMware.

Всем привет.

Конвертация виртуальной машины Linux (Centos/Redhat) с помощью VMware Сonverter Standalone с HyperV на VMware привносит мелкий сюрприз - первая загрузка новой машины вываливается в черный экран с приглашением dracut.

Для исправления этого надо разово выполнить три действия:

1) после конвертации следует загрузиться в режиме reсovery (обычно это последняя строка в меню загрузчика). Далее в терминале выполнить:

sudo dracut --force --regenerate-all

2) далее следует изменить настройки сетевого интерфейса по пути 

/etc/sysconfig/network-scripts/

Обычно это файлик ifcfg-eth0 где достаточно поменять значение параметра DEVICE. Если такого параметра нет, то добавьте его. Чтобы знать на что менять просто выполните команду ip ad и вы увидите ваш новый интерефейс типа ens192 (или ens160) без IP-адреса. Тогда ваша строка будет как DEVICE=ens192.

Также еcли в файле ifcfg-eth0 есть параметр HWADDR то его тоже следует обновить, это МАС нового интерфейса.

3) пускаем Linux на перезагрузку и уже в нормальном режиме выполняем:

sudo dracut --force

Готово.

Tuesday, 27 December 2022

Тестирование инфраструктуры с Testinfra #2.

Всем привет.

Усвоив идею тестирования на Testinfra и переориентировав ее для проверки системы, можно добиться очень многого. Автоматизация запуска тестов в ходе разработки приложений или даже написания и выполнения тестов для существующей инфраструктуры - два прекрасных способа упростить рутинные операции, которые могут вызвать ошибки. Рytest и Testinfra - отличные проекты, начать использовать их очень просто, к тому же при необходимости они легко расширяются. Самое естественное начало разработки проверочных тестов - во время создания самой инфраструктуры. Любое усовершенствование требует нового теста. 

Сегодня погоняем пару теcтов через Testinfra.

Вам понадобится установить web-сервер и запустить его на порту 80 для выдачи статической стартовой страницы. По мере достижения прогресса мы будем добавлять новые тесты. Неотъемлемой составляющей написания тестов является осознание сбоев, так что смоделируем несколько проблем, на примере которых будем разбираться, что нужно исправить.

На свежем сервере Ubuntu начните с установки пакета Nginx:

$apt install nginx

Создайте новый файл теста test_webserver.py, в который мы будем постепенно

добавлять тесты:

def test_nginx_is_installed(host):

assert host.package('nginx').is_installed

Сделаем вывод pytest лаконичнее с помощью флага -q, чтобы сосредоточить свое внимание на сбоях. Удаленный сервер называется node4, для подключения к нему используется SSH. Вот команда для запуска первого теста:

(validate) $ pytest -q --hosts='ssh://node4' test_webserver.py

1 passed in 1.44 seconds

Отлично! Необходимо, чтобы веб-сервер был запущен и работал, так что добавляем новый тест для проверки этого поведения:

def test_nginx_is_running(host):

assert host.service('nginx').is_running


Повторный запуск теста, казалось бы, должен опять пройти успешно:

(validate) $ pytest -q --hosts='ssh://node4' test_webserver.py

.F

= FAILURES ===================================

_____________________ test_nginx_is_running[ssh://node4] ______________________

host = <testinfra.host.Host object at 0x7f629bf1d668>

def test_nginx_is_running(host):

> assert host.service('nginx').is_running

E AssertionError: assert False

E + where False = <service nginx>.is_running

E + where <service nginx> = <class 'SystemdService'>('nginx')

test_webserver.py:7: AssertionError

1 failed, 1 passed in 2.45 seconds

Sunday, 25 December 2022

Тестирование инфраструктуры с Testinfra #1.

Всем привет.

Создание модульных тестов для тестирования инфраструктуры - замечательная идея. Главное найти подхоящий инструмент с низким порогом вхождения. Я таких знаю два - это Testinfra  (Python) и Pester (Powershell). Разумеется оба бесплатны, но более простым для старта я считаю первый. Так что сегодня будет Testinfra.

С проектом Testinfra мы можем качественно улучшить наши приложения, которые мы используем в промышленной эксплуатации. Давайте выполним подключение к разным хостам и выполним несколько проверочных тестов.

Пожалуй начнем. Создайте новую виртуальную среду и активируйте ее:

$ python3 -m venv validator

$ source validator/bin/activate

Установите  pytest:

(validator) $ pip3 install pytest

Установите testinfra:

(validator) $ pip3 install pytest-testinfra

Установите paramiko:

(validator) $ pip3 install paramiko

Фикстуры pytest предоставляют всю тестовую функциональность проекта Testinfra.  Чтобы извлечь пользу из этого, вам необходимо правильно указать тип соединения. Поскольку  существуют различные типы соединений прикладных частей, то, если соединение не указано непосредственно, Testinfra использует определенные типы по умолчанию. Лучше указывать тип соединения явным образом в командной строке.

Вот список поддерживаемых Testinfra соединений на сегодня:

-local

$ py.test --sudo test_myinfra.py

-Paramiko (SSH-реализация на Python)

$ py.test --ssh-config=/path/to/ssh_config --hosts=server

-Docker;

$ py.test --hosts='docker://[user@]container_id_or_name'

-SSH;

$ py.test --ssh-config=/path/to/ssh_config --hosts='ssh://server'

-Podman;

$ py.test --hosts='podman://[user@]container_id_or_name'

-Salt;

$ py.test --hosts='salt://*'

-Ansible;

$ py.test --hosts='ansible://all' # tests all inventory hosts

-Kubernetes (через утилиту kubectl);

$ py.test --hosts='kubectl://mypod-a1b2c3'

-OpenShift;

$ py.test --hosts='openshift://mypod-a1b2c3'

-WinRM;

$ py.test --hosts='winrm://vagrant@127.0.0.1:2200?no_ssl=true&no_verify_ssl=true'

-LXC/LXD

$ py.test --hosts='lxc://container_name'

Версія на друк

Популярне