ServerAdmin.ru
28.9K subscribers
303 photos
35 videos
13 files
2.63K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​На связи Techno Tim и его видео с советами по базовой настройке Proxmox. Мне нравится этот канал, как и его автор. Часто его смотрю, иногда делюсь с вами. Мне нравится смотреть админов из других стран, чтобы чему-то учиться у них, смотреть, как они работают и мыслят. Заодно язык учится. У меня вообще нет практики разговорного английского, но из-за того, что регулярно смотрю видео на английском языке, нормально стал его воспринимать на слух.

Основные шаги, которые описаны в ролике:

- Отключение enterprise repo, если нет подписки. Обновления из unstable repo.
- Добавление zfs storage.
- Включение PCI Passthrough (IOMMU), если система поддерживает.
- Настройка vlan.
- Настройка nfs шары для образов систем и бэкапов.
- Настройка регулярных бэкапов.
- Загрузка образа с virtio drivers для Windows.
- Объединение (агрегирование) сетевых интерфейсов для отказоустойчивости. Нужна также поддержка свитча технологии объединения интерфейсов.
- Настройка шаблона ОС.
- Добавление хоста в кластер.

Все эти шаги объяснены и показаны на практике. На стенде версия Proxmox 6, но в плане указанной настройки отличий никаких нет.

https://www.youtube.com/watch?v=GoZaMgEgrHw

#видео #proxmox
​​Предлагаю вашему вниманию open source игру для изучения GIT - Oh My Git! Игра визуализирует внутреннюю структуру Git в режиме реального времени. Вы подключаете реальный репозиторий, изучаете команды, выполняете их. И видите результат на игровом поле.

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

Считается, что в игровой форме проще всего осваивать новую информацию. Попробуйте, если ещё не изучали Git. Может игра вам действительно поможет и упростит задачу.

Сайт - https://ohmygit.org/
Исходники - https://github.com/git-learning-game/oh-my-git
Загрузка - https://blinry.itch.io/oh-my-git
Трейлер - https://www.youtube.com/watch?v=wJdzvm4Sj2o

#игра #обучение
​​Давно не было ничего на тему полезных bash команд. Решил немного оживить рубрику. Рассмотрю несколько примеров, которые могут пригодиться на практике при работе с веб сервером.

С помощью grep и регулярного выражения смотрим список всех IP адресов в логе:
grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' access.log

Выводим только уникальные ip адреса:
grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' access.log | sort | uniq

А теперь считаем их количество:
grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' access.log | sort | uniq | wc -l

10 самых активных IP адресов с наибольшим количеством запросов:
grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' access.log | sort | uniq -c | sort -n -r | head -10

Не обязательно ip адреса грепать именно по регулярке. Можно взять awk и выводить первый столбец. Результат будет тот же самый, но с регуляркой более универсальное решение, которое сработает на любом лог файле, где есть ip адреса. Пример с awk будет ниже.

10 самых популярных url:
awk '{print $7}' access.log | sort | uniq -c | sort -n -r | head -10

Подсчитать количество 500-х ошибок:
awk '{print $10}' access.log | grep 500 | wc -l
Обращаю внимание на номер столбца $10. У вас он может отличаться в зависимости от формата лога nginx или apache. Я обычно немного изменяю стандартный формат, добавляя несколько дополнительных столбцов.

Вывести ip адрес и url запроса, где была 500 ошибка:
grep 'status=500' access.log | awk '{print $1,$7}'

Данные примеры легко модифицируются под практически любые запросы информации из логов. Достаточно немного потренироваться и разобраться в синтаксисе. Ниже ещё немного того, что может пригодиться. Например, ограничение лога по времени. К нему далее можно применять все предыдущие выборки.

Вывести все записи лога в интервале 20.02.2022 15:20 - 16:20
cat access.log | sed -n '/20\/Feb\/2022:15:20/,/20\/Feb\/2022:16:20/p'

Просмотр установленных соединений к веб серверу, а также их подсчёт:
netstat -tan | grep "ESTABLISHED" | grep ":443"
netstat -tan | grep "ESTABLISHED" | grep ":443" | wc -l

