ServerAdmin.ru
31.3K subscribers
669 photos
55 videos
22 files
2.87K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Регистрация в РКН: https://vk.cc/cG1Urj
Download Telegram
На неделе посмотрел несколько интересных роликов на youtube. Каждый по отдельности не тянет на публикацию, поэтому решил их объединить в единый пост.

Денис Астахов, автор канала ADV-IT рассказал о том, где и как он рисует диаграммы. Всегда интересно посмотреть опыт специалиста по горячей теме. Впервые увидел использование Lucidchart.
▶️ АРХИТЕКТУРНЫЕ ДИАГРАММЫ - ГДЕ и КАК СОЗДАВАТЬ

Интересное, красивое, содержательное видео про разработку Envoy. Оно на английском, но с вшитыми в видео субтитрами, так что смотрится легко. Я такие ролики смотрю в том числе, чтобы немного держать уровень английского. Не имея разговорной практики, я вполне сносно на слух перевожу с английского. И это только благодаря роликам с субтитрами.
▶️ Inside Envoy: The Proxy for the Future [OFFICIAL FILM]

Видео с вопросами админу. В основном со всем согласен, кроме некоторых частностей. Просто приятно было послушать коллегу по цеху.
▶️ 10 вопросов Linux-администратору

Герои видео поделились тем, как они пришли в профессию, как преодолевали трудности, как веселились и росли профессионалами. И рассказали, как стать крутым спецом в системном администрировании. Гости приятные, с грамотной речью. Интересно было послушать.
▶️ День системного администратора 2021

Если кому-то есть чем поделиться по теме IT видео, буду рад. Я люблю что-то слушать, смотреть, когда куда-то иду, еду, занимаюсь.

#видео
👍66👎1
​​🎓 По компьютерным сетям есть отличный курс "Компьютерные сети", Климанов М.М. от МФТИ (Московский физико-технический институт):
https://www.youtube.com/playlist?list=PLthfp5exSWErPFK_-EAhVtxO3XoY0gsSe
Я уже упоминал про него ранее.

Есть не хуже, а может даже и лучше, если судить про просмотрам и активности в комментариях, курс "Компьютерные сети, учебный курс.", Созыкин Андрей:
https://www.youtube.com/playlist?list=PLtPJ9lKvJ4oiNMvYbOzCmWy6cRzYAh9B1

Там даётся база, азы сетей, поэтому заявлено, что он для программистов, так как сисадмины, по идее, и так должны всё это знать. Если не знаете, то этот курс вам отлично подойдёт. Для самообразования это будет базой для тех, кто не знаком с сетями. Сделан на основе классиков Таненбаум и Олиферы. Записан более 7-ми лет назад, но нисколько не потерял актуальность, так там база, практически неизменная с 80-х годов.

#обучение
👍140👎1
У меня часто спрашивают, как начать свой путь в системном администрирование, или в IT в целом. Причём спрашивают очень разные люди. Это могут быть родственники или родители, чьи дети готовятся куда-то поступать после школы. Просят советы взрослые люди и начинающие специалисты. Если есть время, могу просто пообщаться и что-то рассказать. Были и платные консультации, когда мне сразу предлагали заплатить за содержательную беседу.

Последнее время всё больше понимаю, что я толком не знаю, что посоветовать. Я же не учитель, не коуч, не создатель курсов по развитию и т.д. Сам закончил институт 16 лет назад и не знаю, как сейчас преподают. Я просто системный администратор, который ведёт свой блог и иногда пишет тематические статьи. У меня нет каких-то системных знаний или исследований этого вопроса.

Условно я делю всех вопрошающих на 3 категории:
1️⃣ Старшеклассники.
2️⃣ Молодые специалисты после универа.
3️⃣ Люди 30-35+, пытающиеся войти в IT из другой специальности.

🟢 Несколько лет назад я написал статью для подростков: Куда поступить, чтобы выучиться на программиста или сисадмина. Я советовал сразу вкатываться в IT со школьной скамьи и идти в универ на заочку просто для корочки. Не уверен, что дал там подходящие советы, но на тот момент думал именно так. Более того, подтверждение своих советов позже увидел лично в одном знакомом школьнике, который после окончания 11-го класса уже фактически имел профессию программиста и мог зарабатывать наравне со своими родителями. И он не хотел идти в ВУЗ, чем очень расстраивал своего отца, который просил моего совета, как быть. Я успокоил и сказать, что у вас всё круто. Мало кому так повезло найти себя уже в школе. Так что со школьниками вопрос открыт. Сейчас есть крутые университеты, типа Иннополиса. Я бы хотел там отучиться, или отправить учиться детей, если захотят.

🟡 Для начинающих специалистов у меня обычно другой совет. Денег там чаще всего ещё нет, так что рекомендую устроиться хоть куда за любые деньги, лишь бы была практика. Браться за любую работу, пробовать. По ходу дела вникать в отрасль и решать, что тебе в ней больше нравится. Параллельно изучать бесплатные курсы, материалы, статьи, в общем, всё что есть по понравившейся теме. Семьи ещё нет, времени много. Например, можно бесплатно попасть в какой-то инкубатор или интенсив и ударно там потрудиться. Такие мероприятия обычно организуют крупные вендоры, типа Tinkoff или VK. Там же можно и предложение по работе получить. Тоже таких знаю.

🔴 Для третьей категории рекомендую ещё раз хорошо подумать и если решение твёрдое, то идти на какие-то курсы. Времени на самообразование обычно уже нет, да и голова после 30 начинает хуже соображать. Тут уже нет времени сидеть самому, вникать и тыкаться наугад. Надо, чтобы помогли. Да и деньги к этому времени уже хоть какие-то есть, так что можно себе позволить где-то отучиться. К тому же из-за возраста подход по-любому будет основательный и взвешенный. Есть мотивация, в том числе и финансовая. Больше посоветовать нечего. Если честно, я не знаю, как тут вырулить в итоге. Чем и как нужно впечатлить нанимателей, убедив их, что джун 35-ти лет хороший вариант для их вакансии, если там ещё 50 таких же, только 23-х летних после универа. Если у кого-то есть практические советы на этот счёт, то поделитесь своим мнением. Уверен, среди читателей есть люди, которые вкатились в IT после 30-ти.

