Bash Days | Linux | DevOps @bashdays Channel on Telegram

Bash Days | Linux | DevOps

@bashdays


Авторский канал от действующего девопса

Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу.

Автор: Роман Шубин
Реклама: @maxgrue

Курс: @tormozilla_bot

РКН: https://bit.ly/knd2gov

Bash Days | Linux | DevOps (Russian)

Приветствуем вас на канале Bash Days, посвященном Linux и DevOps! Этот канал создан действующим девопсом, который делится своим опытом и знаниями в области разработки, devops, linux, скриптов, тестирования, сисадминства, техдирства и пиэмства. Автором канала является Роман Шубин, который с удовольствием отвечает на ваши вопросы и делится интересными материалами. На канале вы также найдете рекламную информацию от @maxgrue и можете присоединиться к чату @bashday для общения с единомышленниками. Кроме того, на канале представлен DevOps Интенсив от @tormozilla_bot, который поможет вам расширить свои знания в данной области. Присоединяйтесь к каналу Bash Days и погрузитесь в захватывающий мир IT технологий!

Bash Days | Linux | DevOps

29 Jan, 07:13


Приветcвую вас, комрады!

🔤🔤🔥🔤🔤🔤🔤🔤🔤🔤

Есть довольно редкоземельная но полезная утилитка, обзывается она - Crane

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

Копирование образа между реестрами (без необходимости их пулить себе).

Бывало у вас такое, что нужно перенести образ из одного реестра в другой?

С crane это делается на раз-два:

crane cp gcr.io/shlyapa-project/executor:v1.7.0-debug myharbor.ru/shlyapa-executor:v1.7.0-debug


Эта команда скопирует образ executor:v1.7.0-debug из реестра gcr.io в ваш собственный реджистри myharbor.ru.

Просмотр содержимого образа:

Иногда хочется заглянуть внутрь образа и посмотреть, что там внутри.

С crane это проще простого:
crane export executor - | tar -tvf - | less


Здесь мы экспортируем файловую систему образа executor и просматриваем список файлов с помощью команды tar.

Извлечение конкретного файла из образа:

Нужно достать нужный файл из образа? Легко!
crane export executor - | tar -Oxf - etc/passwd


Эта команда извлечет файл passwd из директории etc образа executor и выведет его содержимое.

Сравнение конфигураций двух версий образа:


Хотите узнать, чем отличаются конфигурации двух версий одного образа? Пожалуйста:
diff <(crane config front:1.32 | jq) <(crane config front:1.33 | jq)


Здесь мы сравниваем конфигурации версий 1.32 и 1.33 образа front с помощью утилиты diff.

Получение размера образа:

Интересно, сколько весит ваш образ? Вот как это узнать:

crane manifest gcr.io/buildpacks/builder:v1 | jq '.config.size + ([.layers[].size] | add)'


Эта команда выводит суммарный размер конфигурации и всех слоев образа.

Изменение меток и аннотаций образа:

Вы можете добавлять или изменять метки и аннотации в существующем образе без необходимости его повторной сборки:
crane mutate myharbor.ru/shlyapa-project/bear_ass_image:tag --annotation "org.opencontainers.image.description=New description" --label "version=2.0"


Эта команда добавит или обновит аннотацию и метку в указанном образе.

Также можно доложить tarbar (архивы .tar .tar.gz .tgz), добавить тэг (удобнее чем в дефолтном докер клиенте), задать другой entrypoint и т.д.

И это ещё не всё)

Но это чем я пользую практически регулярно. + это 1 бинарь (на любимой многими GOшечке) что позволяет спокойно его использовать и в системах автосборки и упростить взаимодействие с контейнерам.

tags: #utilites #devops

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

29 Jan, 05:00


🚀 Всё для сисадминов и директоров по ИТ – в одном месте!

Рекомендации:

Popeye — утилита, которая сканирует работающие кластеры Kubernetes

kubectl-neat — плагин позволяющий удалить беспорядок из манифестов Kubernetes

Топ-5 полезных утилит для Docker

Kubernetes. Прокачка. Часть 1

Kubernetes. Прокачка. Часть 2

Импортозамещение:

Облака: итоги 2024 и прогнозы 2025

Облака на практике и в теории

Российская виртуализация: всё важное в одном посте

Тестирование 6 отечественных СЗИ

Инфобез:

БОЛЬШАЯ ИБ-ПОДБОРКА

CIS: лучшие мировые практики построения ИБ в компании

Ужесточение ответственности в сфере ПДн

Оборотные штрафы, уголовная ответственность – что делать прямо сейчас

Защита персданных: полный перечень документов


➡️ Присоединяйтесь к каналу для ДИТов


Реклама ООО "Кортэл"
ИНН: 7816246925

Bash Days | Linux | DevOps

28 Jan, 07:00


Привет всем пользователям и администраторам Linux! Специально для вас я создал канал @/usr/bin, в котором регулярно делюсь своим опытом и опытом других людей по администрированию ОС и приложений на ней. Каждый день в канале публикуется новая интересная статья.

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

Топ последних постов, опубликованных на канале:

🚀 Подстроки в Bash: извлечение и обработка

🚀 Как устроен кэш Linux: руководство для начинающих

🚀 Статья о том, как стать grep-ниндзей

🚀 Буферный кэш PostgreSQL: автоматизация анализа с помощью bash-скрипта

🚀 Как проверить, используется ли папка службами в Linux

Подписывайтесь на канал /usr/bin, чтобы не пропустить новые интересные статьи.

Есть и другие каналы, которыми тоже занимаюсь:

🚀 @monitorim_it — всё о мониторинге

🚀 @zabbix_ru — лайфхаки в Zabbix

🚀 @elasticstack_ru — лайфхаки ElasticSearch/OpenSearch

Реклама. ООО "ГАЛС СОФТВЭР". ИНН:5047195298. Erid:2VtzqwickTE

Bash Days | Linux | DevOps

27 Jan, 15:06


Нетворкинг, живые кейсы и облачные технологии — всё на K2 Cloud Conf.

Ребята из K2 Cloud сделали свою конференцию, где поделятся всем про облака: как подключаться к ним без компромиссов в безопасности, автоматизировать процессы с помощью PaaS, а также расскажут о новом типе сетевых дисков – всё это и не только!

