LinuxSkill - Сводки с прода и Шпаргалки
11K subscribers
65 photos
102 videos
2 files
527 links
Следим за новостями Linux, DevOps и ИБ, чтобы быть готовым к любым факапам.
Бонусом — плотные шпаргалки и чеклисты для ежедневной работы в терминале.

📩 По всем вопросам: @chorapov

Зеркало в MAX: https://max.ru/LinuxSkill

РКН https://vk.cc/cMUwm4
Download Telegram
🛡️ Хакеры шифруют Linux? Закрой эти дыры прямо сейчас. Чек-лист по безопастности сервера.

Думаешь, шифровальщики — это только виндовая проблема? Держи практический чек-лист, который спасет твои Linux-серверы от участи быть зашифрованными ради выкупа.

uname -r && apt-get update && apt-get upgrade
# Регулярно обновляй ядро и прикладной софт.


Шифровальщик Erebus обошелся южнокорейскому хостеру в миллион долларов, потому что они сидели на ядре 2008 года с уязвимостью Dirty Cow, дающей рут-доступ. По статистике до 80-90% эксплойтов бьют по старым незакрытым дырам.

grep "bind" /etc/redis/redis.conf
# Не оставляй базы и сервисы торчать наружу без авторизации.


Небезопасная конфигурация Redis (например, доступная извне по умолчанию) позволяет злоумышленникам удаленно закинуть свой SSH-ключ на сервер и зайти с правами root,. Прячь внутренние сервисы за "КВН" и фильтруй доступы.


sudo apt install rkhunter chkrootkit lynis
sudo rkhunter --check
sudo lynis audit system
# Периодически аудируй систему локальными утилитами.


Инструменты вроде Rootkit Hunter (rkhunter), Check Rootkit (chkrootkit) и Lynis помогут выявить потенциальные проблемы безопасности и вредоносные программы, которые маскируют свое присутствие в системе. Также обязательно просматривай логи на предмет подозрительных модулей ядра.

Настрой Least Privilege и включи 2FA (MFA):
1. Учетные записи должны иметь минимальные привилегии.
2. Включи многофакторную аутентификацию на всех панелях управления и удаленном доступе.

Если у взломанного пользователя нет нужных прав, вирусу сложнее разгуляться. Тот же вымогатель Hive для Linux прицельно убивает непривилегированные (non-root) процессы перед тем, как шифровать корневой каталог. Меньше прав — меньше шансов потерять всё.

Золотое правило бэкапов 3-2-1-1 против ransomware:
• 3 копии данных
• 2 разных типа носителей
• 1 копия вне основной площадки (оффсайт)
• 1 копия в неизменяемом хранилище (WORM) или оффлайн.

Если хакер уже внутри, обычные бэкапы могут быть уничтожены. Копия в изолированном неизменяемом хранилище (WORM — write once, read many), до которого злоумышленник не сможет дотянуться, чтобы переписать файлы, — твой единственный надежный шанс на восстановление.


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill
⭐️ Зеркало в MAX

#linux #ransomware #infosec #администрирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
🚨 Телеметрия под контролем. Как выследить шпионов в Linux через eBPF

Твои любимые приложения втихую сливают данные на удаленные сервера? Сейчас покажу, как поймать их за руку с помощью легендарного интерактивного фаервола Little Snitch, который наконец-то портировали с macOS на Linux.

uname -r
ls -l /sys/kernel/btf/


Little Snitch для Linux работает не через расширения ядра, а через подсистему eBPF и механизм CO-RE (Compile Once – Run Everywhere). Для этого ему строго требуется ядро от версии 6.12 до 6.19.0, собранное с поддержкой BTF. Если директории btf в твоей системе нет, программа работать не будет.

# Запуск интерфейса после установки .deb, .rpm или .pkg.tar.zst пакета
littlesnitch
# Веб-интерфейс будет доступен локально:
# http://localhost:3031/


Управление переехало в браузер: теперь это веб-приложение на JavaScript, которое можно установить как PWA (Progressive Web App). Исходный код eBPF-программ и web-UI полностью открыт под лицензией GPLv2, однако сам фоновый демон, отвечающий за правила, остался проприетарным (но бесплатным).

# Копируем конфиг, чтобы не редактировать дефолтные файлы
cp /var/lib/littlesnitch/config/main.toml /var/lib/littlesnitch/overrides/config/
nano /var/lib/littlesnitch/overrides/config/main.toml

Вся сложная конфигурация делается через TOML-файлы. Никогда не правь дефолтные конфиги напрямую — всегда создавай их копии в директории overrides, так как приложение отдает приоритет именно им. Через файл web_ui.toml можно настроить авторизацию и TLS, если планируешь мониторить удаленный сервер.

Результаты замеров исходящих соединений за одну неделю:
Ubuntu: 9 системных процессов
macOS: > 100 системных процессов

Разработчики проверили телеметрию базовых ОС: Ubuntu оказалась намного тише "яблочной" системы. Но сторонний софт стучит везде одинаково. Например, Firefox "из коробки" сразу лезет на ads.mozilla.org, тогда как LibreOffice вообще не пытается устанавливать сетевые соединения.

Github: https://github.com/obdev/littlesnitch-linux


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #News@LinuxSkill
⭐️ Зеркало в MAX

#littlesnitch #linux #ebpf #infosec
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👎1
🚨 Шпионы в телефоне: как приложения сливают твой IP и как их заморозить

Государство планирует ввести жесткие лимиты на зарубежный трафик, а популярные приложения (от маркетплейсов до банков) активно сканируют твой телефон на наличие туннелей,. Сейчас разберём, как провайдеры видят твой КВН и какими инструментами на уровне системы можно заткнуть локальных шпионов.

Лимиты на «Иностранный трафик» и борьба с КВН-сервисами > https://habr.com/ru/articles/1024246/

Как DPI (Deep Packet Inspection) распознает КВН-туннели:
1. По стандартным портам: OpenКВН (UDP 1194), WireGuard (UDP 51820).
2. По сигнатурам пакетов: WireGuard передает характерный 148-байтный пакет, OpenКВН палится по opcode.
3. По статистике: браузер шлет мелкие запросы и получает большие ответы, а КВН - это ровный поток одинаковых пакетов.