Кстати, вот моя заметка про современные онлайн курсы.

Если у вас есть какие-то мысли, советы, примеры по данной теме, поделитесь. Мне хотелось бы лучше разобраться в этой теме, чтобы не надавать вредных советов, которые могут по итогу кому-нибудь навредить, особенно подросткам. К тому же время быстро летит. Ещё лет 5 и мне уже нужно будет что-то думать насчёт старшего сына.

#мысли #обучение
👍69👎6
​​Наиболее популярным WAF (Web Application Firewall), как платным, так и бесплатным, является ModSecurity. Компания, которая его разрабатывала, поддерживала и обеспечивала платную техническую поддержку давно уже объявила дату End-of-Life (EOL) - 1 июля 2024 года. После этого код полностью переходит на поддержку open source сообщества. Вряд ли без регулярных денежных вливаний продукт продолжит развитие. А так как он основан на статических сигнатурах, без регулярного обновления быстро потеряет актуальность.

В связи с этим появился шанс у других сервисов получить дополнительную аудиторию. Одним из относительно новых проектов (ему примерно год) из этой сферы является open-appsec. Я его установил, настроил и протестировал в реальной работе. Выглядит он неплохо и результат выдал не хуже, чем в среднем показывают подобные программы. Чтобы разобраться и настроить, я потратил много времени, так что не смогу подробно описать. Но попробую рассказать саму суть и дать основные ссылки, чтобы при желании можно было повторить и попробовать.

В основе open-appsec лежит алгоритм машинного обучения. Используются 3 модели, в зависимости от подписки:

1️⃣ Basic model - бесплатная оффлайновая модель, которая лежит в github и используется по умолчанию.
2️⃣ Advanced model - тоже оффлайновая модель, может быть вручную скачана и установлена из личного кабинета сервиса. Регистрация там бесплатная.
3️⃣ Unsupervised model - работает и обновляется в режиме реального времени. Это платная функция.

Open-appsec существует в виде open-source версии с оффлайновой обученной моделью, которую можно скачать и установить из репозитория. Advanced модель можно использовать, если зарегистрироваться и вручную качать её обновления из личного кабинета, которые периодически выходят с уведомлением на email. Ну а третья модель это платная подписка. Она, соответственно, считается самой надёжной.

Сервис монетизируется по модели SaaS. Есть веб панель управления, через которую можно управлять системой. Там же в этой панели хранятся логи и вся аналитика. Если используете бесплатную версию, то всё управление локально через CLI и yaml конфиги. Логи тоже все хранятся у вас локально. В целом, довольно честно.

Я запускал и тестировал open source версию с basic model, потом подключил её к SaaS и уже там посмотрел отчёты. То есть эффективность работы бесплатной версии не сильно хуже платной, а платить предлагают за удобство управления.

Работает Open-appsec в виде модуля к Nginx. Установка простая. Выполняется автоматически. По сути, нужно просто скачать модуль, подключить его к Nginx, установить агент Open-appsec, который всем управляет. Также сервис интегрирован в Kubernetes и его NGINX Ingress Controller.

Все инструкции по установке, настройке и управлению интегрированы в готовые Playground площадки, где можно в режиме реального времени самому всё настроить и попробовать. Все инструкции из этих площадок можно использовать на своём сервере, так как по сути у вас там копия виртуальной машины.

Отдельно отмечу, что у Open-appsec уже есть интеграция с CrowdSec. Что такое CrowdSec, я писал отдельно. Это современный аналог Fail2ban, только намного более развитый и функциональный.

Продукт довольно сложный. Но тут это скорее норма, чем исключение. Я не видел нигде, чтобы WAF легко настраивался. Чтобы комфортно работать с системой, обязательно придётся куда-то выгружать логи, так как они огромные. Работать с ними локально неудобно, а придётся, так как нужно будет анализировать работу и настраивать исключения. По умолчанию сервис будет работать в режиме обучения, изучения, фиксации атак (detect-learn). Потом его можно переключить в режим отражения (prevent-learn).

В целом, мне продукт понравился. Думаю, он получит активное развитие и распространение в будущем. На текущий момент бесплатный Community
Edition тариф в SaaS весьма функциональный. Эффективность, если верить тестам отсюда, на уровне Free тарифа CloudFlare.

Сайт / Исходники

#waf
👍61👎1
​​Продолжу тему WAF, раз уж начал. Я ранее писал про Nemesida WAF. Это коммерческий продукт, у которого есть бесплатная версия. Причём вполне функциональная, можно пользоваться. Существенное отличие от платной версии - только сигнатурный анализ. При этом в платной присутствует AI (Искусственный Интеллект) и ML (Машинное обучение). Это бесплатную Nemesida отличает от бесплатной же Open-appsec, где ML есть в open source версии.

Заметку я хочу написать не об этом, а о бесплатном продукте той же Nemesida - WAF Bypass Tool. Это open source утилита для проверки эффективности работы WAF. Она прогоняет через сайт кучу различных запросов на тестирование всевозможных уязвимостей (Cross Site Scripting (XSS), Open Redirect (OR), Remote File Execution (RCE) и т.д.) и в конце сводит результаты в табличный вид. С её помощью можно быстро оценить качество работы того или иного продукта, а также различных режимов настроек.

Для базовой проверки достаточно указать только адрес сайта и запустить любым удобным способом инструмент. Либо скачать python скрипт:

# git clone https://github.com/nemesida-waf/waf_bypass.git /opt/waf-bypass/
# python3 -m pip install -r /opt/waf-bypass/requirements.txt
# python3 /opt/waf-bypass/main.py --host='example.com'

Либо запустить в контейнере из Docker Hub, тогда вообще ничего делать не надо:

# docker run nemesida/waf-bypass --host='example.com'

Ключами можно управлять настройками. Например, использовать прокси, ограничивать число потоков (имеет смысл сделать, так как утилита выполняет около 3000 тысяч запросов, можно получить бан за интенсивность), выводить результаты в json, управлять детализацией вывода, выбирать отдельные наборы тестов и т.д. Можно писать свои тесты, запускать их на постоянку и забирать результаты в мониторинг.