Встречаемся 4-го марта. Подробности и регистрация по ссылке.

erid: 2VtzqwJTkuJ

Bash Days | Linux | DevOps

27 Jan, 09:19


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

Bash Days | Linux | DevOps

27 Jan, 07:00


🚀 На открытом вебинаре «Процессы в Linux» мы разберёмся, что такое процесс, чем он отличается от программы и научимся находить, анализировать и управлять процессами в вашей системе.

Это не просто урок — это первый шаг к освоению Linux на профессиональном уровне! Администраторы, разработчики, девопсы — мы готовим базу, которая станет фундаментом вашей карьеры в IT.

⭐️ Спикер Андрей Буранов — системный администратор в VK, входит в топ-3 лучших преподавателей образовательных порталов.

Регистрируйтесь на открытый урок 28 января в 20:00 мск. Все участники вебинара получат скидку на обучение на курсе «Administrator Linux. Basic».

👉 Успейте занять своё место: https://vk.cc/cHRVht

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Bash Days | Linux | DevOps

21 Jan, 13:00


🐧 Вы уже работаете с Linux, но хотите оперативно устранять сбои и решать нестандартные задачи при настройке серверов?

💪 Все продвинутые навыки — от баш-скриптов и умения гибко рулить авторизацией до применения подхода Infrastructure as code — ждут вас на онлайн-курсе «Administrator Linux. Professional» от OTUS.

Пройдите тестирование, чтобы:
- оценить свои навыки;
- занять место на курсе по специальной цене;
- получить доступ к бесплатным урокам курса (доступны сайте курса).

👉 Полное тестирование: https://vk.cc/cHrfeH

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Bash Days | Linux | DevOps

21 Jan, 07:00


Helm в Kubernetes: Продвинутая шаблонизация манифестов

⚡️бесплатный вебинар от учебного центра Слёрм!

🔴Рассмотрим создание ресурсов в Kubernetes с помощью YAML-файлов
🔴Обсудим шаблонизаторы ресурсов: Kustomize, Helm, CUE и Jsonnet
🔴Разберемся с терминологией Helm и основными командами
🔴Изучим внутреннее устройство одного helm-чарта
🔴Научимся искать и работать с готовыми helm-чартами с Artifact HUB

Спикер: Руслан Гайнанов, Тимлид DevOps-команды проекта «Осмакс» в ИТ-Холдинге Т1

Ведущий: Виталий Лихачев, SRE в крупном голландском тревелтехе

Когда: 29 января в 19:00

Занять место на вебинаре — через бота 👈

Реклама ООО «Слёрм» ИНН 3652901451

Bash Days | Linux | DevOps

20 Jan, 13:00


Открытый урок «Хранение данных в Kubernetes: Volumes, Storages, Stateful-приложения»

⏺️ 30 января в 20:00 МСК
Бесплатно. Урок в рамках старта курса «Инфраструктурная платформа на основе Kubernetes» от Otus.

На вебинаре:
✔️Разберем, что такое тома и постоянные тома в Kubernetes, и как они помогают организовать хранение данных;
✔️ определение между типами хранилищ: от локального до облачного и распределенного;
✔️ увидим, как эффективно работать с StatefulSet и управлять stateful-приложениями в Kubernetes;
✔️ лучшие практики настройки и использования Persistent Volume Claims (PVC), классов хранения и других инструментов.

Вебинар будет полезен:
DevOps-инженерам и разработчикам, системным администраторам, разработчикам Backend и FullStack, работающим с приложениями, требующими надежного хранения данных и сохранения состояния.

🚀 Ссылка на регистрацию: https://vk.cc/cHuhd3

Участники вебинара получат гарантированную скидку на курс.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Bash Days | Linux | DevOps

20 Jan, 09:13


Как правильно хранить тяжелые файлы гит репах? Например, бинарники или что-то подобное.

Ответ очевидный и правильный — никак! В гитлабах/гитхаба/битбакетах установлены лимиты на размер отдельных файлов. Там что-то вроде 50 метров на файл дается.

В принципе можно уложиться. Но нахуй надо. Прикинь у тебя пайплайн вытягивает репу размером с 10 гигабайт. И так каждую сборку. Гит репа должна быть тощей и дрищёвой.

А всё тяжелое будь бобр-добр храни в s3 либо на других решениях.

НО если очень хочется прям в гите держать. Для этого существует GIT LFS. Дословно — Large File Storage (дохуя большое файловой хранилище).

У LFS уже свои лимиты в отличие от нативного git репозитория. И это LFS включен из коробки в гитлабах/гитхаба/битбакетах. Там уже размер файла может быть 1 гигабайт или что-то вроде того.

В gitea тоже можно LFS через конфиг включить:

[server]  
LFS_START_SERVER = true
LFS_ALLOW_PURE_SSH = true

[lfs]
PATH = /home/gitea/data/lfs


Как этим пользоваться?

Ставим к себе на машину:

apt-get install git-lfs
brew install git-lfs


Переходим в свой гит репозиторий и инициализируем:

cd /home/user/linuxfactory/infra
git lfs install


В папке /infra/roles/node_exporter/files у меня лежит бинарник node_exporter который весит 100 мегабайт

На самом деле я хуй знает сколько он весит, это для примера.

Помечаем его:

cd /infra/roles/node_exporter/files
git lfs track "node_exporter"


После этого в папке files появится файл .gitattributes. Это правила для этого файла, которые указывают чтобы node_exporter улетал в LFS.

Внутри этот файл выглядит так:


node_exporter filter=lfs diff=lfs merge=lfs -text


И по итогу бинарник в репе станет ссылкой на настоящий бинарник в LFS.

А еще можно вайлдкардами трекать:

git lfs track "*.jpg"


Ну а дальше, как обычно:

git add .
git commit -m "add lfs for node_exporter"
git push


Всё! Теперь твой большой файл аккуратно лежит в LFS, а в самом гит репозитории осталась лишь ссылка которая на этот файл ссылается.

Мне тут пришлось партнерских постов на эту неделю понабрать, реинвестируем в развитие @gitgate, так что рекомендую включить баннерную слепоту и сильно не триггериться. Спасибо за понимание!

Чтиво: про LFS можешь глянуть еще тут и тут.

tags: #git #devops

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

20 Jan, 07:00