Минцифры обсуждает с операторами введение лимита в 15 ГБ на международный трафик (свыше — 150 руб/ГБ). Крупные платформы (Ozon, Wildberries, Яндекс) обязали блокировать пользователей с включенным КВН под угрозой лишения IT-аккредитации. Операторы вычисляют туннели через DPI и TLS fingerprinting, но 100% точности нет, поэтому под финансовый удар легко попадут геймеры, удаленщики и корпоративные сервисы,,.

Критическая уязвимость VLESS клиентов? Подержите мое пиво… > https://habr.com/ru/articles/1022422/

Большинство клиентов (v2rayNG, V2BOX, Hiddify) светят открытым socks-портом.
TeapodStream использует бинарник xray-core и статически собранный linux-arm64 бинарник tun2socks,.

# Генерация случайного порта и пароля на лету скрывает прокси от других приложений:
socks5://user:password@127.0.0.1:45478 # порт и креды динамические при каждом старте


Обычное сплит-туннелирование на Android не спасает: приложения в исключениях всё равно видят tun-интерфейс, маршруты и открытый локальный SOCKS5, сливая твой выходной IP. Решение от энтузиаста — open-source клиент TeapodStream. При каждом запуске он динамически генерирует случайный порт и уникальные логин/пароль для локального прокси, не давая "шпионам" просканировать localhost и задетектить адрес сервера.

Anubis: заморозка приложений по состоянию КВН / Хабр > https://habr.com/ru/articles/1023352/

# Изоляция через рабочие профили (Island/Insular) оставляет общей сеть (tun0 и 127.0.0.1).
# Anubis через Shizuku (AIDL UserService, права shell UID 2000) жестко замораживает пакеты:
pm disable-user --user 0 ru.sberbankmobile # приложение убито на уровне Package Manager,,

# Включение КВН клиента (например, v2rayNG) в фоне без UI:
am broadcast -a com.v2ray.ang.action.widget.click # стандартный вызов виджета


Песочницы не спасают от фоновой активности: маркетплейсы продолжают сканировать сеть,. Утилита Anubis связывает состояние КВН с системной заморозкой (pm disable-user) через инструмент Shizuku (работает без root). Пока КВН включен, приложения-стукачи полностью отключены на уровне ОС — у них нет процессов, они мертвы и физически не могут отправить твой IP или обнаружить туннель.


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #News@LinuxSkill
⭐️ Зеркало в MAX

#КВН #Security #DPI #Anubis #Privacy #habr
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👎1
🚀 Тратишь часы на дебаг веток? Эти 41 команда Git решат 99% твоих задач

Хватит гуглить каждую мелочь — держи ультимативную шпаргалку ровно на 41 команду Git. Только хардкор и рабочие конструкции для консоли.

1. Создание репозитория и сохранение изменений

# Клонировать существующий репозиторий (Clone an existing repository)
$ git clone [url]

# Инициализировать новый проект (Initialize new version-controlled project)
$ git init

# Сохранить изменения в репозиторий (Save changes to the repository)
$ git add .
$ git commit -m "first commit"

# Текущее состояние репозитория (Current state of the repository)
$ git status



2. Управление ветками

# Создать новую ветку (Create a new branch)
$ git branch [branchName]

# Показать все локальные и удаленные ветки (List all remote or local branches)
$ git branch -a

# Удалить ветку (Delete a branch)
$ git branch -d [branchName]

# Слить изменения в текущую ветку (Merge changes into current branch)
$ git merge [branchName]

# Переключиться на существующую ветку (Checkout an existing branch)
$ git checkout [branchName]
$ git switch [branchName]

# Переключиться и создать новую ветку (Checkout and create a new branch with that name)
$ git checkout -b [newBranch]
$ git switch -c [newBranch]



3. Теги, синхронизация и удаленные репозитории

# Создать тег (Create a tag)
$ git tag [tagName]

# Удалить тег (Delete the tag)
$ git tag -d [tagName]

# Отправить теги (Push tags)
$ git push --tags

# Получить последнюю версию репозитория (Get the latest version of a repository)
$ git pull [branchName] [remoteURL/remoteName]

# Добавить удаленный репозиторий (Add remote repository)
$ git remote add [remoteName] [remoteURL]

# Отправить локальные коммиты в удаленный репозиторий (Send local commits to the remote repository)
$ git push [remoteURL/remoteName] [branch]

# Показать URL удаленных репозиториев (Show remote URLs)
$ git remote -v


4. Отмена действий и удаление файлов

# Отменить предыдущий коммит (Undo the previous commit)
$ git revert HEAD^

# Забыть о файлах, которые отслеживались, но теперь в .gitignore (Forget about files that were tracked but are now in .gitignore)
$ git rm -r --cached .
$ git add .
$ git commit -am "remove ignored files"

# Удалить файл из рабочего индекса (Remove a file from the working index (cached))
$ git rm --cached [fileName]

# Удалить файл принудительно (Delete a file (force))
$ git rm -f [fileName]

# Удалить всю директорию из рабочего индекса (Remove an entire directory from the working index (cached))
$ git rm -r --cached [directoryName]

# Удалить всю директорию принудительно (Delete an entire directory (force))
$ git rm -r -f [directoryName]

# Удалить удаленную ветку (Delete a remote branch)
$ git push origin :[branchName]


5. Прятанье изменений (Stash) и базовые настройки

# Спрятать текущую работу с неотслеживаемыми файлами (Store current work with untracked files)
$ git stash -u

# Вернуть спрятанную работу обратно в рабочую директорию (Bring stashed work back to the working directory)
$ git stash pop

# Задать имя автора для всех коммитов (Define the author name to be used for all commits)
$ git config --global user.name [name]

# Задать email автора для всех коммитов (Define the author email to be used for all commits)
$ git config --global user.email [email]

# Полезные руководства, поставляемые с Git (Helpful guides that come with Git)
$ git help -g


6. История, изменения и сложные переносы

# Показать лог коммитов (Show commit log)
$ git log
$ git log --oneline

# Показать изменения (Show changes)
$ git diff

# Изменить сообщение последнего коммита (Amend last commit message)
$ git commit --amend

# Посмотреть, кто менял файл (Blame a file)
$ git blame [fileName]

# Перенести конкретный коммит (Cherry-pick a commit)
$ git cherry-pick [commitHash]

