Типичный Сисадмин
1.33K subscribers
414 photos
46 videos
222 links
⚙️Информация для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Сетевые протоколы

1. HTTP (Hypertext Transfer Protocol):
Веб-коммуникация: Обеспечивает взаимодействие браузера и сервера, подходит для незащищенной передачи данных.

2. HTTPS (Hypertext Transfer Protocol Secure):
Безопасная веб-связь: Обеспечивает конфиденциальность благодаря шифрованию SSL/TLS.

3. FTP (File Transfer Protocol):
Передача файлов: Облегчает обмен файлами между компьютерами, используя отдельные каналы.

4. TCP
(Transmission Control Protocol):
Надежная доставка данных: Обеспечивает упорядоченную и надежную передачу данных с проверкой на ошибки.

5. IP (Internet Protocol):
Управление пакетами данных: Занимается маршрутизацией и адресацией пакетов данных, присваивая уникальные IP-адреса.

6. UDP (User Datagram Protocol):
Быстрая передача данных: Обеспечивает бесконтактную и более быструю передачу данных без функций обеспечения надежности.

7. SMTP (Simple Mail Transfer Protocol):
Отправка электронной почты: Управляет отправкой электронной почты между серверами с помощью архитектуры клиент-сервер.

8. SSH (Secure Shell):
Безопасный удаленный доступ: Обеспечивает безопасный доступ к удаленным устройствам, шифруя связь между клиентом и сервером.

9. IMAP (Internet Message Access Protocol):
Доступ к электронной почте: Позволяет получать доступ и извлекать электронную почту с сервера, сохраняя ее на сервере.
3
Безопасность и шифрование. Element/Matrix — достойная альтернатива Slack и Mattermost

Сегодня многие ищут более удобный, дешёвый и безопасный вариант для корпоративных коммуникаций. К сожалению, Slack, Microsoft Teams и другие проприетарные решения не удовлетворяют требованиям по безопасности, а за коммерческие лицензии нужно платить. В качестве альтернативы часто смотрят в сторону бесплатного опенсорсного Mattermost. Но есть вариант получше.

https://habr.com/ru/company/ruvds/blog/702494/
1
Проверяем доступность портов с использованием nmap/netcat/telnet/nc

Доступность tcp-порта
netcat
netcat [options] host port
сканер портов:
netcat -z -v domain.com 1-1000

запустить netcat на хосте и слушать на tcp порте 4444:
netcat -l 4444

а на другой машине проверить подключение к netcat, запущенному на другом хосте:
netcat domain.com 4444

nc
nc -vt <ip> <port>

telnet
telnet <ip> <port>

nmap
порт 25 tcp: nmap -p25 11.11.11.11

Доступность udp-порта
netcat
netcat -u host port

nc
nc -vu <ip> <port>

nmap
доступность порта udp 53: nmap -sU -p U:53 11.1.11.12
3🔥1
Создаем логические тома LVM на Linux

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

Это краткое руководство по внедрению LVM на вашем linux-сервере или рабочей станции.

https://telegra.ph/Sozdaem-logicheskie-toma-LVM-na-Linux-10-09
1
📌 Calico Whisker - безопасные сетевые политики в Kubernetes без простоев

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

Теперь есть решение: Calico Whisker — механизм этапных сетевых политик. Суть простая:

👉🏻 Вы пишете политику, но не применяете её сразу.
👉🏻 Система "наблюдает", какой трафик она бы заблокировала или пропустила.
👉🏻 Вы смотрите логи, анализируете поведение.
👉🏻 И только потом, когда уверены, активируете её без изменений.

Это как staging-режим, только для сетевой безопасности. Без риска. Без простоя.

https://www.tigera.io/blog/calico-whisker-staged-network-policies-secure-kubernetes-workloads-without-downtime/
👍2
Механизм запуска процесса в Linux

В этой статье я расскажу о том, что происходит внутри ядра Linux, когда процесс вызывает execve(), как ядро подготавливает стек и как затем передаёт управление пользовательскому процессу для выполнения.

Изучил я этот механизм, когда разрабатывал Zapper — инструмент Linux, удаляющий все параметры командной строки из любого процесса без прав root.

https://habr.com/ru/companies/ruvds/articles/946236/
1
Собираем docker и деплоим из GitHub Actions

Я приведу краткую инструкцию, как быстро собирать проект и деплоить docker. Времена докера никуда не ушли, все мелкие проекты мы до сих пор делаем на обычных докерах, а также там, где всё on-premise и не дают облака с Kubernetes. Сопровождать Kubernetes самим - то еще удовольствие, особенно, когда заказчики не выделяют бюджеты на "золотых" (Ваня, привет!) devops-еров.

Флоу будет очень простым: одним job мы собираем образ (с указанием тэга или ветки) и кладем в приватный репозиторий образов GitHub, а другим job деплоим оттуда. Это удобно, когда есть несколько сред и мы один раз собираем и контейнер запускаем из него с разными переменными среды. И важное условие: мы не устанавливаем docker-compose или github runner на сервер с docker.