❗️ Внимание! Открытый урок «Клиентская оптимизация веб-приложения» 23 января, 19:00 мск.

😱 Тесты скорости кричат: «слишком медленно»? Клиенты не хотят ждать? Узнайте, как ускорить приложение с минимальными усилиями, но максимальным результатом.

На вебинаре:
- разберём методы клиентской и серверной оптимизации;
- проанализируем скорость и научимся её тестировать;
- обсудим решения, которые внедряются за пару часов.

⭐️Спикер Николай Лавлинский — опытный разработчик, руководитель и преподаватель, кандидат экономических наук.

🚀 Участники урока получат скидку на большое обучение «Инфраструктура высоконагруженных систем».

👉 Регистрация для участия: https://vk.cc/cHrf5b

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Bash Days | Linux | DevOps

10 Jan, 09:00


💪 Кластеры для профи: прокачай навыки и стань экспертом инфраструктуры!

Думаешь, что репликация и кластеризация — одно и то же?

На открытом уроке «Percona XtraDB Cluster (PXC): знакомство и настройка» 14 января в 19:00 мск разложим всё по полочкам, запустим кластер и покажем, как он работает на реальных примерах.

📝 Что будет на вебинаре:
- разберём архитектурные различия PXC и репликации;
- запустим и настроим полноценный рабочий кластер.

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

⭐️ Спикер Николай Лавлинский — опытный разработчик, руководитель и преподаватель, кандидат экономических наук.

🚀 Вебинар проходит в преддверии старта курса «Инфраструктура высоконагруженных систем». Участникам — скидка на обучение!

👉 Регистрация для участия: https://vk.cc/cH4zlG

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Bash Days | Linux | DevOps

09 Jan, 15:06


Вчера в посте пролетала строчка:

local0.* @log.bashdays.com:514


И тут как раз частый вопрос - чо за символ «собаки» перед названием сервера?

Магии тут нет, символ «@» означает протокол передачи UDP.

Надеюсь ты знаешь, что UDP не гарантирует доставку. Если сеть перегружена или приходят «сетевые ножницы», пакет может — проебаться.

Чтобы этого избежать, логичнее использовать TCP, в rsyslog это делается через двойную собаку.

local0.* @@log.bashdays.com:514


По итогу получаешь:

- Подтверждение доставки (сервер подтверждает приём данных).
- Повторную отправку пакетов, если они теряются.
- Сохранение порядка доставки пакетов.

Короче тут сам выбираешь что тебе важнее, либо скорость, либо надежность.

Запоминаем:

Раз «собака» = UDP
Два «собака» = TCP

Что чаще применяют?

UDP, но если логи прям критичные то TCP, нет серебряной пули, всё зависит от конкретной ситуации. Но тут речь не про это, а про «собак».

Такие дела.

tags: #linux #monitoring

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

09 Jan, 13:00


🐧 Что общего между Linux и Санта Клаусом?

Они оба работают за кадром.Ты не видишь, как Санта доставляет подарки или Linux поддерживает сервера, но без них магия исчезает.

Санта Клаусом стать не получится, но магию Linux вы точно освоите на бесплатном практикуме Linux от Rebrain. Неважно, кто вы, опытный инженер или новичок: вас ждут задания разной сложности, которые помогут понять свой уровень и определить дальнейший путь в освоении Linux.

🔹 Что входит в программу:

подключение к виртуальной машине по SSH и работа с ней: создание файлов, запись данных
установка веб-серверов nginx и Apache
работа с конфигурацией установленного ПО, проверка статуса программ

↘️ Начните практикум бесплатно: https://clck.ru/3FTPoo

Реклама. ООО "РЕБРЕИН". ИНН 7727409582 erid: 2Vtzqxh3hAD

Bash Days | Linux | DevOps

09 Jan, 09:05


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

1. Акция на LF заканчивается 12.01 (5000р 2500р), вписаться здесь.

Если бот не отвечает — напиши ему /start

2. Бесплатный курс по Bash от Tagd стартует 11.01, вписать здесь.

3. Завтра снова пятница.

По всем вопросам можешь писать сюда: @linuxfactorybot

Bash Days | Linux | DevOps

09 Jan, 07:00


Какие проблемы решает Observability?

▶️Выявление аномалий в работе кластера
▶️Мониторинг сетевой активности и предотвращение сбоев
▶️Обеспечение соответствия политик безопасности
▶️Снижение времени простоя за счет быстрого устранения инцидентов
▶️Упрощение эксплуатации сложных систем с минимальными затратами

16 января в 19:00 приглашаем вас на бесплатный вебинар «Observability и k8s: полный контроль над инфраструктурой и сервисами» от учебного центра Слёрм.

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

Эксперты встречи:
🔴Виталий Лихачёв, SRE в крупном голландском тревелтехе
🔴Кирилл Борисов, SRE в VK

Когда: 16 января в 19:00 мск
Регистрация на вебинар — через бота 👈👈

Реклама ООО «Слёрм» ИНН 3652901451

Bash Days | Linux | DevOps

30 Dec, 17:02


Я тут щас чет подумал — а что бы я хотел сейчас получить от Деда блядь Мороза?

Понятно дело — здоровье, но так нельзя, нужно что-то материальное.

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

Потом я мечтал об электро-гитаре, даже самой уёбищной, палке-металки.

Потом я перестал делать ставки на Деда блядь Мороза и стал рвать жопу и закрывать свои базовые потребности. Жвачки, гитары и т.п.

Но сейчас? Если представить что ничего этого не было — чтобы я хотел получить на Новый Год?

Новую педальку с дисторшеном и квакалку? Очередной оффер на 500к в месяц? Палку-ебалку? Да нее…

Из материального я бы хотел получить на НГ от Деда блядь Мороза — НИХУЯ! Потому что, не нужно на кого-то надеяться и чего-то ждать.

Нужно самим делать вещи и закрывать свои потребности. Ты сам себе Дед блядь Мороз!

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

К чему это я, если ничо не радует — порадуй себя сам, будь сам Дедом блядь Морозом в своем 127.0.0.1 периметре. Порадуй себя тем, что у тебя есть.

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

Ну и вопрос, или нет… Короче напиши в комменты чтобы ты хотел получить материального на НГ и возможно это каким-то хреном сбудется. Квартиры и машины не в счет, это банально.

Всех обнял, с Наступающим 🎄