Утилита проверяет количество ложно-положительных (FP - False Positive) и ложно-отрицательных (FN - False Negative) срабатываний. Это один из наиболее значимых критериев работы WAF. Значение PASSED (OK) покажет количество заблокированных проверок.

#waf
👍51👎1
​​Есть любопытный проект под названием WireHole. Это docker-compose файл, который скрещивает в единое целое WireGuard, Pi-hole и Unbound для быстрого и удобного развёртывания VPN инфраструктуры, где клиенты автоматически получают DNS сервер с фильтрацией рекламы на уровне запросов.

Особенно это удобно для смартфонов. Небольшой WG клиент, быстрая настройка с помощью QR кода и на выходе у вас статичный IP от арендованной VPS или домашнего сервера и фильтрация рекламы средствами DNS. Настройка занимает буквально 5 минут.

Всё бы хорошо, но в настоящее время данный проект стал жертвой типичной проблемы, когда используются контейнеры с тэгом latest. Изменился базовый контейнер linuxserver/wireguard, за ним следом сломался ngoduykhanh/wireguard-ui. Ну и теперь ничего не работает. Я и так, и сяк его ковырял, пытаясь исправить. Потратил кучу времени и всё впустую. Уже бы сам быстрее собрал всё это, но каждый раз казалось, что ещё вот-вот и всё получится.

В итоге нашёл форк этой репы - https://github.com/m-karakus/wirehole. Человек просто взял и форкнул более старую версию проекта WireHole, когда использовался веб интерфейс wg-easy, а не wireguard-ui. И теперь всё реально запускается в пару кликов.

Копируете себе репу:

# git clone https://github.com/m-karakus/wirehole.git

Редактируете .env. В переменную MASTER пишите свой внешний IP адрес, указываете пароль для веб панели Wireguard и веб интерфейса Pi-hole. Больше можно ничего не менять. Запускаем:

# docker compose up

Идём в веб интерфейс https://ip-address:51821/ и добавляем клиента. Сканируем на смартфоне QR код и добавляем новое vpn соединение. Подключаемся и выходим в интернет через IP адрес сервера.

Веб интерфейс Pi-hole доступен через внутреннюю сеть по адресу https://10.2.0.100/admin. Там можно что-то настроить, посмотреть статистику. Она ведётся в том числе и по всем DNS запросам. Можно быстро оценить, куда ходит смартфон. А он куда только не ходит.

Удобная штука. Я взял VPS, накатил туда этот композ. Создал 2 учётки - для ноута и смартфона. Проверил, всё работает. Ничего особенного тут нет. Можно и самому всё это настроить. Но потом надо время тратить на поддержку и т.д. Проще взять что-то более ли менее популярное. Думаю, что WireHole в ближайшее время поправят и можно будет пользоваться. Он довольно старый и популярный. Не думаю, что его бросят. К тому же видел уже и в issues обсуждение проблемы и готовые pull requests. Судя по всему, пока некому их проверить и принять в основную ветку.

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

Исходники

#wireguard
👍97👎1
​​Вы знали, что curl умеет отправлять почту через внешние smtp серверы? Я в целом знаю, что curl умеет всё, что только можно придумать про передачу данных, но конкретно вопрос не прорабатывал, хотя вскользь уже упоминал об этом, но в рамках решения другой задачи, поэтому особо не погружался в тему. Поэтому для отправки почты из консоли всё время ставлю какую-то дополнительную утилиту, типа mailx. На самом деле это не обязательно. Сейчас покажу, как отправлять почту через curl, не светя пароль в консоли.

Сразу ссылка на документацию. Оправляем почту полностью через ключи curl:

# curl -v --url "smtp://mail.server.ru:25" --mail-from "[email protected]" --mail-rcpt "[email protected]" --user '[email protected]:password123' --upload-file ~/mail.txt

Содержимое mail.txt примерно следующее:

From: "Vladimir" <[email protected]>
To: "User" <[email protected]>
Subject: Mail from curl

Hello! How are you?

Причём с помощью curl очень удобно управлять адресом отправителя. В mail.txt его любой указать можно, а не тот, от которого идёт отправка. Впрочем, как и другие заголовки.

Не очень хорошая идея светить почтовый пароль в консоли. Можно его спрятать в .netrc файл. Для этого его надо создать в домашней директории пользователя ~/.netrc. Содержание такое:

machine mail.server.ru login [email protected] password password123
machine mail.server02.ru login [email protected] password password12345

Каждый сервер на новой строке. Удобно, если используется отправка через несколько разных серверов. В соответствии с указанным smtp сервером берутся настройки учётной записи из файла .netrc. Команда на отправку с использованием .netrc будет такая:

# curl -v --url "smtp://mail.server.ru:25" --mail-from "[email protected]" --mail-rcpt "[email protected]" --netrc --upload-file ~/mail.txt

Так как мы используем ключ -v, в консоли видим весь лог общения с почтовым сервером, что может быть удобно для отладки. Если не указывать никаких ключей для TLS, то будет использоваться нешифрованное соединение. Если нужно только шифрованное, то можно добавить ключ --ssl-reqd, а если хотите чтобы при поддержке сервером шифрование использовалось, а если поддержки нет, то нет, тогда добавьте ключ --ssl.

Если используется шифрованное соединение и порт 465, то достаточно просто указать адрес сервера в виде smtps://mail.server.ru. Отдельно указывать порт и ключи для ssl не обязательно.

Для того, чтобы явно указать HELO / EHLO при отправке, добавьте его через слеш после адреса сервера. Примерно так:
smtp://mail.server.ru/client_helo.server.ru

#terminal #curl
👍147👎3
Я обновил популярную подборку со своего сайта:

Топ бесплатных программ для бэкапа

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

Даже в таком виде статья информативна. Если подбираете себе бесплатный инструмент для бэкапа, то подборка поможет быстро сориентироваться в том, что есть, посмотреть алгоритмы, основные возможности, поддерживаемые платформы, наличие веб интерфейса и т.д.

Плюс, к каждому продукту есть ссылка на обсуждение в Telegram канале, где есть в том числе отзывы и рекомендации от тех, кто пользовался. Именно поэтому я прошу не флудить в комментариях и не превращать чат в болталку. Иногда удаляю то, что считаю бесполезным для читателей (мемы, картинки, ссоры и т.д.), чтобы не занимать зря их время и внимание.