Забирайте в закладки, чтобы потом не искать и не вспоминать, как написать. Bash такая штука, если постоянно на нём не пишешь, то очень долго рожаешь решения. Поэтому я всегда и всё записываю, чтобы потом просто брать готовые конструкции и немного модифицировать по необходимости. Хотя бы не приходится вспоминать утилиты и ключи. Со временем забывается. Например, я частенько забываю про утилиту uniq, а потом думаю, как бы мне повторяющиеся строки отсечь.

#bash #terminal
​​Продолжение темы бесплатного мониторинга. Очень маленький и простой сервис с бесплатным тарифным планом для мониторинга tls сертификатов и делегирования доменов - https://www.haveibeenexpired.com

Простая регистрация, где даже email не нужен. Можно сразу через учётку google или github зарегистрироваться. Достаточно добавить свои домены и сразу всё заработает.

Кроме мониторинга сертификатов и доменов ничего нет. Так что настроек минимум. Минус только один и лично для меня он существенный. Уведомления умеет отправлять только в Slack, Discord или Teams через встроенную в них систему вебхуков. Уведомлений на почту нет. Сужу по самому сайту и настройкам, так как нигде не нашёл там упоминания про email. Может быть и шлют.

Одна из фишек сервиса - автоматический поиск поддоменов и мониторинг их. Я добавил только основной домен, а через некоторое время сервис сам подтянул все поддомены на нём. Я даже не понял, как он это сделал. Разве есть механизм найти все поддомены на конкретном домене? Насколько я знаю, это можно только перебором по словарю сделать. Вроде нет таких запросов к dns, чтобы вернуть в ответ список поддоменов. Или я ошибаюсь?

Кстати, подтверждения для добавления доменов не надо. Можно чей-то чужой домен добавить и узнать все его поддомены.

#мониторинг #бесплатно
​​С помощью Iptables можно очень хорошо защитить сервис, смотрящий напрямую в интернет. В частности, будет актуально в том числе для защиты asterisk, про которую я недавно рассказывал.

Я покажу несколько примеров с набором правил iptables. Начнём с защиты от сканирования портов. Будем банить на 10 минут всех, кто обратится не на открытые порты, например, 5060 и 22.

iptables -A INPUT -m recent --rcheck --seconds 600 --name BANLIST -j DROP
iptables -A INPUT -p tcp -m multiport ! --dports 22,5060 -m recent --set --name BANLIST -j DROP
iptables -A INPUT -p tcp --syn --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn --dport 5060 -j ACCEPT

Попробуйте с помощью telnet тыкнуться в любой другой порт, отличный от 22 и 5060. Тут же получите бан.

Защита от bruteforce средствами iptables на примере ssh порта:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name BANLIST --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name BANLIST --update --seconds 60 --rttl --hitcount 3 -j DROP
iptables -A INPUT -p tcp --syn --dport 22 -j ACCEPT

Разрешаем только 3 запроса в минуту, третий должен быть удачным, чтобы подключиться, иначе ip адрес уходит в бан на 60 секунд.

Можно то же самое сделать с помощью модуля hashlimit. С одного ip разрешаем 2 запроса на соединение (NEW) в минуту (2/m) все остальные пакеты (NEW) c этого ip блокируется:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m hashlimit
--hashlimit-name BANLIST --hashlimit-mode srcip --hashlimit-above 2/m --hashlimit-burst 2 -j DROP
iptables -A INPUT -p tcp --syn --dport 22 -j ACCEPT

Посмотреть содержимое создаваемого списка BANLIST можно так:
cat /proc/net/xt_recent/BANLIST
src=192.168.13.15 ttl: 128 last_seen: 4295998682 oldest_pkt: 1 4295998682
src=10.8.0.2 ttl: 127 last_seen: 4296007032 oldest_pkt: 4 4295389944, 4295734397, 4295895199, 4296007032

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

Полный рабочий набор правил iptables с примерами выше:
https://log.serveradmin.ru/OpfLstlV

Заметку рекомендую сохранить.

#iptables #security
​​osTicket - очередная open-source система управления заявками на техническую поддержку. Без неё обзор подобного софта никак нельзя считать завершённым. osTicket старая и распространённая система с большим сообществом. Написана по олдскулу на php + mysql. Соответственно, работает на базе типового веб сервера.

Ставится копированием исходников и запуском инсталлятора:
git clone https://github.com/osTicket/osTicket
cd osTicket
php manage.php deploy --setup /var/www/htdocs/osticket/