# Выполнить rebase на другую ветку (Rebase onto another branch)
$ git rebase [branchName]


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill
⭐️ Зеркало в MAX

#Linux #Git #DevOps #Sysadmin #CLI #Bash
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🚨 Исследователи нашли в нём 9 критических дыр, которые дают root-права за секунды

Думаешь, дефолтный AppArmor надёжно защищает твой Linux и изолирует контейнеры? Исследователи нашли в нём 9 критических дыр, которые дают root-права за секунды. Сейчас разберём, как устроена эта атака и как спасти свою инфраструктуру.

# Проверяем версию ядра и статус работы AppArmor
uname -r
aa-status
# Уязвимость присутствует в коде ещё с 2017 года (с ядра версии 4.11)

Специалисты из Qualys Threat Research Unit раскрыли серию уязвимостей под общим названием CrackArmor. Проблема кроется в самом модуле AppArmor, который включен по умолчанию в Ubuntu, Debian и SUSE. Баг жил в продакшене незамеченным годами, поставив под удар более 12,6 миллионов систем по всему миру (включая enterprise-серверы, облака, IoT и Kubernetes-кластеры).

# Вектор атаки "confused deputy" эксплуатируется через стандартные утилиты:
sudo -l
su -

Все 9 уязвимостей относятся к классу «confused deputy». Это значит, что непривилегированный локальный пользователь может обмануть доверенные системные процессы (например, `sudo` или `su`), взаимодействуя со специфическими псевдофайлами. В итоге злоумышленник обходит политики безопасности, повышает свои права до root за считанные секунды, ломает изоляцию контейнеров или провоцирует отказ в обслуживании (DoS).

План спасения инфраструктуры от CrackArmor:
• Немедленно обновить ядро Linux, как только патчи будут доступны.
• Жёстко ограничить доступ к серверу для недоверенных локальных пользователей.
• Настроить мониторинг любых изменений в профилях AppArmor.
• Пересмотреть использование привилегированных утилит (su, sudo).

На момент раскрытия информации уязвимостям даже не успели присвоить идентификаторы CVE. Этот провал — отличное напоминание о том, что нельзя полагаться только на один механизм изоляции. Разработчики настоятельно рекомендуют использовать эшелонированную защиту (defense-in-depth) и максимально быстро накатывать обновления ядра.


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #News@LinuxSkill
⭐️ Зеркало в MAX

#linux #apparmor #crackarmor #infosec #linuxjournal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👀1
🦝 Твои скрипты могут сломаться: Баги Rust-coreutils в Ubuntu 26.04

Ubuntu 26.04 LTS Resolute Raccoon вышла, но под капотом столько изменений, что твои старые скрипты и контейнеры могут внезапно посыпаться.

Что нужно знать

sudo do-release-upgrade -d

Для самых нетерпеливых на 25.10. Если ты на 24.04 LTS, официальное уведомление прилетит только в августе с выходом 26.04.1 — и это безопасный путь.

gnu --version
# Или временный фикс в .bashrc, если Rust-утилиты глючат:
alias cp='gnu cp'
alias mv='gnu mv'
alias rm='gnu rm'

В системе теперь rust-coreutils, но cp, mv и rm оставили от GNU из-за критических багов с TOCTOU (состояние гонки). Если твоя автоматизация ведет себя странно, используй префикс `gnu` для классических версий.

# Если бесят звездочки при вводе пароля, добавь в /etc/sudoers:
Defaults !pwfeedback

Новый sudo-rs на Rust теперь по умолчанию показывает звездочки при вводе. Отключаем, если привык к классической "пустоте".


grep cgroup /proc/filesystems

Поддержка cgroup v1 в systemd 259 полностью вырезана. Старые контейнеры (например, Ubuntu 14.04/16.04) на этом хосте больше не взлетят.

sudo apt install qemu-hwe libvirt-hwe
# Переключение стека:
ubuntu_virt_helper

Для серверов завезли стек virt-hwe, который обновляется дважды в год. Удобно, если нужно свежее ядро и либы для виртуализации на новом железе.


ls /run/media/$USER/

Внешние диски теперь монтируются сюда, а не в /media. Проверь пути в своих скриптах бэкапа, иначе они ничего не найдут.


sudo apt install authd

Новая тулза для интеграции с Microsoft Entra ID и Google Cloud Identity. Теперь можно логиниться в Linux под облачными учетками.



❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #News@LinuxSkill
⭐️ Зеркало в MAX

#ubuntu #linux #sysadmin #devops #lts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🔍 Тратишь часы на дебаг? Эти 53 команды Linux распарсят любой лог

Хватит мучить текстовые редакторы, держи ультимативный набор из 53 команд для обработки текста прямо в консоли.

1. Манипуляции с sed (замена и удаление)

# Заменить текст в файле
$ sed 's/old/new/g' [file]

# Сохранить изменения в файле напрямую
$ sed -i 's/old/new/g' [file]

# Регистронезависимая замена
$ sed -i 's/old/new/gI' [file]

# Удалить строки, подходящие под паттерн
$ sed '/pattern/d' [file]

# Удалить все пустые строки
$ sed -i '/^$/d' [file]

# Вывести строки с 5 по 10
$ sed -n '5,10p' [file]

# Печатать только строки, подходящие под паттерн
$ sed -n '/pattern/p' [file]



2. Мощный awk (извлечение и условия)

# Вывести первое поле (колонку)
$ awk '{print $1}' [file]

# Использовать двоеточие как разделитель и вывести 1 и 3 поля
$ awk -F: '{print $1, $3}' [file]

# Вывести номер строки и всё содержимое
$ awk '{print NR, $0}' [file]

# Фильтровать строки, где значение в 3 колонке больше 100
$ awk '$3 > 100' [file]

# Найти паттерн и вывести вторую колонку
$ awk '/pattern/ {print $2}' [file]

# Вывести строки в диапазоне от 5 до 10
$ awk 'NR>=5 && NR<=10' [file]

# Просуммировать числа в первой колонке
$ awk '{sum += $1} END {print sum}' [file]



3. Сортировка и фильтрация дубликатов

# Обычная сортировка строк
$ sort [file]

# Числовая сортировка
$ sort -n [file]

# Сортировка в обратном порядке
$ sort -r [file]

# Сортировка по 3-й колонке с разделителем двоеточие
$ sort -t: -k3 -n [file]

