Мониторинг производительности с iostat: углубленный разбор
Что такое iostat?
Примеры использования
1. Базовая статистика. Просто вызовите iostat без параметров, чтобы увидеть общую картину:
Вывод:
%iowait: Время, которое CPU ждёт операций ввода/вывода.
tps: Количество операций ввода/вывода в секунду.
kB_read/s и kB_wrtn/s: Скорость чтения и записи.
2. Обновление в реальном времени. Вывод каждые 2 секунды:
3. Статистика только для дисков. Если интересуют только устройства хранения:
Вывод:
4. Производительность процессора. Анализ нагрузки на CPU:
Вывод:
5. Статистика для конкретного устройства. Чтобы проанализировать только диск sda:
Переключение на MB для удобства:
6. Детализация загрузки системы. iostat может выводить расширенные данные:
Вывод:
%util: Показывает, насколько устройство занято.
Практическое применение.
1. Идентификация узких мест.
Если %iowait высок, это сигнал, что диск не справляется с запросами.
Высокий %util (>90%) на устройстве указывает на перегрузку.
2. Мониторинг в реальном времени. Используйте комбинацию с
3. Сохранение данных для анализа. Чтобы сохранить статистику для последующего анализа:
---
iostat - это незаменимый инструмент для мониторинга ввода/вывода и нагрузки на процессор. Он помогает быстро находить узкие места в работе серверов и принимать меры для их устранения.
BashTex📱 #linux #utils
Что такое iostat?
iostat (Input/Output Statistics) — это утилита из пакета sysstat, которая собирает данные о производительности:
Использование CPU.
Статистика ввода/вывода для устройств и разделов.
Производительность файловой системы.
Примеры использования
1. Базовая статистика. Просто вызовите iostat без параметров, чтобы увидеть общую картину:
iostat
Вывод:
avg-cpu: %user %nice %system %iowait %steal %idle
12.34 0.00 3.21 2.45 0.00 82.00
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 45.00 123.45 678.90 1234567 9876543
%iowait: Время, которое CPU ждёт операций ввода/вывода.
tps: Количество операций ввода/вывода в секунду.
kB_read/s и kB_wrtn/s: Скорость чтения и записи.
2. Обновление в реальном времени. Вывод каждые 2 секунды:
iostat 2
3. Статистика только для дисков. Если интересуют только устройства хранения:
iostat -d
Вывод:
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 45.00 123.45 678.90 1234567 9876543
4. Производительность процессора. Анализ нагрузки на CPU:
iostat -c
Вывод:
avg-cpu: %user %nice %system %iowait %steal %idle
10.00 0.00 5.00 1.00 0.00 84.00
5. Статистика для конкретного устройства. Чтобы проанализировать только диск sda:
iostat -d sda
Переключение на MB для удобства:
iostat -m
6. Детализация загрузки системы. iostat может выводить расширенные данные:
iostat -x
Вывод:
Device rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 10.00 20.00 30.00 40.00 123.00 456.00 33.40 0.10 0.50 0.30 0.70 0.40 85.00
%util: Показывает, насколько устройство занято.
Практическое применение.
1. Идентификация узких мест.
Если %iowait высок, это сигнал, что диск не справляется с запросами.
Высокий %util (>90%) на устройстве указывает на перегрузку.
2. Мониторинг в реальном времени. Используйте комбинацию с
watch:
watch -n 1 'iostat -x'
3. Сохранение данных для анализа. Чтобы сохранить статистику для последующего анализа:
iostat -x > iostat_log.txt
---
iostat - это незаменимый инструмент для мониторинга ввода/вывода и нагрузки на процессор. Он помогает быстро находить узкие места в работе серверов и принимать меры для их устранения.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Сравнение лог-агрегаторов: ELK vs Loki
Когда речь заходит о лог-агрегаторах, которые помогают управлять огромными объемами журналов, два наиболее популярных решения - это ELK (Elasticsearch, Logstash, Kibana) и Loki от Grafana Labs. Давайте разберёмся, какое из них лучше выбрать для ваших задач.
ELK: Мощь, гибкость и масштабируемость
Что такое ELK? ELK - это стек из трёх инструментов:
Elasticsearch - хранение и поиск по журналам.
Logstash - сбор и обработка данных.
Kibana - визуализация и анализ.
Плюсы:
Минусы:
Loki: Простота и интеграция с Grafana
Что такое Loki? Loki - это легковесный лог-агрегатор, оптимизированный для работы с метриками. Вместо хранения сырых данных, как ELK, Loki использует метаинформацию (лейблы).
Плюсы:
Минусы:
❗️ Когда выбрать ELK?
Вам нужен мощный поиск и анализ логов.
Вы работаете с большими объёмами данных.
Инфраструктура включает сложные сценарии мониторинга.
Вы готовы инвестировать в ресурсы и опыт.
❗️ Когда выбрать Loki?
Вы уже используете Grafana.
Вам нужен простой инструмент для логирования.
Ресурсы сервера ограничены.
В приоритете экономия на хранилище.
---
Если вы ищете гибкость и мощные аналитические возможности, ELK - ваш выбор. Если важны простота, лёгкость и интеграция с Grafana, то Loki станет отличным решением.
BashTex📱 #linux #utils
Когда речь заходит о лог-агрегаторах, которые помогают управлять огромными объемами журналов, два наиболее популярных решения - это ELK (Elasticsearch, Logstash, Kibana) и Loki от Grafana Labs. Давайте разберёмся, какое из них лучше выбрать для ваших задач.
ELK: Мощь, гибкость и масштабируемость
Что такое ELK? ELK - это стек из трёх инструментов:
Elasticsearch - хранение и поиск по журналам.
Logstash - сбор и обработка данных.
Kibana - визуализация и анализ.
Плюсы:
Мощный поиск. Elasticsearch поддерживает сложные запросы и анализ текста.
Гибкость. Легко интегрируется с разными источниками данных.
Расширяемость. Подходит для больших и сложных инфраструктур.
Визуализация. Kibana предоставляет богатый набор инструментов для графиков и дашбордов.
Минусы:
Требовательность к ресурсам. ELK требует значительных вычислительных мощностей.
Сложность настройки. Развертывание и поддержка требуют опыта.
Высокая стоимость. Для больших кластеров может стать дорого.
Loki: Простота и интеграция с Grafana
Что такое Loki? Loki - это легковесный лог-агрегатор, оптимизированный для работы с метриками. Вместо хранения сырых данных, как ELK, Loki использует метаинформацию (лейблы).
Плюсы:
Лёгкость. Потребляет меньше ресурсов по сравнению с ELK.
Интеграция с Grafana. Loki идеально подходит для тех, кто уже использует Grafana.
Скорость развертывания. Установка и настройка гораздо проще.
Экономия хранилища. Хранит данные в оптимизированном формате.
Минусы:
Ограниченные возможности поиска. Loki не такой мощный, как Elasticsearch.
Нет обработки данных. В отличие от Logstash, Loki не поддерживает сложные трансформации.
Молодой продукт. Функциональность продолжает развиваться.
Вам нужен мощный поиск и анализ логов.
Вы работаете с большими объёмами данных.
Инфраструктура включает сложные сценарии мониторинга.
Вы готовы инвестировать в ресурсы и опыт.
Вы уже используете Grafana.
Вам нужен простой инструмент для логирования.
Ресурсы сервера ограничены.
В приоритете экономия на хранилище.
---
Если вы ищете гибкость и мощные аналитические возможности, ELK - ваш выбор. Если важны простота, лёгкость и интеграция с Grafana, то Loki станет отличным решением.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Как использовать Netdata для реального времени мониторинга сервера
Если вы ищете удобный и визуально понятный инструмент для мониторинга серверов в реальном времени, то Netdata - отличный выбор. Этот легковесный инструмент позволяет отслеживать состояние системы, процессов, сети и даже приложений, предоставляя мгновенные визуализации.
Преимущества:
Установка Netdata. На большинстве дистрибутивов Linux достаточно выполнить одну команду:
После установки веб-интерфейс будет доступен по адресу: http://<IP-адрес-сервера>:19999
Базовые метрики. Netdata автоматически начинает мониторинг:
CPU: загрузка и частота.
Память: использование и своп.
Диски: I/O операции и латентность.
Сеть: входящий и исходящий трафик.
Сервисы: Apache, Nginx, MySQL, PostgreSQL, Redis и другие.
Мониторинг кастомных метрик. Netdata позволяет добавлять пользовательские плагины для мониторинга специфичных приложений. Например, для MySQL:
Откройте /etc/netdata/python.d/mysql.conf. Настройте доступ к базе данных:
Перезапустите Netdata:
Интеграция с другими системами. Netdata поддерживает экспорт метрик в Prometheus, Grafana и другие системы.
Пример настройки интеграции с Prometheus:
Откройте /etc/netdata/netdata.conf и включите Prometheus:
Перезапустите Netdata. Теперь данные Netdata доступны для анализа в Grafana.
Преимущества мониторинга в реальном времени
Диагностика проблем: мгновенное выявление узких мест (например, высокий %iowait или перегрузка сети).
Анализ трендов: Netdata сохраняет метрики для последующего анализа.
Простота: доступен даже новичкам в мониторинге.
BashTex📱 #utils #monitoring
Если вы ищете удобный и визуально понятный инструмент для мониторинга серверов в реальном времени, то Netdata - отличный выбор. Этот легковесный инструмент позволяет отслеживать состояние системы, процессов, сети и даже приложений, предоставляя мгновенные визуализации.
Преимущества:
Мониторинг в реальном времени. Все данные обновляются с частотой до одной секунды.
Простая установка. Установить и настроить Netdata можно за считанные минуты.
Поддержка множества метрик. CPU, память, диски, сети, базы данных и многое другое.
Визуализация. Графики удобны и хорошо читаются прямо в веб-интерфейсе.
Установка Netdata. На большинстве дистрибутивов Linux достаточно выполнить одну команду:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
После установки веб-интерфейс будет доступен по адресу: http://<IP-адрес-сервера>:19999
Базовые метрики. Netdata автоматически начинает мониторинг:
CPU: загрузка и частота.
Память: использование и своп.
Диски: I/O операции и латентность.
Сеть: входящий и исходящий трафик.
Сервисы: Apache, Nginx, MySQL, PostgreSQL, Redis и другие.
Мониторинг кастомных метрик. Netdata позволяет добавлять пользовательские плагины для мониторинга специфичных приложений. Например, для MySQL:
Откройте /etc/netdata/python.d/mysql.conf. Настройте доступ к базе данных:
local:
user: 'root'
pass: 'password'
host: 'localhost'
port: 3306
Перезапустите Netdata:
sudo systemctl restart netdata
Интеграция с другими системами. Netdata поддерживает экспорт метрик в Prometheus, Grafana и другие системы.
Пример настройки интеграции с Prometheus:
Откройте /etc/netdata/netdata.conf и включите Prometheus:
[prometheus]
enabled = yes
Перезапустите Netdata. Теперь данные Netdata доступны для анализа в Grafana.
Преимущества мониторинга в реальном времени
Диагностика проблем: мгновенное выявление узких мест (например, высокий %iowait или перегрузка сети).
Анализ трендов: Netdata сохраняет метрики для последующего анализа.
Простота: доступен даже новичкам в мониторинге.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
Создание меню в терминале с помощью команды select
Если вы хотите сделать ваш Bash-скрипт более интерактивным, команда select - это простой и удобный способ создать меню в терминале. Она автоматически обрабатывает ввод пользователя, предоставляя список опций, и позволяет легко работать с выбранным значением.
Синтаксис команды select
Пример 1: Простое меню. Создадим базовое меню для выбора действий:
Пример вывода:
Особенности команды select
Пример 2: Динамическое меню с файлами. Скрипт для выбора файла из текущей директории:
Пример вывода:
Использование в реальных задачах
Совет: Используйте команду PS3 для настройки пользовательского приглашения:
Пример с использованием PS3:
---
Команда
BashTex📱 #linux #utils
Если вы хотите сделать ваш Bash-скрипт более интерактивным, команда select - это простой и удобный способ создать меню в терминале. Она автоматически обрабатывает ввод пользователя, предоставляя список опций, и позволяет легко работать с выбранным значением.
Синтаксис команды select
select переменная in список_опций; do
команды
done
переменная — переменная, куда записывается выбранная пользователем опция.
список_опций — перечень доступных опций.
команды — действия, которые выполняются в зависимости от выбора.
Пример 1: Простое меню. Создадим базовое меню для выбора действий:
#!/bin/bash
echo "Выберите действие:"
select option in "Посмотреть время" "Показать директорию" "Выход"; do
case $REPLY in
1) echo "Текущее время: $(date)" ;;
2) echo "Текущая директория: $(pwd)" ;;
3) echo "Выход..."; break ;;
*) echo "Неверный выбор. Попробуйте снова." ;;
esac
done
Пример вывода:
1) Посмотреть время
2) Показать директорию
3) Выход
#? 1
Текущее время: Tue Dec 19 14:12:45 UTC 2024
#? 3
Выход...
Особенности команды select
$REPLY: Автоматически содержит номер выбранной опции.
Удобство: Если пользователь вводит неправильный номер, меню просто повторяется.
Гибкость: Подходит для интерактивных сценариев, где требуется выбор.
Пример 2: Динамическое меню с файлами. Скрипт для выбора файла из текущей директории:
#!/bin/bash
echo "Выберите файл из списка:"
select file in *; do
if [ -n "$file" ]; then
echo "Вы выбрали: $file"
break
else
echo "Неверный выбор. Попробуйте снова."
fi
done
Пример вывода:
1) file1.txt
2) file2.log
3) noscript.sh
#? 2
Вы выбрали: file2.log
Использование в реальных задачах
Меню управления: Создавайте интерактивные скрипты для настройки окружения.
Обработка файлов: Выбирайте файлы для анализа или обработки.
Автоматизация: Упрощайте выбор действий в автоматизированных системах.
Совет: Используйте команду PS3 для настройки пользовательского приглашения:
PS3="Введите номер действия: "
Пример с использованием PS3:
Введите номер действия:
---
Команда
select - простой инструмент для создания интуитивно понятных меню в терминале. Она отлично помогает сделать скрипты более интерактивными и удобными. BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Как ускорить Bash-скрипты с помощью xargs и параллельных задач
Когда нужно обработать множество файлов, выполнить команды для каждой строки или справиться с большим объёмом задач, утилита
Что делает xargs?
Параллельная обработка с xargs
Флаг -P позволяет запускать несколько процессов одновременно, значительно ускоряя выполнение задач.
Пример 1: Параллельное сжатие файлов. Представьте, что нужно сжать множество файлов:
-P 4 - запускает 4 процесса одновременно.
-I {} - заменяет {} в команде именами файлов.
gzip - сжимает каждый найденный файл.
Результат: ускоренное сжатие за счёт одновременной обработки файлов.
Пример 2: Проверка доступности множества хостов. Список IP-адресов в файле hosts.txt:
Скрипт для одновременной проверки доступности:
-P 10 - запускает до 10 проверок одновременно.
ping -c 3 {} - отправляет 3 пакета на каждый IP.
Результат: мгновенная проверка множества хостов.
Пример 3: Параллельное копирование больших файлов. Список файлов в files.txt:
Копирование файлов в другую директорию:
-P 3 - выполняет до 3 копирований одновременно.
Почему это быстрее?
Полезные флаги xargs
-n N - передаёт по N аргументов в каждую команду.
Вывод:
--max-procs (или -P) - ограничивает количество параллельных процессов.
---
Использование
BashTex📱 #linux #utils
Когда нужно обработать множество файлов, выполнить команды для каждой строки или справиться с большим объёмом задач, утилита
xargs может стать вашим секретным оружием. Её главное преимущество - возможность запускать команды параллельно, экономя время и ресурсы.Что делает xargs?
xargs берёт стандартный ввод или вывод другой команды, разбивает его на части и передаёт в указанную команду. Это незаменимо для обработки больших объёмов данных.
Параллельная обработка с xargs
Флаг -P позволяет запускать несколько процессов одновременно, значительно ускоряя выполнение задач.
Пример 1: Параллельное сжатие файлов. Представьте, что нужно сжать множество файлов:
find /path/to/files -type f -name "*.log" | xargs -P 4 -I {} gzip {}
-P 4 - запускает 4 процесса одновременно.
-I {} - заменяет {} в команде именами файлов.
gzip - сжимает каждый найденный файл.
Результат: ускоренное сжатие за счёт одновременной обработки файлов.
Пример 2: Проверка доступности множества хостов. Список IP-адресов в файле hosts.txt:
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
Скрипт для одновременной проверки доступности:
cat hosts.txt | xargs -P 10 -I {} ping -c 3 {}
-P 10 - запускает до 10 проверок одновременно.
ping -c 3 {} - отправляет 3 пакета на каждый IP.
Результат: мгновенная проверка множества хостов.
Пример 3: Параллельное копирование больших файлов. Список файлов в files.txt:
file1.doc
file2.doc
file3.doc
Копирование файлов в другую директорию:
cat files.txt | xargs -P 3 -I {} cp {} /path/to/destination/
-P 3 - выполняет до 3 копирований одновременно.
Почему это быстрее?
Многозадачность. Вместо обработки задач по очереди, они выполняются параллельно.
Оптимизация ресурсов. Загружаются все ядра процессора.
Гибкость. xargs работает с любыми командами и аргументами.
Полезные флаги xargs
-n N - передаёт по N аргументов в каждую команду.
echo "file1 file2 file3" | xargs -n 2 echo
Вывод:
file1 file2
file3
--max-procs (или -P) - ограничивает количество параллельных процессов.
---
Использование
xargs с параллельной обработкой - это простой способ ускорить выполнение рутинных задач. Сжатие, копирование, сканирование - всё это можно делать быстрее и эффективнее.BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Как писать эффективные функции в Bash: оптимизация и практические примеры
Функции в Bash помогают организовать код, улучшить читаемость и сократить дублирование. Однако неправильное использование может снизить производительность скриптов. Давайте разберёмся, как писать эффективные функции, избегая ошибок.
Что такое функция в Bash?
Пример базовой функции:
Принципы написания эффективных функций
1. Используйте параметры вместо глобальных переменных. Глобальные переменные могут вызывать неожиданные ошибки. Передавайте данные в функции через параметры:
2. Проверяйте входные данные. Защитите функции от некорректного ввода:
3. Возвращайте значения через echo или return. Используйте echo для вывода данных, return для статусов завершения.
Практические примеры
1. Подсчёт количества файлов в директории
2. Кеширование результатов для оптимизации. При повторных вычислениях можно сохранить результат в переменной:
3. Параллельная обработка с помощью функций
Инструменты для отладки функций
1. Добавляйте трассировку.
2. Проверяйте на ошибки.
Советы по оптимизации
1. Минимизируйте вызовы внешних команд. Вместо ls | wc -l используйте встроенные функции Bash:
2. Используйте встроенные массивы. Для работы с множеством значений массивы быстрее и удобнее, чем строки:
Эффективные функции - залог быстрого и надёжного Bash-скрипта. Соблюдайте лучшие практики, оптимизируйте код, и ваши скрипты станут мощными инструментами автоматизации.
BashTex📱 #bash
Функции в Bash помогают организовать код, улучшить читаемость и сократить дублирование. Однако неправильное использование может снизить производительность скриптов. Давайте разберёмся, как писать эффективные функции, избегая ошибок.
Что такое функция в Bash?
Функция - это именованный блок кода, который можно вызывать многократно. Она определяет действия, выполняемые скриптом, и упрощает повторяющиеся операции.
Пример базовой функции:
hello_world() {
echo "Hello, World!"
}
hello_world
Принципы написания эффективных функций
1. Используйте параметры вместо глобальных переменных. Глобальные переменные могут вызывать неожиданные ошибки. Передавайте данные в функции через параметры:
calculate_sum() {
echo $(( $1 + $2 ))
}
calculate_sum 5 10 # Вывод: 15
2. Проверяйте входные данные. Защитите функции от некорректного ввода:
safe_division() {
if [ "$2" -eq 0 ]; then
echo "Ошибка: деление на ноль!"
return 1
fi
echo $(( $1 / $2 ))
}
safe_division 10 0 # Вывод: Ошибка: деление на ноль!
3. Возвращайте значения через echo или return. Используйте echo для вывода данных, return для статусов завершения.
Практические примеры
1. Подсчёт количества файлов в директории
count_files() {
local dir=$1
if [ -d "$dir" ]; then
echo "$(ls "$dir" | wc -l)"
else
echo "Директория $dir не существует."
return 1
fi
}
count_files /etc
2. Кеширование результатов для оптимизации. При повторных вычислениях можно сохранить результат в переменной:
cached_command() {
local cache_file="/tmp/command_output"
if [ -f "$cache_file" ]; then
cat "$cache_file"
else
echo "Выполняется команда..."
ls /etc > "$cache_file"
cat "$cache_file"
fi
}
cached_command
3. Параллельная обработка с помощью функций
process_file() {
echo "Обработка файла $1"
sleep 2 # Эмуляция длительной задачи
}
export -f process_file
find . -type f -name "*.log" | xargs -n 1 -P 4 -I {} bash -c 'process_file "$@"' _ {}
Инструменты для отладки функций
1. Добавляйте трассировку.
set -x # Включить трассировку
2. Проверяйте на ошибки.
set -e # Завершить скрипт при ошибке
Советы по оптимизации
1. Минимизируйте вызовы внешних команд. Вместо ls | wc -l используйте встроенные функции Bash:
find . -type f | wc -l
2. Используйте встроенные массивы. Для работы с множеством значений массивы быстрее и удобнее, чем строки:
my_array=(file1 file2 file3)
for file in "${my_array[@]}"; do
echo "Обрабатывается $file"
done
Эффективные функции - залог быстрого и надёжного Bash-скрипта. Соблюдайте лучшие практики, оптимизируйте код, и ваши скрипты станут мощными инструментами автоматизации.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Аудит Linux-системы с Lynis: от установки до анализа отчёта
Lynis - это инструмент командной строки для аудита безопасности, соответствия стандартам и повышения производительности Linux и других UNIX-систем. Он прост в использовании, не требует установки агента и может запускаться на работающей системе.
Установка Lynis
Установите Lynis из официального репозитория:
Для систем на базе RHEL:
Альтернативно, скачайте с GitHub📱 :
Запуск аудита. Для базового аудита системы используйте:
Команда выполнит:
Пример вывода аудита:
Анализ отчёта. После выполнения аудита, Lynis предоставляет список рекомендаций для улучшения безопасности.
Журнал рекомендаций: Все советы сохраняются в /var/log/lynis.log.
Улучшение индекса безопасности: Улучшите настройки по рекомендациям, например:
Установите обновления ядра.
Убедитесь, что файлы /etc/passwd и /etc/shadow защищены.
Включите SELinux или AppArmor для повышения безопасности.
Проверка конкретных компонентов. Чтобы провести аудит конкретного компонента, например, SSH:
Почему Lynis полезен?
BashTex📱 #linux #security
Lynis - это инструмент командной строки для аудита безопасности, соответствия стандартам и повышения производительности Linux и других UNIX-систем. Он прост в использовании, не требует установки агента и может запускаться на работающей системе.
Установка Lynis
Установите Lynis из официального репозитория:
sudo apt update
sudo apt install lynis
Для систем на базе RHEL:
sudo yum install lynis
Альтернативно, скачайте с GitHub
git clone https://github.com/CISOfy/lynis.git
cd lynis
sudo ./lynis audit system
Запуск аудита. Для базового аудита системы используйте:
sudo lynis audit system
Команда выполнит:
Проверку конфигурации ядра.
Анализ файлов и папок.
Проверку безопасности сети.
Оценку производительности.
Пример вывода аудита:
[+] Kernel Hardening
- Enable kernel module loading: OK
- Kernel logging level: OK
- Unused kernel modules: Warning
[+] File Integrity
- Check /etc/passwd: OK
- Check /etc/shadow: OK
Hardening index: 78/100
Suggestions: 5
Анализ отчёта. После выполнения аудита, Lynis предоставляет список рекомендаций для улучшения безопасности.
Журнал рекомендаций: Все советы сохраняются в /var/log/lynis.log.
less /var/log/lynis.log
Улучшение индекса безопасности: Улучшите настройки по рекомендациям, например:
Установите обновления ядра.
Убедитесь, что файлы /etc/passwd и /etc/shadow защищены.
Включите SELinux или AppArmor для повышения безопасности.
Проверка конкретных компонентов. Чтобы провести аудит конкретного компонента, например, SSH:
sudo lynis audit system --tests-from-group ssh
Почему Lynis полезен?
Простой и понятный анализ. Lynis показывает текущие проблемы и предлагает их решения.
Гибкость. Подходит для серверов, десктопов и даже встроенных систем.
Автоматизация. Можно интегрировать в CI/CD для регулярного аудита.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Продвинутое копирование файлов и каталогов с исключениями
Копирование - одна из самых базовых задач в Linux. Однако, если вам нужно исключить определённые файлы или каталоги при копировании, стандартная команда
Когда и зачем исключать файлы?
Исключения с помощью cp и find. Хотя
Пример: исключение файлов *.log:
Разбор:
find source_dir - ищет файлы в директории.
! -name '*.log' - исключает файлы с расширением .log.
-exec cp --parents {} - копирует файлы с сохранением структуры каталогов.
Использование rsync для исключений. Для более гибкого копирования предпочтительнее использовать rsync, так как он поддерживает исключения через опцию --exclude.
Пример: исключение определённой папки и файлов
Разбор:
-a - архивный режим (сохраняет права, ссылки, структуру).
-v - выводит процесс копирования.
--exclude - исключает указанную папку или файлы.
Вывод команды:
Исключение на уровне шаблонов. Если нужно исключить файлы по сложному шаблону, используйте файл исключений.
Пример: исключение через файл шаблонов
Создайте файл exclude.txt:
Выполните команду:
Копирование больших данных с исключениями. Если копируете большие объёмы данных, используйте rsync вместо cp, так как он эффективнее обрабатывает большие деревья файлов и поддерживает докопирование (resume).
Докопирование файлов после прерывания:
Хотя
BashTex📱 #linux #utils
Копирование - одна из самых базовых задач в Linux. Однако, если вам нужно исключить определённые файлы или каталоги при копировании, стандартная команда
cp требует небольшой хитрости. Разберём, как это сделать и при чём здесь rsync.Когда и зачем исключать файлы?
Чтобы пропустить временные файлы (*.tmp, *.swp).
Чтобы избежать копирования тяжёлых или ненужных данных.
Для создания точных копий без избыточной информации.
Исключения с помощью cp и find. Хотя
cp сам по себе не поддерживает флаг исключений, можно комбинировать его с другими командами, такими как find.Пример: исключение файлов *.log:
find source_dir -type f ! -name '*.log' -exec cp --parents {} target_dir \;
Разбор:
find source_dir - ищет файлы в директории.
! -name '*.log' - исключает файлы с расширением .log.
-exec cp --parents {} - копирует файлы с сохранением структуры каталогов.
Использование rsync для исключений. Для более гибкого копирования предпочтительнее использовать rsync, так как он поддерживает исключения через опцию --exclude.
Пример: исключение определённой папки и файлов
rsync -av --exclude 'temp/' --exclude '*.log' source_dir/ target_dir/
Разбор:
-a - архивный режим (сохраняет права, ссылки, структуру).
-v - выводит процесс копирования.
--exclude - исключает указанную папку или файлы.
Вывод команды:
sending incremental file list
./
file1.txt
file2.txt
sent 125 bytes received 40 bytes 330.00 bytes/sec
total size is 245 speedup is 1.41
Исключение на уровне шаблонов. Если нужно исключить файлы по сложному шаблону, используйте файл исключений.
Пример: исключение через файл шаблонов
Создайте файл exclude.txt:
*.log
temp/
backup/
Выполните команду:
rsync -av --exclude-from='exclude.txt' source_dir/ target_dir/
Копирование больших данных с исключениями. Если копируете большие объёмы данных, используйте rsync вместо cp, так как он эффективнее обрабатывает большие деревья файлов и поддерживает докопирование (resume).
Докопирование файлов после прерывания:
rsync -av --exclude '*.tmp' source_dir/ target_dir/
Хотя
cp - базовый инструмент, его возможности можно расширить комбинацией с find для сложных задач. Для регулярной работы с исключениями rsync остаётся лидером.BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Как защитить ключи SSH с помощью ssh-agent
SSH-ключи - это один из наиболее безопасных способов аутентификации в Linux-системах. Но при частом использовании ключей возникает риск компрометации, особенно если хранить их в незашифрованном виде или вводить пароль каждый раз. Здесь на помощь приходит ssh-agent, который позволяет безопасно управлять ключами и упрощает доступ к серверам.
ssh-agent - это демон, который управляет вашими SSH-ключами в памяти. Он:
Настройка ssh-agent
1. Запуск ssh-agent. Перед началом работы убедитесь, что ssh-agent запущен:
Вывод команды:
2. Добавление ключей в ssh-agent. Чтобы добавить ваш приватный ключ:
Если ключ защищён паролем, вам потребуется ввести его один раз. После этого ключ останется активным в памяти до завершения сессии или перезагрузки.
Просмотр добавленных ключей. Чтобы проверить, какие ключи сейчас управляются агентом:
Вывод:
Удаление ключей из ssh-agent. Чтобы удалить все ключи из агента:
Или конкретный ключ:
Дополнительная защита с помощью временных ограничений. Вы можете настроить автоматическое удаление ключей через определённое время:
Здесь 3600 - это время жизни ключа в секундах (1 час).
Автоматизация сессий. Для упрощения работы можно настроить автоматический запуск ssh-agent.
Пример для Bash. Добавьте в файл ~/.bashrc:
Практическое применение. Удобный доступ к удалённым серверам
С запущенным ssh-agent вы можете подключаться к удалённым серверам, не вводя пароль:
Работа с Git-репозиториями. ssh-agent упрощает работу с приватными Git-репозиториями:
Советы по безопасности
👍 Шифруйте приватные ключи. Даже с использованием ssh-agent храните ключи в зашифрованном виде.
❗️ Не оставляйте агента активным на публичных машинах. Завершайте сессию с ssh-agent, чтобы предотвратить доступ к памяти.
❗️ Используйте ForwardAgent с осторожностью. Если необходимо перенаправить агент на другой сервер, добавьте в ~/.ssh/config:
BashTex📱 #linux #security
SSH-ключи - это один из наиболее безопасных способов аутентификации в Linux-системах. Но при частом использовании ключей возникает риск компрометации, особенно если хранить их в незашифрованном виде или вводить пароль каждый раз. Здесь на помощь приходит ssh-agent, который позволяет безопасно управлять ключами и упрощает доступ к серверам.
ssh-agent - это демон, который управляет вашими SSH-ключами в памяти. Он:
Хранит расшифрованные ключи во временном хранилище.
Позволяет подключаться к серверам без повторного ввода пароля.
Устраняет необходимость прямого хранения ключей на диске в незашифрованном виде.
Настройка ssh-agent
1. Запуск ssh-agent. Перед началом работы убедитесь, что ssh-agent запущен:
eval "$(ssh-agent -s)"
Вывод команды:
Agent pid 12345
2. Добавление ключей в ssh-agent. Чтобы добавить ваш приватный ключ:
ssh-add ~/.ssh/id_rsa
Если ключ защищён паролем, вам потребуется ввести его один раз. После этого ключ останется активным в памяти до завершения сессии или перезагрузки.
Просмотр добавленных ключей. Чтобы проверить, какие ключи сейчас управляются агентом:
ssh-add -l
Вывод:
2048 SHA256:abc12345... user@host (RSA)
Удаление ключей из ssh-agent. Чтобы удалить все ключи из агента:
ssh-add -D
Или конкретный ключ:
ssh-add -d ~/.ssh/id_rsa
Дополнительная защита с помощью временных ограничений. Вы можете настроить автоматическое удаление ключей через определённое время:
ssh-add -t 3600 ~/.ssh/id_rsa
Здесь 3600 - это время жизни ключа в секундах (1 час).
Автоматизация сессий. Для упрощения работы можно настроить автоматический запуск ssh-agent.
Пример для Bash. Добавьте в файл ~/.bashrc:
if ! pgrep -u "$USER" ssh-agent > /dev/null; then
eval "$(ssh-agent -s)"
fi
Практическое применение. Удобный доступ к удалённым серверам
С запущенным ssh-agent вы можете подключаться к удалённым серверам, не вводя пароль:
ssh user@server
Работа с Git-репозиториями. ssh-agent упрощает работу с приватными Git-репозиториями:
git pull
git push
Советы по безопасности
Host remote-server
ForwardAgent yes
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Вот и подходит к концу наш "рабочий процесс" под названием 2024. Пора сделать
tar старого года, чтобы освободить место для нового!
tar -cvf 2024.tar.gz ~/воспоминания/2024
gzip 2024.tar.gz
Теперь мы с уверенностью можем разархивировать 2025:
gunzip -c 2025.tar.gz | tar -xvf -
Что внутри?
Пусть ваш 2025 год будет сжат по проблемам и распакован по успехам!
Давайте сохраним только лучшие "файлы" прошлого года, а всё лишнее -
rm -rf.Встретим 2025 с
chmod +x на наши мечты! Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6☃4👍2🎄2🫡1
Повышение надёжности crontab с помощью встроенного логгинга и уведомлений
crontab - это один из самых популярных инструментов для автоматизации задач в Linux. Однако ошибки в задачах часто остаются незамеченными, если не настроить должным образом логгирование и уведомления. Давайте разберём, как повысить надёжность автоматизированных задач с помощью встроенных средств.
Почему это важно?
Логгирование задач в crontab
Базовый способ: перенаправление вывода. Вывод команды можно перенаправить в файл для последующего анализа:
>> /var/log/cron.log - записывает стандартный вывод (stdout) в лог-файл.
2>&1 - перенаправляет ошибки (stderr) туда же.
Разделение stdout и stderr. Иногда нужно отдельно анализировать стандартный вывод и ошибки:
Уведомления об ошибках
1. Использование переменной MAILTO. Добавьте в crontab строку:
Теперь весь вывод задач (stdout и stderr) будет отправляться на указанный адрес.
❗️ Примечание: Для этого должен быть настроен почтовый агент, например, Postfix или ssmtp.
2. Уведомления через скрипт. Если вы хотите отправлять уведомления только при ошибках, используйте следующий подход:
|| - выполняет команду справа, если слева была ошибка.
mail - отправляет письмо с уведомлением.
Дополнительные советы для повышения надёжности
1. Проверка состояния crontab. Вывод всех задач и возможных ошибок можно проверить командой:
2. Логгирование времени выполнения. Для задач с длительным выполнением полезно записывать, сколько времени они занимают:
-o /var/log/task_time.log - записывает время в файл.
-a - добавляет данные в конец файла.
3. Уведомления в Telegram. С помощью утилиты curl можно отправлять уведомления в Telegram:
---
Безопасность и удобство
Логи для каждого задания. Для разделения логов создайте директорию /var/log/cron_tasks и используйте её:
Используйте скрипты-обёртки. Для сложных задач создайте скрипт с проверкой выполнения:
Запустите его через crontab:
Добавив логгирование и уведомления в crontab, вы получите уверенность в выполнении задач и сможете быстро реагировать на любые проблемы. Это не только упрощает администрирование, но и повышает стабильность системы.
BashTex📱 #linux #security
crontab - это один из самых популярных инструментов для автоматизации задач в Linux. Однако ошибки в задачах часто остаются незамеченными, если не настроить должным образом логгирование и уведомления. Давайте разберём, как повысить надёжность автоматизированных задач с помощью встроенных средств.
Почему это важно?
Прозрачность: Логирование позволяет отслеживать, что выполняется, и выявлять ошибки.
Своевременность: Уведомления предупреждают о проблемах без необходимости проверки вручную.
Контроль: Вы уверены, что задачи выполняются по расписанию.
Логгирование задач в crontab
Базовый способ: перенаправление вывода. Вывод команды можно перенаправить в файл для последующего анализа:
* * * * * /path/to/command >> /var/log/cron.log 2>&1
>> /var/log/cron.log - записывает стандартный вывод (stdout) в лог-файл.
2>&1 - перенаправляет ошибки (stderr) туда же.
Разделение stdout и stderr. Иногда нужно отдельно анализировать стандартный вывод и ошибки:
* * * * * /path/to/command > /var/log/cron_output.log 2> /var/log/cron_error.log
Уведомления об ошибках
1. Использование переменной MAILTO. Добавьте в crontab строку:
MAILTO="your_email@bashtex"
Теперь весь вывод задач (stdout и stderr) будет отправляться на указанный адрес.
2. Уведомления через скрипт. Если вы хотите отправлять уведомления только при ошибках, используйте следующий подход:
* * * * * /path/to/command || echo "Error in cron task" | mail -s "Cron Error" your_email@bashtex.com
|| - выполняет команду справа, если слева была ошибка.
mail - отправляет письмо с уведомлением.
Дополнительные советы для повышения надёжности
1. Проверка состояния crontab. Вывод всех задач и возможных ошибок можно проверить командой:
grep CRON /var/log/syslog
2. Логгирование времени выполнения. Для задач с длительным выполнением полезно записывать, сколько времени они занимают:
* * * * * /usr/bin/time -o /var/log/task_time.log -a /path/to/command
-o /var/log/task_time.log - записывает время в файл.
-a - добавляет данные в конец файла.
3. Уведомления в Telegram. С помощью утилиты curl можно отправлять уведомления в Telegram:
* * * * * /path/to/command || curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="Error in cron task"
---
Безопасность и удобство
Логи для каждого задания. Для разделения логов создайте директорию /var/log/cron_tasks и используйте её:
* * * * * /path/to/command >> /var/log/cron_tasks/task1.log 2>&1
Используйте скрипты-обёртки. Для сложных задач создайте скрипт с проверкой выполнения:
#!/bin/bash
LOG_FILE="/var/log/cron_tasks/task.log"
ERROR_FILE="/var/log/cron_tasks/task_error.log"
{
echo "Task started: $(date)"
/path/to/command
echo "Task completed: $(date)"
} >> "$LOG_FILE" 2>> "$ERROR_FILE" || mail -s "Task Failed" your_email@example.com < "$ERROR_FILE"
Запустите его через crontab:
* * * * * /path/to/noscript.sh
Добавив логгирование и уведомления в crontab, вы получите уверенность в выполнении задач и сможете быстро реагировать на любые проблемы. Это не только упрощает администрирование, но и повышает стабильность системы.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Шифрование файлов с помощью GPG: просто и эффективно
Когда возникает необходимость защитить конфиденциальные данные, gpg становится вашим надёжным инструментом. Он позволяет шифровать файлы, расшифровывать их и даже добавлять цифровые подписи для проверки подлинности.
Установка GPG
На большинстве систем Linux gpg уже установлен. Если его нет, добавьте его с помощью:
Шифрование файла: базовый пример. Чтобы зашифровать файл, выполните:
-c указывает использовать симметричное шифрование.
Вас попросят ввести пароль, который будет использоваться для шифрования. После выполнения команды появится файл secret.txt.gpg.
Расшифровка файла. Чтобы вернуть исходный файл:
Вас попросят ввести пароль, использованный при шифровании.
Шифрование с использованием публичного ключа
Симметричное шифрование подходит для личного использования, но если вы хотите отправить файл другому человеку, лучше использовать асимметричное шифрование.
1. Создайте пару ключей
Выберите тип ключа, срок действия и задайте пароль.
2. Экспортируйте публичный ключ. Поделитесь своим публичным ключом с другим человеком:
3. Зашифруйте файл с публичным ключом. Используйте публичный ключ получателя:
Это создаст файл secret.txt.gpg.
4. Расшифровка полученного файла. Получатель может расшифровать файл с помощью своей пары ключей:
Автоматизация процесса
Чтобы избежать ввода пароля каждый раз, можно использовать файл ключей. Добавьте пароль в файл:
Укажите его при выполнении команды:
❗️ Убедитесь, что файл с паролем защищён:
Применение GPG в реальной жизни
Резервное копирование: Защитите архивы перед загрузкой в облако.
Обмен файлами: Убедитесь, что ваши данные безопасно передаются.
Цифровая подпись: Подтвердите подлинность своих файлов.
🔒 gpg - это мощный инструмент, который обеспечивает безопасность данных без лишних сложностей. С его помощью можно защитить как личные файлы, так и данные, передаваемые другим людям.
BashTex📱 #linux #security
Когда возникает необходимость защитить конфиденциальные данные, gpg становится вашим надёжным инструментом. Он позволяет шифровать файлы, расшифровывать их и даже добавлять цифровые подписи для проверки подлинности.
Установка GPG
На большинстве систем Linux gpg уже установлен. Если его нет, добавьте его с помощью:
sudo apt install gnupg # Для систем на базе Debian/Ubuntu
sudo yum install gnupg # Для CentOS/RHEL
Шифрование файла: базовый пример. Чтобы зашифровать файл, выполните:
gpg -c secret.txt
-c указывает использовать симметричное шифрование.
Вас попросят ввести пароль, который будет использоваться для шифрования. После выполнения команды появится файл secret.txt.gpg.
Расшифровка файла. Чтобы вернуть исходный файл:
gpg -d secret.txt.gpg > secret.txt
Вас попросят ввести пароль, использованный при шифровании.
Шифрование с использованием публичного ключа
Симметричное шифрование подходит для личного использования, но если вы хотите отправить файл другому человеку, лучше использовать асимметричное шифрование.
1. Создайте пару ключей
gpg --full-generate-key
Выберите тип ключа, срок действия и задайте пароль.
2. Экспортируйте публичный ключ. Поделитесь своим публичным ключом с другим человеком:
gpg --export -a "Your Name" > public.key
3. Зашифруйте файл с публичным ключом. Используйте публичный ключ получателя:
gpg --encrypt --recipient "Recipient Name" secret.txt
Это создаст файл secret.txt.gpg.
4. Расшифровка полученного файла. Получатель может расшифровать файл с помощью своей пары ключей:
gpg --decrypt secret.txt.gpg > secret.txt
Автоматизация процесса
Чтобы избежать ввода пароля каждый раз, можно использовать файл ключей. Добавьте пароль в файл:
echo "mysecretpassphrase" > passphrase.txt
Укажите его при выполнении команды:
gpg --batch --yes --passphrase-file passphrase.txt -c secret.txt
chmod 600 passphrase.txt
Применение GPG в реальной жизни
Резервное копирование: Защитите архивы перед загрузкой в облако.
tar -czf - mydata | gpg -c -o mydata.tar.gz.gpg
Обмен файлами: Убедитесь, что ваши данные безопасно передаются.
Цифровая подпись: Подтвердите подлинность своих файлов.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
Управление большими текстовыми файлами с помощью sed
Когда работаешь с огромными текстовыми файлами, важно иметь инструмент, который может обрабатывать их быстро и эффективно. Именно здесь на сцену выходит sed - утилита для потокового редактирования текстов в Unix-подобных системах.
s/старый/новый/g - заменяет все вхождения слова "старый" на "новый" в каждом строке файла.
Удаление строк по условию. Удалим все строки, содержащие слово "ошибка":
/ошибка/d - удаляет строки с упоминанием слова "ошибка".
Извлечение строк. Извлечём строки с 10 по 20:
-n отключает автоматический вывод, а 10,20p выводит строки с 10 по 20.
Обработка больших файлов.
Пример: Удаление пустых строк.
Если нужно очистить файл от пустых строк:
/^$/d - удаляет строки, содержащие только перенос строки.
Пример: Добавление текста в начало файла
Добавим текст "Заголовок" в начало большого файла:
1i — вставляет текст перед первой строкой.
Автоматизация с sed.
Этот скрипт обновит все лог-файлы, заменив уровень логирования DEBUG на INFO.
Советы по оптимизации
BashTex📱 #linux #utils
Когда работаешь с огромными текстовыми файлами, важно иметь инструмент, который может обрабатывать их быстро и эффективно. Именно здесь на сцену выходит sed - утилита для потокового редактирования текстов в Unix-подобных системах.
sed 's/старый/новый/g' bigfile.txt
s/старый/новый/g - заменяет все вхождения слова "старый" на "новый" в каждом строке файла.
Удаление строк по условию. Удалим все строки, содержащие слово "ошибка":
sed '/ошибка/d' bigfile.txt
/ошибка/d - удаляет строки с упоминанием слова "ошибка".
Извлечение строк. Извлечём строки с 10 по 20:
sed -n '10,20p' bigfile.txt
-n отключает автоматический вывод, а 10,20p выводит строки с 10 по 20.
Обработка больших файлов.
sed обрабатывает файлы построчно, что делает его идеальным для работы с огромными текстовыми данными.Пример: Удаление пустых строк.
Если нужно очистить файл от пустых строк:
sed '/^$/d' bigfile.txt > cleaned.txt
/^$/d - удаляет строки, содержащие только перенос строки.
Пример: Добавление текста в начало файла
Добавим текст "Заголовок" в начало большого файла:
sed -i '1i Заголовок' bigfile.txt
1i — вставляет текст перед первой строкой.
Автоматизация с sed.
sed отлично подходит для автоматизации задач в скриптах. Например, регулярная замена в логах или данных:
#!/bin/bash
for file in /logs/*.log; do
sed -i 's/DEBUG/INFO/g' "$file"
done
Этот скрипт обновит все лог-файлы, заменив уровень логирования DEBUG на INFO.
Советы по оптимизации
Используйте -i для редактирования файла на месте (встроенное изменение).
При работе с огромными файлами добавьте -e для объединения нескольких команд sed в один проход.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Тонкости использования iptables для фильтрации трафика
iptables - это инструмент для управления сетевой безопасностью в Linux. Он позволяет фильтровать входящий, исходящий и проходящий трафик, обеспечивая гибкость и контроль над сетью. Разберём несколько ключевых моментов и тонкостей его использования.
Основные цепочки iptables
Примеры использования
1. Блокировка IP-адреса. Чтобы заблокировать доступ с конкретного IP-адреса:
-A INPUT - добавляем правило в цепочку INPUT.
-s - указывает источник (source).
-j DROP - блокирует трафик.
2. Разрешение доступа по порту. Разрешить входящий трафик на порт 22 (SSH):
-p tcp - указывает, что правило применимо к протоколу TCP.
--dport 22 - указывает порт назначения.
3. Ограничение количества подключений. Ограничение количества новых подключений с одного IP-адреса:
-m connlimit - модуль для ограничения количества соединений.
--connlimit-above 10 - ограничивает до 10 соединений с одного IP.
❗️ Тонкости и советы
1. Логирование заблокированного трафика. Для диагностики полезно логировать заблокированные пакеты:
--log-prefix добавляет префикс к каждому сообщению журнала.
2. Сохранение правил. После настройки важно сохранить правила, чтобы они не сбросились после перезагрузки:
iptables-save сохраняет текущие правила в файл.
3. Использование пользовательских цепочек. Создание пользовательской цепочки для упрощения управления правилами:
-N создаёт новую цепочку. Это позволяет централизовать управление специфическими правилами.
Динамическое изменение правил
Для обеспечения гибкости iptables позволяет добавлять и удалять правила на лету. Например, временное блокирование IP:
Этот скрипт блокирует IP на 5 минут.
---
BashTex📱 #linux #networks
iptables - это инструмент для управления сетевой безопасностью в Linux. Он позволяет фильтровать входящий, исходящий и проходящий трафик, обеспечивая гибкость и контроль над сетью. Разберём несколько ключевых моментов и тонкостей его использования.
Основные цепочки iptables
INPUT — фильтрует входящий трафик.
FORWARD — фильтрует трафик, проходящий через сервер.
OUTPUT — фильтрует исходящий трафик.
Примеры использования
1. Блокировка IP-адреса. Чтобы заблокировать доступ с конкретного IP-адреса:
iptables -A INPUT -s 192.168.1.100 -j DROP
-A INPUT - добавляем правило в цепочку INPUT.
-s - указывает источник (source).
-j DROP - блокирует трафик.
2. Разрешение доступа по порту. Разрешить входящий трафик на порт 22 (SSH):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-p tcp - указывает, что правило применимо к протоколу TCP.
--dport 22 - указывает порт назначения.
3. Ограничение количества подключений. Ограничение количества новых подключений с одного IP-адреса:
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j REJECT
-m connlimit - модуль для ограничения количества соединений.
--connlimit-above 10 - ограничивает до 10 соединений с одного IP.
1. Логирование заблокированного трафика. Для диагностики полезно логировать заблокированные пакеты:
iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: "
--log-prefix добавляет префикс к каждому сообщению журнала.
2. Сохранение правил. После настройки важно сохранить правила, чтобы они не сбросились после перезагрузки:
iptables-save > /etc/iptables/rules.v4
iptables-save сохраняет текущие правила в файл.
3. Использование пользовательских цепочек. Создание пользовательской цепочки для упрощения управления правилами:
iptables -N my_custom_chain
iptables -A INPUT -j my_custom_chain
iptables -A my_custom_chain -s 192.168.1.100 -j DROP
-N создаёт новую цепочку. Это позволяет централизовать управление специфическими правилами.
Динамическое изменение правил
Для обеспечения гибкости iptables позволяет добавлять и удалять правила на лету. Например, временное блокирование IP:
iptables -I INPUT -s 192.168.1.101 -j DROP
sleep 300
iptables -D INPUT -s 192.168.1.101 -j DROP
Этот скрипт блокирует IP на 5 минут.
---
iptables предоставляет широкий спектр возможностей для фильтрации и контроля сетевого трафика. Понимание тонкостей и правильное применение правил помогут защитить серверы и сети от угроз, обеспечив безопасную и стабильную работу.BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👨💻1
jq для обработки JSON: базовые и продвинутые примеры
jq - это легковесный и гибкий инструмент командной строки для обработки и анализа JSON. Если вам нужно вытаскивать данные, фильтровать или преобразовывать JSON-файлы, jq станет незаменимым помощником. Давайте рассмотрим базовые и продвинутые примеры его использования.
1. Чтение и форматирование JSON. Вывести JSON с красивым форматированием:
. - это самый простой фильтр, который просто выводит входной JSON.
2. Извлечение конкретного значения. Извлечь значение поля name:
Вывод:
3. Фильтрация массива. Вывести имена из массива объектов:
Вывод:
Продвинутые примеры
1. Условная фильтрация. Отфильтруем объекты, где age больше 25:
Результат:
2. Преобразование структуры данных. Изменим структуру JSON, преобразовав ключи в массив:
Результат:
3. Группировка данных. Группировка массива по определённому полю:
Результат:
Объединение данных
1. Объединение JSON из двух файлов. Объединим данные из file1.json и file2.json:
-s читает все входные файлы в массив.
* объединяет два JSON-объекта.
👍 Полезные советы
Используйте jq с curl для обработки данных из API:
Фильтруйте сложные JSON-файлы:
Это выведет все книги с ценой меньше 10.
---
jq - это универсальный инструмент для работы с JSON, который позволяет не только извлекать данные, но и модифицировать их по сложным правилам. С помощью jq можно существенно сократить время на обработку данных и автоматизировать задачи, которые раньше занимали часы.
BashTex📱 #linux #utils
jq - это легковесный и гибкий инструмент командной строки для обработки и анализа JSON. Если вам нужно вытаскивать данные, фильтровать или преобразовывать JSON-файлы, jq станет незаменимым помощником. Давайте рассмотрим базовые и продвинутые примеры его использования.
1. Чтение и форматирование JSON. Вывести JSON с красивым форматированием:
echo '{"name": "Alice", "age": 30, "city": "Paris"}' | jq .
. - это самый простой фильтр, который просто выводит входной JSON.
2. Извлечение конкретного значения. Извлечь значение поля name:
echo '{"name": "Alice", "age": 30}' | jq '.name'
Вывод:
"Alice"
3. Фильтрация массива. Вывести имена из массива объектов:
echo '[{"name": "Alice"}, {"name": "Bob"}]' | jq '.[].name'
Вывод:
"Alice"
"Bob"
Продвинутые примеры
1. Условная фильтрация. Отфильтруем объекты, где age больше 25:
echo '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 20}]' | jq '.[] | select(.age > 25)'
Результат:
{"name": "Alice", "age": 30}
2. Преобразование структуры данных. Изменим структуру JSON, преобразовав ключи в массив:
echo '{"name": "Alice", "age": 30}' | jq 'to_entries | map({(.key): .value})'
Результат:
[{"name":"Alice"}, {"age":30}]
3. Группировка данных. Группировка массива по определённому полю:
echo '[{"name": "Alice", "group": "admin"}, {"name": "Bob", "group": "user"}, {"name": "Charlie", "group": "admin"}]' | jq 'group_by(.group) | map({group: .[0].group, members: .})'
Результат:
[{"group":"admin","members":[{"name":"Alice","group":"admin"},{"name":"Charlie","group":"admin"}]}, {"group":"user","members":[{"name":"Bob","group":"user"}]}]
Объединение данных
1. Объединение JSON из двух файлов. Объединим данные из file1.json и file2.json:
jq -s '.[0] * .[1]' file1.json file2.json
-s читает все входные файлы в массив.
* объединяет два JSON-объекта.
Используйте jq с curl для обработки данных из API:
curl -s https://api.example.com/data | jq '.items[] | {name: .name, id: .id}'
Фильтруйте сложные JSON-файлы:
jq '.store.book[] | select(.price < 10)' books.json
Это выведет все книги с ценой меньше 10.
---
jq - это универсальный инструмент для работы с JSON, который позволяет не только извлекать данные, но и модифицировать их по сложным правилам. С помощью jq можно существенно сократить время на обработку данных и автоматизировать задачи, которые раньше занимали часы.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
netstat: Поиск подозрительных соединений
Если вы подозреваете, что на вашем сервере происходят странные или нежелательные сетевые активности,
Основные команды
1. Просмотр всех активных подключений. Для начала выведите все активные соединения:
-a - показывает все активные соединения и ожидающие порты.
-n - выводит IP-адреса и номера портов в числовом формате.
2. Фильтрация по TCP/UDP. Если вас интересуют только TCP или UDP соединения:
-t - отображает только TCP.
-u - отображает только UDP.
-l - показывает порты, которые прослушиваются.
-n - выводит числовой формат адресов и портов.
Поиск подозрительных соединений
1. Проверка соединений с внешними IP. Чтобы найти соединения с незнакомыми IP-адресами:
Ищите IP-адреса, которые не должны подключаться к вашему серверу. Если что-то кажется подозрительным, проверьте, к какому процессу относится соединение:
2. Обнаружение нежелательных открытых портов. Иногда вредоносное ПО может открыть порты без вашего ведома:
Ищите неизвестные или необычные порты, которые ваш сервер не должен использовать.
3. Выявление высоких пиков соединений. Чтобы найти процессы с необычно большим количеством активных соединений:
Эта команда покажет, какие процессы держат наибольшее количество соединений.
🔒 Советы по обеспечению безопасности
netstat - это первый рубеж обороны при мониторинге и диагностике сетевой активности. Зная, как быстро обнаружить подозрительные соединения, вы сможете оперативно реагировать на угрозы и поддерживать безопасность вашего сервера на высоком уровне.
BashTex📱 #network #security
Если вы подозреваете, что на вашем сервере происходят странные или нежелательные сетевые активности,
netstat поможет выявить потенциальные угрозы. Рассмотрим, как найти подозрительные соединения с помощью этого инструмента.Основные команды
1. Просмотр всех активных подключений. Для начала выведите все активные соединения:
netstat -an
-a - показывает все активные соединения и ожидающие порты.
-n - выводит IP-адреса и номера портов в числовом формате.
2. Фильтрация по TCP/UDP. Если вас интересуют только TCP или UDP соединения:
netstat -tuln
-t - отображает только TCP.
-u - отображает только UDP.
-l - показывает порты, которые прослушиваются.
-n - выводит числовой формат адресов и портов.
Поиск подозрительных соединений
1. Проверка соединений с внешними IP. Чтобы найти соединения с незнакомыми IP-адресами:
netstat -an | grep ESTABLISHED
Ищите IP-адреса, которые не должны подключаться к вашему серверу. Если что-то кажется подозрительным, проверьте, к какому процессу относится соединение:
netstat -anp | grep <подозрительный IP>
2. Обнаружение нежелательных открытых портов. Иногда вредоносное ПО может открыть порты без вашего ведома:
netstat -anp | grep LISTEN
Ищите неизвестные или необычные порты, которые ваш сервер не должен использовать.
3. Выявление высоких пиков соединений. Чтобы найти процессы с необычно большим количеством активных соединений:
netstat -anp | awk '{print $7}' | sort | uniq -c | sort -nr
Эта команда покажет, какие процессы держат наибольшее количество соединений.
Регулярно проверяйте соединения: Используйте netstat в крон-джобах для регулярного мониторинга.
Настройте оповещения: Интеграция с системами оповещений (например, Zabbix) позволит вам реагировать на аномальные соединения в реальном времени.
Ограничивайте доступ: Используйте файерволы (например, iptables или ufw) для ограничения входящих соединений.
netstat - это первый рубеж обороны при мониторинге и диагностике сетевой активности. Зная, как быстро обнаружить подозрительные соединения, вы сможете оперативно реагировать на угрозы и поддерживать безопасность вашего сервера на высоком уровне.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍5
Настройка Nextcloud: Личное облако на вашем сервере
Если вы хотите взять под контроль свои данные и создать личное облачное хранилище, Nextcloud - хороший выбор. Это бесплатное и мощное решение позволяет организовать собственное облако с полным контролем над конфиденциальностью.
1. Подготовка окружения. Для начала убедитесь, что у вас есть LAMP-стек (Linux, Apache, MySQL/MariaDB, PHP) на сервере. Если нет, установите его:
Убедитесь, что необходимые модули PHP установлены:
2. Скачивание и установка Nextcloud. Загрузите последнюю версию Nextcloud:
3. Настройка Apache. Создайте конфигурацию виртуального хоста для Nextcloud:
Добавьте следующее содержимое:
Активируйте конфигурацию:
4. Настройка базы данных. Создайте базу данных и пользователя для Nextcloud:
5. Финальная настройка через веб-интерфейс. Перейдите в браузере на http://your-domain.com, чтобы завершить установку через веб-интерфейс. Введите данные для базы данных, создайте администратора и настройте параметры хранения.
❗️ После установки рекомендуется:
BashTex📱 #linux #utils
Если вы хотите взять под контроль свои данные и создать личное облачное хранилище, Nextcloud - хороший выбор. Это бесплатное и мощное решение позволяет организовать собственное облако с полным контролем над конфиденциальностью.
1. Подготовка окружения. Для начала убедитесь, что у вас есть LAMP-стек (Linux, Apache, MySQL/MariaDB, PHP) на сервере. Если нет, установите его:
sudo apt update && sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-cli
Убедитесь, что необходимые модули PHP установлены:
sudo apt install php-xml php-mbstring php-zip php-gd php-curl php-intl php-bcmath php-imagick
2. Скачивание и установка Nextcloud. Загрузите последнюю версию Nextcloud:
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
tar -xjf latest.tar.bz2
sudo mv nextcloud /var/www/
3. Настройка Apache. Создайте конфигурацию виртуального хоста для Nextcloud:
sudo nano /etc/apache2/sites-available/nextcloud.conf
Добавьте следующее содержимое:
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/nextcloud
ServerName your-domain.com
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>
Активируйте конфигурацию:
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite headers env dir mime
sudo systemctl restart apache2
4. Настройка базы данных. Создайте базу данных и пользователя для Nextcloud:
sudo mysql -u root -p
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
5. Финальная настройка через веб-интерфейс. Перейдите в браузере на http://your-domain.com, чтобы завершить установку через веб-интерфейс. Введите данные для базы данных, создайте администратора и настройте параметры хранения.
Активировать HTTPS: Настройте SSL-сертификат с помощью Let's Encrypt.
Настроить файервол: Закройте ненужные порты и оставьте открытыми только те, что необходимы для работы.
Регулярное обновление: Следите за обновлениями Nextcloud и плагинов.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Настройка CI/CD для Бэкапов: Автоматизация резервного копирования
Настройка CI/CD для автоматизации бэкапов позволяет обеспечить постоянное и надежное резервное копирование данных с минимальными усилиями.
Зачем нужен CI/CD для бэкапов:
Настройка CI/CD для бэкапов
1. Выбор инструмента CI/CD. Популярные инструменты для CI/CD, такие как Jenkins, GitLab CI/CD, или GitHub Actions, позволяют легко автоматизировать бэкап-процессы.
2. Создание скрипта для бэкапов. Например, для резервного копирования базы данных можно использовать скрипт на Bash:
3. Интеграция с CI/CD пайплайном. Добавьте шаги в CI/CD пайплайн для выполнения бэкапа. Пример для GitLab CI/CD:
4. Настройка расписания. Используйте встроенные возможности планирования, чтобы выполнять бэкапы по расписанию:
GitHub Actions:
GitLab CI/CD: Настройте расписание в интерфейсе "CI/CD > Schedules".
5. Уведомления и мониторинг. Подключите уведомления для получения отчётов о выполнении бэкапов.
⚡️ Преимущества настройки CI/CD для бэкапов:
BashTex📱 #linux #utils
Настройка CI/CD для автоматизации бэкапов позволяет обеспечить постоянное и надежное резервное копирование данных с минимальными усилиями.
Зачем нужен CI/CD для бэкапов:
Автоматизация: Устраняет необходимость ручного запуска бэкапов.
Консистентность: Гарантирует, что бэкапы выполняются регулярно и в соответствии с установленным графиком.
Мониторинг и уведомления: Уведомления о состоянии бэкапов и возможность быстрого реагирования на сбои.
Версионность: Легкий доступ к нескольким версиям данных для восстановления.
Настройка CI/CD для бэкапов
1. Выбор инструмента CI/CD. Популярные инструменты для CI/CD, такие как Jenkins, GitLab CI/CD, или GitHub Actions, позволяют легко автоматизировать бэкап-процессы.
2. Создание скрипта для бэкапов. Например, для резервного копирования базы данных можно использовать скрипт на Bash:
#!/bin/bash
# Переменные
BACKUP_DIR="/backups"
DB_NAME="mydatabase"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql.gz"
# Создание резервной копии
mysqldump $DB_NAME | gzip > $BACKUP_FILE
# Уведомление
if [ $? -eq 0 ]; then
echo "Backup successful: $BACKUP_FILE"
else
echo "Backup failed" >&2
fi
3. Интеграция с CI/CD пайплайном. Добавьте шаги в CI/CD пайплайн для выполнения бэкапа. Пример для GitLab CI/CD:
stages:
- backup
backup_job:
stage: backup
noscript:
- chmod +x backup.sh
- ./backup.sh
only:
- main
4. Настройка расписания. Используйте встроенные возможности планирования, чтобы выполнять бэкапы по расписанию:
GitHub Actions:
name: Scheduled Backup
on:
schedule:
- cron: '0 2 * * *' # Ежедневно в 2:00
jobs:
backup:
runs-on: ubuntu-latest
steps:
- name: Run backup noscript
run: ./backup.sh
GitLab CI/CD: Настройте расписание в интерфейсе "CI/CD > Schedules".
5. Уведомления и мониторинг. Подключите уведомления для получения отчётов о выполнении бэкапов.
Непрерывность: Регулярные и автоматизированные бэкапы.
Масштабируемость: Легко добавлять новые задачи резервного копирования по мере роста данных.
Контроль и прозрачность: История выполнения бэкапов доступна в интерфейсе CI/CD инструмента.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Автоматическое обновление и откат критических сервисов с проверкой целостности
Обновление системных компонентов - рискованная задача. Ошибка в процессе может привести к сбоям, поэтому важно иметь механизм для быстрого отката. Рассмотрим, как автоматизировать обновление и откат критических сервисов с проверкой целостности с помощью Bash.
1. Основной скрипт обновления: автоматическое обновление с сохранением резервной копии текущего состояния.
Описание скрипта:
Резервное копирование: Создаётся резервная копия текущего состояния сервиса.
Обновление: Устанавливается обновление, и если оно завершается с ошибкой, скрипт вызывает функцию отката.
Проверка целостности: Проверяется, работает ли сервис корректно после обновления.
Откат: В случае проблем восстанавливается состояние из резервной копии, и сервис перезапускается.
Пример использования. Выполнение скрипта:
Ожидаемый вывод:
Если произойдёт ошибка:
Скрипт минимизируюет риск сбоев и упрощают управление критическими сервисами.
BashTex📱 #bash #utils
Обновление системных компонентов - рискованная задача. Ошибка в процессе может привести к сбоям, поэтому важно иметь механизм для быстрого отката. Рассмотрим, как автоматизировать обновление и откат критических сервисов с проверкой целостности с помощью Bash.
1. Основной скрипт обновления: автоматическое обновление с сохранением резервной копии текущего состояния.
#!/bin/bash
#директория для резервных копий
BACKUP_DIR="/backup/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
#функция для резервного копирования
backup_service() {
echo "Создание резервной копии..."
cp -r /path/to/service "$BACKUP_DIR"
}
#функция обновления
update_service() {
echo "Обновление сервиса..."
if apt-get update && apt-get install --only-upgrade myservice; then
echo "Обновление успешно завершено"
else
echo "Ошибка при обновлении"
restore_service
fi
}
#функция проверки целостности
check_integrity() {
echo "Проверка целостности..."
if systemctl is-active --quiet myservice; then
echo "Сервис работает корректно"
else
echo "Обнаружены проблемы, выполняется откат"
restore_service
fi
}
#функция отката
restore_service() {
echo "Выполняется откат..."
cp -r "$BACKUP_DIR" /path/to/service
systemctl restart myservice
if systemctl is-active --quiet myservice; then
echo "Откат успешно выполнен"
else
echo "Ошибка при откате, требуется ручное вмешательство"
fi
}
#основной процесс
backup_service
update_service
check_integrity
Описание скрипта:
Резервное копирование: Создаётся резервная копия текущего состояния сервиса.
Обновление: Устанавливается обновление, и если оно завершается с ошибкой, скрипт вызывает функцию отката.
Проверка целостности: Проверяется, работает ли сервис корректно после обновления.
Откат: В случае проблем восстанавливается состояние из резервной копии, и сервис перезапускается.
Пример использования. Выполнение скрипта:
./update_service.sh
Ожидаемый вывод:
Создание резервной копии...
Обновление сервиса...
Обновление успешно завершено
Проверка целостности...
Сервис работает корректно
Если произойдёт ошибка:
Создание резервной копии...
Обновление сервиса...
Ошибка при обновлении
Выполняется откат...
Откат успешно выполнен
Скрипт минимизируюет риск сбоев и упрощают управление критическими сервисами.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤨2🔥1