🤔 Что такое basic auth?
Basic Auth (Basic Authentication) – это простой метод аутентификации HTTP-запросов.
Он используется для ограничения доступа к ресурсам, отправляя логин и пароль в заголовке запроса.
🟠Как работает Basic Auth?
Клиент делает запрос к серверу.
Сервер отвечает 401 Unauthorized и требует аутентификацию:
Клиент кодирует логин и пароль в Base64 и отправляет их в заголовке:
🟠Пример запроса с Basic Auth
В curl
В Python (requests):
В JavaScript (fetch):
🚩Минусы
➖Не безопасен без HTTPS
данные передаются в открытом виде (Base64 — это не шифрование!).
➖Логин и пароль передаются в каждом запросе
что делает систему уязвимой.
➖Нет механизма разлогинивания
браузеры кэшируют креды, и их сложно сбросить.
Ставь 👍 и забирай 📚 Базу знаний
Basic Auth (Basic Authentication) – это простой метод аутентификации HTTP-запросов.
Он используется для ограничения доступа к ресурсам, отправляя логин и пароль в заголовке запроса.
🟠Как работает Basic Auth?
Клиент делает запрос к серверу.
Сервер отвечает 401 Unauthorized и требует аутентификацию:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Restricted Area"
Клиент кодирует логин и пароль в Base64 и отправляет их в заголовке:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
🟠Пример запроса с Basic Auth
В curl
curl -u username:password http://example.com/protected
В Python (requests):
import requests
from requests.auth import HTTPBasicAuth
response = requests.get("http://example.com/protected", auth=HTTPBasicAuth("username", "password"))
print(response.text)
В JavaScript (fetch):
fetch("http://example.com/protected", {
headers: {
"Authorization": "Basic " + btoa("username:password")
}
})
.then(response => response.text())
.then(data => console.log(data));🚩Минусы
➖Не безопасен без HTTPS
данные передаются в открытом виде (Base64 — это не шифрование!).
➖Логин и пароль передаются в каждом запросе
что делает систему уязвимой.
➖Нет механизма разлогинивания
браузеры кэшируют креды, и их сложно сбросить.
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Чем отличаются Secrets и ConfigMaps?
ConfigMap используется для хранения неконфиденциальных данных, таких как параметры окружения, пути, настройки. Secrets предназначены для хранения чувствительной информации — паролей, токенов, сертификатов. Все значения в Secret кодируются в base64. ConfigMap читается и монтируется в контейнеры так же, как и Secret, но Secret предоставляет дополнительный уровень безопасности: например, ограничения прав доступа, защита при выводе и хранении в etcd в зашифрованном виде.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
ConfigMap используется для хранения неконфиденциальных данных, таких как параметры окружения, пути, настройки. Secrets предназначены для хранения чувствительной информации — паролей, токенов, сертификатов. Все значения в Secret кодируются в base64. ConfigMap читается и монтируется в контейнеры так же, как и Secret, но Secret предоставляет дополнительный уровень безопасности: например, ограничения прав доступа, защита при выводе и хранении в etcd в зашифрованном виде.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🔥 Скрытые вакансии с удаленной работой для DevOps, которые нигде больше не публикуются. Напрямую от компаний, с контактами рекрутеров.
🔹 DevOps Jobs | Вакансии
🔸 Все каналы с вакансиями
🔹 DevOps Jobs | Вакансии
🔸 Все каналы с вакансиями
🤔 Как заставить процесс отпустить файловые дескрипторы?
Если процесс удерживает файловые дескрипторы и вам нужно их освободить, то есть несколько способов это сделать.
🟠Завершение процесса
Самый простой способ — завершить процесс, который удерживает файловые дескрипторы.
или принудительно
Чтобы найти процессы, удерживающие файлы
или
🟠Закрытие дескриптора вручную
Если вы хотите закрыть файловый дескриптор, не завершая процесс, можно использовать
1⃣Найдите открытые дескрипторы процесса:
2⃣Закройте конкретный дескриптор:
🟠Использование `gdb` для вмешательства в процесс
Если процесс нельзя перезапустить, но вы имеете к нему доступ, можно закрыть дескриптор через
🟠Перемонтирование файловой системы
Если файл удален, но все еще удерживается процессом, можно принудительно перемонтировать файловую систему:
Или использовать
🟠Использование `systemctl restart` для сервисов
Если файлы удерживаются службой (например, Nginx, Apache, MySQL), можно перезапустить службу
или
Ставь 👍 и забирай 📚 Базу знаний
Если процесс удерживает файловые дескрипторы и вам нужно их освободить, то есть несколько способов это сделать.
🟠Завершение процесса
Самый простой способ — завершить процесс, который удерживает файловые дескрипторы.
kill <PID>
или принудительно
kill -9 <PID>
Чтобы найти процессы, удерживающие файлы
lsof | grep <filename>
или
fuser <filename>
🟠Закрытие дескриптора вручную
Если вы хотите закрыть файловый дескриптор, не завершая процесс, можно использовать
lsof и /proc 1⃣Найдите открытые дескрипторы процесса:
ls -l /proc/<PID>/fd/
2⃣Закройте конкретный дескриптор:
exec 3>&-
🟠Использование `gdb` для вмешательства в процесс
Если процесс нельзя перезапустить, но вы имеете к нему доступ, можно закрыть дескриптор через
gdb: gdb -p <PID>
(gdb) call close(<FD>)
(gdb) detach
(gdb) quit
🟠Перемонтирование файловой системы
Если файл удален, но все еще удерживается процессом, можно принудительно перемонтировать файловую систему:
mount -o remount /
Или использовать
lsof для очистки удаленных файловlsof | grep deleted
🟠Использование `systemctl restart` для сервисов
Если файлы удерживаются службой (например, Nginx, Apache, MySQL), можно перезапустить службу
systemctl restart <service>
или
service <service> restart
Ставь 👍 и забирай 📚 Базу знаний
🤔 Динамическая маршрутизация и разные протоколы динамической маршрутизации, eBGP, iBGP, константы BGP. На чём сейчас принято строить BGP-пиринги?
Это основной протокол для маршрутизации в интернете.
- eBGP (external BGP) – используется для связи между автономными системами (AS).
- iBGP (internal BGP) – применяется внутри одной автономной системы.
Константы BGP:
- AS_PATH – список пройденных автономных систем.
- MED (Multi-Exit Discriminator) – предпочтение пути.
- LOCAL_PREF – приоритет маршрута внутри AS.
Сейчас BGP-пиринги строятся на базе FRRouting (FRR), Bird, ExaBGP, Cisco IOS, Juniper JunOS.
Для балансировки используются Route Reflectors и ECMP (Equal-Cost Multi-Path Routing).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Это основной протокол для маршрутизации в интернете.
- eBGP (external BGP) – используется для связи между автономными системами (AS).
- iBGP (internal BGP) – применяется внутри одной автономной системы.
Константы BGP:
- AS_PATH – список пройденных автономных систем.
- MED (Multi-Exit Discriminator) – предпочтение пути.
- LOCAL_PREF – приоритет маршрута внутри AS.
Сейчас BGP-пиринги строятся на базе FRRouting (FRR), Bird, ExaBGP, Cisco IOS, Juniper JunOS.
Для балансировки используются Route Reflectors и ECMP (Equal-Cost Multi-Path Routing).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥2💊1
🤔 Почему плохо запускать контейнер от рута?
Запуск контейнеров от имени пользователя root (рута) в Docker является обычной практикой, но это может привести к серьезным проблемам безопасности. Вот основные причины, почему это считается плохой практикой:
🟠Повышение рисков безопасности:
Эксплуатация уязвимостей: Если злоумышленник получает доступ к контейнеру, запущенному от имени root, он может легко использовать уязвимости контейнера для атаки на хост-систему.
Злоумышленники: Контейнеры могут содержать уязвимые или злонамеренные коды, которые при запуске с привилегиями root могут получить доступ к чувствительной информации или вызвать сбои.
🟠Отсутствие изоляции:
Гостевая изоляция: Контейнеры должны быть изолированы от хост-системы. Запуск контейнера от имени root нарушает эту изоляцию, так как root внутри контейнера — это также root на хосте.
Повышенные привилегии: Контейнеры, запущенные от имени root, могут иметь доступ к системным ресурсам, что увеличивает риск нарушения безопасности.
🟠Нарушение принципа наименьших привилегий:
Принцип наименьших привилегий: Этот принцип гласит, что процесс должен иметь только те привилегии, которые необходимы для выполнения его задач. Запуск контейнера от имени root нарушает этот принцип, предоставляя ему избыточные права.
🚩Примеры проблем
🟠Повышение привилегий:
Если в контейнере, запущенном от имени root, найдена уязвимость, злоумышленник может использовать ее для выполнения команд с привилегиями root на хосте, что может привести к серьезным нарушениям безопасности.
🟠Доступ к файловой системе хоста:
Контейнер, запущенный от имени root, может получить доступ к критически важным файлам хостовой системы, изменять их или удалять, что может привести к нарушению работы всей системы.
🚩Как избежать запуска контейнеров от рута
Использование непривилегированных пользователей:
В Dockerfile можно создать пользователя с ограниченными привилегиями и переключиться на него.
Использование флага --user:
При запуске контейнера можно использовать флаг
Использование механизмов безопасности Docker:
Использование профилей seccomp для ограничения системных вызовов.
Использование AppArmor или SELinux для ограничения доступа контейнеров к системным ресурсам.
Ставь 👍 и забирай 📚 Базу знаний
Запуск контейнеров от имени пользователя root (рута) в Docker является обычной практикой, но это может привести к серьезным проблемам безопасности. Вот основные причины, почему это считается плохой практикой:
🟠Повышение рисков безопасности:
Эксплуатация уязвимостей: Если злоумышленник получает доступ к контейнеру, запущенному от имени root, он может легко использовать уязвимости контейнера для атаки на хост-систему.
Злоумышленники: Контейнеры могут содержать уязвимые или злонамеренные коды, которые при запуске с привилегиями root могут получить доступ к чувствительной информации или вызвать сбои.
🟠Отсутствие изоляции:
Гостевая изоляция: Контейнеры должны быть изолированы от хост-системы. Запуск контейнера от имени root нарушает эту изоляцию, так как root внутри контейнера — это также root на хосте.
Повышенные привилегии: Контейнеры, запущенные от имени root, могут иметь доступ к системным ресурсам, что увеличивает риск нарушения безопасности.
🟠Нарушение принципа наименьших привилегий:
Принцип наименьших привилегий: Этот принцип гласит, что процесс должен иметь только те привилегии, которые необходимы для выполнения его задач. Запуск контейнера от имени root нарушает этот принцип, предоставляя ему избыточные права.
🚩Примеры проблем
🟠Повышение привилегий:
Если в контейнере, запущенном от имени root, найдена уязвимость, злоумышленник может использовать ее для выполнения команд с привилегиями root на хосте, что может привести к серьезным нарушениям безопасности.
🟠Доступ к файловой системе хоста:
Контейнер, запущенный от имени root, может получить доступ к критически важным файлам хостовой системы, изменять их или удалять, что может привести к нарушению работы всей системы.
🚩Как избежать запуска контейнеров от рута
Использование непривилегированных пользователей:
В Dockerfile можно создать пользователя с ограниченными привилегиями и переключиться на него.
FROM ubuntu:20.04
RUN useradd -m myuser
USER myuser
CMD ["myapp"]
Использование флага --user:
При запуске контейнера можно использовать флаг
--user, чтобы указать непривилегированного пользователя.docker run --user 1000:1000 myapp
Использование механизмов безопасности Docker:
Использование профилей seccomp для ограничения системных вызовов.
Использование AppArmor или SELinux для ограничения доступа контейнеров к системным ресурсам.
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 На CentOS Linux ceilings — он везде отключён или активен?
Скорее всего, имеется в виду cgroup cpu ceiling — ограничение CPU. По умолчанию в CentOS могут быть активны базовые значения cgroup, но ручная настройка нужна для контроля ресурсов, особенно в контейнеризированных окружениях.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Скорее всего, имеется в виду cgroup cpu ceiling — ограничение CPU. По умолчанию в CentOS могут быть активны базовые значения cgroup, но ручная настройка нужна для контроля ресурсов, особенно в контейнеризированных окружениях.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊5
🤔 Из чего состоит ELK стек?
ELK (Elasticsearch, Logstash, Kibana) – это стек для сбора, обработки, хранения и визуализации логов. Он помогает DevOps-инженерам анализировать логи в реальном времени и выявлять проблемы в системе.
🚩Elasticsearch – хранилище и поиск логов
- Хранит структурированные и неструктурированные данные (логи, метрики)
- Поддерживает быстрый полнотекстовый поиск
- Использует кластеризацию для высокой доступности
🚩Logstash – обработка и отправка логов
- Собирает логи из файлов, TCP, Kafka, Beats
- Фильтрует и преобразует данные перед отправкой в Elasticsearch
- Поддерживает шифрование и маршрутизацию
🚩Kibana – визуализация и анализ
- Позволяет строить дашборды и графики
- Делает поиск по логам и метрикам
- Визуализирует реальное время работы системы
🚩Как ELK-стек работает вместе?
Logstash собирает и обрабатывает логи
Отправляет их в Elasticsearch
Kibana визуализирует данные
Ставь 👍 и забирай 📚 Базу знаний
ELK (Elasticsearch, Logstash, Kibana) – это стек для сбора, обработки, хранения и визуализации логов. Он помогает DevOps-инженерам анализировать логи в реальном времени и выявлять проблемы в системе.
🚩Elasticsearch – хранилище и поиск логов
- Хранит структурированные и неструктурированные данные (логи, метрики)
- Поддерживает быстрый полнотекстовый поиск
- Использует кластеризацию для высокой доступности
json
GET /logs/_search
{
"query": {
"match": { "message": "error" }
}
}
🚩Logstash – обработка и отправка логов
- Собирает логи из файлов, TCP, Kafka, Beats
- Фильтрует и преобразует данные перед отправкой в Elasticsearch
- Поддерживает шифрование и маршрутизацию
yaml
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
}
}
filter {
grok { match => { "message" => "%{COMBINEDAPACHELOG}" } }
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
}
}
🚩Kibana – визуализация и анализ
- Позволяет строить дашборды и графики
- Делает поиск по логам и метрикам
- Визуализирует реальное время работы системы
message: "error" AND @timestamp:[now-24h TO now]
🚩Как ELK-стек работает вместе?
Logstash собирает и обрабатывает логи
Отправляет их в Elasticsearch
Kibana визуализирует данные
yaml
version: "3"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0
environment:
- discovery.type=single-node
ports:
- "9200:9200"
logstash:
image: docker.elastic.co/logstash/logstash:8.5.0
depends_on:
- elasticsearch
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
ports:
- "5044:5044"
kibana:
image: docker.elastic.co/kibana/kibana:8.5.0
depends_on:
- elasticsearch
ports:
- "5601:5601"
Ставь 👍 и забирай 📚 Базу знаний
👍4
🤔 Можно ли на лету изменить настройки DNS в контейнере через CLI?
Да, можно:
docker exec <container> bash -c "echo nameserver8.8.8.8 > /etc/resolv.conf"
Но после рестарта DNS вернётся. Лучше задать при запуске.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Да, можно:
docker exec <container> bash -c "echo nameserver
Но после рестарта DNS вернётся. Лучше задать при запуске.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1
🤔 Что касается безопасности где хранить переменные секреты?
Хранение секретных переменных, таких как пароли, ключи API, токены доступа и прочие конфиденциальные данные, требует особого подхода для обеспечения безопасности. Ниже описаны рекомендуемые методы и инструменты для безопасного хранения секретных переменных в различных средах разработки и производства.
🟠Использование специализированных хранилищ секретов
HashiCorp Vault:
Это инструмент для управления секретами и защиты данных. Он позволяет централизованно хранить, доступ к которым строго контролируется, и динамически создавать секреты.
Преимущества: Поддержка динамических секретов, интеграция с большинством сред и технологий, высокий уровень безопасности.
AWS Secrets Manager и Azure Key Vault:
Эти облачные сервисы предоставляют управляемые решения для безопасного хранения и управления доступом к секретным данным, включая автоматическое обновление секретов.
Преимущества: Интеграция с облачными сервисами, упрощение ротации секретов, мониторинг и логирование доступа.
🟠Инкапсуляция секретов в среде выполнения
Docker Secrets и Kubernetes Secrets:
Предлагают встроенные механизмы для безопасного хранения секретов, которые используются контейнерами во время выполнения.
Преимущества: Локальная интеграция с системами оркестрации контейнеров, базовое шифрование на диске и управление доступом.
🟠Секреты в контролируемом CI/CD
Платформы CI/CD, такие как GitLab и GitHub, предоставляют возможности для безопасного хранения переменных среды и секретов, которые могут быть использованы в процессах автоматизации без разглашения.
Преимущества: Простота использования, интеграция с процессами разработки, защита от внешнего доступа.
🟠Шифрование секретов
Инструменты шифрования: Использование инструментов, таких как GnuPG (GPG), для шифрования секретов перед их сохранением в системах контроля версий или конфигурационных файлах.
Преимущества: Высокий уровень безопасности, контроль доступа к секретам на уровне пользователя.
Ставь 👍 и забирай 📚 Базу знаний
Хранение секретных переменных, таких как пароли, ключи API, токены доступа и прочие конфиденциальные данные, требует особого подхода для обеспечения безопасности. Ниже описаны рекомендуемые методы и инструменты для безопасного хранения секретных переменных в различных средах разработки и производства.
🟠Использование специализированных хранилищ секретов
HashiCorp Vault:
Это инструмент для управления секретами и защиты данных. Он позволяет централизованно хранить, доступ к которым строго контролируется, и динамически создавать секреты.
Преимущества: Поддержка динамических секретов, интеграция с большинством сред и технологий, высокий уровень безопасности.
AWS Secrets Manager и Azure Key Vault:
Эти облачные сервисы предоставляют управляемые решения для безопасного хранения и управления доступом к секретным данным, включая автоматическое обновление секретов.
Преимущества: Интеграция с облачными сервисами, упрощение ротации секретов, мониторинг и логирование доступа.
🟠Инкапсуляция секретов в среде выполнения
Docker Secrets и Kubernetes Secrets:
Предлагают встроенные механизмы для безопасного хранения секретов, которые используются контейнерами во время выполнения.
Преимущества: Локальная интеграция с системами оркестрации контейнеров, базовое шифрование на диске и управление доступом.
🟠Секреты в контролируемом CI/CD
Платформы CI/CD, такие как GitLab и GitHub, предоставляют возможности для безопасного хранения переменных среды и секретов, которые могут быть использованы в процессах автоматизации без разглашения.
Преимущества: Простота использования, интеграция с процессами разработки, защита от внешнего доступа.
🟠Шифрование секретов
Инструменты шифрования: Использование инструментов, таких как GnuPG (GPG), для шифрования секретов перед их сохранением в системах контроля версий или конфигурационных файлах.
Преимущества: Высокий уровень безопасности, контроль доступа к секретам на уровне пользователя.
Ставь 👍 и забирай 📚 Базу знаний