https://habr.com/ru/articles/824526/
1
Ставим пароль на GRUB

1. Генерация хэш-пароля
За данное действие отвечает утилита:
grub-mkpasswd-pbkdf2 

А затем два раза ввести будущий пароль для GRUB. Полученный хэш – это длинная строка, которая начинается с grub.pbkdf2. Ее нужно скопировать и куда-нибудь сохранить.

2. Изменить настройки 
Теперь нужно назначить супер-пользователя для GRUB. Это удобно делать через файл /etc/grub.d/00_header, отредактировав его содержимое. Удобнее сначала открыть текстовый документ, куда все было сохранено, и вставить команду следующего вида:
cat << EOF
set superusers="user_name"
password_pbkdf2 user_name хэш-пароль
EOF
Вместо user_name во второй и третьей строке укажите предпочтительное имя супер-пользователя GRUB, а также замените хэш пароль на свой.

Теперь выполните:
sudo nano /etc/grub.d/00_header

Пролистайте его содержимое до самого конца и на новой строке вставьте ранее подготовленную команду из 4 строк, которая сохранена в текстовом документе. Сохраните изменения.

3. Обновить конфигурацию
sudo update-grub

4. Проверить работу
reboot
🔥21
Подборка Linux утилит для системного администратора

Nezha - Легкий и элегантный аналог Zabbix
Plow - Этот инструмент был разработан для проведения нагрузочного тестирования HTTP
Hunt - Утилита для поиска файлов на локальном компьютере
AutoRegex - Регулярные выражения — это мощный инструмент для преобразования текстовых данных.
ContainerSSH - Утилита, которая позволяет вам незаметно направлять SSH-клиентов в изолированные контейнеры
Krunvm - Это инструмент, который позволяет создавать простые виртуальные машины на основе образов OCI.
Zellij - Это интересный мультиплексор, который может быть использован в качестве альтернативы tmux

https://bookflow.ru/podborka-linux-utilit-dlya-sistemnogo-administratora/
👍21
Какие есть best practices для написания Dockerfile?

1. Запускать только один процесс на контейнер.
2. Стараться объединять несколько команд RUN в одну для уменьшения количества слоёв образа.
3. Частоизменяемые слои образа необходимо располагать ниже по уровню, чтобы ускорить процесс сборки, т.к. при изменении верхнего слоя, все нижеследующие слои будут пересобираться.
4. Указывать явные версии образов в инструкции FROM, чтобы избежать случая, когда выйдет новая версия образа с тегом latest.
5. При установке пакетов указывать версии пакетов.
6. Очищать кеш пакетного менеджера и удалять ненужные файлы после выполненной инструкции.
7. Использовать multistage build для сборки артифакта в одном контейнере и размещении его в другом.
2👍1
📌 Архитектура Kubernetes
2
👩‍💻 Шпаргалка по PowerShell / Краткий справочник

gist.github.com/pcgeek86/3...
1
Сохраняем вывода команды Top в файл

Поскольку я не использовал опцию delay, приведенная ниже команда top перенаправит вывод команды top за одну итерацию в файл.
top -b -n 1 > /home/i_odmin/backup/output.txt

Сохранение вывода команды top с более чем одной итерацией из 5 итераций
Обычно программа работает непрерывно с задержкой в 2 секунды, и вы можете изменить это значение, добавив в верхнюю команду значение ‘-d’, как показано ниже:
top -n 5 -d 4 -b >/backup/output_1.txt

Как захватить вывод команды top в файл каждые 5 минут в течение часа
Система создает отдельный файл каждые 5 минут, который поможет вам определить список процессов, которые потребляли больше CPU и памяти в системе.
Добавляем следующий cronjob, который будет выполняться с 5 до 6 утра каждые 5 минут в течение часа.
Где
-n : Задает максимальное количество итераций.
-b : Работа в пакетном режиме (Запуск команды top в пакетном режиме для перенаправления вывода в другие программы или в файл)
-d : Интервал задержки (Задает задержку между обновлениями экрана)
0-59/5 5 * * * top -n 10 -d 4 -b > /home/i_odmin/backup/top_out-`date +\%Y\%m\%d\%H\%M\%S`.txt

Собраем вывод в один файл, используйте следующий cronjob
Cronjob будет выполняться с 9 до 10 утра каждые 5 минут в течение часа и добавлять результаты в один файл.
0-59/5 9 * * * top -b -n5 -d 5 >>/home/i_odmin/backup/output.txt

Записываем вывод команды top в файл каждые 5 минут в течение получаса
Добавляем следующий cronjob, который будет запускаться каждые 5 минут с 13:30 до 14:00 в течение получаса.
30-59/5 13 * * * top -n 10 -d 4 -b > /home/i_odmin/backup/top_out-`date +\%Y\%m\%d\%H\%M\%S`.txt
2
Docker 101: Фоновые контейнеры, логи и потоки STDIO

Практикуемся в получении их логов и повторном подключении к потокам STDIO: https://labs.iximiuz.com/challenges/docker-101-container-run-in-background
2