tags: #рабочиебудни

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

28 Dec, 15:08


А мы с вами ребят могучие! Итоги года подводить такое себе, но скажу без хуйни — спасибо тебе что читаешь, делишься своим мнением в чатике да и вообще. Без тебя ничего бы не получилось.

Короче спасибо и с наступающим! Здоровья, тебе и твоим близким, всё остальное — хуйня!

Как сказал Дима в @gitgate — Личная благодарность всем кто участвовал и помогал! Вы все молодцы и красавчики и красавицы!

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

С Наступающим ребят, всего тебе самого хорошего, искренне! 🥳 ❤️ С уважением ко всем, Шубин Роман Олегович

Кстати самый топовый пост Not again за год тут

И еще мне Selectel прислал всетаки НГ коробочку, моё почтение, зря я ныл в чатике, отдельно потом напишу покажу. Спасибо!

Bash Days | Linux | DevOps

26 Dec, 07:00


Что делать, если не хватает практики для работы с k8s?

👉 пойти учиться в Слёрм и систематизировать знания о работе с кластером! Тем более, что до 28 декабря сделать это можно по специальной цене.

Чему научим:
- Основам работы с K8s, системой автоматизации развертывания, масштабирования и управления приложениями в контейнерах.
- Запускать кластер, работать с базовыми абстракциями и подключать дополнительные компоненты
- Запускать приложение в кластере, понимать принципы работы сети и настраивать CI/CD пайплайн

⭐️ Курс обновлён в июле 2024

Стоимость потока:
До 28 декабря 2024 — 70 000 ₽
С 29 декабря 2024 — 90 000 ₽

Старт потока — в январе.
Забронируйте место по старой цене — оплатить можно в новом году.

Подробности — на сайте 👈

Реклама ООО «Слёрм» ИНН 3652901451

Bash Days | Linux | DevOps

25 Dec, 09:00


Программный комплекс ALD Pro от «Группы Астра» успешно сертифицирован по второму уровню доверия ФСТЭК России.

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

🔐 Что такое ALD Pro?
Это отечественное решение, включённое в реестр российского ПО Минцифры РФ. Оно позволяет управлять учётными записями, правами доступа, обновлять ПО и настраивать системные службы, обеспечивая безопасность вашей ИТ-инфраструктуры.

💼 Почему это важно?
Сертификат был выдан после тщательных проверок, проведенных АО «НПО «Эшелон». Это служит подтверждением того, что ALD Pro отвечает всем требованиям защиты информации, установленным ФСТЭК России.

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

Узнать о преимуществах подробнее, а также запросить ALD Pro на тест можно здесь.

Реклама. ООО "РусБИТех-Астра". ИНН: 7726388700. Erid:2VtzqwezUzN.

Bash Days | Linux | DevOps

24 Dec, 15:13


Увидал сегодня у коллеги такое:

- name: Установка глобального PATH для Linux
hosts: all
become: true
tasks:
- name: Создать скрипт для глобального PATH
copy:
dest: /etc/profile.d/custom_path.sh
content: |
export PATH="/usr/bin:/bin"
mode: '0644'
notify: Reload profile

handlers:
- name: Reload profile
command: source /etc/profile


это кусок ансибла если чо

Что это за ебать костыль и нахуя?


А это оказывается регламент такой внутренний, какие-то требования, которые должны быть применены при настройке новых серверов. И это только 1% из этого плейбука, показать весь по объективным причинам не могу.

Короче суть — создается чистая переменная PATH, на глобальном уровне.

Обычно это делается для повышения безопасности или для обеспечения предсказуемого поведения скриптов.

Определяются только базовые пути.

Безопасность:

- Уменьшается риск выполнения вредоносного кода из непредсказуемых каталогов.
- Снижается вероятность атаки типа Path Hijacking, когда злоумышленник подсовывает вредоносные программы в каталоги, находящиеся в начале PATH.

Предсказуемость:

- Скрипты и процессы используют конкретные версии утилит, а не случайные исполняемые файлы из пользовательских каталогов.

Чистая среда для скриптов:

- В автоматизированных сценариях, например, в CI/CD, чистая PATH помогает избежать конфликтов из-за пользовательских переменных окружения.

Системное администрирование:

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

Например:

#!/bin/bash

export PATH=/usr/bin:/bin
if ! command -v curl &> /dev/null; then
echo "curl не установлен или не доступен в чистом PATH"
exit 1
fi

echo "curl доступен, продолжаем..."


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

Тема конечно больше про безопасность и в обычной жизни встречается крайне редко, всем насрать на Path Hijacking.

Пусть за это специально обученные люди отвечают. У нас лапки.

tags: #linux

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

21 Dec, 17:54


Что в рот влезло, то и полезно

тыгыдык вайл инфинити

while true; do echo -e "\a"; sleep 0.5; done


tags: #tricks #bash

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

19 Dec, 15:13


Здрасти. Сегодня опять про шаблоны и создание нового пользователя. В прошлом посте я показал skel. Но есть еще одна хуйня, где можно тонко это поднастроить.

Находится оно здесь: /etc/default/useradd

И выглядит это так:

GROUP=100
HOME=/home
INACTIVE=30
EXPIRE=2024-12-31
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
UMASK=077
USERGROUPS_ENAB=yes
PASS_MAX_DAYS=90
PASS_MIN_DAYS=1
PASS_WARN_AGE=7


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

Все параметры описывать не буду, все логично. Разберем только неочевидный GROUP.

GROUP = указывает GID (ID группы) по умолчанию для новой учетной записи.

И чо у всех юзеров будет GID = 100? Неа!

Этот параметр будет работать, только в случае если в файле /etc/login.defs выставлено USERGROUPS_ENAB=no. Во всех остальных случаях он будет проигнорирован.

Заметь что в /etc/default/useradd можешь реврайтить USERGROUPS_ENAB и не лезть в /etc/login.defs.

По умолчанию USERGROUPS_ENAB=yes. В этом случае для каждого пользователя создаётся его собственная группа с тем же именем, что и имя пользователя. И у этой группы будет уникальный GID.

Например, для пользователя bashdays создаётся группа bashdays с GID 1000. Для следующего будет 1001 и так далее.

Короче значение GROUP=100 применяется только тогда, когда пользовательская группа не создаётся автоматически.