Если считаете, что какой-то полезной программы не хватает, пишите в комментариях здесь или на сайте. Я буду дополнять. В этом обновлении добавил туда ElkarBackup, FBackup. Почему-то их там не было. До этого добавлял ReaR и Restic, но анонса не делал.

#backup #подборка
👍119👎2
​​Когда готовил материал по отправке email сообщений через curl, подумал, он же наверное и читать умеет. И не ошибся. Curl реально умеет читать, и не только, почту по imap. Это открывает очень широкие возможности по мониторингу почтовых серверов с помощью утилиты.

Меня не раз спрашивали, как удобнее всего настроить мониторинг почтовых сообщений в ящике, чтобы приходили уведомления при получении письма определённого содержания. Я обычно советовал либо на самом почтовом сервере прямо в ящике анализировать текст писем, если это возможно. Либо использовать какие-то программы типа fetchmail, imapsync или обычные почтовые клиенты. И уже в них как-то анализировать письма.

Но с curl всё получается намного проще. Она много чего умеет. Расскажу по порядку. Сразу важная сноска, которая сильно затормозила меня в этом вопросе. Когда будете пробовать, возьмите свежую версию curl. Более старые некоторые команды для imap не поддерживают. Я сначала наткнулся на это в старом сервере Centos 7. Потом уже перешёл на современный Debian и там всё получилось.

Сразу перенесём логин с паролем в отдельный файл ~/.netrc:

machine mail.server.tld login username password supersecretpw

Проверяем количество сообщений в imap папке INBOX:

# curl "imap:/mail.server.tld" -n -X 'STATUS INBOX (MESSAGES)'
* STATUS INBOX (MESSAGES 405)

Получили число 405. Посмотрим, сколько из них непрочитанных:

# curl "imap://mail.server.tld" -n -X 'STATUS INBOX (UNSEEN)'
* STATUS INBOX (UNSEEN 147)

147 непрочитанных сообщений. Думаю, идею вы поняли. С помощью curl можно напрямую передавать серверу команды imap.

Смотрим список директорий в ящике:

# curl "imap://mail.server.tld" -n -X 'LIST "" "*"'
* LIST (\HasNoChildren \Marked \Trash) "/" Trash
* LIST (\HasNoChildren \UnMarked \Junk) "/" Junk
* LIST (\HasNoChildren \UnMarked \Drafts) "/" Drafts
* LIST (\HasNoChildren \Sent) "/" Sent
* LIST (\HasChildren) "/" INBOX

Или просто:

# curl "imap://mail.server.tld" -n

Ищем в ящике письма с темой test:

# curl "imap://mail.server.tld/INBOX?SUBJECT%20test" -n
* SEARCH 62 404 405 406
или так:
# curl "imap://mail.server.tld/INBOX" -n -X 'SEARCH HEADER Subject test'

Сообщения от определённого адресата:

# curl "imap://mail.server.tld/INBOX" -n -X 'SEARCH From [email protected]'
* SEARCH 292 404 405 406

Получили UIDs писем. Смотрим содержание письма с конкретным UID. Для этого надо добавить ключ -v, так как оно передаётся в отладочной информации, как и все остальные ответы сервера:

# curl -v "imap://mail.server.tld/INBOX" -n -X 'FETCH 406 BODY[TEXT]'
или так:
# curl -v "imap://mail.server.tld/INBOX;UID=406/;BODY=TEXT" -n

И так далее. Письмо после проверки можно пометить прочтённым, переместить в другую директорию, удалить. Чтобы осмысленно дёргать imap сервер, достаточно посмотреть описание протокола. Информация по нему легко находится в поиске.

Команды imap рассмотрены в упоминаемом недавно курсе по сетям от Созыкина Андрея. Вот конкретный урок: ▶️ Протокол IMAP. Вообще, было интересно во всём этом разобраться. Если надо будет настроить мониторинг очередного почтового сервера, попробую что-то применить с помощью curl.

Первое, что приходит в голову в плане мониторинга - отправлять письмо с меткой времени в теле, а потом забирать его и анализировать эту метку. Если метка старая, значит письма не ходят. Это надёжнее, чем просто проверять статус служб и доступность портов. Тут и smtp, и imap сервер проверяются. И реализуется полностью с помощью curl и zabbix.

#curl #terminal
👍148👎4
​​Те, кто сталкивался с настройкой VoIP телефонии, наверняка знают, что такое протокол и сервер STUN. Там постоянно приходится с ним взаимодействовать. Не припомню, где он использовался ещё. Но последнее время в связи с развитием протокола WebRTC, а также программных средств для видеоконференций на его основе, тема снова стала актуальной, даже ещё больше, чем с VoIP. Кратенько своими словами расскажу, что такое STUN и TURN.

Протокол STUN и сервера на его основе решают очень простую задачу. Позволяют клиентам за NAT узнать свой внешний IP адрес и порт, с которого ушёл запрос, чтобы организовать соединение к себе для прохождения голосового или видео потока. Клиент делает запрос на внешний сервер STUN, а тот ему отвечает, что запрос был сделан с такого-то IP и порта. Клиент передаёт эту информацию тому, кто хочет с ним соединиться.

Дополнением протокола STUN стал TURN. Он включает в себя возможности STUN, но и добавляет новые. В зависимости от настроек NAT на конкретном шлюзе, не всегда можно пробиться к клиенту извне. Данные, которые передаст STUN сервер клиенту, будут актуальны только для подключения этого STUN сервера, но не других клиентов. Шлюз просто отбросит от них соединения. Отдельная проблема, когда оба клиента за таким NAT.

TURN сервер с помощью дополнительного суб-протокола ICE способен оценить варианты взаимодействия двух клиентов, которые к нему обратились. Он проверяет их возможность соединиться напрямую и с помощью STUN сервера. Если оба варианта не сработают, то он выступит в роли ретранслятора и организует соединение клиентов через себя. При этом сами клиенты будут думать, что они соединены напрямую.