Функционал osTicket типовой для подобных продуктов: дашборды и отчёты, в том числе по учёту SLA, документация с ответами на типовые вопросы, портал для клиентов, создание заявок из email. Отдельно можно отметить возможность создавать задачи для сотрудников поддержки. Задачи могут быть привязаны к заявкам, либо быть сами по себе.

Выглядит osTicket так себе. По внешнему виду сразу понятно, что продукт из далёкого прошлого, откуда пришли otrs и itop. Если сравнивать osticket с otrs, то первая проще в настройке, более логичная и понятная. Но и функционал поменьше.

В osTicket есть поддержка API для интеграции с другими приложениями. Есть поддержка разных типов учётных записей с разными правами доступа. То есть система весьма зрелая и готовая для больших внедрений. Есть нормальный перевод на русский язык. Функционал можно расширять с помощью плагинов. К примеру, есть плагин для интеграции с LDAP.

Помимо open source версии есть платный облачный сервис и платная техническая поддержка. Если выбираете себе selfhosted helpdesk, osticket обязательно надо посмотреть.

Сайт - https://osticket.com/
Исходники - https://github.com/osTicket/osTicket
Документация - https://docs.osticket.com/en/latest/

#helpdesk
​​Ещё один аналог линуксового fail2ban для windows - EvlWatcher. Анализирует системный лог на наличие подключений к RDP и банит тех, кто пытается брутить учётки. Решил про него написать, потому что он имеет некоторые отличия от других подобных программ, про которые я писал ранее.

Особенности EvlWatcher:
● open source, исходники на github
● простая и маленькая программа, всего 300 кб
● работает сразу после установки, никаких конфигов в отдельных файлах, всё управляется через консоль, в отличие от ipban, где жуткий конфиг в формате xml
● создаёт одно правило в firewall и заполняет его адресами, в отличие от RDP Defender, который на каждый блок создаёт отдельное правило
● свежая программа, последнее обновление 23 января
● работает в том числе с ipv6 адресами

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

Исходники - https://github.com/devnulli/EvlWatcher

#security #windows
📱🔥 IT Network - первая в России соцсеть для айтишников

Тысячи молодых айтишников уже нашли здесь наставника, работу и просто коллег по цеху для обучения программированию и решению повседневных задач. IT Network помогает находить известных экспертов, работу и быть в курсе всех новостей из мира IT и науки. Не упустите свой шанс стать одним из них!

В приложении вы сможете:
● Обмениваться опытом с коллегами
● Получать интересные предложения о работе
● Расширять круг знакомств в сфере IT
● Следить за новостями из мира IT и науки

Для тех, кто решил расти в кругу успешных айтишников, вот ссылка на приложение в App Store и Google Play.

#реклама
​​Расскажу про небольшую утилиту командной строки Linux, которая может быть полезна при написании скриптов, либо обработке каких-либо файлов. Речь пройдёт про утилиту cut. У неё не так много параметров, что позволяет её успешно использовать, не ужасаясь возможностям, которые непременно придётся вспоминать или гуглить. Как это обычно у меня бывает, к примеру, с awk или sed.

Cut позволяет выделять фрагменты текстовой строки. Я чаще всего использую два параметра -d и -f. Первый указывает символ разделитель слов в строке, а второй - номера фрагментов, которые нужно вывести. Чтобы быстро понять принцип работы, приведу условный пример с простой строкой:

# echo "dima,vova,vasya,peter,sergey" | cut -d ',' -f 2,4
vova,peter

Я указал, что разделитель запятая и вывел 2 и 4 слово. В общем случае выводить отдельные столбцы удобнее через awk, но только в том случае, когда они чётко разделены между собой пробелами. Вот эти две команды будут равнозначны, но как по мне awk проще и нагляднее:
# echo "dima vova vasya peter sergey" | cut -d ' ' -f 2,4
# echo "dima vova vasya peter sergey" | awk '{print $2,$4}'
vova peter

Если же используется какой-то другой символ в качестве разделителя, команда cut очень удобна. Например, если надо как-то обработать файл /etc/passwd, что бывает не редко. Там значения разделены двоеточиями. Выведем имена пользователей и оболочку, которую они используют:
# cut -d ':' -f 1,7 /etc/passwd
root:/bin/bash
bin:/sbin/nologin
Либо просто выводим пользователей системы:
# cut -d ':' -f 1 /etc/passwd

