BashMaster
8.24K subscribers
683 photos
14 videos
1 file
706 links
Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов.

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
⚙️ 18 отборных однострочных команд Linux

✔️В этой статье описан ряд функциональных, полезных, а порой и опасных команд, чтобы продемонстрировать потенциал использования оболочки Bash в Linux. Некоторые из них, действительно, потребуют соблюдения осторожности, так как иначе можно потерять все свои данные. Другие же, наоборот, окажутся очень покладистыми и полезными для повышения эффективности работы.

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

➡️ fork-бомба
▶️Эта «команда» при выполнении на ПК не представляет особой угрозы, но вот ее запуск на сервере может привести к отказу в обслуживании.

▶️Выглядит она как странный набор символов, хотя на деле это реальное определение функции bash.

▶️В bash допускается использовать в качестве имени функции — :
И в случае выполнения команды :(){ :|:& };:, именно такую функцию мы и создаем. Внутренне она рекурсивно вызывает сама себя, то есть выполняется бесконечно, а с помощью &
мы инструктируем процесс выполняться фоново.
$ -- :(){ :|: & };: -- 


➡️ Прямая запись на жесткий диск
Вы легко повредите файловую систему, если при выполнении любой команды сохраните ее вывод на диск. Так кому же это может понадобиться?
$ -- "a command" > /dev/sda --

▶️Запись на диск случайных данных
Эта команда может пригодиться, например, для перезаписи секторов диска с целью исключения возможности восстановления данных. Напомню, что при наличии правильного инструмента вернуть данные после форматирования диска трудностей не составит.

▶️Если использовать эту команду в цикле и выполнить ее 3-4 раза, то она в достаточной степени гарантирует невозможность восстановления удаленной информации.
$ -- dd if=/dev/urandom of=/dev/disk --
//for i in {1..10}; do dd if=/dev/urandom of=/dev/disk; done


➡️ Удалить все
▶️Эта команда удаляет все, включая файлы на жестком диске и подключенных устройствах, что делает ее очень опасной, поскольку разрешения она не спрашивает.

▶️С помощью флага rf мы инструктируем ее выполняться рекурсивно и удалять все файлы без запроса разрешения.