Наиболее известной бесплатной реализацией TURN сервера является Coturn, который можно развернуть у себя. При этом в сети довольно много и бесплатный серверов, которые реализуют возможности этих протоколов. Например, известный STUN сервер от гугла - stun.l.google.com. Можно использовать для каких-то своих задач. TURN полностью бесплатный вряд ли можно найти. За это уже деньги надо платить, но есть сервисы с ограниченными бесплатными тарифными планами.

Проверить работу STUN и TURN серверов можно с помощью публичного сервиса:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

Указываете адрес сервера в формате stun:stun.l.google.com:19302 и запускаете проверку. Наглядно видно, что возвращает STUN сервер - внешний IP адрес и порт.

▶️ Вот тут на индусском английском рассказано с картинками то, что я описал.

#voip #webrtc
👍86👎3
​​Не знаю, в курсе вы или нет, но все торрент раздачи довольно легко отслеживаются. Я примерно представлял себе, что это реально, но не думал, что настолько просто. Есть сайт:

https://iknowwhatyoudownload.com

Указываете свой IP адрес и наблюдаете свои раздачи. У меня дома статика много лет. Сервис видит всё, что я раздаю. Причём информация очень свежая. У меня много раздач. Постоянно что-то детям качаю - фильмы, сказки, мультики и т.д. Обычно оставляю их на раздаче, не удаляю. Так вот, они там все.

Потыкал там случайные айпишники. Чего только нет - фильмы, игры, софт, xxx и т.д. В общем, имейте ввиду, что все ваши торренты на виду.

#разное
👍156👎7
​​Я уже делал серию заметок про CIS (Center for Internet Security). Это некоммерческая организация, которая разрабатывает собственные рекомендации по обеспечению безопасности различных систем. Я проработал рекомендации для:

- Nginx
- MySQL 5.7
- Apache 2.4
- Debian 11
- Docker
- Ubuntu 22.04 LTS

Основная проблема этих рекомендаций - они составлены в огромные pdf книги, иногда до 800 страниц и покрывают очень широкий вектор атак. Выбрать из них то, что вам нужно, довольно хлопотно. Я выделяю основные рекомендации, которые стоит учесть при базовом использовании стреднестатиcтической системы. В этот раз разобрал рекомендации для PostgreSQL 16.

🔹Убедитесь, что настроено логирование ошибок. Задаётся параметром log_destination. По умолчанию пишет в системный поток stderr. Считается, что это ненадёжный способ, поэтому рекомендуется отдельно настроить logging_collector и отправлять логи через него. По умолчанию он отключен. Если настроено сохранение логов в файлы, то не забыть закрыть доступ к ним и настроить ротацию средствами postgresql (log_truncate_on_rotation, log_rotation_age и т.д.)

🔹Для повышения возможностей аудита имеет смысл включить логирование подключений и отключений клиентов. Параметры log_connections и log_disconnections. По умолчанию отключено.

🔹Если вам необходимо отслеживать активность в базе данных, то имеет смысл настроить параметр log_statement. Значение ddl позволит собирать информацию о действиях CREATE, ALTER, DROP.

🔹Для расширенного аудита используйте отдельный модуль pgAudit. Обычно ставится в виде отдельного пакета. Для расширенного контроля за действиями superuser используйте расширение set_user.

🔹Если есть необходимость работать с postgresql в консоли, установите и настройте утилиту sudo, чтобы можно было контролировать и отслеживать действия различных пользователей.

🔹Рекомендованным методом аутентификации соединения является scram-sha-256, а не популярный md5, у которого есть уязвимость (it is vulnerable to packet replay attacks). Настраивается в pg_hba.conf.

🔹Настройте работу СУБД на том сетевом интерфейсе, на котором она будет принимать соединения. Параметр listen_addresses, по умолчанию указан только localhost. Если используется внешний сетевой интерфейс, не забудьте ограничить к нему доступ средствами firewall.

🔹Если есть необходимость шифровать TCP трафик от и к серверу, то не забудьте настроить TLS. За это отвечает параметр hostssl в pg_hba.conf и параметры ssl, ssl_cert_file, ssl_key_file в postgresql.conf. Поддерживается работа с self-signed сертификатами.

🔹Для репликации создавайте отдельных пользователей. Не используйте существующих или superuser.

🔹Не забудьте проверить и настроить создание бэкапов. Используйте pg_basebackup для создания полных бэкапов и копии WAL журналов для бэкапа транзакций.

Остальные рекомендации были в основном связаны с ролями, правами доступа и т.д. Это уже особенности конкретной эксплуатации. Не стал о них писать.

Сам файл с рекомендациями живёт тут. Для доступа нужна регистрация.

#cis #postgresql
👍89👎3
Посмотрел вчера свежий обзор домашней лаборатории известного англоязычного IT блоггера Techno Tim:

▶️ HomeLab Hardware Tour! (Late 2023)

Я люблю подобный контент, потому что мне в принципе нравится идея домашней серверной. Причем не из практических соображений, а чисто как хобби. По кайфу со всем этим разбираться. Объективно, мне это не надо. Проще взять в аренду или поставить на colo один нормальный сервер, а домой бэкапы забирать. Но в своём доме в бойлерной выделил угол под полноценную стойку со свободной стеной рядом. Подвёл туда электричество и свёл все ethernet кабели с рабочих мест и телевизоров в доме. Всё на проводах сделал. На первый взгляд кажется, что и wifi не нужен. Обходимся без него. У всех на смартфонах быстрый инет, а техника на проводах.

В видео больше всего понравилась идея со стеной. Удобно сделано. Можно крепить туда всё, что угодно. Весь негабарит, который в стойке будет просто валяться на полках. Также понравилась идея с кластером на Intel NUC и его расположение в стойке. Для домашних тестовых лабораторий, как по мне, идеальное решение, которое не шумит и не потребляет лишнее электричество. Подойдут любые неттопы.

Всё это приличных денег сейчас стоит, поэтому не понятно, когда будет реализовано. Большой нужды нет, поэтому свободные средства уходят на другие нужды. Баню хочется сильнее, чем серверную стойку. Но надо как-то совмещать, а то откладывать можно бесконечно.

А у вас есть своя домашняя серверная? Хоть какая. Если есть желание и возможность, то покажите фотки. Интересно посмотреть.