Иногда бывает нужно заменить выходной разделитель на какой-то другой символ. Например, пробел. Делается это так:
# cut -d ':' -f 1,7 /etc/passwd --output-delimiter='_'
root /bin/bash
bin /sbin/nologin

Ещё одна полезная возможность команды cut - обрезать какой-то символ в строке. При этом можно задать, начиная с какого символа мы будет отображать информацию. Это актуально для файлов или списков, где в начале строки есть какие-то лишние символы, которые надо убрать. Например, если в терминале посмотреть список history, то видно, что само название команды начинается только с 8-го символа. До этого идут пробелы и порядковый номер команды в списке истории. Можно всё это вырезать и отобразить только команду:
# history | grep git | cut -c8-

Таким образом очень просто составить список наиболее популярных команд:
# history | cut -c8- | sort | uniq -c | sort -rn | head

С помощью cut в скриптах часто проверяют версию ядра, разрядность, тип процессора и т.д.:
# uname -a | cut -d " " -f 3
4.18.0-240.8.1.el8_3.x86_64
# uname -a | cut -d " " -f 12
x86_64
# cat /proc/cpuinfo | grep "name" | cut -d : -f2 | uniq
 Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz

#bash #terminal
​​Вчера вышел очередной сборник новостей от Mikrotik в виде pdf брошюры. Это первый выпуск в 2022 году, который объединил оба месяца - январь и февраль. Смотрим, что там интересного нам подготовили:

Подъехал новый флагман CCR2216-1G-12XS-2XQ, который способен обработать 100 Gigabit с помощью L3 Hardware Offloading. Там прям мощь на 16-ти ядрах с чипом для L3 обработки трафика. В довесок 2 hotswap блока питания и 2 M.2 SATA разъёма. Обзорчик на ютубе.

Для супербыстрых и надежных point-to-point соединений по радио выпустили новую линейку устройств Cube 60Pro с поддержкой стандарта 802.11ay. Бюджетные устройства, которые позволяют создавать сетевые бриджи по воздуху на расстоянии от 1 до 2,5 км. в зависимости от модели. Обзор.

Для point-to-multipoint режима выпущена модель CubeSA 60Pro ac. Она примерно на расстоянии в 600 метров может вещать для других беспроводных устройств, что может быть актуально для онлайн трансляций, массовых мероприятий и т.д. В качестве приёмника может выступать, к примеру MikroTik nRAY.

за 200 баксов можно купить PCIe карту CCR2004-1G-2XS-PCIe. Эта штуковина содержит в себе RouterOS и видна на сервере как virtual Ethernet interfaces. Не понимаю, как это работает на практике, но смысл в том, что за пару зелёных бумажек вы можете получить сетевуху на 25 Гигабит со всеми возможностями RouterOS. Какая-то невероятная история. Обзор.

Команда Mikrotik выпустила небольшой обучающий ролик по настройке Firewall. Наслаждаемся самой достоверной информацией на тему того, как правильно настроить Firewall в Микротике. Это вам не статейки в интернете читать от анонимусов.

Там были ещё новости, но они мне показались не такими интересными. Не стал вас утомлять сверх меры. Если интересно, посмотрите сами. Рекомендую, кстати. Микротик очень классно оформляет свои ежемесячные выпуски. Вот бы остальные подтянулись и сделали то же самое.

Скачать PDF Newsletter

#mikrotik
​​Практически ко всем заметкам на HelpDesk системы я получал комментарии насчёт Zammad. Я всё откладывал, откладывал эту тему, так как хелпдеска в последнее время стало много, так что я стал путаться в нём. Но в итоге решил для полноты картины посмотреть и Zammad. Раньше даже не слышал про неё.

Просто почитав описание, стек технологий и возможности Zammad, я понял, что это интересная штука. Во-первых, это современная система на Ruby и JavaScript, а не php, как это чаще всего было с рассматриваемыми self-hosted системами, родом из двухтысячных (привет otrs, glpi, osTicket 👋) Тут всё по красоте - готовые deb или rpm пакеты в отдельном репозитории, для правильных девопсов docker-compose с несколькими образами. Для тех, кто любит попроще есть один образ со всем необходимым внутри. Конфиги в yaml формате. Данные Zammad хранит в PostgreSQL, для быстрого поиска можно подключить Elasticsearch. У Zabbix есть готовая интеграция с Zammad.

