22119
Авторский канал от действующего девопса Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue Курс: @tormozilla_bot РКН: https://bit.ly/knd2gov
Не ssh, но близко — sftp.
Классная вещь, со своими достоинствами и недостатками. Гораздо круче, чем scp, поскольку кроме копирования позволяет управлять правами доступа.
ㅤ
По сравнению с ftp - возможность работы через один порт (легко пробрасывается) Протокол защищенный.
Из минусов - может создавать нагрузку на проц. В openssh включен из коробки. Поэтому если есть доступ по ssh - как правило, есть доступ и по sftp.
А вот обратное - не всегда верно. Иногда бывает нужно разрешить пользователям доступ по sftp, например, чтобы заливать архивы, но совсем не хочется давать возможность шариться по серваку и смотреть, что там крутится.
Вот, для этого есть решение — mysecureshell.
Для debian можно поставить:
sudo apt install mysecureshell
sftp сервер с возможностью управления пользователями, группами, управление скоростью закачки и отдачи, можно просматривать текущие сессии и прибивать ненужные.cat /etc/shells
sudo usermod -s /usr/bin/mysecureshell username
/etc/ssh/sftp_configsshfs (монтирование через ssh (по факту через sftp)).rsync, говорят не дружит, но я лично не проверял. Приводить примеры конфигурирования не стал, потому что там все очень понятно и прозрачно. Документация приличная, сам конфиг очень классно комментирован.
Начало месяца - время делать бэкапы. О бэкапах уже столько сказано, что еще одна статья ничего нового не добавит, но тем не менее позволю себе поделиться своим опытом.
ㅤ
Сразу скажу, что не бывает правильных и неправильных схем архивирования. Бывают те, которые подходят для вашей задачи и не подходят.
Пока мой архив был меньше 10 Тб, я не понимал, нахрена нужны инкрементные копии? А у кого-то петабайты...
Архивы настолько важны, что я даже слов подобрать не могу. Архивы - единственное, что может остаться после критического сбоя/атаки.
Инфраструктуру можно поднять - это вопрос времени, но есть данные, которые нарабатывались несколько лет, и именно их потеря может быть очень критичной.
И из этого следует, что СХД для архивов должна быть самым защищенным элементом инфраструктуры. Очень хорошо, если на эту машину нельзя попасть никаким способом, кроме физического доступа.
Кроме этого. СХД - тоже компьютер, поэтому тоже может выйти из строя. Поэтому необходимо хранить данные еще и отдельно на внешних дисках.
Причем дисков должно быть минимум два с чередованием (месячным, недельным, ежедневным не важно, но чередование должно быть). Кроме того, есть холивар, по поводу того, кто должен быть инициатором соединения при архивировании - СХД или рабочий сервер.
Просто подумайте, кто больше подвержен атаке клиент или сервер. Конечно сервер. Поэтому для обеспечения минимальной безопасности архивов инициировать соединение должна СХД.
Я для себе решил вопрос с помощью "перевалочной базы" - Машины, на которую сервера сваливают одну дневную копию, и с которой СХД забирает все архивы.
Т.е. и рабочие сервера и СХД в этой схеме являются клиентами. Дело в том, что хорошо защитить один перевалочный сервер проще, чем каждый рабочий сервер.
Не буду напоминать, что каждый клиент загружает копию под своей учеткой, чтобы в случае взлома сервера нельзя было поломать архивы соседних серверов.
Но в этой схеме тоже есть недостатки дополнительное место, двойной расход сетевого трафика, да и машина нужна. В общем, за надежность всегда приходится платить.
Но кроме этого, я сохраняю несколько дневных копий (до 7 штук) прям на сервере, на тот случай, если с данными накосячат пользователи. Причем последнюю копию даже не сжимаю и не шифрую.
Ну, и остался вопрос именования архивов. Кто-то использует даты в имени и удаляет по устареванию. Я использую цифры и провожу ротацию по одному файлу за раз. Потому что в случае атаки на сервер времени дата-именованные архивы можно потерять за раз.
Для нумерованных архивов для атаки - дату нужно менять несколько раз.
Причем число раз будет зависеть от схемы.
В общем резюмирую:
1. Хороших и плохих схем архивирования не существует - есть такие, которые подходят вам и не подходят.
2. СХД - самая защищенная машина инфраструктуры. Без возможности управления по сети.
3. Есть внешние копии с чередованием, на случай выхода из строя СХД.
4. Архивные копии между СХД и сервером передаются через промежуточную машину.
5. Несколько дневных копий можно ДОПОЛНИТЕЛЬНО хранить на самом рабочем сервере.
6. Используем нумерованные архивы с ротацией.
Холивар в коммментах приветствуется.
tags: #рабочиебудни © by Tagd Tagd
—
🔔 @bashdays➡️ @gitgate
✊ С пятницей ребят!
Недавно пришло письмо от мейл.ру мол у вас SPF запись пиздец хуёвая.
SPF-запись домена https://bashdays.ru задана таким образом, что для ее проверки необходимо 36 DNS-запросов из 10 допустимых.
v=spf1 mx a include:spf.gca.to include:_spf.google.com include:spf.smtp.bz include:mindbox.ru ~all
Тема вроде не айтишная, а вроде и айтишная, сделал я короче МРТ, по итогу приобрел грыжу и протрузию поясничного отдела.
ㅤ
Вас много и полюбому кто-то с этим уже столкнулся и живет в клубе по интересам. Вопрос — как эту хуйню захотфиксить? Мидокалм, пластыри и т.п. гавно это понятно.
В ремиссии чо делаете? ЛФК из чего состоит? Я ебать попробовал по официальному мануалу от невролога как котик спину выгибать и вгибать на корачках, через полчаса с температурой слег ))
Слышал что нужно укреплять ноги и жопу, но тут баш скрипт не накинешь, каким хером это укреплять? Приседать? Или что-то есть более эффективное? В спорт-зал не пойду, в лесу его нет.
Короче у меня одни вопросы, посоветоваться кроме как с вами мне не с кем. Гуглёж выдает тонны воды, а нужна проверенная база )
Если располагаешь сокровенными знаниями, поделись пожалуйста в комментах. Я этот вопрос конечно сам заресерчу, но у меня уйдёт на это дохера времени и неправильных вариантов, ну ты и сам понимаешь.
Короче коллеги-калеки поделитесь инвайтом в ваш клуб и методичкой чо делать, спасибо ) Всем отвечу уже завтра, пойду плакать.
tags: #рабочиебудни
—
🔔 @bashdays➡️ @gitgate
МТС приглашает DevOps-инженеров на митап True Tech DevOps
10 октября | 19:00
Офлайн в Москве | Онлайн
Инженеры МТС и приглашенные эксперты разберут кейсы использования Service Mesh. Обсудим, какими критериями следует руководствоваться при выборе инструментов, как проходит процесс опромышлевания решения, подводные камни и личный опыт.
А еще разберемся с доставкой чувствительных данных в Kubernetes и проведением тренировок по устранению инцидентов. Для участия зарегистрируйся по ссылке.
🙂 Как эффективно и безболезненно внедрить DevSecOps?
Positive Technologies выпустили в помощь общедоступную методологию внедрения практик безопасной разработки — AppSec Table Top.
📖 Внутри — набор принципов и подходов, которые помогут выстроить AppSec-процессы с учетом интересов бизнеса, требований регуляторов и потребностей команд.
В методологии учтена передовая экспертиза Positive Technologies в области application security, а также лучшие российские практики и зарубежные наработки.
Скачивайте гайдлайн на сайте, а дальше... вы будете знать, что делать.
Открытый вебинар «5 ошибок администрирования K8s» от Слёрм.
Ошибка № 1. Ставить Kubernetes
Ошибка № 2,3,4,5. Пытаться его настроить...
Куб либо всегда говорит правду, либо всегда лжет, но вы никогда об этом не знаете… Как с этим работать?
Обсудим на вебинаре 2 октября.
🔵 ImagePullPolicy и старые имейджи в кубе
Вы сказали кубу залить новую версию приложения, он этого не сделал, но сказал, что сделал
🔵 PVC и StatefulSet для Stateful приложений
Или как потерять все данные из своей БД
🔵 CoreDNS Overload
Узкие места в кубах: медленные межсерверные взаимодействия при большом трафике
🔵 Kubelet memory overcommit on the node
Или как дестабилизировать куб на своих нодах
🔵 CPU limits
Продолжаем наступать на эти грабли: как неэффективно управлять ресурсами приложения
Yandex Cloud анонсировала сервис по аренде выделенных физических серверов
Yandex BareMetal позволит арендовать выделенные физические сервера и гибко настраивать их для размещения любого программного обеспечения, в том числе средств виртуализации. Компании уже могут подать заявку на закрытое тестирование сервиса Yandex BareMetal, которое начнется до конца 2024 года.
Yandex BareMetal можно интегрировать с сервисами облачной платформы, чтобы подключить резервное копирование, мигрировать данные, управлять доступом — и настраивать это можно через единую консоль управления, а также использовать единый центр поддержки, биллинг и систему управления доступом.
Читайте подробнее в блоге.
Ты DevOps инженер и видишь этот пост?
Это знак: Яндекс Практикум ждёт именно тебя!
Яндекс Практикум ищет наставников на курс «DevOps».
Наставник ведет вебинары и отвечает на вопросы студентов в чате, проверяет домашние задания и мотивирует, помогает с трудностями во время обучения.
Мы ждем, что вы:
• знаете, что такое DevOps, зачем он был придуман и при каких обстоятельствах
• имеете опыт работы с DevOps-инструментами от 3 лет (CI\CD, Docker, Kubernetes, GitLab)
Мы предлагаем удаленку и частичную занятость от 10 часов в неделю, гибкий график, ежемесячный дополнительный доход.
📩 Узнать подробности и откликнуться здесь.
🚀 Вебинар о современном подходе к разметке диска! 🚀
Тема: Современный подход к разметке диска
Рассмотрим эволюцию разметки дискового пространства на примере ОС Linux
На вебинаре вы узнаете:
- Какие требования к дисковому пространству предъявляют современные технологии
- Почему нужны дополнительные уровни абстракции
- Чем плох старый подход к разметке и почему лучше избегать логических разделов
📅 Дата и время: 27.09 в 20:00 (мск)
🔔 Не упустите шанс! Узнайте, как грамотно планировать дисковое пространство и увеличивать файловую систему на логическом диске!
В результате вебинара вы:
- Сможете грамотно планировать дисковое пространство
- Научитесь оценивать необходимость уровней абстракции для дисков
- Попробуете увеличить файловую систему на логическом диске и поймете ограничения разметки на логических дисках
🔗 Ссылка для регистрации: https://otus.pw/9X5M/
🔆 Спикер: Андрей Буранов
📌 Занятие пройдёт в рамках курса «Administrator Linux. Basic». Доступна рассрочка на обучение!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Если вы учитесь в школе или колледже и хотите начать программировать, то стоит заручиться поддержкой опытных специалистов! Ведь для формирования навыков важен комплексный подход и возможность проконсультироваться с экспертами.
Понимая это, Яндекс Лицей запустил годовую онлайн-программу по одному из самых популярных языков программирования — Go. Все задания разработаны специалистами из индустрии, а потому акцент в них сделан на практике. Во время обучения вы разберётесь, как писать понятный и конкурентный код, познакомитесь с системой контроля версий Git, а также начнёте проектировать микросервисы.
Что ещё?
- Учиться можно онлайн и в комфортном темпе.
- Чтобы начать обучение, не нужно проходить вступительные испытания.
- Обучение полностью бесплатное.
Программа подойдёт подросткам 13-20 лет. Подайте заявку до 30 сентября и учитесь у лучших!
Активируйте режим супергероя.
26 сентября в 11:00 (МСК) «Лаборатория Касперского» в прямом эфире представит обновленное решение Kaspersky EDR для бизнеса Оптимальный 3.0. Базовые функции EDR теперь стали доступны не только для Windows, но и для Linux и macOS.
На стриме эксперты расскажут, как с помощью автоматизированных сценариев вы сможете предотвратить развитие атаки на рабочие места на Windows, Linux и macOS всего в несколько кликов и какие еще полезные возможности для вас открывает Kaspersky EDR для бизнеса Оптимальный 3.0.
ЗАРЕГИСТРИРОВАТЬСЯ
До встречи на стриме!
DevOps-инженеры, пост для вас 😉
«Орки тут» — бесплатный митап 💜💜💜 для DevOps-инженеров и не только 🎙
Темы докладов 👇
🟣 Apache Kafka в кластере логов: что было сделано не так?
🟣Один deploy, чтобы править всеми: как скрестить K8s, Ansible и Jenkins, не привлекая внимания санитаров.
Встречаемся 24 сентября в 19:00 (мск) онлайн и офлайн в Санкт-Петербурге.
Чтобы поучаствовать и узнать подробности, зарегистрируйтесь на сайте митапа «Орки тут».
YADRO приглашает талантливых инженеров технической поддержки на One Week Offer 🔍
Если ты хорошо знаешь принципы серверной архитектуры и СХД, а также готов к амбициозным проектам и интересным задачам, у тебя есть шанс всего за неделю получить оффер в высокотехнологичной компании, которая стремится оставить след в истории.
Своими знаниями ребята готовы делиться с новыми сотрудниками через обучение и наставничество.
🔵 Скорее оставляй заявку и присоединяйся к команде!
🚀 Вебинар по балансировке нагрузки в Nginx! 🚀
Тема: Балансировка нагрузки в Nginx
Спикер: Николай Лавлинский
На занятии вы:
- Познакомитесь с вариантами балансировки нагрузки
- На практике изучите различные методы балансировки нагрузки в Nginx и их настройку
🔔 Не упустите шанс! Узнайте, как эффективно балансировать нагрузку в Nginx и улучшить производительность ваших веб-приложений!
Для кого:
- Системным администраторам Linux
- Веб-разработчикам
- Всем, кто планирует изучить вопрос балансировки нагрузки средствами Nginx
Преимущества участия в вебинаре:
- Понимание ключевых отличий методов балансировки
- Навыки применения различных вариантов балансировки в веб-приложениях
🔗 Ссылка для регистрации: https://otus.pw/H7Wg/
⏰ Занятие пройдёт 23 сентября в 19:00 по мск в рамках курса «Инфраструктура высоконагруженных систем». Доступна рассрочка на обучение!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❓ Хотите узнать, как контейнеризация может изменить ваш подход к разработке и администрированию?
👉 Ждем вас на открытом вебинаре 10 октября в 19:00 мск, где мы разберем:
- концепцию контейнеров и их отличия от виртуализации;
- основные принципы применения контейнеризации;
- особенности файловой системы в Docker;
- принцип работы Docker на практике: запуск приложения в контейнере со всеми необходимыми настройками.
=======
👉 Регистрируйтесь прямо сейчас: https://otus.pw/2shl/
=======
🔆 Спикер Николай Лавлинский — технический директор в Метод Лаб, PhD Economic Science, опытный руководитель разработки и преподаватель.
Встречаемся в преддверии старта курса «Administrator Linux. Basic». Все участники вебинара получат специальную цену на обучение!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Не хватает практики и знаний для работы с K8s?
➡️ Поможем DevOpsам систематизировать знания и освоить навыки работы с кластером
⚡️А на бонусном курсе «Основы ИБ» научим обеспечивать безопасность на самых начальных этапах
Курс «Kubernetes База»
➕ Видеокурс «Основы ИБ»
➕ «Ansible.Основы» и «Docker.Основы»
70 000 ₽ (вместо 105000 ₽)
Промокод на скидку в боте до 11 октября
❓ Хотите автоматизировать управление конфигурациями серверов и приложений?
Ждем вас на открытом вебинаре , где мы разберем:
- основные концепции Salt: как работает Salt, что такое состояния и модули;
- как использовать Salt для автоматизации задач: установка ПО, настройка сервисов и т.д.;
- примеры практического применения Salt.
👉👉👉 Регистрируйтесь прямо сейчас: https://otus.pw/rb1D/
📅 Дата и время: 7 октября в 20:00 мск
📌 Урок для DevOps-инженеров, системных администраторов и разработчиков, которым необходимо настроить среду разработки и развернуть свои приложения.
Встречаемся в преддверии старта курса «Инфраструктура высоконагруженных систем». Все участники вебинара получат специальную цену на обучение!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Принцесса для снятия стресса
Привет. Когда ты создаешь новый docker контейнер, то по умолчанию этому контейнеру назначается имя. Откуда оно берется?
Docker генерирует случайные имена для контейнеров, используя сочетание прилагательных и фамилий известных учёных или инженеров.
<прилагательное><фамилия> и всегда написаны в нижнем регистре.quirky_pare
agitated_turing
furious_heisenberg
romantic_curie
if name == "boring_wozniak" /* Steve Wozniak is not boring */ {
goto begin
}#!/bin/bash
adjectives=(
"adoring" "agitated" "amazing" "angry" "awesome" "blissful" "bold"
"boring" "brave" "clever" "cool" "compassionate" "competent" "crazy"
"dazzling" "determined" "ecstatic" "elegant" "eloquent" "epic"
"exciting" "fervent" "focused" "furious" "gallant" "gifted" "goofy"
"gracious" "happy" "hardcore" "hopeful" "hungry" "infallible" "inspiring"
"jolly" "jovial" "keen" "kind" "laughing" "loving" "magical"
"mystifying" "naughty" "nervous" "nostalgic" "optimistic" "peaceful"
"practical" "priceless" "quirky" "recursing" "relaxed" "reverent"
"sad" "serene" "sharp" "silly" "sleepy" "stoic" "strange" "stupefied"
"suspicious" "tender" "thirsty" "trusting" "unruffled" "vibrant"
"vigilant" "wizardly" "wonderful" "youthful" "zealous" "zen"
)
scientists=(
"albattani" "allen" "archimedes" "ardinghelli" "babbage" "bashdays" "banach"
"banzai" "bardeen" "bartik" "bassi" "bell" "benz" "bhabha" "bhaskara"
"blackwell" "bohr" "booth" "borg" "bose" "boyd" "brahmagupta" "brattain"
"brown" "carson" "chandrasekhar" "colden" "cori" "cray" "curie"
"darwin" "davinci" "dijkstra" "dubinsky" "easley" "einstein"
"elion" "engelbart" "euclid" "euler" "fermat" "fermi" "feynman"
"franklin" "galileo" "galois" "goldberg" "goodall" "hawking"
"heisenberg" "hermann" "herschel" "hertz" "hodgkin" "hoover" "hopper"
"hypatia" "joliot" "kalam" "keller" "kowalevski" "lalande" "leavitt"
"lichterman" "liskov" "lovelace" "mayer" "mccarthy" "mcclintock"
"mclean" "mcnulty" "meitner" "mendel" "mendeleev" "minsky" "mirzakhani"
"moore" "napier" "newton" "nobel" "noether" "panini" "pare"
"pasteur" "payne" "perlman" "pike" "poincare" "ptolemy" "raman"
"ramanujan" "ride" "ritchie" "roentgen" "rosalind" "saha"
"sammet" "shockley" "sinoussi" "stallman" "stonebraker" "swanson"
"tesla" "thompson" "torvalds" "turing" "varahamihira" "visvesvaraya"
"wilbur" "wiles" "williams" "wilson" "wing" "wozniak" "wright"
"yonath"
)
generate_container_name() {
local adjective="${adjectives[RANDOM % ${#adjectives[@]}]}"
local scientist="${scientists[RANDOM % ${#scientists[@]}]}"
echo "${adjective}_${scientist}"
}
count=${1:-10}
for ((i=1; i<=count; i++)); do
generate_container_name
done
pizdatiy_huy или ohuennaya_pizda.docker run --name $(bash script.sh) -d nginx
alias dn='curl -s https://frightanic.com/goodies_content/docker-names.php'
Решился я тут по быстрому взгромоздить proxmox на пятую малину, благо есть решение — Pimox7.
Мне обещали приключений на пару минут, но по итогу я был выебан в розовые очки. Прям мем, делаешь все по официальной документации, а получается хуй с маслом.
Кто не в курсе:
Proxmox — это бесплатная платформа виртуализации, которая позволяет запускать на одном физическом сервере множество виртуальных машин и контейнеров. Она используется для создания и управления виртуальными средами.
The following packages have unmet dependencies:
ceph-fuse : Depends: libfmt7 (>= 7.1.3+ds1) but it is not installable
libpve-rs-perl : Depends: perlapi-5.32.1 but it is not installable
libpve-u2f-server-perl : Depends: perlapi-5.32.1 but it is not installable
librados2-perl : Depends: perlapi-5.32.1 but it is not installable
lxc-pve : Depends: libgnutlsxx28 but it is not installable
pve-cluster : Depends: perlapi-5.32.1 but it is not installable
pve-qemu-kvm : Depends: liburing1 (>= 0.7) but it is not installable
Здрасти. Давай сегодня соберем свой «мета-пакет».
Что такое «мета-пакет»? Нууу…
ㅤ
Например, я хочу разом поставить htop, git, rclone, mc и прочее. И чтобы не вводить команду на установку:
apt install htop git rclone mc
sudo apt-get install -y build-essential devscripts dh-make
cd /tmp
mkdir bashdays-soft
cd bashdays-soft
dh_make --native --single --yes -p bashdays-soft_1.0
native — создаёт пакет без указания версии дистрибутиваsingle — создаёт минимальную структуру-p my-metapackage_1.0 — имя пакета и версия (1.0)Maintainer Name : root
Email-Address : root@unknown
Date : Sun, 29 Sep 2024 03:58:22 +0000
Package Name : bashdays-soft
Version : 1.0
License : gpl3
Package Type : single
vim debian/control
Source: bashdays-soft
Section: misc
Priority: optional
Maintainer: Roman Shubin <hello@devopsina.ru>
Standards-Version: 4.5.0
Build-Depends: debhelper-compat (= 11)
Package: bashdays-soft
Architecture: all
Depends: mc, htop, curl, git
Description: My own Installer
mc, htop, curl, git.debuild -us -uc
-us и -uc отключают подпись пакета.ls -la ..
bashdays-soft_1.0.tar.xz
bashdays-soft_1.0_all.deb
sudo apt install -yf ../bashdays-soft_1.0_all.deb
dpkg -l mc htop curl git
У меня возникла проблема. Мне нужно переконфигурировать сеть на железном сервере, который находится в другом городе. И командировка туда займет пару дней.
ㅤ
Проблема усугубляется тем, что на сервере нет ipmi или аналогов, кроме того, в окружении нет админа. Поэтому конфигурировать сеть нужно по ssh.
Надеюсь никому здесь не нужно объяснять, чем это грозит. В общем, прикинул я хрен к заднице, что можно сделать и написал скрипт.
Скрипт поможет в случае чего восстановить конфигурацию, в случае моего косяка.
Алгоритм работы следующий:
0. Есть работающий сервер.
1. При запуске создается резервная копия защищаемого каталога конфигурации /etc
2. В crontab добавляется задание, которое через определенное время ПОСЛЕ ПЕРЕЗАГРУЗКИ восстановит каталог из копии.
3. Если вышеуказанное задание определит, что в систему по ssh вошел указанный пользователь, восстановление отменяется и задание из crontab убирается.
4.Если пользователь не смог войти в систему - сначала создается вторая резервная копия защищаемого каталога (на тот случай, если сконфигурировали все правильно, но забыли/не смогли войти из-за проблем на вашей стороне, ну и для анализа), после этого производится восстановление резервной копии из пункта 1, убирается задание из crontab и производится перезагрузка сервера. Сервер приведен к пункту 0.
1. ПЕРЕД НАЧАЛОМ КОНФИГУРИРОВАНИЯ запускаем скрипт, Он запрашивает имя пользователя и время ожидания до восстановления ПОСЛЕ ПЕРЕЗАГРУЗКИ.
2. Конфигурируем сервак.
3. Отправляем сервак в перезагрузку. (Да, не лучший вариант, но по сравнению с командировкой фигня).
4. Пытаемся войти по ssh.
/etc/network/etc/inid.d)
Привет. Почему-то я думал что сегодня пятница, мда…
ㅤ
Ладно, поехали. Ты всяко встречался с такой ебаной ошибкой при подключении к серверу по ssh:
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
Please contact your system administrator. Add correct host key in /home/your_user/.ssh/known_hosts to get rid of this message. Offending RSA key in /home/your_user/.ssh/known_hosts:xx
У меня коллеги обычно сразу прибегают и начинают подозревать неладное — ааа спасите, сервер взломали, не могу подключиться! Паникёры блядь…
~/.ssh/known_hosts используется для хранения списка хостов, с которыми ты ранее взаимодействовал по ssh. known_hosts.Короче вся эта чача сделана для безопасности, чтобы избежать анальной атаки — «мужик посередине».
/etc/ssh/ssh_config или ~/.ssh/config и херачим в него такое:Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@hostname
alias ssh = "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
ssh-keygen -R <hostname_or_ip>known_hosts подчиститься и ошибка отправится в пешее эротическое.
Порой бывает необходимо прям из bash-скрипта добавить/удалить какое-нибудь задание в cron.
ㅤ
Ниже пара функций, которые позволяют это сделать. И если с добавлением вообще проблем не возникает
{ crontab -l; echo '#@reboot echo BashDays >/tmp/BashDays.txt' ; }| crontab -{ crontab -l; echo '#*/10 * * * 5 echo BashDays >>/tmp/BashDays.txt' ; }| crontab -
#!/bin/bash
function ADD_CRON_TASK(){
local CRON_TASK=${1:-'#'}
local COMMENT=${2:-$(date +%s)}
COMMENT=${COMMENT// /_}
{ crontab -l 2>/dev/null; echo "$CRON_TASK #$COMMENT"; }| crontab -
}
function REMOVE_CRON_TASK(){
if [[ $# -eq 0 ]];then
echo No comment to remove cron task >&2
return
fi
COMMENT=${1// /_}
crontab -l 2>/dev/null|sed '/#'$COMMENT'$/d'|crontab -
}
CRON_TASK='#@reboot reboot'
COMMENT="My litle joke"
ADD_CRON_TASK "$CRON_TASK" "$COMMENT"
crontab -l|tail -3
echo '###################################################'
REMOVE_CRON_TASK "$COMMENT"
crontab -l |tail -3
#
# m h dom mon dow command
# @reboot reboot #My_litle_joke
#############################
# For more information see the
#
# m h dom mon dow command
Вчера мы рассмотрели способы как отреверсить Dockerfile с помощью рук и глаз.
Сегодня рассмотрим никому не известную утилиту — «Дедок».
Утилита написана на питоне и позволяет свести к минимуму handjob по реверсу.
ㅤ
Грубо говоря «Дедок» проанализирует твой docker image и выплюнет на экран готовый Dockerfile.
Ну как готовый, очень приближенный к реальности.
Работает эта хуйня очень просто — парсит history и избавляется от лишней хуйни. Но хуйня порой пролетает, так что будь к этому готов.
Запускаем так:
docker run -v /var/run/docker.sock:/var/run/docker.sock mrhavens/dedockify <ID Image>
alias dedoc="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm mrhavens/dedockify"
Предварительно подставь нужный ID Image.
Реверсим Dockerfile
Представим что у нас пропал Dockerfile, а остался только собранный имейдж. Ну или скачал ты готовый имейдж с докерхаба и хочется узнать как его собирали.
Как произвести реверсинг?
ㅤ
Для примера соберем образ из такого Dockerfile
FROM python:3.8-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "app.py"]
docker build -t pythoner:latest .
docker history pythoner:latest
docker history --no-trunc pythoner:latest
docker cp <image id>:/etc/nginx/nginx.conf /tmp
Про дебаг докер имейджей и контейнеров я писал в этом посте, почитай, достаточно информативно.
🔥 Говяжий дошик ВСЁ!
Есть штука прикольнее, называет — tig.
ㅤ
Это утилита-обёртка для git с консольной мордой лица (ncurses). Охуенно заходит для быстро позырить историю коммитов и прочие непотребства.
- Просмотр истории и логов
- Отображение состояния репозитория
- Работа с изменениями на уровне отдельных блоков
- Поиск по содержимому файлов
apt install tig
Чтобы каждый раз не задрачивать жесткий диск операциями — чтение/запись, ядро Linux обычно сохраняет некоторую часть данных в памяти.
Представим ситуацию — у тебя на кухне гудит сервак, ты запускаешь на нем apt update и внезапно отключают свет. Через минуту свет включают, ты запускаешь вновь apt update, а оно тебе орет:
The package cache file is corrupted
apt update, часть данных была сохранена в памяти и данные просто не успели записаться на диск. Соответственно целостность файла с кешем была похерена.free -h
sync, которая позволяет насильно записать все данные из памяти на диск.sync повторно запустить free -h, изменений ты не увидишь, потому что sync ничего не зачищает, а только записывает.sync; echo 1 > /proc/sys/vm/drop_caches
sync; echo 2 > /proc/sys/vm/drop_caches
sync; echo 3 > /proc/sys/vm/drop_caches
free -h и лицезреть меньший размер.vmtouch, bpfcc-tools, dstat. Можешь потыкать на досуге.
Как ускорить установку пакетов
Берем для примера пресловутый midnight commander и устанавливаем повторно + снимем бенчмарку.
time apt install -y --reinstall mc
real: 2.977s
apt install eatmydata
midnight commander и замеряем время:time eatmydata apt install -y --reinstall mc
real: 1.204s
mc прошла в два раза быстрее.eatmydata предназначенная для ускорения операций записи на диск в Linux-системах, особенно при установке пакетов с помощью APT. Она временно отключает механизмы, которые обеспечивают сохранность данных при сбоях системы, такие как fsync, fdatasync, flock и msync, что позволяет уменьшить время записи данных на диск.
Когда ты устанавливаешь софтину через apt или подобную херню, зачастую к софтине прилипают паразиты.
ㅤ
То есть Recommended packages. Ща покажу!
Смотри:
apt install mc
The following NEW packages will be installed:
bzip2 libssh2-1 mailcap mc mc-data unzip
6 newly installed.
А прикинь, ставишь ты какую-нибудь phantomjs, а он дополнительно тянет KDE, на сервер где вообще нет иксов.
apt install mc --no-install-recommends
Recommended packages:
mailcap unzip
The following NEW packages will be installed:
libssh2-1 mc mc-data
3 newly installed.
/etc/apt/apt.conf.d/99norecommendsAPT::Install-Recommends "false";
no-install-recommends можно везде не пихать, паразиты отключены.apt-get install mc --install-recommends