#видео
👍83👎3
Решил собрать в единый список известные мне бесплатные курсы и материалы, которые можно посоветовать для базового изучения тем, кто хочет начать движение в сторону системного администрирования Linux и DevOps от простого к сложному.

🎓 Базовое администрирование Linux:
▪️ Основы GNU/Linux и подготовка к RHCSA — автор в качестве хобби создаёт хорошие курсы для новичков. Причём как в текстовом виде, так и в виде записанных уроков. Качество материала высокое.
▪️ Базовое администрирование Linux-серверов — бесплатный курс по основам от Слёрм.
▪️ Введение в Linux — большой и масштабный бесплатный курс по Linux на платформе Stepik.
▪️ Администрирование Linux — совместный курс в виде лекций на youtube от команды VK Team на базе МФТИ.
▪️ Администрирование базового уровня (LPIC-1) - курс на youtube от известного Семаева Кирилла, который к сожалению больше не в состоянии записывать курсы.

🎓 Сети:
▪️ Сети для самых маленьких — очень качественный, структурированный материал по сетям от самых основ до более сложных вещей. Написано, как я понимаю, энтузиастами-сетевиками из подкаста Linkmeup.
▪️ Компьютерные сети, Климанов М.М., Компьютерные сети, учебный курс, Созыкин Андрей — база по сетям от преподавателей МФТИ.
▪️ Основы документирования сетей — серия уроков на youtube по документированию сетей.

🎓 GIT:
▪️ Git для начинающих — бесплатный курс по основам от Слёрм.
▪️ Oh My Git! — одна из самых известных и популярных игр на тему изучения Git.

🎓 Базы данных:
▪️ Введение в базы данных - бесплатный курс на Stepik.
▪️ Интерактивный тренажер по SQL - тоже курс на Stepik.

🎓 DevOps:
▪️ 90DaysOfDevOps — сборник из 90 шагов, разбитых на 90 дней для развития в области DevOps. Язык материала - английский.
▪️ Как стать DevOps Инженером с Нуля, что учить и в каком порядке —интересное видео от человека, который вкатился в DevOps в 30+ лет. Рассказывает свой опыт.
▪️ Онлайн тренажёры от RedHat — интерактивные уроки, где воспроизводят полностью рабочую среду разработчика или devops инженера. 

🎓 Docker:
▪️ Основы Docker - хорошее обучающее видео по Docker для новичков.
▪️ Play-with-docker - онлайн тренажер для изучения Docker.

🎓 Kubernetes:
▪️ Полный видеокурс по Kubernetes из 22 обучающих уроков - там вообще всё от нуля до мониторинга и деплоя приложений.
▪️ Play-with-k8s - онлайн платформа для изучения Kubernetes.

Это всё, что нашёл более ли менее целостное и полезное. Если есть чем дополнить, поделитесь в комментариях. Я публикацию буду обновлять и в будущем ссылаться на неё.

#обучение #подборка
👍242👎5
​​С памятью в Linux всё непросто. Я неоднократно делал заметки по этой теме. В конце будет тематический список постов со ссылками. А сейчас хотел упомянуть любопытный сайт:

https://www.linuxatemyram.com

Забавно сделано. Кто-то решил раз и навсегда расписать особенности работы Linux с оперативной памятью, чтобы не объяснять одно и то же. Собственно, эту ссылку я и увидел в комментариях к какой-то статье на хабре по этой теме. Небольшой перевод оттуда.

🟢Что вообще происходит?
Linux использует свободную память для кэширования дисковых операций. Это создаёт впечатления, что свободной памяти нет, но это не так.

🟢Зачем он это делает?
Кэширование увеличивает производительность и отзывчивость системы. Ни одного минуса в таком подходе нет, кроме одного - это сбивает с толку новичков. Приложения получают всю необходимую для их работы память.

🟢Что произойдёт, если запустить ещё больше программ?
Если вашим программам понадобится память, они просто получат её из занятой под дисковый кэш. Кэш моментально отдаёт занятую память. Реальной нехватки памяти не возникнет.

🟢Нужно ли добавить swap?
Нет, под кэш уходит только та память, что в данный момент свободна. Она не связана со swap. Если приложениям нужна дополнительная память, занятая под кэш, они берут её там, но не уходят в swap.

🟢Как мне отключить дисковый кэш?
Вы не сможете отключить подобное кэширование. Единственная причина, по которой может появиться подобное желание - ошибочное мнение о том, что память расходуется ненадлежащим образом, а приложениям её не хватает. На самом деле этот кэш ускоряет работу приложений, поэтому отключать его нет никаких оснований. Тем не менее, если вы захотите быстро очистить часть оперативной памяти, занятой кэшем для каких-то своих задач, то сможете сделать это командой: echo 3 | sudo tee /proc/sys/vm/drop_caches

🟢Почему top и free показывают, что вся оперативная память используется, если это не так?
Это просто разница в терминологии. И вы, и Linux согласны с тем, что память, занимаемая приложениями, является "используемой", в то время как память, которая ни для чего не используется, является "свободной". Но как вы назовёте память, которая в данный момент используется для чего-то, но все еще может быть доступна приложениям? Вы можете считать эту память "свободной (free)" и/или "доступной (available)". Linux же считает ее "используемой (used)", но также и "доступной (available)".

🟢Как мне узнать, сколько у меня на самом деле свободной оперативной памяти?
Запустите утилиту:
# free -m
total used free shared buff/cache available
Mem: 1504 1491 13 0 855 792
Swap: 2047 6 2041

Если посмотреть на столбец free, то покажется, что свободной памяти не осталось. Но это не так. На самом деле для приложений доступно 792 MiB, а под кэш и буфферы занято 855 MiB, большая часть из которой может быть выделена для приложений. То есть у вас реально занято примерно 50% памяти и столько же доступно/свободно.

На самом деле простое и доступное объяснение. Ссылочку можно сохранить для друга, который не понимает, как Linux использует память. Для него памяти чем больше, тем лучше. То есть лишней она не бывает. За скобками осталась тема того, как определить реальную используемую память приложением или процессом. Для этого тоже можно отдельный сайт открыть. Я попытался объяснить эту тему в заметке про pmap.