Я так понимаю, что у всех, кто любит всё новое и современное отпали вопросы на тему того, какую тикет систему сейчас стоит использовать на своём железе. Про функционал писать особо нечего, так как он плюс-минус такой же как у всех. На официальном сайте есть цикл статей сравнения Zammad с популярными аналогами: OTRS, Zendesk, Freshdesk, Jira, Atlassian. Например, в сравнении с OTRS прямо указано, что Zammad полностью покрывает весь функционал OTRS и может служить заменой. Там же есть инструкции по переезду с этих систем на Zammad. Для этого можно использовать Zammad Migrator. Только не уверен, что он бесплатен.

Если оценивать интерфейс, то он приятен и выглядит современно. После него на интерфейс otrs или glpi даже смотреть не хочется. Если бы я сейчас выбирал систему заявок, которую я готов развернуть и обслуживать у себя, то точно бы начал с Zammad. Нужно быть готовым к тому, что ресурсов ей понадобится прилично. Но не думаю, что это проблема в современных реалиях, где удобство и время персонала стоит значительно дороже нескольких ядер CPU и гигабайт RAM.

Сайт - https://zammad.com https://zammad.org/
Исходники - https://github.com/zammad/zammad
Документация - https://docs.zammad.org/en/latest/
Docker - https://hub.docker.com/r/zammad/zammad/

#helpdesk
Небольшая, простая, но при этом почти полная инструкция по настройке Zabbix HA Cluster из двух нод. Последовательность действий там такая:

1️⃣ Прописываем параметр HANodeName с уникальным именем на всех нодах кластера, а так же NodeAddress с ip адресом и портом, на котором работает Zabbix Server данной ноды. Эти адреса от каждой ноды уедут в базу данных и будут использованы фронтендом (веб интерфейсом) для подключения.
2️⃣ Убираем параметры адреса и порта Zabbix Server из настроек веб интерфейса. В таком случае он будет брать их из базы данных.
3️⃣ Теперь можно перезапустить серверы мониторинга и проверить статус кластера через консольные команды, либо в веб интерфейсе.

Настраивается всё максимально просто. Я только не понял, почему в ролике совсем не сказано ничего про настройку агентов. Это тоже важно. Если я правильно понял, то в настройках агентов надо указывать через точку с запятой все адреса нод кластера, чтобы данные в итоге попали в мониторинг в случае проблем с каким-то сервером.

Простая и приятна реализация, не требующая плавающего адреса или еще каких-то дополнительных сущностей. Легко деплоить и управлять. Но не стоит забывать, что HA для фронтенда и базы данных нужно настраивать отдельно. Без них смысла в кластере самого мониторинга нет.

https://www.youtube.com/watch?v=KbqS4s6DaQE

#zabbix
​​Недавно увидел очень необычную систему, которая внешне как две капли воды была похожа на Windows 11, но при этом являлась Linux. Стал разбираться и нашёл информацию о ней. Это система от бразильских разработчиков и называется WindowsFX.

Это очень качественный клон Windows на базе Linux. Полностью идентичный внешний вид. Повторили даже значки и разделы в Параметрах, установили браузер Edge, воспроизвели оригинальный Пуск. Явно выдает эту систему магазин, который отличается от виндового.

WindowsFX построена на базе Ubuntu и KDE Plasma. Сделано всё качественно. Если загрузиться с iso образа, то по умолчанию он запускается в режиме LiveCD. Можно быстро оценить систему и поставить, если понравится. Есть версия для ARM с возможностью установки на Raspberry Pi.

На мой взгляд, это самый качественный закос под винду. Если поставить какому-то неискушённому пользователю, то он может и не заметить подмены. В состав дистрибутива уже включен наиболее популярный софт для повседневного использования: teams, anydesk, onlyoffice, java, powershell, steam и т.д. Так же уже установлен и настроен Wine для запуска виндовых приложений.

Если есть желание кого-то пересадить с винды на линукс, то данный дистр будет очень актуален. Рекомендую попробовать. Я себе установил на виртуалку. Оставлю как экзотику.