Такие дела, бери на вооружение.

tags: #linux

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

19 Dec, 09:09


Собирал docker контейнер и чет меня лог сборки прям напряг.

То есть то, что отмечено на скрине красным прямоугольником, это область которая прокручивается. И предыдущий текст теряется.

Ну хуйня же! — подумал я и пошел копать.

А всё, как обычно, просто, в строке сборке делаем так:

docker build -t "setuppython" --progress=plain .


Устанавливаем параметр progress=plain и радуемся. Лог сборки прекращает ротироваться и весь мусор теперь на экране.

Как альтернатива, можно сделать так:

export BUILDKIT_PROGRESS=plain


И теперь не нужно подставлять в каждую команду сборки этот параметр.

progress может быть = autoplain, и tty

tty вывод будет «более красивым» для интерактивных терминалов (то есть он будет перезаписываться).

plain будет просто выводить все. 

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

Такие дела. Изучай.

tags: #docker #devops

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

13 Dec, 16:11


🎄 Моя! 🎄

Ну чо, кто на ёлку богат уже? Кидайте в комменты ёлки и своё пятничное настроение, пиво там, вискарь или чо там у вас.

Bash Days | Linux | DevOps

18 Nov, 09:00


Как построить облако с нуля? Узнайте от разработчиков новой облачной платформы MWS.

MWS запускает реалити-проект Building the Cloud о создании новой публичной облачной платформы. В прямом эфире наши эксперты и инженеры раскрывают закулисье облачной разработки, делятся уникальным опытом и отвечают на вопросы.

В первом выпуске расскажем о сердце облака — сервисе Compute.

О чём поговорим:
● Зачем мы строим новое публичное облако MWS
● Как устроена архитектура сервиса Compute в новой платформе MWS
● Что происходит «под капотом» облака, когда создаётся виртуальная машина
● Расскажем о планах и роудмапе новой платформы

Приглашаем разработчиков и профессионалов облачного рынка! Задайте свои вопросы разработчикам нового облака MWS и узнайте всё из первых рук.

📅 Дата: 20 ноября 2024, 11:00
👉 Регистрируйтесь сейчас, чтобы не пропустить эфир

Bash Days | Linux | DevOps

17 Nov, 13:08


Многие догадываются, а некоторые точно знают на каких онлайн-сервисах можно посмотреть принадлежность домена или IP организации. Я для этого использую программу whois.

apt install whois
whois 164.92.216.105


Использовать whois в скриптах не рекомендую, потому что для этого, во-первых, есть специальные базы, а во вторых - забанят.

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

NetRange:164.92.64.0 - 164.92.255.255
CIDR:164.92.128.0/17, 164.92.64.0/18


Во, здесь повезло заполнено поле CIDR. Можно забанить 164.92.128.0/17 и 164.92.64.0/18 и все будет хорошо, но так бывает не всегда.

whois 114.199.33.115
inetnum: 114.199.0.0 - 114.199.63.255


Поле CIDR отсутствует, есть только inetnum: И то хлеб. Как преобразовать NetRange или inetnum в формат CIDR, ведь iptables не понимает диапазоны ip адресов. Ему подсети подавай (CIDR).

Для этого воспользуемся калькулятором ipcalc. Вообще-то я предпочитаю sipcalc, потому что он бинарный и работает быстрее, но функции разбивки диапазона ip адресов у него нет. Что-то я отвлекся.

apt install ipcalc
ipcalc -r 164.92.64.0 - 164.92.255.255

#вывод
deaggregate 164.92.64.0 - 164.92.255.255
164.92.64.0/18
164.92.128.0/17

ipcalc -r 114.199.0.0 - 114.199.63.255

# вывод
deaggregate 114.199.0.0 - 114.199.63.255
114.199.0.0/18


Итого: с помощью ipcalc -r можно разбить любой непрерывный, даже самый безумный, диапазон ip адресов на подсети в формате CIDR, и количество этих подсетей будет не более 32.

В качестве поиграться предлагаю разбить диапазоны 127.0.0.1-192.168.1.1 или 0.0.0.1-255.255.255.254 Вот только банить их не нужно. А вот разбивать диапазон 0.0.0.0 255.255.255.255 не рекомендую, а почему не скажу. Кто еще какими сетевыми калькуляторами пользуется?

man whois
man ipcalc


tags: #networks © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

15 Nov, 16:22


С пятницей друзья! Пицца ёпта! #pizza

Вопрос:

какая фигура должна быть в начале этого ряда?

Bash Days | Linux | DevOps

15 Nov, 07:13


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

Могут ли быть маски подсети /32 или /31?

Я не буду много рассказывать про маски, кому интересно, гляньте в википедии. Мы же остановимся только на масках подсетей /32 /31, потому что они являются исключением из правил.

Физические сети, построенные с этими масками не могут иметь широковещательного адреса. Но это не значит, что данные МАСКИ нельзя использовать.

Да, данные маски нельзя использовать для построения классических сетей (хотя здесь говорят, что /31 - можно), и некоторые маршрутизаторы не дадут этого сделать.

Но данные маски вполне могут (а иногда должны) быть использованы для для разбиения ЛЮБОГО непрерывного диапазона ip на записи в формате CIDR.

И без масок /31 /32 этот ряд будет не полным. Мало того, iptables использует только нотацию CIDR. Например, подсеть /32 задает отдельный ip, поэтому правила, содержащие одиночный адрес, задаются с маской /32, даже если вы это не указали. (192.168.0.1=192.168.0.1/32)

Маска 31 - задает два рядом стоящих ip и позволяет уменьшить количество записей, увеличив скорость.

Но не любые соседние ip могут быть объединены этой маской, а только отличающихся последним битом,

Например: 192.168.0.1 и 192.168.0.0 можно объединить в 192.168.0.0/31, а 192.168.0.1 и 192.168.0.2 - нельзя.

Ну и теперь посмотрим, что об этой фигне говорят сетевые калькуляторы ipcalc и sipcalc.

Я тут из вывода удалил менее информативные поля. Если кому интересно - смотрите полный вывод сами.

apt install ipcalc sipcalc
sipcalc 192.168.0.1/32

# вывод
Host address - 192.168.0.1
Network address - 192.168.0.1
Network mask (bits) - 32
Broadcast address - 192.168.0.1
Addresses in network - 1
Network rang - 192.168.0.1 - 192.168.0.1