# Убрать дубликаты при сортировке
$ sort -u [file]

# Показать только уникальные строки
$ uniq [file]

# Посчитать количество повторений строк
$ uniq -c [file]

# Показать только повторяющиеся строки
$ uniq -d [file]

# Показать только те строки, что не повторялись
$ uniq -u [file]

# Найти самые частые строки в файле
$ sort [file] | uniq -c | sort -rn



4. Обрезка и трансформация текста

# Вырезать первую колонку с разделителем двоеточие
$ cut -d: -f1 [file]

# Вырезать 1 и 3 колонки с разделителем запятая
$ cut -d',' -f1,3 [file]

# Вырезать первые 10 символов в каждой строке
$ cut -c1-10 [file]

# Перевести все буквы в верхний регистр
$ tr 'a-z' 'A-Z' < [file]

# Удалить все цифры из текста
$ tr -d '[:digit:]' < [file]

# Сжать идущие подряд пробелы в один
$ tr -s ' ' < [file]

# Заменить символы переноса строки на пробелы
$ tr '\n' ' ' < [file]



5. Сравнение, слияние и форматирование

# Найти различия между двумя файлами
$ diff [file1] [file2]

# Различия в унифицированном формате
$ diff -u [file1] [file2]

# Сравнить файлы бок о бок
$ diff -y [file1] [file2]

# Показать общие и уникальные строки
$ comm [file1] [file2]

# Побайтовое сравнение файлов
$ cmp [file1] [file2]

# Склеить файлы горизонтально
$ paste [file1] [file2]

# Склеить файлы с разделителем запятая
$ paste -d',' [file1] [file2]

# Склеить все строки файла в одну
$ paste -s [file]

# Объединить файлы по общему полю
$ join [file1] [file2]

# Объединить по 1-му полю первого файла и 3-му полю второго
$ join -t: -1 1 -2 3 [file1] [file2]

# Форматировать текст в ровные колонки
$ column -t [file]

# Форматировать CSV в колонки
$ column -t -s',' [file]



6. Перенос, нумерация и статистика

# Ограничить ширину текста до 80 символов
$ fmt -w 80 [file]

# Жесткий перенос строк по 80 символов
$ fold -w 80 [file]

# Перенос строк по словам на 80 символов
$ fold -s -w 80 [file]

# Пронумеровать строки (кроме пустых)
$ nl [file]

# Пронумеровать все строки
$ nl -ba [file]

# Вывести содержимое с нумерацией строк
$ cat -n [file]

# Статистика: строки, слова, символы
$ wc [file]

# Посчитать количество строк
$ wc -l [file]

# Посчитать количество слов
$ wc -w [file]

# Посчитать количество байт
$ wc -c [file]


Теперь ты знаешь, как превратить любой нечитаемый текст в идеальный отчет за пару секунд. Сохраняй, чтобы не потерять ключи sed в самый ответственный момент!


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill
⭐️ Зеркало в MAX

#Linux #TextProcessing #Bash #DevOps #Sysadmin #CLI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
🚮 Твои скрипты не запустятся: Что удалили в Ubuntu 26.04

Ubuntu 26.04 LTS «Resolute Raccoon» не просто обновилась — она знатно «похудела», выкинув пакеты и технологии, на которых годами держались твои конфиги и контейнеры.

Список «потерь»

# Проверка поддержки cgroup
grep cgroup /proc/filesystems


Поддержка cgroup v1 (legacy и hybrid) полностью вырезана из systemd 259. Если твои контейнеры (например, старая Ubuntu 16.04) требуют v1, на этом хосте они не заведутся.

# Поиск сессий Xorg
ls /usr/share/xsessions/

Сессия Xorg/X11 удалена из стандартной поставки GNOME. Теперь только Wayland. Приложения X11 работают через прослойку XWayland, но прямых иксов больше нет.

# Попытка добавить ключ (выдаст ошибку или предупреждение)
sudo apt-key add repository.key

Утилита apt-key окончательно удалена. Для управления ключами репозиториев теперь нужно использовать gpgv напрямую, как описано в man apt-secure.

# Проверка статуса сетевых сервисов
sudo systemctl status nfs-blkmap

Сервисы blkmapd и nfs-blkmap для NFS удалены. pNFS block layout признан небезопасным (риск потери данных) в пользу SCSI/NVMe layouts.

# Поиск ядра lowlatency
dpkg -l | grep linux-lowlatency

Пакет linux-lowlatency отправлен на покой. Вместо него теперь используется метапакет lowlatency-kernel, который тюнит стандартное ядро через параметры загрузки в GRUB.

Для тех, кто на мейнфреймах
Поддержка IBM Z z14 (LinuxONE II) и старше прекращена


Ubuntu 26.04 теперь требует минимум архитектуру z15. Старое железо не поддерживается инсталлятором и апгрейдером.

Что заменили в GUI (удалили из дефолта):
Totem -> Showtime
Evince -> Papers
GNOME Terminal -> Ptyxis
Eye of GNOME -> Loupe
System Monitor -> Resources


Классические приложения заменены на новые аналоги на Rust и GTK4. Также из базовой установки вырезаны Software & Updates и Startup Applications (их функции теперь в настройках системы).


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #News@LinuxSkill
⭐️ Зеркало в MAX

#ubuntu #linux #sysadmin #devops #lts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
💥 Твой ИИ снесёт прод за 9 секунд. Ставим хард-лимиты для агентов

Слышал, как ИИ-агент Cursor (на базе Claude Opus 4.6) за 9 секунд удалил всю базу и бэкапы стартапа PocketOS? Давай разберем на их ошибках, почему текстовые запреты в промптах — это мусор, и как реально работает безопасность.

Как это было и как надо делать

curl -X POST https://backboard.railway.app/graphql/v2 \
-H "Authorization: Bearer [token]" \
-d '{"query":"mutation { volumeDelete(volumeId: \"3d2c42fb-...\") }"}'

Это реальный запрос, который агент отправил в Railway API, чтобы «починить» ошибку авторизации. Никакого подтверждения (типа "введите DELETE" или SMS) система не запросила.

Railway CLI token = Domain Management + volumeDelete permission

Агент нашел токен в файле, вообще не связанном с его задачей. Токен создавался только для управления доменами через CLI, но по факту давал root-права на весь GraphQL API без какого-либо RBAC.