▶️Символ / указывает, что начинать нужно с корневого каталога, который содержит все файлы и все смонтированные устройства с данными, включая удаленные файловые ресурсы и съемные диски. (прим. пер.: современные дистрибутивы не дают просто так удалить /, надо либо добавить --no-preserve-root, либо удалять /* (все файлы в корневом каталоге).
$ -- rm -rf / --


🖼️ Дочитать статью

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
📚Библиотека промптов для самых разных задач и профессий

Внутри - сотни проверенных запросов для ChatGPT, которые удобно разбиты по категориям (от домашнего обучения до маркетинга и разработки)

Библиотека постоянно обновляется, а доступна она здесь - Нейрон

Сохраняй и пользуйся!💾
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Некоторые приемы защиты программ на bash

✔️Сокрытие (шифрование) пароля в теле bash-программы

▶️Для начала необходимо установить пакет xemacs21-bin

▶️Затем получаем хэш пароля, зашифрованный в mime
echo -ne "SecretP@ss" | mmencode
U2VjcmV0UEBzcw==

▶️Подставляем в программе вместо пароля в явном виде (plain-text), его шифрованное значение:
PP=$(echo -ne "U2VjcmV0UEBzcw==" | mmencode -u)
echo $PP
SecretP@ss


✔️Обфускация кода скрипта с помощью base64

▶️Ставим пакет base64
## for FreeBSD
cd /usr/ports/converters/base64
make install clean
## for Linux
apt -y install coreutils

▶️Кодируем файл /home/user/decrypted.sh
base64 decrypted.sh > encrypted.sh

▶️Раскодируем файл скрипта
base64 --decode encrypted.sh > restored.sh

▶️Запуск закодированного шелла без предварительной расшишровки в файл:
base64 --decode encrypted.sh | /bin/bash


🖼️ Ссылка на источник

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Вебинар QoS в ESR

🗓 Дата: 18.10.2024
🕒 Время: 14:00 по МСК

Программа вебинара: 
- Базовый и расширенный QoS
- Механизмы классификации трафика
- Доступные алгоритмы организации очередей
- Policing и Shaping

Практичекая часть:
- Практические тесты с применением генератора трафика Cisco TRex

👉 Регистрация

👤 СпикерАлексей Листаров — инженер с многолетним опытом работы в крупном операторе связи. Сертифицированный преподаватель Академии Eltex. 

#eltex #eltexcm #webinar #esr 

@eltexcm

Реклама. ООО "ЭЛТЕКС КОММУНИКАЦИИ". ИНН 7714966730.
⚙️ Шифрование файла или каталога Shell Scripts

✔️Bash скрипт ниже предназначенн для создания простого интерфейса для шифрования файла с помощью инструмента шифрования GnuPG (GPG).

➡️ Скрипт приветствует пользователя и предлагает ему ввести точное имя файла или папки, которую нужно зашифровать, включая расширение. Затем он использует GPG для шифрования указанного файла и выводит сообщение об успехе.

▶️Кроме того, он удаляет исходный незашифрованный файл для дополнительной безопасности. Обратите внимание, что скрипт должен быть размещен в той же директории.

▶️Команда gpg -c filename используется для шифрования файла с помощью GnuPG (GNU Privacy Guard) с симметричным шифрованием, а команда gpg -d filename.gpg > filename используется для расшифровки зашифрованного GPG файла и сохранения расшифрованного содержимого в новый файл.
#!/bin/bash

echo "Welcome! I am ready to encrypt a file/folder for you."
echo "Currently, I have a limitation. Please place me in the same folder where the file to be encrypted is located."
echo "Enter the exact file name with the extension."
read file;

gpg -c "$file"

echo "I have successfully encrypted the file..."

# Ask for confirmation before removing the original file
read -p "Do you want to remove the original file? (y/n): " confirm

if [ "$confirm" == "y" ]; then
rm -rf "$file"
echo "Original file removed."
else
echo "Original file was not removed. Exiting without deletion."
fi


🖼️ Ссылка на источник

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Свежие вакансии для разработчиков, которых нет на hh

Выбери своё направление и подпишись

🔽

1. Python

2. Java

3. React

4. JavaScript

5. Web 3.0

6. Back end

7. Data Engineer

8. IT продажи

9. IT поддержка

10. PHP

11. 1С 

12. GO

13. QA

14. Flutter

Полный список каналов IT-вакансий: @best_itjob и @it_rab
Please open Telegram to view this post
VIEW IN TELEGRAM
👉 Подборка видеокурсов по Bash для новичков

✔️Всё еще испытываете трудности с написанием скриптов, потому что изучение было неструктурированным или же просто хотели бы освежить знания и восполнить недостающие пробелы?

➡️ Собрали вам в одном месте видеокурсы с канала, чтоб каждый мог выбрать то, что придется по душе.

👉 Linux Bash. Курс для начинающих

👉 Bash для тестировщика

👉 Основы работы с терминалом и BASH

👉 Уроки по Bash скриптам

👉 Bash Basics

👉 Bash от канала РЕД ОС

👉 Bash от канала dmdev

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает?

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

✔️ Как научиться отвлекаться от работы и отдыхать?
✔️ Как совместить кучу рабочих задач и время с семьей?
✔️ Как справиться с прокрастинацией?
✔️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит?

Подписывайтесь на канал @vadimpetrov_psy и научитесь работать без упахивания, выгорания и ущерба для личной жизни!

👨🏻‍💻 Псс. Заходите в закреп канала - там много полезного, и даже бесплатный мини-курс.
⚙️ Как ускорить работу в командной оболочке Bash

✔️10 команд Bash, которые помогут вам ускорить работу в терминале.

▶️1. Используйте Control + L для очистки экрана и Control + D для выхода
Для очистки экрана терминала мы вводим в командной строке clear, для выхода вводим exit. Удобнее же очищать экран нажатием Ctrl + l ( ⌘ + l ), а закрывать терминал сочетанием Ctrl + d (⌘ + d).

▶️2. Используйте nohup для порождения процессов, не завершающихся с сеансом терминала
Иногда я запускаю Firefox из командной строки:
firefox https://freecodecamp.org

Но в таком случае при выходе из терминала браузер вылетает.
Избежать этого помогает команда nohup
nohup firefox https://freecodecamp.org

Теперь при закрытии терминала Firefox не вылетает, но вылетает моя вкладка.
Лечится это запуском Firefox в качестве фонового процесса с помощью флага &:
nohup firefox https://freecodecamp.org &

Теперь при выходе из терминала вкладки не страдают.

▶️3. Используйте для завершения процессов pkill
С помощью команды killall можно завершать процесс по его имени:
killall firefox

Но удобнее использовать для этого pkill, которая позволяет вводить лишь часть имени:
pkill fire*

▶️4. Добавляйте команду time, чтобы узнать скорость выполнения программы
Хотите узнать, как долго выполняется некая программа в оболочке? Просто добавьте в начале команды запуска
time:
time gcc -g *.c

▶️5. Просматривайте имя дистрибутива Linux с помощью cat /etc/*rel*
Выполнение uname -a выводит информацию о системе. Хотите перепроверить, в каком дистрибутиве работаете?
Просто наберите в оболочке cat /etc/*rel*

▶️6. Для поиска и замены в текстовых файлах используйте sed
Нужно заменить множественные вхождения слова в текстовом файле? Используйте команду sed:
sed s'/apples/oranges/g' myfile.txt

В этом случае все вхождения слова apples будут заменены на oranges.
Если нужно заменить лишь первое вхождение в каждой строке, просто уберите суффикс g в конце команды:
sed s'/apples/oranges/' myfile.txt

Символ g означает «глобально». В качестве разделителя выступает прямой слэш, хотя по факту можно использовать любой другой символ
sed s'_apples_oranges_'g ` myfile.txt

Простое использование sed производит замену только при выводе, оставляя исходный файл незатронутым.
Для изменения самого файла используйте -i
sed -i s'_apples_oranges_g' myfile.txt

▶️7. Просматривайте публичный IP компьютера с помощью curl
Существует два типа IP-адресов: закрытые и публичные.
Закрытый IP присваивается системой, и его можно уточнить с помощью команды ifconfig.
Если же вы хотите узнать публичный IP вашего ПК, который провайдер присваивает вашему интерфейсу, то при подключённом интернете просто выполните в командной строке: curl ifconfig.me ; echo или curl ifconfig.co ; echo
▶️8. Используйте для обратного поиска Ctrl + R (⌘ + R)
При нажатии клавиши «вверх» отображается последняя введённая команда. При выполнении history выводятся все введённые команды из истории Bash.
Однако удобнее нажать Ctrl + r (⌘ + r) и начать набирать команду, на что оболочка начнёт предлагать автозаполнение из истории, и вам останется нажать «Ввод», когда будет найдена искомая команда.

🖼️ Дочитать статью

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Только 48 часов! Получите лучшие IT-ресурсы абсолютно БЕСПЛАТНО

TechVibe временно открывает доступ к уникальным материалам. Не упустите свой шанс!

Что вас ждет: 👇🏻

1️⃣ Эксклюзивные курсы и книги

2⃣ Удобные шпаргалки для эффективного кодирования

3⃣ 100 разобранных вопросов с собеседований

4⃣ Готовые скрипты для ваших проектов

Материалы будут удалены через 48 часов!

Действуйте сейчас,
чтобы не пропустить эту уникальную возможность

Подписывайтесь на ➡️ TechVibe и получите доступ к лучшим IT-ресурсам прямо сейчас

P.S.: Вся нужная инфа уже в закрепе канала. Не стесняйся, сделай первый шаг!
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Bash Reference Manual

✔️Фундаментальное руководство от GNU, которое поможет освоить Bash или подтянуть свои знания, если Вы ранее уже приступали к изучению.

🖼️ Перейти на сайт

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотели бы присоединиться к проекту, который приносит пользу миллионам пользователей? 🚀

В Авито актуальна вакансия в команду, которая занимается разработкой продукта по управлению виртуальной инфраструктурой:

1️⃣ SRE инженер в команду Dev

Также в поиске инженера команда инфраструктуры, которая обеспечивает весь фундамент Авито (от серверов до внутреннего облака):

2️⃣ Системный инженер HPC кластеров

А ещё есть вакансия в команде, которая занимается развитием и администрированием систем, повышающих безопасность компании, на основе Infrastructure as Code подхода:

3️⃣ DevOps Engineer

Вас будут ждать:

– достойная зарплата, размер которой обсуждается на собеседовании;
– прозрачная система премий;
– интересные и важные задачи на очень большом проекте;
– передовые технологии и подходы, возможность пробовать новое;
– опытные и заинтересованные коллеги, готовые оказать поддержку;
– мощное железо, дополнительные мониторы и всё, что нужно для продуктивной работы;
– личный бюджет на обучение, который можно тратить на книги, курсы и конференции;
– забота о здоровье: ДМС со стоматологией с первого дня, в офисе принимают терапевт и массажист;
– возможность работать удалённо и по желанию посещать комфортный офис в Москве или Санкт-Петербурге.

Скорее откликайтесь!
⚙️ Генератор паролей на bash

✔️Время от времени приходится менять пароли. Все знают, что хороший пароль должен включать большие и малые латинские буквы, цифры и специальные символы. При этом они не должны быть слишком короткими. И каждый раз придумывать их все труднее и труднее, особенно если использовать разные пароли на разных сервисах. Можно для этого использовать, например, программу pwgen или генератор, встроенный в keepassx. А можно написать простой генератор паролей на bash.

➡️ Используемые символы
▶️Будем использовать следующие символы: Большие и малые буквы латинского алфавита (A-Z и a-z), цифры (0-9) и символы «!@#$%^&*()?/\[]{}-+_=<>.,». Такое сочетание обеспечит максимальную надежность.

➡️ Длина пароля
▶️Длина пароля будет 16 символов. Если вам нужен более короткий пароль, то вы можете указать меньшую длину в скрипте, либо добавить опцию командной строки.

➡️ Скрипт-генератор паролей на bash
▶️Самое первое, что нам необходимо — это переменная, содержащая все символы, которые мы будем использовать. Также нужна будет переменная, содержащая длину пароля и переменная для хранения самого пароля.
SYMBOLS=""
for symbol in {A..Z} {a..z} {0..9}; do SYMBOLS=$SYMBOLS$symbol; done
SYMBOLS=$SYMBOLS'!@#$%&*()?/\[]{}-+_=<>.,'
# Строка со всеми символами создана.
# Теперь нам надо в цикле с количеством итераций равным длине пароля
# случайным образом взять один символ и добавить его в строку, содержащую пароль.
PWD_LENGTH=16 # длина пароля
PASSWORD="" # переменная для хранения пароля
RANDOM=256 # инициализация генератора случайных чисел
for i in `seq 1 $PWD_LENGTH`
do
PASSWORD=$PASSWORD${SYMBOLS:$(expr $RANDOM % ${#SYMBOLS}):1}
done
echo $PASSWORD

▶️Вот и всё. Это весь скрипт. И с его помощью мы можем получить пароль, который удовлетворяет всем распространенным требованиям безопасности. Осталась только одна проблема — запомнить его.

🖼️ Ссылка на источник

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ 5 вариантов генерации конфигурационных файлов Shell-скриптами

✔️Подготовка конфигурационных файлов из шаблонов — весьма распространённая задача системного администрирования. Решать её можно разными способами, каждый из которых хорош по-своему, здесь же мы рассмотрим, как это сделать с помощью Shell-скриптов.

▶️Наше исследование проведём в виде решения типовой задачи, в которой необходимо создать Shell-скрипт, генерирующий конфигурационный файл с настройками сетевого стека узла. Формат конфигурационного файла соответствует /etc/network/interfaces. Примем, что настраиваемый узел обладает только одним сетевым интерфейсом с именем «ens33». Скрипт должен обеспечивать возможность указания статического IP-адреса, маски подсети и шлюза по умолчанию.

▶️С учётом вышесказанного получаем следующий шаблон конфигурационного файла:
auto ens33
iface ens33 inet static
address ЗНАЧЕНИЕ_IP_АДРЕСА
netmask ЗНАЧЕНИЕ_МАСКИ_СЕТИ
gateway ЗНАЧЕНИЕ_ШЛЮЗА_ПО_УМОЛЧАНИЮ

▶️Для дальнейших примеров договоримся, что IP адрес установим в 192.168.0.10, маску подсети 255.255.255.0, а шлюз по умолчанию 192.168.0.1.

➡️ Размещение шаблона внутри скрипта, формирование вывода стандартными средствами

Самый простой вариант решения задачи, которым обычно пользуются начинающие разработчики, — это поместить шаблон в тело скрипта и использовать локальные переменные в качестве подстановочных значений.
#!/bin/bash

IP="192.168.0.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"

TEMPLATE="$(
cat << EOF
auto ens33
iface ens33 inet static
address $IP
netmask $NETMASK
gateway $GATEWAY
EOF
)"

echo -e "$TEMPLATE"

▶️Результат работы скрипта (как и всех следующих) будет выглядеть так:
auto ens33
iface ens33 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1

▶️Данный вариант решения всем хорош, за исключением того, что человеческие ошибки (опечатки и прочие), которые могут возникнуть при внесении изменений в шаблон, могут «сломать» скрипт. Поэтому архитектурно более правильным решением будет разнести скрипт и шаблон по разным файлам.

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

➡️ Размещение шаблона во внешнем файле и его заполнение с помощью envsubst
Создадим файл шаблон «template.txt» следующего содержания:
auto ens33
iface ens33 inet static
address $IP
netmask $NETMASK
gateway $GATEWAY

▶️Для заполнения шаблона воспользуемся утилитой envsubst, которая ищет во входящем потоке строки вида $имя_переменной или ${имя_переменной} и заменяет их на значение соответствующих переменных. Важно отметить, что для работы этой утилиты переменные должны быть отмечены ключевым словом export. С учётом всего вышесказанного наш скрипт будет выглядеть следующим образом:
#!/bin/bash

export IP="192.168.0.10"
export NETMASK="255.255.255.0"
export GATEWAY="192.168.0.1"

envsubst < template.txt


🖼️ Дочитать статью на Habr'e

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
🟡 Сравнение российских платформ виртуализации
Функционал. Эксплуатация. Преимущества и недостатки.

3 года тестируем и исследуем российские платформы виртуализации.
Собрали весь материал в одном посте⬇️


🔄СРАВНИТЕЛЬНЫЕ ИССЛЕДОВАНИЯ
2022: сравнение шести платформ
2024: характеристики одиннадцати платформ

🔄ТЕСТИРОВАНИЕ ПЛАТФОРМ

2022-2023 год:

Astra Linux, «Брест»
zVirt
Альт сервер виртуализации на базе OpenNebula
Альт сервер виртуализации на базе Proxmox

РЕД виртуализация
РУСТЭК

2024 год:
zVirt
SpaceVM
Numa vServer

🔄ОПЫТ ВНЕДРЕНИЯ
VMware по-русски: как мы внедряли отечественные платформы виртуализации
Как электросети переехали в частные облака и на российскую виртуализацию

🔄ТЕСТИРОВАНИЕ VDI
ВРС на базе Basis.Workplace + Р-Платформа
ВРС на базе Termidesk + zVirt
SPACE VDI

➡️ Подписывайтесь
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ lssh

✔️Клиент SSH/SCP/SFTP на основе списка, поддерживающий одиночные и параллельные соединения, локальное использование bashrc на удаленных машинах и расширенное проксирование.

➡️ Эта командная утилита для чтения заранее подготовленного списка и подключения ssh/scp/sftp к выбранному хосту. Файл списка задается в формате yaml. При выборе хоста можно фильтровать по ключевым словам. Может выполнять команды одновременно для нескольких хостов.

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Как разрабатывать и настраивать Grafana Stack для эффективного визуализирования метрик и логов?

🔹Расскажем на открытом уроке «Grafana Stack: закрываем все современные потребности Observability», урок приурочен к курсу «Observability: мониторинг, логирование, трейсинг» от Otus.

Рассмотрим ключевые компоненты Grafana Stack и их роли в Observability.

Настроим интеграции с различными системами для получения актуальных данных.

Практика: Создание настраиваемых дашбордов и алертов, для эффективного управления производительности и надежности сервисов

👉 Регистрация и подробности:
https://otus.pw/6D1pa/?erid=LjN8KcNUf

#реклама
О рекламодателе
⚙️ ipbash — функции для работы с IP и подсетями

✔️Функции, представленные здесь, могут пригодиться для объединения нескольких списков ip-адресов или подсетей, полученных из разных источников, допустим, для бана.

▶️С помощью ENTRYIP, можно убрать подсети, которые перекрывают друг-друга — например подсеть 192.168.1.0/24 входит в подсеть 192.168.0.0/23. И для бана достаточно будет оставить только последнюю.

▶️А если в списке есть еще подсеть 192.168.2.0/23, то с помощью функции MERGESUBNETS можно объединить подсети 192.168.0.0/23 192.168.2.0/23 в одну 192.168.0.0/22, уменьшив список и увеличив скорость работы фильтра.

➡️ Все функции написаны на чистом bash, без использования сторонних программ, поэтому скорость выполнения не очень большая, но они будут работать, где есть bash.

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Станьте разработчиком нейро-сотрудников на Python и зарабатывайте от 150.000р в месяц 🔥🔥🔥

Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете:
1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц
2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект
3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате

Что будет на интенсиве?
🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python
🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др.

Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта
🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!
⚙️ Мониторинг перебора паролей на почту

✔️Мониторинг перебора паролей на почту позволяет оценить, сколько недоброжелателей пытается подбирать пароли к вашей почте. Рассмотрим на примере почтового сервера dovecot как можно собирать статистику по тому, сколько попыток перебора было сделано с тех или иных адресов. После сбора статистики с полученными адресами можно сделать всё, что посчитаете нужным. Например, заблокировать трафик с этих адресов при помощи iptables. Или заняться исследованиями атакующих.

▶️Для работы с информацией будем использовать bash-скрипты, чтобы фильтровать информацию, и планировщик cron, чтобы выполнять анализ по расписанию и высылать результат вам на почту. Результат будем сохранять в отдельном файле на каждый день и в одном файле будем собирать всю информацию. Саму информацию представим в виде двух значений — количество попыток и IP-адрес. Таким образом мы можем посмотреть заодно, правильно ли работает fail2ban и сколько попыток залогиниться на почтовый сервер проходит за сутки.

➡️ Сбор статистической информации
▶️Для получения информации будем использовать логи почтового сервера, в которых регистрируются попытки подключения к почтовому серверу. Вот что нам нужно. Из лога аутентификации будем отфильтровывать ошибки аутентификации и считать для IP-адресов, при обращении с которых происходили ошибки, количество попыток. После размещения скрипта в cron’е вам на почту будет приходить каждый день письмо со статистикой атак. Рассмотрим аутентификацию почтового сервера dovecot, но вы можете поправить скрипт под свои нужды.

➡️ Мониторинг перебора паролей
▶️Напишем скрипт на bash, который будет фильтровать логи.
#!/bin/bash

# Название файла с адресами, включающее дату
IP_BLACKLIST="/root/scripts/blacklist-`date "+%Y-%m-%d"`.lst"

# Фильтрация ошибок аутентификации
CURRENT_DATE=`date "+%b %d"`
grep "dovecot:auth" /var/log/auth.log \
| grep "authentication failure" \
| grep "$CURRENT_DATE" \
| cut -d" " -f 14 \
| sed 's/rhost=//' \
| sort | uniq -c >> $IP_BLACKLIST

# Добавление в большой список только IP-адресов из сегодняшнего лога
awk '{print $2}' $IP_BLACKLIST >> /root/scripts/blacklist-full.lst
# После добавления сортируем и убираем неуникальные адреса
cat /root/scripts/blacklist-full.lst | sort | uniq >> /root/scripts/blacklist-full.lst.new
rm /root/scripts/blacklist-full.lst
mv /root/scripts/blacklist-full.lst.new /root/scripts/blacklist-full.lst

# Выводим сегодняшний лог
cat $IP_BLACKLIST

▶️Можно добавить также автоматическое удаление файла лога, если он пустой. Кроме того, можно здесь же удалять адреса, которые принадлежат вам.

▶️После написания скрипта необходимо его записать в крон, чтобы он выполнялся по расписанию. Когда будут неудачные попытки аутентификации, вам будет приходить письмо со списком и количеством попыток, если их не будет, то письмо тоже не будет приходить. Добавим для этого в файл /etc/crontab следующую строчку:
55 23   * * *   root    /root/scripts/check-auth-errors.sh

➡️ Блокировка перебора при помощи iptables
▶️Для блокировки при помощи iptables можно написать еще один скрипт, которым можно блокировать адреса из ежедневного лога:
#!/bin/bash

IPLIST=$(awk '{print $2}' $1)
for IP in ${IPLIST}
do
echo -n Blocking ${IP} ...
iptables -t filter -A INPUT -s ${IP} -j DROP
echo Done
done


🖼️ Ссылка на источник

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
🎓 Тренинги Zabbix Сертифицированный Специалист 7.0 и Zabbix Сертифицированный Профессионал — ответ на вопрос «как быстро получить самые полные знания по Zabbix 7.0».

@zabbix_ru — наш телеграм-канал, посвященный Zabbix и ничему кроме Zabbix.

Тренинги Zabbix — лучшая инвестиция, которую вы можете сделать для себя или своих коллег. Мы опросили участников предыдущих потоков и сформулировали основные преимущества от прохождения тренингов:

📖 устранить пробелы. Часто знания Zabbix ограничиваются эпизодическим изучением документации и фрагментарны. Курс поможет систематизировать знания и откроет для вас новые возможности уже знакомой системы мониторинга.

📖 делать своими силами. Участие подрядчиков в проектах внедрения подразумевает предоставление доступа в ваше окружение. Прохождение официальных курсов Zabbix на русском языке позволит вам выполнять работы своими силами.

📖 распространять знания. Сотрудники, получившие сертификат Zabbix, не просто совершенствуют свои собственные технические навыки — они привносят полученные знания в коллектив и делятся ими со своими коллегами.

📖 получить сертификат. Это официальный вендорский курс Zabbix, переведенный на русский язык. После прохождения курса у вас будет возможность сдать экзамен и получить сертификат. Сертификат подтверждает знания и дает дивиденды компании и мотивацию сотрудникам.

📖 получить компетенции. Курсы проводят сертифицированные тренеры и эксперты Zabbix, которые регулярно повышают свою компетенцию как путем прохождения дополнительного обучения, так и участием в проектах внедрения Zabbix.

Проведем 2 тренинга подряд в этом году. Далее только в новом 2025. Программа тренингов по ссылкам выше.

📅 Zabbix сертифицированный специалист 7.0 (ZCS 7.0) 11-15 ноября

📅 Zabbix сертифицированный профессионал 7.0 (ZCP 7.0) 18-20 ноября

Подробную информацию вы можете запросить, написав @galssoftware или через почту welcome@gals.software.