ipcalc -b 192.168.0.1/32
# вывод
Address: 192.168.0.1
Netmask: 255.255.255.255 = 32
Hostroute: 192.168.0.1
Hosts/Net: 1

sipcalc 192.168.0.1/31
# вывод
Host address - 192.168.0.1
Network address - 192.168.0.0
Network mask (bits) - 31
Broadcast address - 192.168.0.1
Addresses in network - 2
Network range - 192.168.0.0 - 192.168.0.1

ipcalc -b 192.168.0.1/31
# вывод
Address: 192.168.0.1
Netmask: 255.255.255.254 = 31
Network: 192.168.0.0/31
HostMin: 192.168.0.0
HostMax: 192.168.0.1
Hosts/Net: 2


На мой взгляд, ipcalc для такой экзотики работает более правильно, поскольку Broadcast для подсетей >30 не выводится.

Вывод: при построении физических сетей с масками >30 возникают трудности.

А при фильтрации маски /31 /32 ничем не отличаются от остальных /1-/30

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

tags: #networks © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

11 Nov, 08:00


Сократите расходы на IT-инфраструктуру. Узнайте больше о серверной ОС от Selectel 👀

С ростом трафика увеличиваются задержки в сети, что сразу отражается на всех процессах. Обычно для повышения производительности команда наращивает железо. Это неидеальный выход: расходы на инфраструктуру начинают расти. Selectel нашел способ решения проблемы и создал серверную ОС на базе Linux.

Как это работает?

Операционная система использует оптимизированный сетевой стек, что позволяет обрабатывать данные в 5 раз быстрее. Это решение поможет справляться с большими объемами трафика без дополнительных затрат на новое оборудование.

Проверьте сами — сейчас вы можете поучаствовать в демо-тестировании ОС от Selectel.

А чтобы узнать больше об ОС и о сценариях ее применения на реальных проектах, присоединяйтесь к вебинару 20 ноября в 12:00. Регистрация по ссылке.

ERID: 2VtzqxW5EAH

Bash Days | Linux | DevOps

08 Nov, 09:13


Недавно прочитал статью Страйфи Ленджок и решил поделиться многолетним опытом использования rdp.

Сразу оговорюсь, что я пытался использовать rdp на linux для замены виндового сервера при работе с 1с.

OC - debian, потому что в debian rdp есть в репозитариях. А, вообще живет он здесь.

Для установки на сервере - пара команд:

sudo apt install xrdp
sudo dpkg-reconfigure xserver-xorg-legacy

# выбрать подключения "от кого угодно"


Все настройки в /etc/xrdp основной файл xrdp.ini .)

В качестве DE использовал XFCE и LXDE по причине малых ресурсов. LXDE - лучше.

В качестве клиента (и на клиенте) использовал xfreerdp из пакета freerdp2-x11.

sudo apt install freerdp2-x11


Пробовал remmina, но она подглюкивает. Проще всего использовать алиас для подключения. У меня такой:

alias rdp='function _rdp(){ xfreerdp /h:700 /w:1300 /cert-ignore /v:"$@";}; _rdp '


700x1300 - размеры окна /cert-ignore - нужно для подключения к виндовым серверам, поскольку они раз в 120? дней меняют сертификаты, и приходится ручками удалять хэш из файла.

Подключаюсь так:

rdp 192.168.1.100

# или так

rdp 192.168.1.100 /u:username


Ну, а теперь опыт использования:

1. Окно аутентификации можно настраивать. (xrdp.ini Поставить логотип конторы и прописать название сервера в заголовке окна. Удобно.)

2. Любит забивать папки пользователей логами (.xsession-errors .xorgxrdp.log) Решается отключением логирования в ini или ссылкой этих файлов в /dev/null.

3. В XFCE проблемы с переключением раскладки клавиатуры при переподключениях.