Загрузка - https://www.windowsfx.org/index.php/downloads/x86-64-bit-pc
Обзор - https://www.youtube.com/watch?v=3FKMif6wwuo

#windows #linux
​​Недавно узнал, что для Windows существует OpenSSH сервер. Я совершенно не понял, как ssh должен выглядеть на Windows. Подключаешься туда и дальше что? Куда попадаешь, какие команды работают? Решил сам проверить и вам рассказать.

Есть репозиторий https://github.com/PowerShell/Win32-OpenSSH, откуда можно скачать актуальную версию. Все релизы в статусе беты, так что не удивляйтесь. Скачанный архив распакуйте в директорию C:\Program Files\OpenSSH. Запустите консоль powershell и там выпонлите:

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

Установится служба sshd, которую потом надо вручную запустить:

net start sshd

Не забудьте настроить firewall, открыв 22 порт на вход. После этого вы можете подключаться к винде по ssh, использую её стандартные учётки. После логина окажитесь в домашней директории пользователя. В качестве shell у вас будет powershell. Странно было сразу не догадаться об этом, но мне в голову такая идея не пришла.

Для службы sshd в рабочей директории есть конфиг sshd_config с таким же форматом, как в Linux. Так что к винде с настроенным ssh можно подключаться с помощью scp или rsync. Никакого лишнего софта не надо. Очень удобно. Надо было давно попробовать. Под одной учётной записью можно подключиться по rdp и ssh. Они не мешают друг другу.

Если в системе установлен WSL, то в качестве оболочки может быть установлен bash. Для этого надо поменять в реестре значение. Либо вручную, либо через powershell:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\WINDOWS\System32\bash.exe" -PropertyType String -Force

Пользуется кто-то этой штукой на винде? Она скоро от линукса отличаться не будет.

#windows #terminal #bash
​​Хочу рассказать вам про удобный сервис для создания документации - Gitbook. Он работает по модели SaaS с бесплатным тарифным планом. С его помощью можно вести документацию в обычном git репозитории, а затем публиковать в виде веб сайта, а так же электронной книги в формате PDF, ePub или Mobi (платные функции).

Пример подобной документации можно оценить по очень известной серии статей на тему настройки сети - Сети для самых маленьких. Они с некоторых пор живут на gitbook. Думаю, вы часто сталкивались с документацией на этом сервисе. Он популярен.

Одно время у Gitbook был опенсорсный клиент с cli, который можно было поставить на Linux. С его помощью можно было локально вести документацию и синхронизировать с сервисом. Но не так давно его перестали поддерживать и развивать, хотя он пока всё ещё работает.

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

В общем, если ищите инструмент для ведения документации, посмотрите на Gitbook. Это удобное специализированное решение для этих целей.

Посмотреть, как всё это работает:
https://www.youtube.com/watch?v=KzOcIopMNjU

#разное
​​Давно не было публикаций на тему инструментов для бэкапа. Одно время я очень много их описал. Практически всё полезное и популярное. Их можно найти по тэгу #backup или почитать подборку на сайте. Правда, там не всё, так как были новые обзоры после выхода статьи.

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

В первую очередь это open source проект и весьма популярный:
https://github.com/restic/restic. Для установки достаточно скачать бинарник из репозитория. Он написан на Go. На каких-то системах, например Debian, он есть в базовых репах. Основные возможности:

- все данные шифруются AES256, сам ключ шифруется паролем;
- нет деления на типы бэкапов: полные, инкрементные, дифференциальные, вместо этого используются снепшоты, соответственно работает дедупликация;
- различные хранилища для архивируемых данных: локальная директория, sftp, S3, HTTP REST server, OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage, Google Cloud Storage;
- помимо прямого подключения к хранилищам, есть поддержка rclone;
- встроенная проверка целостности данных.

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

Покажу пример, как с помощью restic делаются бэкапы. Сначала инициализируется локальный репозиторий:
restic init -r /mnt/backup
В этот момент будет сгенерирован ключ для шифрования и создана структура каталогов репозитория. Пример для инициализации репозитория по sftp:
restic init -r sftp:user@host:/mnt/backup
Бэкапим:
restic -r sftp:user@host:/mnt/backup backup /data
Смотрим список внепшотов в репозитории:
restic -r sftp:user@host:/mnt/backup snaphots
Смотрим список файлов в снепшоте:
restic -r sftp:user@host:/mnt/backup ls -l latest
Восстанавливаем файлы:
restic -r sftp:user@host:/mnt/backup restore latest \
--target=/restore/