"NEVER run destructive/irreversible git commands (like push --force, hard reset, etc) unless the user explicitly requests them."

Это кусок реального системного промпта агента PocketOS. Агент сам признался, что знал правило, но «угадал», что удаление безопасно, и проигнорировал его. Системные промпты — это советы, а не защита, модель может их обойти.

# Разрешенные команды (Cerbos Synapse):
git status

# Блокируемые команды:
rm -rf


Защита должна быть снаружи процесса агента. Как указывают спецы из Cerbos, HTTP-хуки перехватывают вызовы ИИ и блокируют деструктивные операции (например, rm -rf), не давая агенту права самому управлять своими разрешениями.

"Wiping a volume deletes all backups"

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


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #News@LinuxSkill
⭐️ Зеркало в MAX

#ai #devops #sysadmin #security #incident
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
📦 Стыдно не знать эти 44 команды архивации, которые избавят тебя от рутины

Снова забыл, какой ключ нужен для извлечения файлов из архива tar.xz, или путаешься в современных форматах сжатия? Хватит каждый раз гуглить документацию — держи ультимативную шпаргалку ровно на 44 команды по всем видам архивов и компрессии в Linux.

1. Работа с архивами tar
Классический инструмент администратора. Создание, распаковка и просмотр содержимого.


# Создать tar архив
$ tar cf [archive].tar [files]
$ tar czf [archive].tar.gz [files]
$ tar cjf [archive].tar.bz2 [files]
$ tar cJf [archive].tar.xz [files]

# Извлечь tar архив
$ tar xf [archive].tar
$ tar xzf [archive].tar.gz
$ tar xjf [archive].tar.bz2
$ tar xJf [archive].tar.xz

# Извлечь в определенную директорию
$ tar xf [archive].tar -C [directory]

# Показать содержимое архива
$ tar tf [archive].tar
$ tar tzf [archive].tar.gz


2. Сжатие и распаковка (gzip и bzip2)
Базовые утилиты для работы с популярными форматами сжатия.


# Сжать с помощью gzip
$ gzip [file]
$ gzip -k [file]
$ gzip -9 [file]

# Распаковать gzip
$ gunzip [file].gz
$ zcat [file].gz

# Сжать с помощью bzip2
$ bzip2 [file]
$ bzip2 -k [file]

# Распаковать bzip2
$ bunzip2 [file].bz2
$ bzcat [file].bz2


3. Современное сжатие (xz и zstd)
Форматы, обеспечивающие высокую степень сжатия или невероятную скорость.

# Сжать с помощью xz
$ xz [file]
$ xz -k [file]
$ xz -9 [file]

# Распаковать xz
$ unxz [file].xz
$ xzcat [file].xz

# Сжать с помощью zstd
$ zstd [file]
$ zstd -k [file]
$ zstd -19 [file]

# Распаковать zstd
$ unzstd [file].zst
$ zstdcat [file].zst


4. Популярный формат zip
Управление классическими zip-архивами прямо из консоли.


# Создать zip архив
$ zip [archive].zip [files]
$ zip -r [archive].zip [directory]
$ zip -e [archive].zip [files]

# Извлечь zip архив
$ unzip [archive].zip
$ unzip [archive].zip -d [directory]
$ unzip -l [archive].zip

# Показать информацию о zip архиве
$ zipinfo [archive].zip


5. Другие форматы: 7z, cpio, rar, ar
Работа с экзотическими или специфичными форматами упаковки.


# Создать 7z архив
$ 7z a [archive].7z [files]

# Извлечь 7z архив
$ 7z x [archive].7z

# Показать содержимое 7z архива
$ 7z l [archive].7z

# Создать cpio архив
$ find . | cpio -o > [archive].cpio

# Извлечь cpio архив
$ cpio -id < [archive].cpio

# Извлечь rar архив
$ unrar x [archive].rar

# Создать ar архив
$ ar rcs [archive].a [files]


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill
⭐️ Зеркало в MAX

#Linux #Bash #Archiving #DevOps #Sysadmin #CLI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🔥 14 ГБ оперативки на фаервол? Вся правда о порте Little Snitch на Linux

Не знаешь, какие процессы втихаря сливают телеметрию с твоего сервера? Сейчас покажу, как отследить и заблокировать их с помощью порта Little Snitch на Linux, и почему с ним нужно быть крайне осторожным.

rustup toolchain install stable
rustup toolchain install nightly --component rust-src
cargo install bpf-linker

Ставим зависимости. Без ночной сборки Rust линкер не справится, и eBPF-программы для ядра просто не соберутся. Также в системе должен быть установлен компилятор clang.

cargo build
cargo check


Запускаем сборку. Код очень капризный и проходит верификатор только на ядрах Linux от 6.12 до 7.0 (обязательна поддержка BTF) при сборке через Rust 1.93.0-nightly. На старых ядрах ты просто упрешься в лимит инструкций верификатора.

http://localhost:3031/

Именно здесь по умолчанию живет веб-интерфейс. В отличие от macOS-версии, традиционного десктопного приложения тут нет — демон поднимает локальный сервер, куда можно зайти даже с телефона или добавить его как PWA. При этом визуальные графики трафика на месте: они строятся внизу страницы и позволяют фильтровать историю соединений.

cp /var/lib/littlesnitch/config/web_ui.toml /var/lib/littlesnitch/overrides/config/
cp /var/lib/littlesnitch/config/main.toml /var/lib/littlesnitch/overrides/config/


Никогда не правь дефолтные конфиги напрямую. Скопируй их в директорию overrides и редактируй там. В main.toml можно сменить политику неизвестных соединений на deny, а в web_ui.toml — обязательно включить TLS и базовую аутентификацию, если интерфейс торчит наружу.

Запомни главное: на Linux это инструмент только для приватности, а не для безопасности. Под высокой сетевой нагрузкой eBPF-таблицы кэша тупо переполняются, и система перестает понимать, какой пакет какому процессу принадлежит. В довесок, пользователи на GitHub и Reddit уже вовсю репортят баги: этот полупроприетарный демон способен сожрать 13-14 ГБ памяти и повесить CPU на 100%.


Проект на github.com

❗️❗️❗️ Нравится формат? Ставь 👍
⭐️ Зеркало в MAX

