Для смены таймзоны внутри Docker-контейнера на базе Alpine нужно установить пакет
tzdata командой apk add tzdata и установить переменную окружения TZ (например, TZ=Europe/Moscow)В версии 2,221 Jenkins добавили полезный функционал для очистки старых билдов и артефактов. Опцию можно настроить глобально для всех проектов или для каждого проекта по отдельности. Можно указать сколько дней нужно хранить билды/артефакты и максимальное число билдов/артифактов.
https://support.cloudbees.com/hc/en-us/articles/215549798-Best-Strategy-for-Disk-Space-Management-Clean-Up-Old-Builds
https://support.cloudbees.com/hc/en-us/articles/215549798-Best-Strategy-for-Disk-Space-Management-Clean-Up-Old-Builds
Делаем свой сайт безопаснее.
Есть вот такой ресурс https://www.ssllabs.com, который проверяет безопасность вашего сайта (актуальность шифров, алгоритмов, протоколов и прочее).
После сканирования ресурс дает рейтинг вашему сайту в плане защиты. Ниже краткий пересказ того, как я получал рейтинг A+ вместо B на примере веб-сервера nginx.
* Отключаем поддержку старых версий протокола TLS (а именно, версий 1.0 и 1.1), оставляем 1.2 и 1.3 - устанавливается директивой
* Оставляем набор актуальных шифров (отключаем недействительные, небезопасные, малоиспользуемые и уязвимые шифры) - устанавливается директивой
* Даем возможность веб-серверу выбирать шифр, а не браузеру - устанавливается директивой
https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices
Есть вот такой ресурс https://www.ssllabs.com, который проверяет безопасность вашего сайта (актуальность шифров, алгоритмов, протоколов и прочее).
После сканирования ресурс дает рейтинг вашему сайту в плане защиты. Ниже краткий пересказ того, как я получал рейтинг A+ вместо B на примере веб-сервера nginx.
* Отключаем поддержку старых версий протокола TLS (а именно, версий 1.0 и 1.1), оставляем 1.2 и 1.3 - устанавливается директивой
ssl_protocolsssl_protocols TLSv1.2 TLSv1.3;
* Оставляем набор актуальных шифров (отключаем недействительные, небезопасные, малоиспользуемые и уязвимые шифры) - устанавливается директивой
ssl_ciphersssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !RC4 !EXP !PSK !SRP !CAMELLIA !SEED';
* Даем возможность веб-серверу выбирать шифр, а не браузеру - устанавливается директивой
ssl_prefer_server_ciphersssl_prefer_server_ciphers on;
https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices
Ssllabs
Qualys SSL Labs
Bringing you the best SSL/TLS and PKI testing tools and documentation.
Замечательная фраза:
https://blog.zopyx.com/andreas-jung/contents/on-docker-security-docker-group-considered-harmful
Building a secure IT system on human trust is fundamentally brokenhttps://blog.zopyx.com/andreas-jung/contents/on-docker-security-docker-group-considered-harmful
Zopyx
On Docker security: 'docker' group considered harmful - Andreas Jung
The company for Zope, Plone, Python, MongoDB and Electronic Publishing
Remove Untagged Images From Docker
https://jimhoskins.com/2013/07/27/remove-untagged-docker-images.html
https://jimhoskins.com/2013/07/27/remove-untagged-docker-images.html
Microsoft выкатил утилиту Super Linter для проверки кода на следующих языках:
Пока все прикручивается только к Github Actions, но есть возможность локального запуска в Docker.
Ansible (ansible-lint)https://habr.com/ru/post/507528/
CSS (stylelint)
CoffeeScriptc(offeelint)
Dockerfile (dockerfilelint)
Golang (golangci-lint)
JavaScript (eslint standard js)
JSON (jsonlint)
Markdown (markdownlint
Perl (perl)
Python3 (pylint)
Ruby (RuboCop)
Shell (Shellcheck)
Terraform (tflint)
TypeScript (eslint standard js)
XML (LibXML)
YAML (YamlLint)
ENV (dotenv-linter)
Пока все прикручивается только к Github Actions, но есть возможность локального запуска в Docker.
Хабр
Линтер на все случаи жизни — GitHub Super Linter
Команда DevOps инженеров из GitHub поделились своим универсальным решением для проверки качества кода. С ним можно настроить линтер для 17 языков всего в 11 стр...
Интересная задумка - строить схему взаимодействия между сервисами, а на выходе получать готовый docker-compose файл.
https://nuxx.io/
https://nuxx.io/
nuxx.io
Visual Docker Compositions for faster development. Discover, leverage, launch community recipes.
Если вы используется Ansible в связке с Python2 и Jinja, то при запуске (случайно или специально) на Python3 можно получить следующую ошибку:
В Python2 словари используют методы
https://docs.ansible.com/ansible/latest/user_guide/playbooks_python_version.html#dict-iteritems
P.S. И не стоит забывать, что Python2 уже deprecated и выпилен с большинства апстрим дистрибутивов.
fatal: [host-01.test.ru]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute 'iteritems'"}В Python2 словари используют методы
iterkeys(), itervalues(), iteritems() , в Python3 эти методы удалены. Следует использовать методы dict.keys(), dict.values(), dict.items() для обеспечения совместимости между Python2 и Python3.https://docs.ansible.com/ansible/latest/user_guide/playbooks_python_version.html#dict-iteritems
P.S. И не стоит забывать, что Python2 уже deprecated и выпилен с большинства апстрим дистрибутивов.
https://github.com/zricethezav/gitleaks
Небольшая утилита для сканирования репозиториев на предмет секретов, таких как пароли, ключи API и токены .
Утилита либо клонирует репозиторий по ссылке, либо указывается путь на файловой системе.
Заявлена поддержка Github и Gitlab API, которая позволяет сканировать целые организации, пользователь и запросы на слияния (честно говоря, в документации не увидел такую возможность)
Пример запуска:
Помимо токена можно указать логин+пароль или ssh-ключ.
Вывод выглядит следующим образом (пример):
Если у вас Gitlab, то можно через API получить URL всех репозиториев, а потом скриптом обработать все.
Через API список репозиториев можно получить вот так (требуется наличие утилиты jq):
Также нужно учитывать ограничение на выдачу количества записей в API
https://docs.gitlab.com/ee/api/projects.html#pagination-limits
Небольшая утилита для сканирования репозиториев на предмет секретов, таких как пароли, ключи API и токены .
Утилита либо клонирует репозиторий по ссылке, либо указывается путь на файловой системе.
Заявлена поддержка Github и Gitlab API, которая позволяет сканировать целые организации, пользователь и запросы на слияния (честно говоря, в документации не увидел такую возможность)
Пример запуска:
docker run docker.io/zricethezav/gitleaks:latest gitleaks --repo=https://gitlab.example.com/repo_name --access-token=your_token --verbose --pretty
Помимо токена можно указать логин+пароль или ssh-ключ.
Вывод выглядит следующим образом (пример):
{
"line": "-----BEGIN RSA PRIVATE KEY-----",
"offender": "-----BEGIN RSA PRIVATE KEY-----",
"commit": "1111111111111111111111111111111111111111",
"repo": "test_repo",
"rule": "Asymmetric Private Key",
"commitMessage": "Add private key",
"author": "Test User",
"email": "[email protected]",
"file": "id_rsa",
"date": "2016-10-20T14:37:47Z",
"tags": "key, AsymmetricPrivateKey"
}Если у вас Gitlab, то можно через API получить URL всех репозиториев, а потом скриптом обработать все.
Через API список репозиториев можно получить вот так (требуется наличие утилиты jq):
curl -s --header "PRIVATE-TOKEN: your_token" "https://gitlab.example.com/api/v4/projects?per_page=100&page=1" | jq -r '.[]|.web_url'
Также нужно учитывать ограничение на выдачу количества записей в API
https://docs.gitlab.com/ee/api/projects.html#pagination-limits
GitHub
GitHub - gitleaks/gitleaks: Find secrets with Gitleaks 🔑
Find secrets with Gitleaks 🔑. Contribute to gitleaks/gitleaks development by creating an account on GitHub.
Смотрел на днях видео, где рекомендовали в случае DDoS-атак отдавать 444 код ответа. Решил узнать, что это за код. И, внезапно, выяснилось, что браузеры немного по-другому взаимодействуют с ресурсом, который отдаем подобный код ответа
https://habr.com/ru/post/415565/
https://habr.com/ru/post/415565/
Хабр
Почему (сегодня) return 444 не всегда полезен
В web-сервере Nginx есть замечательный код ответа 444, который «закрывает» соединение без отправки данных. Данный функционал весьма полезен при фильтрации парази...
Полезное решение для сервисов, которые торчат наружу)
https://www.foaas.com/
https://www.foaas.com/
Foaas
Home - Foaas
RESTful API (Representational State Transfer) has become a standard in the web development world due to its simplicity, scalability and flexibility.
По следам zabbix housekeeper
В какой-то момент времени в наш канал начали лететь триггеры с Zabbix с сообщениями о высоком IO на одном сервере (большое количество операций записи).
Решил разобраться с этим. Zabbix в контейнере, БД - PostgreSQL. Сначала было подозрение на задачи по бэкапу, которые запускаются по расписанию. Потом на PostgreSQL Autovacuum (в поисках статей по его тюнингу попалась неплохая статья от Microsoft https://docs.microsoft.com/en-ca/azure/postgresql/howto-optimize-autovacuum).
Оказалось, что autovacuum тоже не при делах. Потом случайно нашел ещё один компонент zabbix, который как раз запускается по расписанию. Это zabbix housekeeper — периодический процесс, выполняемый Zabbix сервером. Этот процесс удаляет устаревшую информацию и информацию удаленную пользователями. По умолчанию процесс запускается каждый час (переменная
Полезные ссылки:
Официальные Dockerfile и docker-compose для Zabbix:
https://github.com/zabbix/zabbix-docker
Параметры файла конфигурации Zabbix сервера:
https://www.zabbix.com/documentation/4.2/ru/manual/appendix/config/zabbix_server
Очистка истории через housekeeper:
https://www.zabbix.com/documentation/4.2/ru/manual/web_interface/frontend_sections/administration/general
В какой-то момент времени в наш канал начали лететь триггеры с Zabbix с сообщениями о высоком IO на одном сервере (большое количество операций записи).
Решил разобраться с этим. Zabbix в контейнере, БД - PostgreSQL. Сначала было подозрение на задачи по бэкапу, которые запускаются по расписанию. Потом на PostgreSQL Autovacuum (в поисках статей по его тюнингу попалась неплохая статья от Microsoft https://docs.microsoft.com/en-ca/azure/postgresql/howto-optimize-autovacuum).
Оказалось, что autovacuum тоже не при делах. Потом случайно нашел ещё один компонент zabbix, который как раз запускается по расписанию. Это zabbix housekeeper — периодический процесс, выполняемый Zabbix сервером. Этот процесс удаляет устаревшую информацию и информацию удаленную пользователями. По умолчанию процесс запускается каждый час (переменная
ZBX_HOUSEKEEPINGFREQUENCY в официальном образе Docker/параметр HousekeepingFrequency в файле конфигурации Zabbix) и удаляет 5000 записей за один прогон (переменная ZBX_MAXHOUSEKEEPERDELETE в официальном образе Docker/параметр MaxHousekeeperDelete в файле конфигурации Zabbix). Из веб-интерфейса можно только включить и выключить housekeeper, а также настроить, какое количество времени будет храниться различный набор данных. Все остальное делается правкой файла .env_srv с набором переменных окружения (у разработчиков Zabbix свое видение того, как должен формироваться файл конфигурации для Zabbix). В данном случае, на основе значений переменных окружения формируется итоговый файл конфигурации. Если править сам файл конфигурации внутри контейнера и перезапускать контейнер, то изменения не применятся. Задача решилась уменьшением значения переменной ZBX_MAXHOUSEKEEPERDELETE с 10000 до 6000. После правки файла .srv_env zabbix сервер можно перезапустить командой docker-compose up -d zabbix-server.Полезные ссылки:
Официальные Dockerfile и docker-compose для Zabbix:
https://github.com/zabbix/zabbix-docker
Параметры файла конфигурации Zabbix сервера:
https://www.zabbix.com/documentation/4.2/ru/manual/appendix/config/zabbix_server
Очистка истории через housekeeper:
https://www.zabbix.com/documentation/4.2/ru/manual/web_interface/frontend_sections/administration/general
Docs
Optimize autovacuum - Azure Database for PostgreSQL - Single Server
This article describes how you can optimize autovacuum on an Azure Database for PostgreSQL - Single Server
У издательства Manning есть целая куча бесплатных книжек по различным тематикам
https://freecontent.manning.com/free-ebooks/
(по ссылке внизу страницы есть кнопочка Older posts)
P.S. Издательство немножко хитрит и дает неполную версию книги, а главы, выбранные авторами (Chapters selected)
https://freecontent.manning.com/free-ebooks/
(по ссылке внизу страницы есть кнопочка Older posts)
P.S. Издательство немножко хитрит и дает неполную версию книги, а главы, выбранные авторами (Chapters selected)
Записки молодого девопсера
Смотрел на днях видео, где рекомендовали в случае DDoS-атак отдавать 444 код ответа. Решил узнать, что это за код. И, внезапно, выяснилось, что браузеры немного по-другому взаимодействуют с ресурсом, который отдаем подобный код ответа https://habr.com/ru/post/415565/
Спасибо за дополнение @crrlcx:
Насчёт последних сообщений про анти-дос и анти-ддос - код 444 (не rfc, есть только в nginx) стоит вызывать только для ботов, но не для браузеров.
Для браузеров же стоит всё же ответить, например 204 (из rfc, No content).
И в случае nginx и https стоит для всех нежелательных обращений использовать
Насчёт последних сообщений про анти-дос и анти-ддос - код 444 (не rfc, есть только в nginx) стоит вызывать только для ботов, но не для браузеров.
Для браузеров же стоит всё же ответить, например 204 (из rfc, No content).
И в случае nginx и https стоит для всех нежелательных обращений использовать
ssl_ciphers aNULL;, чтобы не создавать tls соединения перед тем как вызвать 444.Оказывается, существуют open source драйверы для устройств компании Razer. Проект называется
Помимо драйвера предлагается набор графических утилит для настройки ваших девайсов.
OpenRazer (https://openrazer.github.io/). Драйверы имеются под большую линейку устройств и для различных операционных систем. Для некоторых устройств (например, мышей), драйвер предоставляет функционал, сравнимый с проприетарным драйвером на Windows. Где-то он скудный, например, на гарнитуре Razer Kraken 7.1 Ultimate можно настраивать только схему подсветки.Помимо драйвера предлагается набор графических утилит для настройки ваших девайсов.
OpenRazer
Open source driver and user-space daemon to control Razer peripherals on GNU/Linux
Небольшой ликбез.
Конец ликбеза и основная часть поста
Периодически изучаю документацию Terraform. Продукт за несколько лет очень сильно вырос в плане доступных провайдеров - помимо очевидных облаков, есть и неочевидные СУБД (MySQL и PostreSQL), Github и Gitlab (удобно для тех же интеграторов - можно в коде описать структуру будущих проектов и групп, а потом уже редактировать этот шаблон).
Это из официальных поддерживаемых провайдеров (обычно поддержку осуществляет разработчик продукта - облака, СУБД и так далее ). Есть и third-party провайдеры - например, VirtualBox (https://github.com/terra-farm/terraform-provider-virtualbox), KVM (https://github.com/dmacvicar/terraform-provider-libvirt).
Hashicorp Terraform - продукт, позволяющий управлять вашей инфраструктурой, используя методологию IaC (Infrastructure as Code). Данный продукт позволяет описать вашу будущую инфраструктуру в каком-нибудь облаке (например, Amazon) - виртуальные машины, диски, сети, правила на балансировщиках и сетевых экранах, а затем одной командой создать эту все это добро в облаке. Если у вас уже есть готовая инфраструктура, то её можно импортировать в Terraform. Распространяется в виде бинарного файла и имеет очень крутую и подробную документацию. Конец ликбеза и основная часть поста
Периодически изучаю документацию Terraform. Продукт за несколько лет очень сильно вырос в плане доступных провайдеров - помимо очевидных облаков, есть и неочевидные СУБД (MySQL и PostreSQL), Github и Gitlab (удобно для тех же интеграторов - можно в коде описать структуру будущих проектов и групп, а потом уже редактировать этот шаблон).
Это из официальных поддерживаемых провайдеров (обычно поддержку осуществляет разработчик продукта - облака, СУБД и так далее ). Есть и third-party провайдеры - например, VirtualBox (https://github.com/terra-farm/terraform-provider-virtualbox), KVM (https://github.com/dmacvicar/terraform-provider-libvirt).
GitHub
GitHub - terra-farm/terraform-provider-virtualbox: VirtualBox provider for Terraform
VirtualBox provider for Terraform. Contribute to terra-farm/terraform-provider-virtualbox development by creating an account on GitHub.
Шпаргалка для всего (языки программирования, прикладное ПО и прочее)
https://overapi.com/
https://overapi.com/
Overapi
OverAPI.com | Collecting all the cheat sheets
OverAPI.com is a site collecting all the cheatsheets,all!
Видеозаписи всех докладов с восьми конференций Онтико https://habr.com/ru/company/oleg-bunin/blog/497154/
Хабр
Видеозаписи всех докладов с восьми конференций Онтико
Ситуация с тем-самым-вирусом сильно бьёт по организаторам мероприятий. Людям, которые помогают сообществу разработчиков России, сейчас тяжело. Мы в AvitoTech хотим поддержать своих...
Отправляем пуш-уведомления на мобильные устройства https://www.cyberciti.biz/mobile-devices/android/how-to-push-send-message-to-ios-and-android-from-linux-cli/
nixCraft
How to push/send message to iOS and Android from Linux CLI
Explains how to push/send a direct message to an Apple iOS or Google Android mobile phone and device using Linux/Unix command line.