4. В LXDE проблемы с раскладкой при входе под одним пользователем с разных машин (нужно войти в свойства клавиатуры и выбрать "модель клавиатуры".

5. Firefox, Thunderbird, Libreoffice - работают прекрасно при входе пользователя только по RDP.

6. Программы из п.3 не работают, если тот же пользователь вошел "локально" (винда проблему решает "выбрасыванием" одной сессии).

7. 1с работает плохо. На некоторых серверах наблюдались проблемы с печатью форм (некоторые буквы в НЕКОТОРЫХ формах печатаются квадратиками и накладываются друг на друга). Причем под одним пользователем проблемы, под другим пользователем проблем нет.

8. При подключении с винды при работе с 1с, часто наблюдается "зависание интерфейса" на несколько минут. Что делает работу практически невозможной.

9. Пытались связываться с разработчиками 1с - ответ был такой: Не можем синтезировать ваши проблемы. Предложения по передаче логов, помощи в отладке игнорировались.

➡️ man xfreerdp

tags: #linux #networks © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

07 Nov, 11:00


🔥 Как сократить баги и ускорить релизы с помощью безопасной разработки

Ты создаешь крутые приложения, но баги и уязвимости продолжают отнимать драгоценное время, особенно когда горят дедлайны? 😬

Представь, что ты можешь защитить свой код на каждом этапе разработки и при этом сэкономить нервы и время! Мы разработали новый курс «Безопасность приложений для разработчиков», чтобы показать, что безопасность — это не про сложности, а про качество и экономию времени.

🎯 Почему стоит записаться?

· Ты научишься строить защиту ещё на этапе планирования, минимизируя уязвимости.
· Безопасность не замедлит процесс — мы покажем, как сохранять темп и укладываться в дедлайны.
· Меньше проблем на проде — ты будешь предотвращать уязвимости на ранних стадиях, избегая лишних правок.

👨‍💻 Авторы курса — эксперты Positive Technologies, одной из лидирующих компаний на рынке кибербезопасности. Ты будешь учиться у профессионалов, которые ежедневно работают над безопасностью приложений.

Старт курса 25 ноября, длительность — 3 недели, формат — онлайн. Учись в любое время и из любой точки.

Не трать время на исправления багов — записывайся на курс и учись предотвращать их заранее!
👉 [Забронировать место на курсе]

Bash Days | Linux | DevOps

06 Nov, 11:00


Как сократить расходы на IT-инфраструктуру в 5 раз?

Растущие нагрузки часто приводят к непропорциональным расходам на IT-инфраструктуру, замедляя развитие бизнеса.

Недавно мы помогли клиенту с ML-проектом, где архитектура на Kubernetes и Knative вызывала долгие деплои и высокие затраты. Проведя аудит, мы упростили систему. Заказчик адаптировал код за 3 дня, а мы развернули новый кластер, что позволило сократить расходы в 5 раз, сохранив стабильность и гибкость системы.

Готовы оптимизировать свою инфраструктуру? Закажите консультацию и начните повышать эффективность уже сегодня!

«Факт» — IT-интегратор с 12-летним опытом, создающий безопасные и стабильные решения для высоконагруженных систем. Помогаем бизнесу расти с лучшими DevOps-практиками!

Реклама. ООО ЦИТ "ФАКТ", ИНН: 7456005978

Bash Days | Linux | DevOps

03 Nov, 10:09


Сегодня поговорим про подводные грабли.

Работая над скриптом решил немного оптимизировать код. А чего, зачем цикл, если строка всего одна.


echo "1"|
while read; do
echo $REPLY,2
done

# на

echo "1"| read
echo $REPLY,2


А не тут то было.

1,2
,2


Во втором случае read не читает значение. Точнее читает, иначе бы скрипт ожидал ввода с клавиатуры, но переменная REPLY пустая.

Перечитал help по read. Ничего не пойму. Пришлось обратиться к Роману.

Он пояснил, что во втором случае команда read запускается в отдельном subshell, считывает значение. Вот только передать переменную можно только в дочерние процессы, а в родительские нельзя.

Поэтому при завершении процесса read значение переменной REPLY теряется.

Пришлось читать, как работают конвейеры. Здесь писать не буду. Просто приведу ссылку на wiki: https://bit.ly/4fajufR

Оптимизировать можно, но так:

echo "1"| (read;echo $REPLY,2)
#или так
read < <(echo "1")
echo $REPLY,2
# если переменная одна то классика
a=$(echo 1)


Все, теперь я знаю, как работает pipeline. Надеюсь и Вы.

tags: #bash © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

01 Nov, 09:11


Not again...

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

31 Oct, 10:33


Задача та же. 8 ферзей.

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

Каждая цифра - отдельный столбец.

Значение - номер строки.

#!/bin/bash
#8 ферзей

awk 'BEGIN{
i=8^8
while(i--){
c=sprintf("%08o",i)
j=8
while(index(c,--j)){}
if(j<0){
j=8
while(j--){q[j]=substr(c,j+1,1)}
b=1
for(m=0;m<7 && b;m++){
for(j=m+1;j<8;j++){
a=q[m]-q[j];sub(/-/,"",a)
if(a==(j-m)){b=0;break}}}
if(b){print c}
}}}'
#---


while(index(c,--j)){} - чисел всего 8(0-7), если index=0 (нет цифры j в числе с из 8 цифр, значит каких-то цифр 2).

Обратите внимание тело цикла пустое! Если цикл прошел полностью - дублей нет. Вау.

Алгоритм пермутаций без повторений методом перебора. (проверка на горизонталь).

while(j--){q[j]=substr(c,j+1,1)} - преобразовали число c в массив цифр q[]

Дальше аналогично предыдущей программе, кроме sub(/-/,"",a) - еще один аналог модуля.

Просто отбрасываем "-". Как конструкция по скорости не знаю, не проверял.

Программа отработала примерно за 41с.

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

Кто там хотел изучать bash?

Слабо реализовать на чистом bash?

Интересно было бы и время выполнения сравнить.

tags: #bash © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

30 Oct, 12:01


там чет телега с комментами намутила и у последнего поста про ферзей кнопку не сделала, кто хотел высказаться, можете это сделать по кнопке ниже 👇

Bash Days | Linux | DevOps

30 Oct, 10:34


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

А между тем, AWK, практически полноценный язык программирования.

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

Решать будем методом перебора. Ну, не полного перебора, немного включим голову.

Напомню, ферзь бъет по вертикали, горизонтали, диагонали. Поэтому для начала расставим каждого ферзя на свою вертикаль и будем двигать, проверяя условия боя.

Таких будет два - горизонталь и диагональ. Для удобства клеточки буду нумеровать с 0.

Итого - получаем 10 вложенных циклов (8 двигают ферзей, 2 - проверка условий боя) ха, тут всего-то 8^8=16777216 вариантов.

#!/bin/bash
#8 ферзей

awk 'BEGIN{
for(c[0]=8;c[0]--;){
for(c[1]=8;c[1]--;){
for(c[2]=8;c[2]--;){
for(c[3]=8;c[3]--;){
for(c[4]=8;c[4]--;){
for(c[5]=8;c[5]--;){
for(c[6]=8;c[6]--;){
for(c[7]=8;c[7]--;){
b=1
for(i=0;i<7 && b;i++){
for(j=i+1;j<8;j++){
if(c[i]==c[j]){b=0;break}
a=c[i]-c[j];n=j-i
if(a==n || a==-n){b=0;break}}}
if(b){print c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7] }
}}}}}}}}
}'


Пояснения:

c[i]==c[j])
- проверка на горизонталь.

a=c[i]-c[j];n=j-i - проверка на диагональ.

Вообщето-то тут должен быть abs(c[i]-c[j]), но в awk нет модуля, поэтому if(a==n || a==-n)

Да, и в awk оператор break выходит из одного цикла, поэтому пришлось немного извращаться. (&& b), но задача решена.

Примечание я знаю про алгоритмы пермутаций, но тут лобовое решение.

Вариантов всего 92.

Приведу последний: 04752613 Время выполнения на моем дохлом ноуте ~1.5 минуты.

Продолжение следует...

tags: #bash © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

28 Oct, 09:12


Здрасти. Как-то я писал про strace и как применять инъекции. Если пропустил, то читай тут и тут.

Ниже скрипт который автоматически пронумерует системные вызовы для последующих инъекций.

#!/usr/bin/perl

use strict;
use warnings;