Для всех операций поддерживаются списки include или exclude. Есть команды для быстрого сравнения снепшотов.

Думаю, вы получили представление, как всё это работает. Утилита консольная и хорошо подойдёт для скриптов. Авторы говорят, что Restic очень быстро работает. Я тестов не проводил. Из неудобств отметил то, что Restic надо ставить на сам хост, где лежат данные. Из документации я не понял, как с одного сервера с Restic забирать данные по ssh с других серверов.

Мне Restic сильно напомнил Borg. Подозреваю, что проблемы у него будут те же. Например, как будет выглядеть листинг снепшота, где хранится 500 тысяч файлов? Но в целом выглядит интересно. Основная фишка - снепшоты и дедупликация из коробки и бесплатно. Есть хорошая документация с практическими примерами.

Сайт - https://restic.net/
Исходники - https://github.com/restic/restic
Документация - https://restic.readthedocs.io/en/latest/

#backup
​​Ранее я рассказывал про интересную обучающую платформу kodekloud-engineer.com. Подробности есть в летнем посте. Рекомендую почитать его, так как платформа необычная и интересная. Там надо выполнять задания на тему поддержки инфраструктуры на базе Linux.

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

The system admin team of xFusionCorp Industries has noticed an issue with some servers in Stratos Datacenter where some of the servers are not in sync w.r.t time. Because of this, several application functionalities have been impacted. To fix this issue the team has started using common/standard NTP servers. They are finished with most of the servers except App Server 1. Therefore, perform the following tasks on this server:
Install and configure NTP server on App Server 1.
Add NTP server 1.my.pool.ntp.org in NTP configuration on App Server 1.
Please do not try to start/restart/stop ntp service, as we already have a restart for this service scheduled for tonight and we don't want these changes to be applied right now.

Выглядит всё просто. Быстро посмотрел схему проекта, wiki с описанием серверов и зашёл на нужны хост. Смотрю, что там за система:
# uname -a
Linux stapp01.stratos.xfusioncorp.com 5.4.0-1065-gcp #69~18.04.1-Ubuntu SMP Sat Feb 12 01:39:35 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Ага, Ubuntu. Пытаюсь поставить туда ntp:
apt install ntp
apt-get install ntp
bash: apt: command not found

Фиг вам, как говорится. Нету пакетного менеджера. Окей, думаю я, вызов принят. Не всё так просто. Смотрю, что с настройкой времени:
# timedatectl status
Помимо прочего указано:
NTP enabled: n/a

Раз пакетного менеджера нет, пробую через службу systemctl настроить:
# timedatectl set-ntp true
Failed to set ntp: NTP not supported.

Опять фиг вам. Без установленного NTP сервера это не работает. Тут я что-то подзалип. Не понял, что делать дальше. Чисто наугад зашёл в /usr/bin и решил посмотреть, что там есть. Обнаружил yum. Что за фигня. Проверяю систему:
# cat /etc/os-release 
NAME="CentOS Linux"

Система на самом деле Centos 7. Вот это поворот. Откуда упоминание Ubuntu в описании системы? Дальше делаю:
# yum install chrony
Добавляю нужный сервер в конфиг /etc/chrony.conf, не запускаю службу, так как в задании указали, что это произойдет автоматически ночью, а просто добавляю в автозагрузку:
# systemctl enable chronyd

Вроде всё ОК, сдаю задание. В результате получаю Failed. Ошибка:
- 'ntp' is not installed on App Server 1

Расстроился. Ну что за ерунда. В задании указано, установить NTP server. Chrony тоже NTP Server и обычно на Centos ставят именно его, так как он по умолчанию идёт в системе. Получается нужно было установить пакет ntp и настроить его.

В общем, от итога получил небольшое разочарование, но в целом понравилось немного поднапрячь мозги и разобраться в проблеме. Я так и не понял, с версией системы специально такую подставу сделали, или это я чего-то не понял. В Centos 7 обычно ядро типа такого 3.10.0-1160.36.2.el7.x86_64, а тут 5.4.0-1065-gcp #69~18.04.1-Ubuntu стояло.

