🤔 Подготовили #дайджест бесплатных курсов по основам разных технологий
⭕ Основы Linux. Курс основан на книге "Фундаментальные основы Linux". Оригинал: Linux Fundamentals.
⭕ GIT Training. Изучите основы GIT: системе контроля версий, настройка GIT, создание веток и репозиториев, отслеживание файлов, GitHub и многое другое.
⭕ Базовый DevOps. Первый шаг к серьезному обучению и сможете чётко определиться с направлением ваших интересов.
⭕ Основы Docker. Научитесь использовать контейнеры, создадите свой первый контейнер Docker. Узнаете, как запускать контейнеры в рабочей среде и решать проблемы оркестрации, такие как high availability, service discovery и reconciliation.
⭕ Введение в Kubernetes. Разберетесь в управлении жизненным циклом приложений, установке, конфигурации и валидации, сетевом взаимодействии, планировании, безопасности, создании и обслуживании кластеров.
⭕ Основы Linux. Курс основан на книге "Фундаментальные основы Linux". Оригинал: Linux Fundamentals.
⭕ GIT Training. Изучите основы GIT: системе контроля версий, настройка GIT, создание веток и репозиториев, отслеживание файлов, GitHub и многое другое.
⭕ Базовый DevOps. Первый шаг к серьезному обучению и сможете чётко определиться с направлением ваших интересов.
⭕ Основы Docker. Научитесь использовать контейнеры, создадите свой первый контейнер Docker. Узнаете, как запускать контейнеры в рабочей среде и решать проблемы оркестрации, такие как high availability, service discovery и reconciliation.
⭕ Введение в Kubernetes. Разберетесь в управлении жизненным циклом приложений, установке, конфигурации и валидации, сетевом взаимодействии, планировании, безопасности, создании и обслуживании кластеров.
👍9👏6❤4🤩4🔥2
💪🔥 Экспорт GCP ресурсов в формат Terraform
У инструмента gcloud есть фича, которая может экспортировать все, что есть в GCP прямо в HCL. К тому же, генерирует terraform import команды, что тоже очень удобно:
gcloud beta resource-config bulk-export --project=PROJECT_ID --resource-format=terraform
Эта штука в beta, не поддерживает 100% ресурсов, например, не может пока экспортировать Cloud Functions, но полностью может потягаться с terraformer.
Читать
#туториал
У инструмента gcloud есть фича, которая может экспортировать все, что есть в GCP прямо в HCL. К тому же, генерирует terraform import команды, что тоже очень удобно:
gcloud beta resource-config bulk-export --project=PROJECT_ID --resource-format=terraform
Эта штука в beta, не поддерживает 100% ресурсов, например, не может пока экспортировать Cloud Functions, но полностью может потягаться с terraformer.
Читать
#туториал
👍7❤4
🔪🔪 sos report — швейцарский нож для диагностических инструментов
Команда sosreport написана на Python и предназначена для сбора всесторонних диагностических данных из системы Linux.
Установка
OL6 и OL7
sudo yum install sos
OL8 и OL9
sudo dnf install sos
Выполнение
Ниже приведены команды, которые гарантируют, что мы получим все файлы журнала из /var/log, а также все данные sar. Несмотря на то, что команды различаются в некоторых версиях OL, собранные данные одинаковы.
OL6 и OL7
sudo sosreport --batch --all-logs -k sar.all_sar=on
OL8
sudo sos report --batch --all-logs -k sar.all_sar=on
Параметр --batch позволяет запускать sosreport без дополнительного ввода с клавиатуры.
--all-logs гарантирует, что мы получим все файлы из /var/log.
-ksar.all_sat=on указывает sosreport собирать все файлы sar в /var/log/sa, а не только за последние 14 дней.
OL9
sudo sos report --batch --all-logs -e sar -k sar.all_sar=on
Опция -e sar снова включает плагин sar. По умолчанию в OL9 он отключен.
Подробнее
#гайд
Команда sosreport написана на Python и предназначена для сбора всесторонних диагностических данных из системы Linux.
Установка
OL6 и OL7
sudo yum install sos
OL8 и OL9
sudo dnf install sos
Выполнение
Ниже приведены команды, которые гарантируют, что мы получим все файлы журнала из /var/log, а также все данные sar. Несмотря на то, что команды различаются в некоторых версиях OL, собранные данные одинаковы.
OL6 и OL7
sudo sosreport --batch --all-logs -k sar.all_sar=on
OL8
sudo sos report --batch --all-logs -k sar.all_sar=on
Параметр --batch позволяет запускать sosreport без дополнительного ввода с клавиатуры.
--all-logs гарантирует, что мы получим все файлы из /var/log.
-ksar.all_sat=on указывает sosreport собирать все файлы sar в /var/log/sa, а не только за последние 14 дней.
OL9
sudo sos report --batch --all-logs -e sar -k sar.all_sar=on
Опция -e sar снова включает плагин sar. По умолчанию в OL9 он отключен.
Подробнее
#гайд
❤5🔥1
🐧🐧 Создание micro-дистрибутива Linux
В статье пойдет разговор о создании крошечного дистрибутива Linux с нуля.
Вы самостоятельно соберете ядро и напишите ПО для упаковки дистрибутива.
Все будет происходить на архитектуре RISC-V, в частности на виртуальной машине QEMU riscv64. В этой статье мало того, что относится конкретно к этой архитектуре, так что вы можете выполнить почти идентичное упражнение для других архитектур, таких как x86.
Полезный опыт для понимания, как работает Linux, его архитектура и все «подкапотное пространство».
Читать статью
#туториал
В статье пойдет разговор о создании крошечного дистрибутива Linux с нуля.
Вы самостоятельно соберете ядро и напишите ПО для упаковки дистрибутива.
Все будет происходить на архитектуре RISC-V, в частности на виртуальной машине QEMU riscv64. В этой статье мало того, что относится конкретно к этой архитектуре, так что вы можете выполнить почти идентичное упражнение для других архитектур, таких как x86.
Полезный опыт для понимания, как работает Linux, его архитектура и все «подкапотное пространство».
Читать статью
#туториал
👍11❤2
😱😱 Более 10 тыс. сетевых устройств Cisco взломаны из-за уязвимости нулевого дня
Более десятка тысяч сетевых устройств Cisco оказались взломанными из-за ошибки нулевого дня в операционной системе Cisco IOS XE. Хакеры подселили в эти устройства различных вредоносов.
В число пострадавших устройств вошли корпоративные и промышленные роутеры, точки доступа, беспроводные контроллеры и многое другое.
Злоумышленники воспользовались критической уязвимостью (CVE-2023-20198), которая затрагивает все устройства под управлением Cisco IOS XE при условии, что включён Web UI и режим HTTP/HTTPS-сервера.
Уязвимость позволяет удаленному злоумышленнику, не прошедшему авторизацию, создать учетную запись в уязвимой системе с уровнем привилегий 15. Затем злоумышленник может использовать эту учетную запись для получения контроля над уязвимой системой. Иными словами, любой желающий может воспользоваться этой уязвимостью для получения административных привилегий в системе.
В Cisco рекомендуют администраторам временно - до выпуска патча - деактивировать функцию HTTP/HTTPS-сервера и внимательно отслеживать любые подозрительные события и свежесозданные аккаунты. Они вполне могут быть признаками текущей атаки.
#новость
Более десятка тысяч сетевых устройств Cisco оказались взломанными из-за ошибки нулевого дня в операционной системе Cisco IOS XE. Хакеры подселили в эти устройства различных вредоносов.
В число пострадавших устройств вошли корпоративные и промышленные роутеры, точки доступа, беспроводные контроллеры и многое другое.
Злоумышленники воспользовались критической уязвимостью (CVE-2023-20198), которая затрагивает все устройства под управлением Cisco IOS XE при условии, что включён Web UI и режим HTTP/HTTPS-сервера.
Уязвимость позволяет удаленному злоумышленнику, не прошедшему авторизацию, создать учетную запись в уязвимой системе с уровнем привилегий 15. Затем злоумышленник может использовать эту учетную запись для получения контроля над уязвимой системой. Иными словами, любой желающий может воспользоваться этой уязвимостью для получения административных привилегий в системе.
В Cisco рекомендуют администраторам временно - до выпуска патча - деактивировать функцию HTTP/HTTPS-сервера и внимательно отслеживать любые подозрительные события и свежесозданные аккаунты. Они вполне могут быть признаками текущей атаки.
#новость
❤7💯2👍1👾1
🤔 Держите #дайджест утилит сканирования Linux на уязвимости и вредоносы
♻️ chkrootkit — это инструмент для локальной проверки на наличие признаков руткита
♻️ ClamAV — опенсорсный инструмент для обнаружения троянов, вирусов, вредоносных программ и других вредоносных угроз
♻️ REMnux — это инструментарий Linux для реверс-инжиниринга и анализа вредоносного ПО
♻️ YARA — призван помочь исследователям вредоносных программ идентифицировать и классифицировать образцы вредоносных программ
♻️ Rkhunter (Rootkit Hunter) — это инструмент на базе Unix, который сканирует на наличие руткитов, бэкдоров и возможных локальных эксплойтов
♻️ chkrootkit — это инструмент для локальной проверки на наличие признаков руткита
♻️ ClamAV — опенсорсный инструмент для обнаружения троянов, вирусов, вредоносных программ и других вредоносных угроз
♻️ REMnux — это инструментарий Linux для реверс-инжиниринга и анализа вредоносного ПО
♻️ YARA — призван помочь исследователям вредоносных программ идентифицировать и классифицировать образцы вредоносных программ
♻️ Rkhunter (Rootkit Hunter) — это инструмент на базе Unix, который сканирует на наличие руткитов, бэкдоров и возможных локальных эксплойтов
👍8❤1🥰1
#вопросы_с_собеседований
a=5; true | { true && a=10; } чему будет равно a?
Ответ будет 5. Потому что каждая команда конвейера исполняется в отдельной подоболочке
kannabis@fuse:~$ a=5; true | { true && a=10; echo $a; }
10
kannabis@fuse:~$ echo $a
5
a=5; true | { true && a=10; } чему будет равно a?
❤8🥰1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤9
🔳🔥👆 Kube-Prometheus-Top
Инструмент на Python, который мониторит ноды, поды, контейнеры Kubernetes и ресурсы PVC на терминале с помощью Prometheus metircs.
Показатели ресурсов, предоставляемые API-интерфейсами K8s, очень ограничены по сравнению с тем, что использует Prometheus.
Этот инструмент использует Prometheus в качестве источника данных для метрик, чтобы отображать всю необходимую информацию прямо на терминале.
Установка
Совместимо с Python 3.6+
в PyPi
pip3 install kptop --upgrade
Как использовать, какие переменные и ключи для консоли можно узнать тут
#гайд
Инструмент на Python, который мониторит ноды, поды, контейнеры Kubernetes и ресурсы PVC на терминале с помощью Prometheus metircs.
Показатели ресурсов, предоставляемые API-интерфейсами K8s, очень ограничены по сравнению с тем, что использует Prometheus.
Этот инструмент использует Prometheus в качестве источника данных для метрик, чтобы отображать всю необходимую информацию прямо на терминале.
Установка
Совместимо с Python 3.6+
в PyPi
pip3 install kptop --upgrade
Как использовать, какие переменные и ключи для консоли можно узнать тут
#гайд
❤5👍3🥰1
❓🤷♀️ Чем отличается команда rm от unlink?
Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.
Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.
У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.
# unlink /tmp/hardlink
# unlink /tmp/file
Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.
Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.
Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.
Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:
rm -f test.txt
И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:
unlink test.txt
получим ошибку:
unlink: cannot unlink 'test.txt': No such file or directory
То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.
С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.
Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root:
chattr +i test.txt
chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).
Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».
Подытожим. Для большинства повседневных задач конечно rm мастхев, но если ты пишете софт для каких-то критичных систем, стоит не упускать из виду unlink.
#гайд
Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.
Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.
У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.
# unlink /tmp/hardlink
# unlink /tmp/file
Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.
Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.
Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.
Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:
rm -f test.txt
И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:
unlink test.txt
получим ошибку:
unlink: cannot unlink 'test.txt': No such file or directory
То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.
С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.
Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root:
chattr +i test.txt
chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).
Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».
Подытожим. Для большинства повседневных задач конечно rm мастхев, но если ты пишете софт для каких-то критичных систем, стоит не упускать из виду unlink.
#гайд
👍24❤4👏2
🪛🔧 Отладка сбоя ядра
Отладка ошибки в ядре может оказаться сложной задачей.
Допустим, ошибка кроется в подсистеме управления памятью, в slub allocator-е или page allocator-е.
В зависимости от инструментов отладки эти инструменты могут обращаться к подсистеме, поскольку им самим необходимо выделить память, чтобы показать вам интересующую трассировку и, следовательно, они могут столкнуться с той же самой ошибкой и не создавать никакого вывода вообще.
Приводится пример файла сбоя. В нем не ошибка ядра, а ошибка стороннего модуля ядра, находящегося out-of-tree:
kannabis@fuse:~$ file 202310190528/dump.202310190528
202310190528/dump.202310190528: Flattened kdump compressed dump v6, system Linux, node debian11, release 5.10.0-26-amd64, version #1 SMP Debian 5.10.197-1 (2023-09-29), machine x86_64, domain (none)
Подробный разбор и отладка ждет вас тут
#туториал
Отладка ошибки в ядре может оказаться сложной задачей.
Допустим, ошибка кроется в подсистеме управления памятью, в slub allocator-е или page allocator-е.
В зависимости от инструментов отладки эти инструменты могут обращаться к подсистеме, поскольку им самим необходимо выделить память, чтобы показать вам интересующую трассировку и, следовательно, они могут столкнуться с той же самой ошибкой и не создавать никакого вывода вообще.
Приводится пример файла сбоя. В нем не ошибка ядра, а ошибка стороннего модуля ядра, находящегося out-of-tree:
kannabis@fuse:~$ file 202310190528/dump.202310190528
202310190528/dump.202310190528: Flattened kdump compressed dump v6, system Linux, node debian11, release 5.10.0-26-amd64, version #1 SMP Debian 5.10.197-1 (2023-09-29), machine x86_64, domain (none)
Подробный разбор и отладка ждет вас тут
#туториал
👍3❤1🔥1
#вопросы_с_собеса
Что такое iowait и почему он может появляться?
iowait это показатель, демонстрирующий процентное соотношение времени процессора, которое он потратил на ожидание ввода-вывода.
Высокий показатель может сказать о том, что система ограничена возможностями дисковой памяти. Выполняется много операций ввода-вывода. Это замедляет систему. Конкретно это обычно означает что блочные устройства работают медленно или они переполнены.
Замеряется в количестве потоков, которые ждут работы.
Что такое iowait и почему он может появляться?
🔥13👍2🥰1
🧑🎓😎 Еще одна серия с мероприятия OFFZONE 2023
Здесь собираются безопасники, разработчики, инженеры, исследователи, преподаватели и студенты из десятков стран мира. В центре внимания — только хардкорный технический контент по кибербезопасности.
Современная автоматизация обратной разработки в декомпиляторе HexRays
В своем докладе спикер кратко расскажет про существующие инструменты автоматизации обратной разработки, а также представит новые
Смотреть
#видео
Здесь собираются безопасники, разработчики, инженеры, исследователи, преподаватели и студенты из десятков стран мира. В центре внимания — только хардкорный технический контент по кибербезопасности.
Современная автоматизация обратной разработки в декомпиляторе HexRays
В своем докладе спикер кратко расскажет про существующие инструменты автоматизации обратной разработки, а также представит новые
Смотреть
#видео
👍6❤1
🤔 Подготовили #дайджест репозиториев для DevOps
♦️ Molecule — проект предназначен для оказания помощи в разработке и тестировании ролей Ansible
♦️ DevOps Exercises — репозиторий содержит вопросы и упражнения по различным техническим темам
♦️ GoReleaser — быстрая доставка бинарников Go
♦️ Kubernetes The Hard Way — руководство, в котором вы на практике познакомитесь с настройкой Kubernetes
♦️ dive — инструмент для изучения образов docker
♦️ Molecule — проект предназначен для оказания помощи в разработке и тестировании ролей Ansible
♦️ DevOps Exercises — репозиторий содержит вопросы и упражнения по различным техническим темам
♦️ GoReleaser — быстрая доставка бинарников Go
♦️ Kubernetes The Hard Way — руководство, в котором вы на практике познакомитесь с настройкой Kubernetes
♦️ dive — инструмент для изучения образов docker
🔥21👍7❤1
😉💪 SOLID ПРИНЦИПЫ простым языком
В видосе спикера расскажет о SOLID-принципах с подробным, простым и наглядным объяснением. Речь будет о: Single responsibility (Принцип единственной ответственности), open–closed (Принцип открытости/закрытости), Liskov substitution (Принцип подстановки Лисков), interface segregation (Принцип разделения интерфейса) и dependency inversion (Принцип инверсии зависимостей).
06:16 ➝ SRP
16:00 ➝ OCP
22:00 ➝ LSP
28:21 ➝ ISP
36:35 ➝ DIP
43:40 ➝ SOLID итоги
#гайд
В видосе спикера расскажет о SOLID-принципах с подробным, простым и наглядным объяснением. Речь будет о: Single responsibility (Принцип единственной ответственности), open–closed (Принцип открытости/закрытости), Liskov substitution (Принцип подстановки Лисков), interface segregation (Принцип разделения интерфейса) и dependency inversion (Принцип инверсии зависимостей).
06:16 ➝ SRP
16:00 ➝ OCP
22:00 ➝ LSP
28:21 ➝ ISP
36:35 ➝ DIP
43:40 ➝ SOLID итоги
#гайд
❤5🔥1
🧑🍳🎯 Restic: эффективное резервное копирование из Stdin
Готовый рецепт того как настроить эффективное резервное копирование из Stdin, с дедупликацией и автоматической очисткой репозитория от старых копий.
Несколько правил:
➖ Не используйте монорепозиторий для бэкапов
Всегда разносите сущности по разным репозиториям, к примеру создавайте репозиторий на каждую базу данных или на каждую виртуальную машину.
Делать это стоит по нескольким причинам. Бэкапить всё в один репо не даст вам никаких преимуществ, а вот неудобства создаст.
➖ Используйте встроенную компрессию restic
При использовании gzip всегда имеет шанс получить неповторяемый набор данных, даже при малейшем изменении источника. Таким образом дедупликация restic не сработает. Тем не менее бэкапить без компрессии идея тоже плохая, потому что размер несжатого бэкапа может различаться в десятки и сотни раз от сжатого.
➖ Всегда проверяйте что бэкап создался полностью
➖ Не восстанавливайте напрямую в Stdout
Другими словами не делайте так: restic dump latest dump.sql | mysql
Подробности вас ждут тут
#туториал
Готовый рецепт того как настроить эффективное резервное копирование из Stdin, с дедупликацией и автоматической очисткой репозитория от старых копий.
Несколько правил:
➖ Не используйте монорепозиторий для бэкапов
Всегда разносите сущности по разным репозиториям, к примеру создавайте репозиторий на каждую базу данных или на каждую виртуальную машину.
Делать это стоит по нескольким причинам. Бэкапить всё в один репо не даст вам никаких преимуществ, а вот неудобства создаст.
➖ Используйте встроенную компрессию restic
При использовании gzip всегда имеет шанс получить неповторяемый набор данных, даже при малейшем изменении источника. Таким образом дедупликация restic не сработает. Тем не менее бэкапить без компрессии идея тоже плохая, потому что размер несжатого бэкапа может различаться в десятки и сотни раз от сжатого.
➖ Всегда проверяйте что бэкап создался полностью
➖ Не восстанавливайте напрямую в Stdout
Другими словами не делайте так: restic dump latest dump.sql | mysql
Подробности вас ждут тут
#туториал
❤4🥱2