my %numbs;
select STDERR;
while(<STDIN>) {
if( /^[0-9]++\s++([a-z0-9_]++(?=\())/ ) {
my $t = ++$numbs{$1};
s/\s+/ \e[31m$t\e[m /;
die $! if( keys %numbs == 1000 );
}
print;
}
exit(0);


Сохраняем это безобразие в файл num_syscalls и делаем chmod +x, ну а дальше запускаем в связке с strace:

strace -o'|./num_syscalls' -yf sh -c 'ls|cat'


Теперь получаем такой выхлоп:

456107 48 close(3</usr/) = 0
456107 52 rt_sigreturn({mask=[]})
456107 63 openat(AT_FDCWD</usr/local/sbin>)
456107 53 newfstatat(3)
456107 64 openat(AT_FDCWD</usr/local/sbin>)


Смотрим второй столбик, включаем логику и видим, что системные вызовы нумеруются.

Например, возьмем системный вызов openat, видим 63, 64. Это значит что openat был вызван 64 раза. А newfstatat 53.

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

Тема крутая, не нужно ебаться и считать руками.

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

А чтобы получить только трассировку, можно сделать так:

strace -o'|./num_syscalls' -yf ls > /dev/null


Если бесит подсветка, выпили из перловского скрипта управляющий символ «\e[31m\[em».

Такие дела, изучай!

tags: #linux #debug

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

24 Oct, 11:13


Хелоу! А какую команду ты запускаешь первой, когда поднял linux сервак/десктоп (vps/vds, виртулка, бареметал и т.п.)?

У меня руки на автомате вбивают: apt update && apt upgrade && apt install mc.

Но несколько раз видел как люди первым делом отключали selinux и отправляли машину в ребут. А потом уже всё остальное.

А как делаешь ты? Камон в комменты обсудим, интересно на твои паттерны посмотреть.

tags: #linux #рабочиебудни

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

22 Oct, 11:13


Дурень думкой богатеет.

Смотрел я на логи ssh и думал, что же меня так раздражает. И понял, что меня достает не сама попытка перебора.

За стойкость пароля/ключа я спокоен. Меня достает то количество мусора, которое я должен периодически просматривать. И у меня возникла идея.

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

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

Меня резкое снижение интенсивности атаки напрягает больше, чем ее повышение :-)

Ну, или свести эти два логина к полуторалогинной системе. Когда логин длинный, и состоит из двух частей, например asdfbgroot, но попытки перебора фиксировать, когда совпадает первая часть.

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

tags: #linux #security © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

20 Oct, 10:13


Включаем режим параноика.

Все, и не раз слышали про то, что ходить по ссылкам не хорошо. Особенно, если эти ссылки непонятно откуда.

Но почему-то многие думают, что это касается только ссылок http:// https:// ftp://.

Тут на @gitgate недавно проскакивала тема про Консольные онлайн Telnet/SSH игры.

Посмотрим на это глазами параноика: Что происходит, когда вы подключаетесь к ссылке вида ssh [email protected]. Ну, ничего страшного.

Просто в логах сервера отобразится ваш IP. Ситуация усугубляется, когда вы заходите на ссылку вида ssh addr.dom.

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

Прикиньте, есть ip и уже есть логин. Осталось подобрать пароль. Я бы на месте малышей-плохишей специально рыскал бы по github в поисках всякой прикольной фигни и собирал пары ip/login.

Да и логин, не какой-то там test, а реально используемый - сам по себе ценный ресурс.

Поэтому не ходите по ссылкам с рабочих машин, а если видите ссылку ssh addr.dom не поленитесь и добавьте пользователя [email protected], чтобы не светить свой реальный логин.

Прошу прощениt за тему, которая и так всех задолбала.

tags: #linux #security © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

16 Oct, 14:13


Сегодня мы рассмотрим одну очень интересную тему. Бывает, что у вас маленькая локалка (/24), или сеть класса D.

И нужно, чтобы у некоторых групп пользователей были разные внешние IP.

Ну, например wi-fi желательно выпускать через отдельный ip, чтобы меньше было проблем типа "из вашей сети исходят подозрительные запросы".

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

А через прокси не каждый софт работает. Ну, в общем, задача понятна.

Использовать будем машину на pfsense. Да, без картинок воспринимается не очень, но это лучше, чем ничего.


Добавляем сетевые интерфейсы. Хорошо, если у вас есть несколько линий от разных провайдеров. Если нет - не беда.

pfsense позволяет работать с usb модемами, и подключениями типа pptp, pppoe и другими. Сейчас практически любой домашний роутер может работать как pptp сервер.

Но я не буду останавливаться на вопросе, как создать интерфейсы, как настроить pptp. Информации об это море. И да, здесь не поднимаем тему безопасности - задача сменить IP.

Добавляем Новые интерфейсы (типа PPP, или что там у вас есть)

Создаем алиасы с группой хостов, которые должны выходить через ip, отличающийся от шлюза по умолчанию. Таких может быть несколько. Например, IP_GATE1 IP_GATE2 IP_GATE3, по одному на каждый шлюз.

Система\Маршрутизация\Шлюзы добавляем шлюзы и в свойствах снимаем галки Мониторинг Шлюзов и Действие Шлюза. Если так не сделать - в случае "отваливания шлюза" умная система перенаправит трафик через шлюз по умолчанию, и на другом конце "засветится" ip шлюза по-умолчанию.

Межсетевой экран\Правила\LAN Для каждой группы создаем два правила:

- Разрешить IPv4 протокол любой Источник IP_GATE1, и в расширенных опциях указываем нужный шлюз (GATE1) (слева на правиле в общем списке правил появится шестеренка)

- Ниже: Блокировать IPv4 протокол любой Источник IP_GATE1.


Для остальных - аналогично. Теперь Группа IP_GATE1 будет выходить через GATE1 или вообще не будет выходить в случае отсутствия инета на GATE1.

Применять исключительно для причинения добра!

tags: #networks © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Bash Days | Linux | DevOps

15 Oct, 13:54


Все умрут, а я root!

Еще раз всем здрасти, раз в неделю в рандомный момент буду разыгрывать пиццу 🍕 (1000р). Кто первый в комменты напишет ответ на задачку, тот и забирает приз.

Чуть позже сделаю еще 2 призовых места с шавухой.

Коммент с ответом должен быть к посту, а не в чатике. А далее к тебе приходит Макс, спрашивает номер РФ карты и закидывает пиццу.

У кого не включены уведомления на канал, ну ты сам виноват!

Поехали: 13−6+7 ?

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

#pizza