В целом, симулятор сисадмина интересный. Рекомендую попробовать проходить задания. Немного полезно, немного интересно.

#обучение
​​Существует старая и известная программа для управления IT активами и HelpDesk система - Spiceworks. Я давно про неё знаю, да и в комментариях к тематическим заметкам иногда писали люди. Насколько я помню, это была бесплатная программа для Windows, которую отличала простота и легкость настройки. Обычный виндовый установщик и дальше управление через web интерфейс.

Дошли руки повнимательнее посмотреть на современный Spiceworks, но я немного не понял, что с ним стало. Облазил весь сайт и нигде не нашёл никакого упоминания про установщик и возможность установить систему локально у себя.

Теперь Spiceworks это облачный сервис для организации HelpDesk системы, системы для инвентаризации оборудования и лицензий ПО. Причём всё это полностью бесплатно и без ограничений. Я заинтересовался подобной моделью развития и внимательно прочитал, откуда такой аттракцион щедрости. На деле через веб интерфейс иногда показывают ненавязчивую рекламу партнёров сервиса с IT тематикой. Плюс в сообществе всякие активности со спонсорами устраивают.

Система в целом неплохая с давней историей. Я зарегистрировался и немного посмотрел, как там всё устроено. Функционал достаточно типовой и простой. Для инвентаризации можно скачать сканер, он сделает поверхностную проверку доступных хостов через локалку. Определит сам, что сможет. Можно скачать агент и установить на каждый комп, тогда он соберёт полную информацию о системе. Все данные пойдут в облако. Насколько это разумно, не мне судить. По сути тут полный SaaS, как сейчас модно. С учётом бесплатности сервиса идея так себе, как по мне. Но можно всё вручную заводить, так что это на ваше усмотрение.

HelpDesk в целом тоже типовой. Основной функционал есть - заявки, дашборды, агенты, сотрудники тех. поддержки, база знаний и т.д. Интерфейс на троечку. Не сильно старый, но и не очень современный. У некоторых рассматриваемых ранее продуктов он поприятнее.

После знакомства осталось двоякое впечатление. Вроде нормально, тем более бесплатно. Меня не смущает за это иногда рекламу посмотреть. Зато можно быстро запуститься на чужих мощностях. Но лично мне их старое self-hosted приложение нравилось больше, так как аналогов было не много. А подобных онлайн сервисов сейчас немало, в том числе и бесплатных.

Сайт - https://www.spiceworks.com

#управление #helpdesk #ITSM
В декабре 2021 года случился сбой в работе МВД.

По всей стране работа ведомства приостановилась. А всё из-за коммунальной аварии и потопа в серверной. Можно ли как-то защититься от "коммунальной стихии" и избежать потери данных?

Конечно да! Облачные технологии - must have для бизнеса и госструктур в 21 веке - безотказно, безопасно и выгодно. 

Подробно рассказываем об этом на канале @cloud4y

🔸статьи экспертов
🔸новости отрасли
🔸бизнес-кейсы
и много другое.

Подпишись, у нас полезно.

#реклама
​​Есть интересный сервис под названием nginx-playground:
https://nginx-playground.wizardzines.com

С его помощью можно быстро и удобно тестировать конфиги nginx. На одной стороне окна браузера конфиг nginx, на другой стороне запрос к веб серверу с этим конфигом и ниже ответ. Прикольная и полезная идея. Особенно удобно с редиректами разбираться в такой штуке. Иногда прям запотеть приходится, чтобы правильно разрулить все редиректы в один этап. То есть не допустить множественных редиректов, когда они накладываются один на другой: http, https, слеш или без слеша на конце, верхний регистр в нижний и т.д.

Если в логе будет ошибка, сразу же увидите её. Работает вся эта штука на Go. Бэкенд забирает ваш конфиг, сохраняет в файл, запускает nginx. Далее запускает curl с запросом и выводит ответ. Уровень небольшой курсовой работы, но при этом достаточно полезно вышло.

Ну и ещё до кучи полезные сервисы для nginx:
Location match tester - https://nginx.viraptor.info/
Config Generator - https://www.digitalocean.com/community/tools/nginx
Ssl-config: https://ssl-config.mozilla.org/
Шпаргалка по безопасности - https://t.me/srv_admin/1193

Забирайте в закладки.

#nginx