#linux #ebpf #littlesnitch #firewall #devops #администрирование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🚨 Спасаем Linux от рут-доступа без пароля: надежный патч

Любой локальный пользователь прямо сейчас может получить root-права на твоей машине из-за новых уязвимостей Dirty Frag и Copy Fail. В сети гуляют скрипты защиты, которые выдают ошибки доступа или пропускают часть уязвимых модулей. Сейчас покажу, как надежно заблокировать эту угрозу командами от Amazon и Microsoft.

Проблема кроется в подсистемах ядра IPsec (esp4/esp6/ipcomp4/ipcomp6) и RxRPC. Эксплойт перезаписывает кэш страниц и модифицирует бинарные файлы (например, /usr/bin/su) прямо в оперативной памяти. В итоге атакующий получает root-оболочку без ввода пароля.

Вот пошаговая инструкция для полной изоляции угрозы:

# 1. Проверяем наличие модулей в памяти
lsmod | grep -E "esp4|esp6|ipcomp4|ipcomp6|rxrpc"

# 2. Блокируем загрузку и пытаемся выгрузить текущие
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall ipcomp4 /bin/false\ninstall ipcomp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf"

# Пытаемся выгрузить модули (modprobe -r корректно обрабатывает зависимости)
sudo modprobe -r esp4 esp6 ipcomp4 ipcomp6 rxrpc 2>/dev/null || echo "Некоторые модули еще используются и не могут быть выгружены без перезагрузки"

# 3. Очищаем кэш (теперь с sudo)
sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

Важно: блокировка модулей esp и ipcomp полностью отключит поддержку IPsec (КВН, зашифрованные туннели). Если сервер использует их для связи, сеть упадет. Также обрати внимание: если модули уже были загружены и использовались, для надежной выгрузки потребуется перезагрузка сервера.

Теперь ты знаешь, как защитить инфраструктуру от свежих уязвимостей. Проверь свои серверы прямо сейчас.


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #News@LinuxSkill
⭐️ Зеркало в MAX

#Linux #Security #DirtyFrag #Root #AWS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🛡 Тратишь часы на аудит сети? Эти 59 утилит сэкономят твои нервы

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

1. Эксплуатация уязвимостей (Exploitation tools)

# Утилиты для поиска и эксплуатации брешей
$ yersinia
$ thc-ipv6
$ sqlmap
$ termineter
$ searchsploit
$ msfpc
$ msfconsole
$ beef-xss
$ setoolkit



2. Атаки на пароли (Password attacks)

# Инструменты для брутфорса, генерации словарей и подбора паролей
$ cewl
$ crunch
$ hashcat
$ john
$ medusa
$ ncrack
$ ophcrack
$ pyrit
$ rcrack
$ hydra



3. Компьютерная криминалистика (Forensics)

# Утилиты для расследования инцидентов и анализа дампов памяти
$ autopsy
$ binwalk
$ bulk_extractor
$ chkrootkit
$ foremost
$ galleta
$ hashdeep
$ volatility



4. Сниффинг и Спуфинг (Sniffing/Spoofing)

# Перехват и подмена трафика в сети
$ driftnet
$ ettercap
$ macchanger
$ mitmproxy
$ netsniff-ng
$ wireshark



5. Сбор информации (Information gathering)

# Разведка и сбор данных об инфраструктуре и хостах
$ dmitry
$ ike-scan
$ netdiscover
$ nmap
$ zenmap



6. Анализ уязвимостей (Vulnerability analysis)

# Сканирование системы и сети на наличие уязвимостей
$ lynis
$ nikto
$ nmap



7. Анализ веб-приложений (Web application analysis)

# Поиск брешей в веб-сайтах и дамп данных
$ httrack
$ skipfish
$ sqlmap



8. Базы данных (Databases)

# Тестирование безопасности баз данных
$ mdb-sql
$ sqlitebrowser
$ sqlmap



9. Атаки на беспроводные сети (Wireless attack)

# Взлом и аудит Wi-Fi, RFID и других беспроводных стандартов
$ cewl
$ aircrack-ng
$ chirpw
$ giskismet
$ kismet
$ mfoc
$ mfterm
$ reaver
$ wifite



10. Утилиты для отчетов (Reporting tools)

# Создание отчетов и фиксация результатов пентеста
$ cutycapt
$ keepnote
$ recordmydesktop


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


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill
⭐️ Зеркало в MAX

#Linux #Security #Pentest #Sysadmin #DevOps #Hacking
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
🧠 Устал от взломов? 5 строчек SSH, которые спасут сервер

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

1. Бэкап конфигурации
Всегда делай резервную копию перед изменениями.

# Бэкап конфигурации SSH перед любыми изменениями
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bkp


2. Хардэнинг сервера
Ограничь прослушиваемые адреса и отключи небезопасные методы аутентификации.

# Жестко прописываем IP адрес SSH сервера для защиты
ListenAddress 192.168.1.100 # ip ag-dc-1

# Отключаем пустые пароли и доверенные хосты
PermitEmptyPasswords no
IgnoreRhosts yes
HostbasedAuthentication no


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

# Проброс удаленного порта на локальную машину
ssh -N -L 8000:example.com:80 user@bastion.example.com


4. Выполнение команд на лету
Запускай команды без входа в интерактивную сессию.

# Выполнение конкретной команды на сервере без входа в интерактивную сессию
ssh [user]@[host] [command]


5. Монтирование удаленных папок
Подключай директории прямо в свою систему для удобной работы.

# Монтирование удаленной директории через SSH в локальную систему
sshfs [user]@[host]:[remoteDir] [localDir]


Безопасность — это процесс, а не результат. Обнови конфиги прямо сейчас, чтобы спать спокойно.


❗️❗️❗️ Нравится формат? Ставь 👍
⭐️ Зеркало в MAX

#Linux #SSH #Security #Hardening #SysAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🚨 Останови кражу root-файлов без перезагрузки сервера

Любой локальный пользователь без привилегий прямо сейчас может прочитать твои приватные SSH-ключи и хеши паролей из /etc/shadow. Давай закроем брешь CVE-2026-46333 на уровне ядра строго по рекомендациям Red Hat.