Уменьшение или увеличение ram на ходу
Анализ использования памяти с помощью pmap
Кто и как использует swap (скрипт для просмотра)
🔥Использование оперативной памяти программами (скрипт)

#linux
👍147👎3
​​Я не раз поднимал на канале тему видеонаблюдения, преимущественно бесплатного и на Linux. При этом всё время обходил стороной старый российский проект Xeoma, у которого давняя история (с 2004 года) и много хороших отзывов. Я просто сам ни разу с ним не сталкивался, нигде не видел и не настраивал. А это один из старых серверов, у которого очень давно есть версия под Linux.

Я лично настраивал программные сервера видеонаблюдения от брендов LTV и Линия, а настроенных видел ещё больше. В целом, не могу сказать что-то плохое про кого-то из них. Всё, что касается базового видеонаблюдения, работает нормально плюс-минус у всех. Конкретно к LTV и Линии у меня претензий нет. Всё это был софт на Windows. Сейчас я знаю, что Линия активно развивает свой сервер на Linux.

У Xeoma есть сервер видеонаблюдения под Linux (в том числе под архитектуру ARM) и Android(❗️). Причём как с графической оболочкой, так и без. Если устанавливать на сервер с графической оболочкой, там же будет установлен и клиент для настройки и управления. Если сервер без графики, то ставится только серверная часть, а клиент в любое другое место, например на систему с ОС Windows или на смартфон. Версии ОС клиента и сервера могут не совпадать.

Сервер распространяется в формате AppImage, то есть одиночный файл с расширением .app. Установка простая и быстрая, описана в документации. Просто запускаем сервер с ключами и подключаемся к нему клиентом для настройки.

У Xeoma есть бесплатная версия с ограниченной функциональностью. Основное ограничение - только 4 камеры для записи в архив и хранение в архиве - 5 дней. Подключать и просматривать в режиме реального времени можно сколько угодно. То есть это вариант для небольшой дачи или квартиры. Для доступа к своему серверу можно использовать сервис Ретранслятор. Подробно возможности бесплатной версии описаны в статье.

Ограничения бесплатной версии так себе, есть варианты и получше. А написал я заметку в первую очередь из-за того, что есть хороший, проверенный временем сервер под Linux, стоимость лицензий (бессрочных) низкая. Навскидку, ниже чем у известных конкурентов. При этом имеются все возможности, что обычно хотят получить от наблюдения в настоящее время: видеоаналитика и интеллектуальная обработка. А это в том числе: распознавание номеров, лиц, настроения и возраста людей, парковочных мест, оставленных сумок и многое другое.

Думаю, в комментариях найдётся много тех, кто использует данный сервер. Я постоянно видел его упоминание.

#видеонаблюдение #отечественное
👍100👎8
​​У меня до сих пор осталось некоторое количество серверов под управлением Centos 7. Совсем уже отвык от этой системы. Последние пару лет все новые сервера только Debian. Соответственно, они уже почти везде. Где-то делал миграцию с Centos на Debian, но Centos всё равно остались. Всё работает, обновления приходят, поэтому нет смысла суетиться и делать лишнюю работу.

Поддержка Centos 7 закончится 30 июня 2024 года. В принципе, ещё есть время подготовиться. Но тут основной вопрос, на какую систему в итоге перейти. Когда конвертировал 8-ю версию, как раз пару лет назад, выбрал Oracle Linux и сконвертировал системы в него. Думаю, что ошибся, надо было на AlmaLinux переходить. В тот момент не был уверенности, что этот форк получит хорошее развитие. К примеру, анонсированный VzLinux от Virtuozzo в итоге быстро стух и больше не развивается. По факту AlmaLinux стал наиболее распространённым форком. А вы что думаете на этот счёт?

Если решите в итоге Centos 7 сконвертировать в AlmaLinux, то у них есть хорошая инструкция, как получить сразу актуальную 9-ю версию. Я проверил, получилось без проблем. Я скорее всего на этом варианте остановлюсь. Только обязательно тестируйте такое обновление, так как 9-я версия требует дополнительный набор процессорных команд, обозначаемых как x86-64-v2 (SSE4.2, SSSE3, POPCNT и возможно что-то ещё). Иногда может потребоваться дополнительная настройка виртуальных машин. Хорошо, если гипервизор свой. А если арендованный, то обновление не установится. Не пройдёт проверку требований к железу. В PVE достаточно тип процессора с kvm64 заменить на host. Это актуально для всех форков RHEL9.

#centos #almalinux
👍80👎4
​​У меня дома есть NAS и на всех компах и ноутах подключены сетевые папки. Домашние слабо представляют, как всё это работает. На смартфоне использую TotalCommander с плагином для доступа к тем же сетевым папкам. Жена наверное через TG или VK перекидывает файлы. По-другому вряд ли умеет. Детям это пока не надо.

Есть простое и удобное open source решение для этого вопроса - LocalSend. Поддерживает все операционные системы, в том числе на смартфонах. Это небольшое приложение, которое запускается на определённом порту (53317), принимает входящие соединения и с помощью нескольких методов (описание протокола, в основе поиска Multicast UDP, если не помогает, то POST запрос на все адреса локальной сети) осуществляет поиск таких же серверов в локальной сети. Передача данных осуществляется по протоколу HTTP.

На практике всё это работает автоматически. Приложение под Windows можно поставить, к примеру, через wingwet или скачать portable версию. На смартфоне ставим через Google Play, F-Droid или просто качаем apk. Работает всё в локальной сети, без необходимости каких-то внешних сервисов в интернете. Запускаем на обоих устройствах приложение, они сразу же находят друг друга. Можно передавать файлы. При этом можно на том же компе настроить такой режим, чтобы он автоматом принимал файлы со смартфона и складывал в определённую директорию.

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

Мне иногда надо сыну передать со своего смартфона из родительского чата информацию от учителя с пояснениями по домашке. Я для этого делал скриншот чата, клал его на NAS, на компе с NAS копировал сыну. Через приложение передать в разы удобнее. Запустил прогу и перекинул на комп с именем СЫН. Всё. Мессенджеров и соц. сетей у него пока нет.

Это приложение, которое я попробовал и сразу развернул на всех устройствах. Жене очень понравилось.

