Все для системного администратора. По всем вопросам @evgenycarter № 4869313359
Дыра в щите Cloudflare: как атака на Jabber.ru вскрыла проблему, о которой молчат c 2023
Думаю, многие помнят позапрошлогодний инцидент с Man-in-the-Middle атакой на XMPP-сервис jabber.ru. Эта история наделала много шума, но, как мне кажется, главный вывод из неё так и не был усвоен широкой аудиторией. А зря. Потому что эта атака вскрыла системную уязвимость в процессе выдачи TLS сертификатов, которая напрямую касается миллионов сайтов, особенно тех, кто доверяет свою безопасность Cloudflare.
Я поднял эту тему на форуме Cloudflare 23 дня назад, но, как и в случае с другими подобными запросами, ответа не получил. Поэтому я здесь, чтобы разложить всё по полочкам вам.
https://habr.com/ru/articles/918570/
👉 @i_odmin
🚗 Как найти кратчайший маршрут с помощью Apache Spark и GraphFrames
Разбираем кейс на реальных данных из OpenStreetMap — ищем оптимальный маршрут
🔍 Что делаем
1. Загружаем граф дорог города с помощью OSMnx
2. Сохраняем вершины и ребра с координатами, скоростями и геометрией
3. Загружаем всё в Spark
4. Находим кратчайший путь с помощью GraphFrames
📍 1. Скачиваем карту и строим граф улиц
import osmnx as ox
# Загрузка данных о дорогах Москвы
G = ox.graph.graph_from_place("Moscow", network_type="drive")
# Отображение дорог на карте
moscow_gdf = ox.geocoder.geocode_to_gdf("Moscow")
fig, ax = ox.plot.plot_graph(G, show=False, close=False, bgcolor="#111111", edge_color="#ffcb00", edge_linewidth=0.3, node_size=0)
moscow_gdf.plot(ax=ax, fc="#444444", ec=None, lw=1, alpha=1, zorder=-1)
# Настройка границ карты
margin = 0.02
west, south, east, north = moscow_gdf.union_all().bounds
margin_ns = (north - south) * margin
margin_ew = (east - west) * margin
ax.set_ylim((south - margin_ns, north + margin_ns))
ax.set_xlim((west - margin_ew, east + margin_ew))
plt.show()
with open('Moscow.geojson', 'w') as file:
file.write(moscow_gdf.to_json())
nodes = G.nodes(data=True)
with open('nodes.csv', 'a') as file:
file.write("id,lat,lonn")
for (node, data) in nodes:
file.write("%d,%f,%fn" % (node, data.get("y"), data.get("x")))
edges = G.edges(data=True)
def decode_maxspeed(maxspeed):
match maxspeed:
case str():
match maxspeed.lower():
case "ru:urban": return 60
case "ru:rural": return 90
case "ru:living_street": return 20
case "ru:motorway": return 110
case _: return int(maxspeed)
case list(): return min(list(map(decode_maxspeed, maxspeed)))
case _: return maxspeed
with open('edges.csv', 'a') as file:
file.write("src,dst,maxspeed,length,geometryn")
for (src, dst, data) in edges:
maxspeed = decode_maxspeed(data.get("maxspeed", 999))
length = float(data.get("length"))
geometry = shapely.wkt.dumps(data.get("geometry"))
file.write("%d,%d,%d,%f,%sn" % (src, dst, maxspeed, length, geometry))
from pyspark.sql import SparkSession
spark = SparkSession.builder
.config("spark.jars.packages", "graphframes:graphframes:0.8.4-spark3.5-s_2.12")
.master("local[*]")
.appName("GraphFrames")
.getOrCreate()
nodes = spark.read.options(header=True).csv("nodes.csv")
edges = spark.read.options(header=True).csv("edges.csv")
# Вычисление времени прохождения рёбер
edgesT = edges.withColumn("time", edges["length"] / edges["maxspeed"])
# Построение графа
from graphframes import *
g = GraphFrame(nodes, edgesT)
src = "257601812"
dst = "5840593081"
paths = g.shortestPaths(landmarks=[dst])
paths.filter(F.col("id") == src).show(truncate=False)
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Читать полностью…
🔥 Бэкап базы данных MySQL с автоматической ротацией 🔄
Если у тебя есть сервер с MySQL/MariaDB, автоматический бэкап с ротацией — must have для спокойной жизни 😌
Вот простой скрипт, который:
1. Делает дамп всех баз
2. Сохраняет в архив с датой
3. Удаляет архивы старше N дней
#!/bin/bash
# автор: /channel/bash_srv
# Папка для бэкапов
BACKUP_DIR="/opt/backups/mysql"
# Кол-во дней хранения
RETENTION_DAYS=7
# Дата для имени файла
DATE=$(date +'%Y-%m-%d_%H-%M')
# Учетные данные
DB_USER="root"
DB_PASS="mypassword"
mkdir -p "$BACKUP_DIR"
# Делаем дамп
mysqldump -u"$DB_USER" -p"$DB_PASS" --all-databases | gzip > "$BACKUP_DIR/mysql_backup_$DATE.sql.gz"
# Удаляем старые бэкапы
find "$BACKUP_DIR" -type f -name "*.gz" -mtime +$RETENTION_DAYS -delete
echo "✅ Бэкап MySQL завершён: $DATE"
0 3 * * * /path/to/backup_mysql.sh
🛠 SSH-клиент Termius — удобный инструмент для админа
Если тебе нужен кроссплатформенный SSH-клиент с удобным интерфейсом и синхронизацией между устройствами — присмотрись к Termius.
💡 Что умеет Termius:
✅ Поддержка SSH, Mosh и Telnet
✅ Управление серверами по группам и тегам
✅ Поддержка ключей SSH и Snippets (сниппеты команд)
✅ Синхронизация между десктопом и смартфоном
✅ Локальные терминалы и SFTP в одном окне
✅ Темы, вкладки, автодополнение, кастомизация UI
📱 Где работает:
* Windows / macOS / Linux
* iOS / Android
* Web-версия в браузере
⚙️ Кому подойдёт:
* Тем, кто часто переключается между машинами
* Админам, которые работают на ходу (мобильное приложение на высоте)
* Тем, кто устал от кучи конфигов и хочет порядок в соединениях
🧩 Есть ложка дёгтя:
* Некоторые функции (синхронизация, SFTP, Snippets) доступны только в Pro-версии
* Цена подписки может кусаться, особенно для индивидуального использования
https://termius.com/
👉 @i_odmin
📊 Хотите стать экспертом в Observability? Начните с теста!
Курс OTUS «Observability: мониторинг, логирование, трейсинг» — это практическое обучение работе с Prometheus, Grafana, ELK, Loki, Jaeger и другими инструментами. Вы научитесь строить отказоустойчивые системы мониторинга и логирования, настраивать алерты и визуализировать данные.
🔍 Пройдите вступительное тестирование, чтобы:
▪️Оценить свой текущий уровень знаний.
▪️Узнать, насколько вы готовы к курсу.
📅 Тест занимает около 30 минут. Результаты будут отправлены на вашу электронную почту. Повторное прохождение теста доступно через 3 дня.
👉 Пройти тестирование
https://vk.cc/cMSwTp
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Microsoft выпустила скрипт на PowerShell, который создаёт папку «C:\inetpub», если она была удалена в Windows 11
Microsoft выпустила скрипт на PowerShell под названием Set-InetpubFolderAcl, который создаёт папку «C:\inetpub», если она была удалена в Windows 11. Это необходимо, даже если в системе нет Internet Information Services (IIS), причём эту папку не нужно удалять из-за соображений безопасности.
https://habr.com/ru/news/916380/
👉 @i_odmin
Как стать мастером Linux 🐧
1. Исследуйте проблему
– Ищите информацию об ошибке в официальной документации (man-страницы, info), на сайтах дистрибутивов и в специализированных ресурсах.
2. Проверяйте логи и конфиги
– Анализируйте системные журналы (/var/log
), настройки сервисов и параметры ядра, чтобы понять контекст возникновения проблемы.
3. Обращайтесь к профессиональным сообществам
– Читайте темы на форумах, в списках рассылок (LKML) и чатах (IRC, Matrix), даже если решение помечено неофициальным.
4. Разбирайтесь в глубине
– Исследуйте зависимые модули, исходный код и взаимодействие компонентов (сеть, файловая система, PAM), чтобы выявить коренную причину.
5. Автоматизируйте и повторяйте
– Скриптуйте типовые задачи, фиксируйте опыт в вики или Git, регулярно практикуйтесь и обновляйте свои знания. ♻️
👉 @i_odmin
Bash-совет: анализ неудачных SSH-логинов и бан «горячих» IP 🔒🐚
Хотите быстро узнать, какие IP вызывают максимум неудачных попыток входа в SSH, и оперативно заблокировать самых настырных? Ниже скрипт:
#!/usr/bin/env bash
# ssh_fail_analyzer.sh
# Анализ неудачных SSH-попыток и вывод TOP-10 IP
LOG_FILE="/var/log/auth.log" # путь к логам (для CentOS: /var/log/secure)
TOPN=10 # сколько IP показывать
echo "Топ $TOPN IP с неудачными SSH-входами:"
grep -E "Failed password for" "$LOG_FILE" \
| grep -oP '(?<=from )[\d\.]+' \
| sort \
| uniq -c \
| sort -rn \
| head -n "$TOPN"
grep -E "Failed password for"
grep -oP '(?<=from )\[\d.]+'
sort | uniq -c | sort -rn
head -n "\$TOPN"
crontab
ежедневный запуск и автоматическую отправку отчёта на почту или сразу бан «горячих» IP через iptables
:
# в crontab: каждый день в 00:10
10 0 * * * /path/to/ssh_fail_analyzer.sh | mail -s "SSH Fail Report" admin@example.com
THRESHOLD=50
for ip in $(grep -E "Failed password for" "$LOG_FILE" \
| grep -oP '(?<=from )[\d\.]+' \
| sort | uniq -c \
| awk -v t="$THRESHOLD" '$1 > t {print $2}'); do
iptables -I INPUT -s "$ip" -j DROP
echo "$(date): Заблокирован $ip за превышение $THRESHOLD неудачных попыток" >> /var/log/ssh_ban.log
done
Почему нельзя парсить вывод ls(1)
Команда ls(1)
довольно хорошо показывает атрибуты одного файла (по крайней мере в некоторых случаях), но когда вы запрашиваете список файлов, возникает серьёзная проблема: в Unix имя файла может содержать почти любой символ — пробелы, переносы строк, запятые, символы конвейера и почти всё, что только можно использовать в качестве разделителя, за исключением NUL.
По умолчанию, если ls
выводит не в терминал, имена файлов разделяются символами новой строки. Это нормально до тех пор, пока в имени не встретится перенос строки. Поскольку немногие реализации ls
умеют завершать имена NUL-ом вместо перевода строки, получить безопасный список имён с помощью ls
практически невозможно — по крайней мере, портируемо.
$ touch 'a space' $'a\nnewline'
$ echo "don't taze me, bro" > a
$ ls | cat
a
a
newline
a space
a
, один newline
и один a space
. Но если выполнить ls -l
, выясняется совсем другое:
$ ls -l
total 8
-rw-r----- 1 user user 19 Mar 27 10:47 a
-rw-r----- 1 user user 0 Mar 27 10:47 a?newline
-rw-r----- 1 user user 0 Mar 27 10:47 a space
ls
, где именно заканчивается имя файла: это слово? Это строка? Нет однозначного ответа. Более того, иногда ls
искажает символы, заменяя перевод строки на вопросительный знак (или \n) в зависимости от реализации. Вывод ls
нельзя считать достоверным представлением имён файлов.for
и глоб:
# Хорошо!
for f in *; do
[ -e "$f" ] || [ -L "$f" ] || continue
# ... обработка "$f"
done
nullglob
(только в Bash), чтобы она не возвращала литерал *
:
# Bash
shopt -s nullglob
for f in *; do
# ... обработка "$f"
done
# Плохо! Не делайте этого!
for f in $(ls); do
...
done
# Плохо! То же самое с find:
for f in $(find . -maxdepth 1); do
...
done
arr=($(ls))
for f in "${arr[@]}"; do
...
done
# Ещё хуже:
f() {
local f
for f; do
...
done
}
f $(ls)
mtime
), не делайте ls -t | head -1
. Воспользуйтесь специальными рекомендациями по Bash или напишите свой скрипт на Perl, который сам будет открывать директорию и сортировать файлы.YYYYMMDD
, тогда порядок глоба совпадёт с порядком по mtime
.find
с NUL-разделителем:
find . -type f -print0 | while IFS= read -r -d '' filename; do
# ... обработка "$filename"
done
find
умеет передавать имена напрямую в другие команды без промежуточного вывода.
size=$(wc -c < "$file")
wc
читают файл целиком, но большинство применяют fstat(2)
.stat
и find -printf
:
# GNU stat
size=$(stat -c %s -- "$file")
# GNU find
totalSize=$(find . -maxdepth 1 -type f -printf %s+)
ls -l
, соблюдайте строгие правила:ls
только для одного файла: разделителей для надёжного парсинга не существует.-d
и --
, чтобы избежать проблем с директориями и именами, начинающимися с -
.C/POSIX
, чтобы вывод был предсказуем.-n
вместо -l
, чтобы получить числовые идентификаторы.
IFS=' ' read -r mode links owner _ < <(LC_ALL=C ls -nd -- "$file")
mode=${mode:0:10}
💡Быстрый совет по Linux
Нужно повторять команду каждые несколько секунд?
Используйте:
$ watch -n 2 df -h
df -h
каждые 2 секунды. Отлично подходит для отслеживания использования диска, нагрузки или изменений размера логов.q
, чтобы выйти.CUBIC или как собрать свой Ubuntu
Несколько месяцев назад мне стало интересно, могу ли я собрать свою сборку или даже дистрибутив linux. Как оказалось (внезапно) я могу сделать и то и другое. Но в этой статье мы поговорим именно про создание своей сборки.
Итак, мы будем использовать CUBIC и создавать свою сборку на основе Ubuntu. CUBIC - Custom Ubuntu ISO Creator, эта программа позволяет особо не заморачиваясь собрать полноценную сборку базирующуюся на Ubuntu. Давайте рассмотрим этот процесс подробнее.
https://habr.com/ru/articles/761532/
👉 @i_odmin
🖥 Станьте профессионалом в администрировании Windows с OTUS!
Хотите уверенно управлять инфраструктурой на базе Windows, автоматизировать рутинные задачи и повышать безопасность?
🔥Курс «Администратор Windows» поможет системным администраторам освоить на профессиональном уровне работу с Windows Server, Active Directory, PowerShell и многим другим.
Что вас ждёт:
▪️Глубокое понимание архитектуры Windows и Active Directory, включая настройку DNS, DHCP и групповых политик.
▪️Освоение PowerShell для автоматизации задач и управления инфраструктурой.
▪️Навыки настройки и управления средствами безопасности Windows, включая Windows Defender и брандмауэр.
Практические задания и проектная работа, позволяющие применить полученные знания в реальных условиях.
❗️Не пропустите:
В группу обучения набирается ограниченное количество мест. Оставьте заявку прямо сейчас и успейте занять место в группе по спеццене. Предварительно ознакомьтесь с программой курса.
👉Оставить заявку https://vk.cc/cMB95X
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Rancher в продакшен: лучшие практики
👉 бесплатный вебинар от учебного центра Слёрм.
Будем разбирать:
🔸централизованное управление кластерами через единый интерфейс;
🔸автоматизированные бэкапы и восстановление;
🔸настройку доступа для команд и интеграцию внешней аутентификации;
🔸 встроенные мониторинг и использование магазина приложений.
Подробно покажем и расскажем, как Rancher упрощает эксплуатацию k8s и управление инфраструктурой.
Эксперты встречи:
⭐️ Виталий Лихачев, SRE в крупнейшем голландском тревелтехе
⭐️ Вячеслав Федосеев, TeamLead DevOps в «Честном знаке»
Когда: 16 июня в 19:00 мск
Занять место на вебинаре 👉 через бота
Больше инструментов и все необходимые hard skills для старта в DevOps — на курсе-профессии «DevOps Upgrade».
Подборка основных команд Linux для работы с сетью
📌 Команда ifconfig
Используется для получения сетевой информации, инициализации интерфейса, назначения IP-адреса, включения или отключения интерфейса.
📌 Команда ip
Современная и более мощная версия ifconfig
. Утилита предназначена для отображения и управления маршрутами, сетевыми устройствами и интерфейсами.
📌 Команда traceroute
Утилита для трассировки полного пути (маршрута) пакета от вашего локального компьютера до удалённого узла. Помогает при диагностике сетевых проблем.
📌 Команда ping
Используется для проверки доступности и задержки между двумя узлами (локальная или глобальная сеть) с помощью ICMP-запросов.
📌 Команда netstat
(сокр. от “Network Statistics”) Отображает информацию о сетевых интерфейсах: открытые сокеты, таблицы маршрутизации и активные соединения.
📌 Команда ss
Замена netstat
. Предоставляет более подробную информацию и работает быстрее, получая данные напрямую из пространства ядра.
📌 Команда dig
(Domain Internet Groper) Инструмент для выполнения DNS-запросов: получение записей A, CNAME, MX и др. Используется для отладки DNS.
📌 Команда route
Отображает и изменяет таблицу маршрутизации IP в системе.
📌 Команда nslookup
Утилита для интерактивного и неинтерактивного запроса DNS-серверов. Позволяет получать записи DNS (RR).
📌 Команда host
Показывает доменное имя для заданного IP-адреса и наоборот. Выполняет простые DNS-запросы.
📌 Команда arp
(Address Resolution Protocol) Позволяет просматривать или добавлять записи в ARP-таблицу ядра для сопоставления IP- и MAC-адресов.
📌 Команда iwconfig
Похожа на ifconfig
, но предназначена для беспроводных интерфейсов. Позволяет просматривать и настраивать параметры Wi-Fi: SSID, шифрование и др.
📌 Команда hostname
Выводит или задаёт имя хоста системы — уникальный идентификатор в сети.
📌 Команда whois
Отображает информацию о регистрации домена и владельце сайта: регистратора, дату создания и другие данные.
📌 Команда tracepath
Похожа на traceroute
, но не требует прав суперпользователя. По умолчанию установлена в Ubuntu. Если отсутствует, её нужно установить через пакетный менеджер.
📌 Команда curl
Клиент для передачи данных по сети. Поддерживает протоколы HTTP, FTP, IMAP и многие другие. Полезна для тестирования API и скачивания ресурсов.
👉 @i_odmin
CasaOS: персональное облако на домашнем сервере
Представьте, что можно управлять всеми приложениями, трансляциями фильмов и музыки, бэкапами, дисковым хранилищем, устройствами умного дома — с домашнего сервера. Это есть личное или персональное облако, то есть аналог публичных облачных сервисов, но на своём сервере, дома или на VPS.
Например, система CasaOS изначально создавалась для одноплатника ZimaBoard (на фото), который позиционируется как мини-NAS. Главная ценность — отшлифованный UI с системными гаджетами для домашнего сервера, отобранный список приложений в каталоге, полезных именно для личного облака, и установка всех программ в докер-контейнерах в один клик. Плюс минимальные системные требования, поддержка старых ПК и одноплатников, включая Intel NUC и Raspberry Pi.
https://habr.com/ru/companies/ruvds/articles/913392/
👉 @i_odmin
Linux
Три простых способа создания загрузочных флешек в Linux
Timeshift как Time Machine только для Linux
Автоматизация задач в Linux с помощью crontab и таймеров systemd
Создание и управление RAID массивами в РОСА ОС Linux
Установка российских SSL сертификатов в Linux
Перенос виртуальных машин из VirtualBox и Hyper V в QEMU KVM
Настройка KDE Connect AirDrop давай до свидания!
Файловая система Linux
Этапы загрузки ОС Linux
Управление доступом в ОС Linux
источник
👉 @i_odmin
Виртуальная память: пример пошагового преобразования адреса Eng ver
Как работает трансляция виртуальной памяти. Преобразование номера виртуальной страницы и смещения в номер физической страницы и смещение. Записи таблицы страниц на диске. Ошибки страниц (page faults). Страницы размером 4 КБ против более крупных страниц.
источник
👉 @i_odmin
📕 Управление ресурсами в ClickHouse для разработчиков, администраторов баз данных, инженеров и аналитиков данных
На открытом уроке 17 июня в 20:00 мск мы разберем тонкости управления ресурсами и профилирования запросов в ClickHouse:
📗 На вебинаре разберём:
1. Методы управления ресурсами в ClickHouse: настройка квот, ограничений и профилей пользователей;
2. Детальное профилирование запросов для выявления узких мест и оптимизации их выполнения;
📘 В результате на практике разберете важные аспекты для обеспечения высокой производительности и стабильности работы системы в ClickHouse.
👉 Регистрация и подробности о курсе ClickHouse для инженеров и архитекторов БД: https://vk.cc/cMSNEV
Все участники открытого урока получат скидку на курс "ClickHouse для инженеров и архитекторов БД"
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
KubeVirt: глубокое погружение для администраторов VMware vSphere
KubeVirt — это расширение для Kubernetes, которое позволяет запускать виртуальные машины внутри K8s-кластера. Именно эта технология, пусть и существенно доработанная, лежит в основе Deckhouse Virtualization Platform. Недавно наша команда встретила статью Дина Льюиса, которая отлично объясняет внутреннее устройство KubeVirt, принципы его работы и то, как они соотносятся с более привычными многим концепциями vSphere. Мы решили перевести её для сообщества.
Под катом — перевод этого масштабного труда, который поможет получить чёткое представление о KubeVirt и принять взвешенное решение о его внедрении.
https://habr.com/ru/companies/flant/articles/915942/
original https://veducate.co.uk/kubevirt-for-vsphere-admins-deep-dive-guide/
👉 @i_odmin
Nexterm
ПО с открытым исходным кодом для управления серверами через SSH, VNC и RDP
Позволяет:
🟢Подключаться удалённо через SSH, VNC и RDP
🟢Управлять файлами через SFTP
🟢Развёртывать приложения с помощью Docker
🟢Управлять контейнерами Proxmox LXC и QEMU
🟢Обеспечивать безопасный доступ с двухфакторной аутентификацией
https://github.com/gnmyt/Nexterm
👉 @i_odmin
Вебинар «Анализ требований и их влияние на архитектуру»
✔️ 16 июня в 20:00 МСК в рамках старта курса «System Design» от Otus. Вебинар будет полезен разработчикам, архитекторам, техническим лидам и системным аналитикам.
Узнайте, как требования формируют архитектуру систем и почему их правильная проработка критична для стабильности решений.
На вебинаре разберем:
✅ Как эффективно собирать и фиксировать требования
✅ Как требования влияют на архитектуру системы
✅ Как учитывать функциональные и нефункциональные требования при проектировании
Мы рассмотрим реальные примеры, которые помогут вам построить более стабильные и надежные приложения.
🚀 Регистрация: https://vk.cc/cMQtAI
А еще, успей воспользоваться 🏷10% скидкой на курс «System Design» и 🎁 бонусным промокодом SD_5 . Выгодные условия действуют с 12 по 15 июня включительно!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
📊 Grafana: продвинутый уровень визуализации и алертинга
🔥 19 июня в 20:00 мск приглашаем на бесплатный вебинар «Grafana — продвинутое использование» с Анатолием Бенем.
Это больше, чем графики — это визуальный интеллект вашей системы.
Что вас ждёт:
– переменные, шаблоны и динамические панели для гибкой визуализации,
– создание информативных дашбордов с PromQL и данными из Prometheus, Loki, Elasticsearch и других источников,
– настройка умных алертов и управление инцидентами,
– подключение плагинов, настройка авторизации, best practices для команд.
Узнайте, как превратить Grafana в мощный центр наблюдаемости, настроенный под вашу инфраструктуру.
👉 Регистрируйтесь по ссылке: https://vk.cc/cMMw88
Занятие приурочено к старту курса "Observability: мониторинг, логирование, трейсинг", на котором вы научитесь строить эффективные системы мониторинга, работать с Prometheus, Grafana, ELK и другими инструментами, визуализировать метрики.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
☁️ Cosmos-Server
Самый безопасный и простой в развертывании домашний сервер. Возьмите под контроль свои данные и приватность, не жертвуя безопасностью и стабильностью (аутентификация, защита от DDoS, антибот).
Независимо от того, есть ли у вас сервер, NAS или Raspberry Pi с приложениями такими как Plex, HomeAssistant или даже блог, Cosmos — идеальное решение для их запуска и защиты. Просто установите Cosmos на свой сервер и подключайтесь к приложениям через него, чтобы сразу получить встроенную безопасность и надёжность для всех ваших сервисов.
Cosmos это:
🔹App Store 📦📱
Для простой установки и управления приложениями: удобные инсталляторы, автоматические обновления и проверки безопасности. При этом можно использовать и ручные методы установки — например, импорт файлов docker-compose
или работу через CLI Docker.
🔹Storage Manager 📂🔐
Удобное управление дисками, включая паритетные диски и MergerFS.
🔹Network Storages 📡📂
На базе RClone: простой доступ к сетевым хранилищам (например, Dropbox), а также возможность шарить NFS/FTP и другие протоколы через UI, защищённый SmartShield.
🔹Reverse-Proxy 🔄🔗
Обратный прокси для контейнеров, других серверов или статических папок/SPA с автоматическим HTTPS и удобным интерфейсом.
🔹Authentication Server 🔐👤
Сильная безопасность, многофакторная аутентификация и поддержка разных стратегий (OpenID, форвард-заголовки, HTML-формы).
🔹Customizable Homepage 🏠🖼
Единая стартовая страница для доступа ко всем приложениям — красивая и настраиваемая.
🔹Container Manager 🐋🔧
Удобное управление контейнерами и их настройками, обновления и аудит безопасности. Включена поддержка docker-compose
.
🔹VPN 🌐🔒
Безопасный доступ к приложениям из любой точки без открытия портов на роутере.
🔹Backups 📦🔒
Резервное копирование приложений с инкрементальными бэкапами, шифрованием и удалённым хранением (Restic под капотом).
🔹Monitoring 📈📊
Постоянный и реальный мониторинг с настраиваемыми оповещениями и уведомлениями о любых проблемах.
🔹Identity Provider 👦👩
Управление пользователями: приглашайте друзей и родных без передачи паролей, пусть они сами запросят смену пароля по email.
🔹SmartShield technology 🧠🛡
Автоматическая защита приложений без ручных настроек (анти-бот, анти-DDoS, теперь также TCP-защита для FTP, SSH, игр и др.).
🔹CRON 🕒🔧
Планировщик задач на сервере или внутри контейнеров.
Создано, чтобы быть:
🔹Простым в использовании 🚀👍
Лёгкая установка и управление через веб-интерфейс с любого устройства.
🔹Мощным 🧠🔥
Простота не в ущерб гибкости: при желании можно работать через терминал.
🔹Удобным для пользователя 🧑🎨
Подходит как новичкам, так и опытным — легко интегрируется в существующую среду и новые решения.
🔹Безопасным 🔒🔑
Единая учётная запись для всех приложений, шифрование данных, многофакторная аутентификация и поддержка OpenID. Безопасность заложена в основу, а не добавлена потом.
🔹Анти-бот 🤖❌
Комплекс мер для защиты от ботов: детекция по типовым признакам, IP-фильтрация и другое.
🔹Анти-DDoS 🔥⛔️
Переменные таймауты и троттлинг, ограничение по IP и гео-блокировка.
🔹Модульным 🧩📦
Лёгкое добавление новых функций и интеграций — запускайте только то, что нужно (например, без Docker, без БД или без HTTPS).
https://github.com/azukaar/Cosmos-Server
👉 @i_odmin
Linux Mint получил встроенную поддержку входа по отпечатку пальца
В последнем ежемесячном обзоре новостей от команды Linux Mint разработчики анонсировали интегрированную поддержку входа по отпечатку пальца. Новая функция появится в Linux Mint 22.2, работающем на Fingwit.
Fingwit работает на новом XApp, созданном разработчиками Mint. Он обрабатывает обнаружение сканера отпечатков пальцев и запись отпечатков. После настройки пользователь может использовать свой отпечаток пальца для экрана входа, заставки, аутентификации команд sudo и любых других административных действий, которые выводят всплывающее диалоговое окно пароля (pkexec).
Fingwit использует fprintd для бэкенд-работы, но разработчики Mint говорят, что пользовательский модуль аутентификации сможет обнаруживать сложные случаи, когда сканирование отпечатка пальца может вызвать сбой. Например, если домашний каталог зашифрован, то расшифровки необходим пароль при входе в систему. Простое использование отпечатка пальца приведет к сбою сеанса. Fingwit в этот момент динамически запрашивает пароль.
Команда Mint заявляет, что Fingwit сможет работать «в любой среде рабочего стола и в любом дистрибутиве Linux».
Значительным стимулом для этой разработки стала продолжающаяся работа команды с Framework. Тестирование оборудования компании подтолкнуло команду Mint к поддержке функций, встроенных в современные ноутбуки.
Команда также анонсировала множество других изменений. В рамках этой работы основные приложения, такие как gnome-calendar, simple-scan (сканер документов) и baobab (анализатор использования диска), будут обновлены до своих новых версий libAdwaita. Чтобы решить давнюю проблему с игнорированием системных тем приложениями libAdwaita, разработчики исправили библиотеку.
Команда предупредила пользователей старых версий о том, что серия Linux Mint 20.x, которая включает версии 20, 20.1, 20.2 и 20.3, официально завершила свою работу в апреле 2024 года. Система продолжит работать, но больше не будет получать обновления безопасности из официальных репозиториев, что сделает её уязвимой. Команда предложила два варианта. Рекомендуемый путь — установка более новой версии (22.1), которая будет поддерживаться до 2029 года. В качестве альтернативы можно опробовать обновление на месте, которое представляет собой многоэтапный процесс перехода с 20.x до 21.3.
В январе 2025 года состоялся релиз стабильной версии Linux Mint 22.1 «Xia», основанной на пакетной базе Ubuntu 24.04 LTS (Noble Numbat), а также на ядре Linux 6.8. Доступны для скачивания сборки на Cinnamon 6.4 (со встроенной функцией Night Light, поддерживающей как XOrg, так и Wayland), Xfce и MATE.
https://blog.linuxmint.com/?p=4850
👉 @i_odmin
❔ Как серверные приложения и микросервисы
взаимодействуют через сеть?
Хотите научиться подбирать правильные протоколы для вашей системы?
Откройте для себя все особенности работы с сетевыми протоколами на открытом уроке курса «System Design».
Мы подробно рассмотрим HTTP/2, HTTP/3, gRPC и WebSocket, а также научим выбирать оптимальные технологии для вашего проекта.
🚀 Знание сетевых протоколов — ключ к построению стабильных, быстрых и масштабируемых веб-приложений.
Пройдите урок и получите навыки, которые улучшат архитектуру ваших решений.
⏺ Встречаемся 10 июня в 20:00 МСК
➡️ Регистрация уже открыта: https://vk.cc/cMCIpR
Урок проходит в преддверии старта курса «System Design». Участники вебинара получат скидку на курс, плюс дополнительный 🎁 промокод SD_5 до 16.06.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Утилитка для проверки tcp ping, tls ping, http ping, icmp ping, dns ping, quic ping.
Использование
$ pping
Usage:
pping [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
dns dns ping
help Help about any command
http http ping
icmp icmp ping
quic quic ping
tcp tcp ping
tls tls ping
Flags:
-c, --count int number of requests to send (default 4)
-h, --help help for pping
-t, --infinite ping the specified target until stopped
-i, --interval duration delay between each request (default 1s)
-4, --ipv4 use IPv4
-6, --ipv6 use IPv6
-v, --version version for pping
Use "pping [command] --help" for more information about a command.
$ pping tls 223.5.5.5 -p 853
Ping 223.5.5.5 (223.5.5.5):
16:58:28 [1] proto = TLS 1.3, connection = 20 ms, handshake = 22 ms, time = 42 ms
16:58:29 [2] proto = TLS 1.3, connection = 18 ms, handshake = 24 ms, time = 42 ms
16:58:31 [3] proto = TLS 1.3, connection = 19 ms, handshake = 25 ms, time = 44 ms
16:58:32 [4] proto = TLS 1.3, connection = 21 ms, handshake = 26 ms, time = 47 ms
sent = 4, ok = 4, failed = 0 (0%)
min = 42 ms, max = 47 ms, avg = 43 ms
$ pping http https://www.google.com 127.0.0.2
Ping https://www.google.com:
16:59:34 [1] proto = HTTP/2.0, status = 200, length = 211727, time = 1105 ms
16:59:36 [2] proto = HTTP/2.0, status = 200, length = 211791, time = 1246 ms
16:59:38 [3] proto = HTTP/2.0, status = 200, length = 211721, time = 1159 ms
16:59:40 [4] proto = HTTP/2.0, status = 200, length = 211717, time = 1142 ms
sent = 4, ok = 4, failed = 0 (0%)
min = 1105 ms, max = 1246 ms, avg = 1163 ms
Python для сетевых инженеров
01 Часть 1,2 Вводная лекция
02 Часть 1. Основы Git
02 Часть 2. Основы Git и Github
02 Часть 3. Утилита pyneng для тестирования и сдачи заданий
03 Часть 1. slack, Основы python
03 Часть 2. Основы python
03 Часть 3. Выбор редактора, редактор Mu
04 Часть 1. Числа. Строки
04 Часть 2. Методы строк, форматирование строк
источник
👉 @i_odmin
Подборка основных команд Linux для работы с сетью
📌 Команда wget
Используется для скачивания файлов по протоколам HTTP, HTTPS и FTP. Позволяет возобновлять загрузки, скачивать несколько файлов сразу и работать в фоновом режиме.
📌 Команда mtr
Комбинация ping и traceroute. Предназначена для сетевой диагностики: показывает в реальном времени задержки и доступность промежуточных узлов.
📌 Команда iftop
(Interface TOP) Отображает статистику использования пропускной способности на сетевом интерфейсе. Помогает выявить “тяжёлые” соединения.
📌 Команда tcpdump
Утилита-сниффер для захвата и анализа сетевого трафика. Позволяет фильтровать пакеты по различным параметрам и сохранять их в файл.
📌 Команда iperf
Открытая утилита на C для измерения и настройки сетевой производительности: тестирует скорость передачи данных между двумя узлами.
📌 Команда ethtool
Консольная утилита для получения и изменения настроек сетевых интерфейсов: параметры драйверов, скорости, автосогласования, режимов дуплекса и др.
📌 Команды scp
и sftp
Протоколы передачи файлов по SSH.
* scp — простая переадресация файлов между хостами.
* sftp — более функциональный протокол: позволяет не только передавать, но и управлять файлами на удалённом сервере.
📌 Команда rsync
Утилита для быстрой и гибкой синхронизации файлов и директорий между локальными и удалёнными машинами по SSH. Передаёт только изменённые фрагменты данных.
📌 Команда ifplugstatus
Проверяет, подключён ли сетевой кабель к интерфейсу. Перед использованием нужно установить пакет ifplugd.
📌 Команда nload
Мониторит сетевую пропускную способность в реальном времени: показывает текущую скорость входящего и исходящего трафика. Для работы требуется установка пакета.
📌 Команда nmcli
Скриптуемая консольная утилита для управления NetworkManager. Позволяет просматривать статус сети, настраивать соединения и управлять ими без графического интерфейса.
📌 Команда bmon
Открытая утилита для мониторинга пропускной способности в реальном времени. Показывает статистику по интерфейсам в удобном “человеко-читаемом” виде.
📌 Команда nc (netcat)
Известна как «сетевой швейцарский нож». Позволяет устанавливать TCP/UDP-соединения, слушать порты, отправлять данные и выполнять порт-сканирование.
📌 Команда nmap
Инструмент для исследования сети и проверки безопасности. Сканирует хосты, определяет открытые порты, службы и ОС на удалённых узлах.
📌 Команда tshark
Текстовая версия Wireshark — сетевой анализатор для командной строки. Позволяет захватывать трафик, декодировать и выводить пакеты в читаемом формате или сохранять их в файл.
📌 Команда vnstat
Утилита для мониторинга сетевой активности и статистики трафика. Работает как демон, собирая данные по интерфейсам системы и показывая суммарные и ежедневные объёмы трафика.
👉 @i_odmin
Готовы к карьерному рывку? Станьте DevOps Engineer в команде Телекома YADRO🔥
Хотите создавать надёжные и технологичные процессы для разных продуктовых команд компании? Тогда отправляйте резюме в одно из направлений: Infrastructure или CI/CD.
Что предлагаем
🚀 удалёнка или офис в одном из городов (Москва, СПб, Нижний Новгород, Екатеринбург, Минск)
🚀 возможность влиять на продукт и стать частью большого инженерного сообщества
🚀 возможность вертикального и горизонтального роста — проводим performance review раз в год
🚀 ДМС с первого дня работы, а ещё консультации юристов, психологов, экспертов по ЗОЖ и управлению финансами
Кого ждём в команду
DevOps-инженеров с опытом работы от года и желанием развивать новые продукты в нашей команде
Какие задачи вас ждут
⏺️ настройка и внедрение систем мониторинга и Observability для продуктов, определение ключевых метрик совместно с командами разработки
⏺️ разработка с нуля и доработка существующих CI/CD пайплайнов для продуктов и их компонентов в рамках экосистемы Gitlab CI
⏺️ участие в создании отказоустойчивой инфраструктуры и её дальнейшей поддержке для обеспечения высокой скорости и качества сборки продуктов
Больше подробностей — по ссылке.
📆 Отправляйте резюме до 8 июня и присоединяйтесь к команде YADRO!
👋 Привет, админы!
Недавно столкнулся с интересным кейсом: один из файловых серверов начал сигнализировать о недостатке свободного пространства. При проверке выяснилось, что причиной стали старые логи IIS и системные файлы, которые копились неделями. Для нас, админов, важно держать «мусор» под контролем, чтобы не проснуться однажды с дискoм, полностью забитым «ненужными» данными.
🔥 В таких случаях мне помогает небольшой PowerShell-скрипт для автоматической очистки логов старше заданного числа дней. Вот что я настроил:
# Путь до папки с логами (пример для IIS)
$LogPath = "C:\inetpub\logs\LogFiles"
# Возраст файлов (в днях), после которого файлы подлежат удалению
$DaysThreshold = 30
# Получаем все файлы в папке и вложенных каталогах старше $DaysThreshold
$OldLogs = Get-ChildItem -Path $LogPath -Recurse -File |
Where-Object { ($_.LastWriteTime -lt (Get-Date).AddDays(-$DaysThreshold)) }
# Если есть файлы для удаления, выводим их и удаляем
if ($OldLogs) {
Write-Host "Найдены логи старше $DaysThreshold дней:`n" -ForegroundColor Yellow
$OldLogs | Select-Object FullName, LastWriteTime | Format-Table -AutoSize
# Удаляем найденные файлы
$OldLogs | Remove-Item -Force -Verbose
Write-Host "`nОчистка завершена." -ForegroundColor Green
} else {
Write-Host "Файлы старше $DaysThreshold дней не найдены." -ForegroundColor Green
}
$LogPath
можно указать любую директорию – например, логи SQL Server (C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Log
) или системные временные папки (C:\Windows\Temp
).$DaysThreshold
задаёт, сколько дней «жить» файлам, прежде чем они удалятся. Можно настроить, например, на 7 дней для критических логов или на 90 дней для менее важных.-Recurse
позволяет удалять не только файлы в корне, но и во вложенных папках (удобно, если логи разбиты по датам или подпапкам).Remove-Item
и сначала просто отследите, какие файлы будут выбраны.