Ошибка кроется в функции __ptrace_may_access(). Во время завершения процесса ядро освобождает память до закрытия файловых дескрипторов. Возникает состояние гонки. Успешная эксплуатация опирается на использование вызова pidfd_getfd(2). Под ударом RHEL 8, 9, 10 и зависимые продукты (RHEL CoreOS, OpenShift, OpenStack, Red Hat Virtualization).

Официальный бюллетень Red Hat не предоставляет готовых bash-скриптов, но описывает два варианта изоляции угрозы:

1. Option 1: Admin-only scope (Безопасный режим)
Необходимо установить ptrace_scope в значение 2. Это ограничит ptrace только для процессов с правами CAP_SYS_PTRACE и заблокирует известные векторы атак.
Важно: это не позволит обычным пользователям использовать отладчики (gdb, strace -p) для своих собственных процессов.

2. Option 2: Most restrictive scope (Радикальный режим)
Необходимо установить ptrace_scope в значение 3. Это полностью отключит любые операции ptrace для всех, включая root.
Важно: сломаются любые инструменты мониторинга, опирающиеся на ptrace. Требуется жесткое тестирование.

Для отката любого из этих вариантов (Mitigation removal) вендор дает следующую прямую инструкцию:

delete /etc/sysctl.d/ptrace-restrict.conf and run sysctl --system

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


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #News@LinuxSkill
⭐️ Зеркало в MAX

#Linux #Security #CVE #RHEL #Root
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🧠 Закипел мозг от конфигов? 10 скрытых игр прямо в терминале

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

1. Знаменитая головоломка 2048.

$ 2048

2. Классический сапёр (mines)

$ nbmines
$ freesweep



3. Текстовое приключение (adventure).

$ adventure


4. Лунный багги (moon-buggy).

$ moon-buggy


5. Классическая ролевая игра (angband).

$ angband


6. Подземелья Мории (moria).

$ moria


7. Симулятор авиадиспетчера (atc).

$ atc


8. Легендарный рогалик (nethack).

$ nethack-console


9. Нарды в консоли (backgammon).

$ backgammon


10. Космические захватчики (ninvaders).

$ ninvaders

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


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill
⭐️ Зеркало в MAX

#Linux #Terminal #CLI #Games #Sysadmin #DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🚨 Останови захват root через кэш. Защищаем сервер от Fragnesia

Не успели мы выдохнуть после патчей для Dirty Frag, как исследователь William Bowling из команды V12 выкатил продолжение — уязвимость «Fragnesia» (CVE-2026-46300). Давай разберем механику угрозы и посмотрим на официальные методы защиты.

Новый баг — это непреднамеренный побочный эффект от патчей, которыми ранее закрывали прошлую дыру Dirty Frag. Проблема находится в подсистеме ядра XFRM, отвечающей за обработку ESP-in-TCP (поддержка IPsec).

Опасность Fragnesia кроется в трех факторах:
- Логическая ошибка позволяет произвольно записывать байты в кэш страниц ядра (page cache) для файлов, доступных только для чтения.
- Опубликованный эксплойт успешно модифицирует бинарник /usr/bin/su прямо в оперативной памяти, открывая root-оболочку без изменения файла на диске.
- Эксплойт абсолютно предсказуем. В отличие от старых багов вроде Dirty COW, он вообще не полагается на состояния гонки (Race Conditions), что делает его сверхнадежным.

Такие вендоры, как Ubuntu, RHEL, Debian, SUSE и Amazon Linux, уже оценивают масштабы проблемы по всем поддерживаемым версиям ядер. Microsoft предупреждает: эксплойт позволяет модифицировать любой читаемый юзером файл, включая /etc/passwd

Что делать прямо сейчас? Инженеры уже подготовили патч из двух строк для файла skbuff.c, но пока он едет в стабильные ветки дистрибутивов (Ubuntu, Debian, RHEL, SUSE и др.), разработчики AlmaLinux выпустили официальную рекомендацию по защите:

«Если твой сервер не использует IPsec/ESP, жесткое отключение этих модулей ядра поможет срезать вектор атаки до установки финального патча. Следи за пакетным менеджером и обновляйся.»


👉 Патч тут

❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #News@LinuxSkill
⭐️ Зеркало в MAX

#Linux #Security #Fragnesia #CVE #Root
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🚨 Экстренно меняем токены: атака Megalodon ломает GitHub-репозитории

Масштабная автоматизированная supply-chain атака Megalodon всего за шесть часов поразила более 5500 репозиториев на GitHub. Злоумышленники внедряют вредоносные рабочие процессы в CI/CD и сливают критичные секреты инфраструктуры. Разберем механику взлома и официальные шаги по защите.

Аналитики Hudson Rock подтвердили: источником заражения стали обычные инфостилеры на рабочих компьютерах разработчиков. Украденные учетные данные позволили хакерам получить доступ к репозиториям.

Как действует эксплойт:
- Атакующие используют поддельные имена авторов, маскируясь под легитимных ботов (build-bot, auto-ci, ci-bot, pipeline-bot).
- В GitHub Actions внедряется вредоносный workflow с полезной нагрузкой на bash в кодировке Base64.
- Скрипт собирает переменные окружения, ключи AWS, SSH, токены Kubernetes, Docker, Vault и Terraform, после чего отправляет их на C2-сервер атакующих.

Опасность в том, что атака активируется автоматически при каждом пуше (вариант SysDiag) или ждет ручного запуска через workflow_dispatch (вариант Optimize-Build), гарантируя хакерам максимальный охват.

Поскольку проблема кроется в утечке доступов, готовых bash-скриптов для очистки нет — зараженные пайплайны нужно вычищать вручную. Платформа npm уже начала принудительно аннулировать скомпрометированные ключи и выпустила официальную инструкцию по сдерживанию угрозы:


Официальные меры по защите от атаки в экосистеме npm
1. Немедленно аннулировать гранулярные токены доступа с правами на запись, которые обходят двухфакторную аутентификацию (2FA).
2. Перевести публикацию пакетов на механизм Trusted Publishing, чтобы снизить зависимость от статических токенов.

Машина разработчика с трояном — это прямой бэкдор в твой продакшен. Проверь историю коммитов на предмет странных ботов и отзови старые токены прямо сегодня.

❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #News@LinuxSkill
⭐️ Зеркало в MAX

#GitHub #Security #CICD #Megalodon #DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👎1
🧨 Твои скрипты падают на проде? 43 команды Bash, которые спасут твою репутацию