Отдельно отмечу, что приложение написано на языке программирования Dart. Впервые о нём услышал. Сначала показалось, что это типичное приложение на JavaScript под NodeJS. Но смутил небольшой размер. После этого и пошёл смотреть, на чём написано. Оказалось, что этот язык программирования разрабатывает Google как раз для замены JavaScript, взяв от него всё лучшее, но исправив недостатки. В целом, выглядит всё это неплохо.

Сайт / Исходники

#fileserver
👍177👎6
​​Один из читателей канала давно мне скидывал информацию про скрипт для Zabbix, который отправляет оповещения с графиками в Telegram. Он его сам написал. У меня как-то затерялась эта информация и только сейчас дошли руки посмотреть. Я проверил, всё работает нормально. В целом, таких скриптов немало, я сам пользуюсь и в статье рассказываю про настройку. Тут отличие в том, что он полностью на Bash, в то время как я использую решения, написанные на Python. Вариант с башем лично для мне выглядит более привлекательным.

В принципе, всё описание есть в репозитории и в отдельной статье от автора. Я по ним без проблем настроил. Если раньше уведомления в Telegram не настраивали, то, возможно, придётся повозиться. Там надо бота создать, с токеном ничего не напутать и т.д. Судя по количеству комментариев с вопросами к моей статье по этой теме, у многих не получается быстро с этим разобраться.

Отмечу несколько моментов, с которыми сам столкнулся.
1️⃣ Скрипт по умолчанию пишет лог файл в директорию /usr/lib/zabbix/alertscripts, владельцем которой является root, соответственно у скрипта нет прав на запись туда. Либо сделайте владельцем пользователя Zabbix, либо вынесите лог куда-то в другое место.

2️⃣ Второй момент - когда будете добавлять новый способ оповещений (media type), не забудьте добавить туда шаблоны. По умолчанию они не создаются. Я забыл об этом и не сразу догадался, почему ошибку при отправке через этот тип сообщений получаю.

3️⃣ Для айтема должен существовать график, чтобы он прилетел в оповещения. Иначе графика не будет. Если что-то не будет получаться, то почитайте комментарии к статье. Там автор подробно объясняет нюансы и показывает, как дебажить отсутствие графиков

#zabbix
👍119👎2
​​Заметка для тех кому приходится разбираться на чужих серверах или перенимать полностью управление в свои руки. Для deb дистрибутивов есть инструмент debsums, живёт в базовых репах:

# apt install debsums

С его помощью можно быстро проверить и сравнить с эталоном MD5 суммы всех файлов в установленных пакетах. Я не очень представляю себе ситуацию, когда это может сильно помочь, кроме вариантов с расследованием каких-то взломов или проблем с пакетами.

А вот проверить конкретно изменения в стандартных конфигурационных файлах бывает очень полезно. Например, если кто-то изменял стандартный конфиг /etc/ssh/ssh_config или /etc/default/ssh, то вы это увидите:

# debsums --config --changed
/etc/ssh/ssh_config
/etc/default/ssh

И так для всех стандартных конфигов, которые идут в составе пакетов, в том числе которые устанавливаются с базовой системой. Юниты systemd, конфиги в /etc/pam.d, /etc/grub.d, /etc/defaults и т.д. Всё будет проверяться.

Простой и удобный инструмент для того, чтобы быстро оценить, что на сервере менялось и настраивалось. Увидите в том числе изменённые конфиги установленного софта, типа nginx или mariadb. То есть сразу будет видно, что сюда ставили и настраивали.

#debian
👍176👎1
​​Я по привычке всегда создаю ключи для SSH с использованием протокола RSA. Просто добавляю параметр для длины ключа 4096. Когда-то увидел информацию, что меньшая длина теоретически может быть небезопасной.

# ssh-keygen -t rsa -b 4096 -C "$(whoami)@$(hostname)_$(date -I)"

OpenSSH сервер в очередном обновлении отказался от коротких RSA ключей: "Refuse RSA keys <1024 bits in length and improve reporting for keys that do not meet this requirement.". А не так давно от него было предупреждение: "use RSA/SHA256 when testing usability of private keys as some systems are starting to disable RSA/SHA1 in libcrypto." Это всё информация из releasenotes.

Криптография не стоит на месте и постоянно развивается. Появился протокол Ed25519, который сейчас многие сервисы рекомендую использовать для SSH ключей, а если видят RSA, то выводят предупреждение. Не вижу причин его не использовать. Надо менять привычки.

Явным плюсом Ed25519 является то, что и приватный, и публичный ключи получаются значительно короче. То есть из чисто практических соображений ими удобнее пользоваться.

# ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "$(whoami)@$(hostname)_$(date -I)"

# cat id_ed25519
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUxOQAAACAhQeOKKXennY4AxzG27R5F+8uiQiuBPDil8RNUaisnjwAAAKCDHZihgx2YoQAAAAtzc2gtZWQyNTUxOQAAACAhQeOKKXennY4AxzG27R5F+8uiQiuBPDil8RNUaisxjwAAAECp2CJm9zWAsi9TQ/T92h6maR7CkeZyXlR1EOC9IecDvCFB44opd6edjgDHMbbtHkX7y6JCK4E8OKXxE1RqKzGPAAAAGHJvb3RAZGViaWFuMTFfMjAyMy0xMi0yMAECAwQF
-----END OPENSSH PRIVATE KEY-----

# cat id_ed25519.pub 
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICFB44opv6edjgDHMbbtHkX7y6JCK4E8OKXxE1RqKzGP root@debian11_2023-12-20

Публичные ключи Ed заметно короче RSA, что банально практичнее. Они содержат всего 68 символов, в отличие от RSA 3072 с их длиной 544 символа.

Кто-то уже перешёл на Ed25519? Там нет каких-то подводных камней, в виде отсутствия поддержки в каком-то софте? По идее, такого уже не должно быть, так как алгоритм появился довольно давно. Хотя какой тут софт может быть? Подавляющее число подключений по SSH, это подключения к openssh серверу, который с 15-го года поддерживает Ed25519. Наиболее вероятно, что проблемы могут возникнуть на каком-то старом сетевом оборудовании, где версия openssh очень старая.

#ssh
10👍121👎1