Скрипт отработал с ошибкой, но не остановился и удалил половину нужных файлов? Или CI/CD пайплайн споткнулся о пустую переменную? Я отжал воду из огромных справочников и оставил ровно 50 самых хардкорных и важных конструкций Bash, которые жизненно необходимы.

1. Безопасность и запуск (Strict Mode)
Эти настройки — стандарт де-факто для любых production-скриптов. Они отлавливают ошибки на раннем этапе.

# Указать интерпретатор (лучшая практика переносимости)
#!/usr/bin/env bash

# Сделать скрипт исполняемым
chmod +x script.sh

# "Strict Mode" (выход при ошибке, ошибке переменной или в пайплайне)
set -euo pipefail

# Выйти немедленно при ошибке
set -e

# Режим отладки (выводить команды перед выполнением)
set -x



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

# Присвоить значение (строго без пробелов вокруг =)
VAR=value

# Безопасное чтение с кавычками (предотвращает word splitting)
"$VAR"

# Использовать по умолчанию, если переменная не задана (важно для Docker)
${VAR:-default}

# Назначить значение по умолчанию, если VAR не задана
${VAR:=default}

# Выйти с ошибкой, если переменная не задана (failsafe для деплоя)
${VAR:?error msg}

# Сделать переменную доступной только для чтения (константа)
readonly VAR

# Экспортировать переменную для дочерних процессов
export VAR



3. Системные переменные
Идентификаторы процессов и аргументы функций.

# Имя скрипта
$0

# Позиционные параметры (аргументы 1-9)
$1..$9

# Количество переданных аргументов
$#

# Все аргументы безопасно как отдельные слова
$@

# Статус выхода последней команды (0 - успех, иное - ошибка)
$?

# PID текущего процесса shell
$$



4. Парсинг строк (без вызова awk/sed)
Молниеносные встроенные манипуляции с путями и текстом.

# Удалить самое короткое совпадение паттерна с начала
${VAR#pattern}

# Удалить самое короткое совпадение с конца (удобно для расширений файлов)
${VAR%pattern}

# Заменить все вхождения подстроки
${VAR//old/new}

# Перевести все символы в нижний регистр
${VAR,,}



5. Условия и мощные проверки
Используй `[[ ]]` вместо старого `[ ]` — это безопаснее и поддерживает регулярные выражения.

# Проверить существование файла и вывести результат
if [[ -f "file.txt" ]]; then echo "exists"; fi

# Проверка по регулярному выражению
=~

# Конструкция case (идеально для стартовых скриптов systemd)
case "$1" in start) echo "Starting";; stop) echo "Stopping";; *) echo "Usage: $0 {start|stop}";; esac

# Файл существует и является обычным
-f file

# Файл существует и является директорией
-d file

# Строка пустая
-z string

# Строка не пустая
-n string

# Строковое равенство и неравенство
==
!=

# Числовое равенство и неравенство
-eq
-ne



6. Массивы и словари
Незаменимо для перебора IP-адресов, списков серверов и портов.

# Объявить индексированный массив
arr=(a b c)

# Получить все элементы массива
${arr[@]}

# Узнать количество элементов в массиве
${#arr[@]}

# Объявить ассоциативный массив (словарь)
declare -A map

# Добавить значение по ключу
map[key]="value"



7. Математика, Ввод/Вывод и Сигналы
Форматирование вывода для дашбордов и правильная очистка мусора за скриптом.

# Арифметика: сложение
$((a + b))

# Арифметическое присваивание
let "a += 5"

# Прочитать строку в массив
read -r -a items <<< "a b c"

# Форматированный вывод (надежнее чем echo)
printf "Name: %s, Age: %d\n" "$name" "$age"

# Многострочный ввод (Here document) для генерации конфигов
cat <<EOF
Lines of text go here.
Variables like $HOME are expanded.
$ EOF

# Завершить скрипт с кодом успеха
exit 0

# Завершить скрипт с кодом ошибки
exit 1

# Выполнить очистку (например, удалить лок-файл) при любом выходе
trap ' rm -f /tmp/mylock' EXIT


Теперь твой код готов к нагрузкам. Сохраняй шпаргалку, чтобы не плодить костыли, и применяй правильный синтаксис!


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill
⭐️ Зеркало в MAX

#Linux #Bash #DevOps #Sysadmin #ShellScripting #CLI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🛡️ SSH-туннель отваливается? Вечные соединения за секунду

Обычный SSH-туннель или прокси падает при малейшем сбое сети, оставляя тебя без связи. Утилита autossh решает эту проблему: она оборачивает SSH-соединение, мониторит его состояние и автоматически перезапускает при обрыве.

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

1. Поднимаем постоянный локальный SSH-туннель (Local port forward)
Пробрасываем удаленный порт 80 на локальный 8080 с портом мониторинга 20000
autossh -M 20000 -N -L 8080:localhost:80 user@remote

2. Туннель без отдельного порта мониторинга
Полезно, если порты мониторинга закрыты (полагается на ServerAliveInterval)
autossh -M 0 -N -L 8080:localhost:80 user@remote

3. Поднимаем вечный обратный туннель (Reverse port forward)
Пробрасываем наш локальный порт 80 на удаленный порт 8080
autossh -M 20000 -N -R 8080:localhost:80 user@remote

4. Запуск в фоновом режиме
Ключ -f уводит процесс в фон сразу после аутентификации
autossh -f -M 20000 -N -L 8080:localhost:80 user@remote

5. Создаем неразрывный SOCKS-прокси
autossh -M 20000 -N -D 8080 user@remote

6. Управление через переменные окружения
Включаем отладку и задаем задержку перед первой проверкой (по умолчанию 30 сек)
AUTOSSH_DEBUG=1 AUTOSSH_GATETIME=10 autossh -M 20000 -N -D 8080 user@remote

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


❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill

#SSH #Autossh #Linux #DevOps #SysAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
cheatsheet_cron.png
679.7 KB
💣 Cron для сеньоров: защита от дублей и правильные логи
Держи концентрат боевых примеров для crontab, которые нужны на реальном продакшене.

❗️❗️❗️ Нравится формат? Ставь 👍

👉 Рубрика: #шпаргалка@LinuxSkill
#Linux #Cron #DevOps #Bash #SysAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11