ServerAdmin.ru
28.4K subscribers
263 photos
33 videos
12 files
2.59K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​На днях читал новости от Red Hat. Там был анонс новой версии web console с кучей интересных обновлений. Я ещё такой думаю, что за веб консоль, у них вроде cockpit всегда была. Оказалось это она и есть. Немного взгрустнул о Centos. Всё же хорошая система была с кучей дополнительных продуктов от Red Hat.

Думаю, дай-ка проверю, а не работает ли, случайно, cockpit на Debian. Не стал ничего искать, просто зашёл на виртуалку и проверил:

# apt install cockpit

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

Cockpit проста, быстра и лаконична. Red Hat её развивает и всячески продвигает. Там есть в том числе удобный интерфейс для управления виртуальными машинами KVM. Для базовой функциональности достаточно, не обязательно ставить Proxmox.

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

Функциональность cockpit расширяется с помощью модулей, которые устанавливаются как отдельные пакеты. Для управления виртуальными машинами есть модуль cockpit-machines, который тоже присутствует в репозиториях Debian:

# apt install cockpit-machines

В один веб интерфейс cockpit можно собрать множество серверов, настроив к ним подключение по SSH. Если вам нужна веб панель управления сервером Linux, то рекомендую cockpit. Я ничего удобнее не видел.

Документация

#linux
​​С вами бывало такое, что вы вместо ls в терминале Linux набирали sl? Оказывается, это популярная ошибка, тему которой развили и написали приложение sl, которое можно поставить через стандартный менеджер пакетов. Оно есть в deb, и в rpm дистрибутивах:
# dnf install sl
# apt install sl

SL — Steam Locomotive. Теперь при ошибке в терминале, к вам приедет ASCII локомотив. С ключом -l он будет маленьким, с -F он будет летать, а с -e его можно будет остановить по Ctrl+C.

В Debian приложение будет установлено в /usr/games/sl. Этот путь не включен в $PATH для root, так что паровоз не поедет. А вот у обычных пользователей по дефолту он добавлен.
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Не знал об этом.

#игра #terminal #linux
​​На днях реализовал мониторинг безопасности Linux сервера с помощью Lynis и Zabbix. Я давно планировал реализовать что-то подобное, но всё руки не доходили. Lynis делает неплохие проверки, которые легко читаются и понимаются. В нём есть хорошая база, на которую удобно ориентироваться.

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

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

Основная проблема данной задачи — длительность проверки Lynis. Она может длиться минуту-две. Из-за этого неудобно запускать проверку через Zabbix, ждать вывода и потом его парсить. Нужны очень большие таймауты. К тому же вывод у Lynis очень длинный. Пришлось идти другим путём, менее удобным и гибким — писать bash скрипт, запускать его по таймеру и анализировать вывод.

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

В итоге написал скрипт, результат его работы вывел в 2 текстовых файла:
lynis-exitcode.txt — в Lynis есть отличный параметр error-on-warnings=yes. Если его активировать, то статус выхода lynis после проверки будет ненулевым, если есть какие-то замечания по безопасности. Скрипт выводит exit code команды в этот файл.
lynis-warnings.txt — в этот файл через парсинг лога Lynis я вывожу все его замечания и список пакетов с уязвимостями.

Сам скрипт выложил на pastebin. Я положил его в /etc/zabbix/scripts, туда же кладу логи. Настройте выполнение скрипта через systemd.timers. Мне кажется, достаточно раз в час выполнять или даже реже, пару раз в день.

Далее сделал простой шаблон под Zabbix 6.0 с двумя айтемами типа лог, которые забирают значения из lynis-exitcode.txt и lynis-warnings.txt. И там же один триггер, который срабатывает, если в файле lynis-warnings.txt нет строки All is OK, которую туда пишет скрипт, если exit code после работы Lynis равен 0 (т.е. всё в порядке). Когда срабатывает триггер, на почту прилетает оповещение, в тексте которого есть информация из lynis-warnings.txt, куда записаны предупреждения и список проблемных пакетов.

Для того, чтобы отключить ту или иную проверку на хосте, надо в файл конфигурации Lynis, который живёт по адресу /etc/lynis/default.prf добавить исключения по одному в каждой строке:
skip-test=CRYP-7902
skip-test=PKGS-7392
skip-test=MAIL-8818

Отладка работы примерно так и выглядит. Запускаете скрипт, смотрите результат. Будут какие-то замечания. Сделайте для них исключение и снова запустите скрипт. Так и проверяйте всю последовательность действий вплоть до оповещений. Потом, соответственно, так же на хосте настраиваются исключения, если какие-то проверки для него неактуальны. Например, тест tls сертификатов. Он по какой-то причине очень долго идёт. Я его отключил.

Заметка получилась немного сумбурная. Тема не для новичков, а для тех, кто умеет работать с Zabbix и bash. В коротком очерке её не раскрыть. Надеюсь, получится написать статью. Там уже подробно всё распишу.

Мне понравился результат. Удобно сразу получить информацию о проблеме на почту. Подробную информацию по коду ошибки можно получить либо в полном логе Lynis на самом сервере в файлах /var/log/lynis.log и /var/log/lynis-report.dat или на сайте https://cisofy.com/lynis/controls/ в разделе с описанием проверок.

#zabbix
Ребят, чтобы вы чувствовали себя увереннее на собеседованиях, перевёл вам забавный диалог из Silicon Valley, где на работу принимают сетевого администратора.

Silicon Valley - Network Administrator
https://www.youtube.com/watch?v=Abwd3VQTQrk

Он нормально пояснил, кем себя видит в этой компании. И почему на работу должны взять именно его. Перевод мой, так что не судите строго. Возможно, где-то и ошибся. Меня его речь очень впечатлила, захотелось перевести. Сам фильм не смотрел, кроме отдельных фрагментов, типа этого.

- Можете рассказать, кем вы видите себя в нашей компании? Чем будете заниматься?

- Чем буду заниматься? Я буду создавать архитектуру небезопасных сетей (system architecture networking insecurity). И никто в этом офисе не сможет упрекнуть меня в чём-то по этой теме.

- Окей, интересно было узнать.

- Но можете ли вы это оценить? Пока вы были заняты гендерными исследованиями и пели акапеллу Сары Лоуренс, я получал root доступ к серверам NSA (АНБ, агентство гос. безопасности). Я был в одном клике от начала второй иранской революции.

- Вообще-то, я ходил в Вассар (колледж какой-то).

- Я предотвращаю межсайтовый скриптинг. Я мониторю DDoS-атаки, откатываю базы данных и ищу ошибки в обработке транзакций. Интернет передает полпетабайта данных каждую минуту. Ты хоть представляешь, как это происходит? Как твои порнографические нолики и единички каждый день попадают тебе в смартфон? Каждый чувак исходит на говно, если его dubstep Skrillex remix качается дольше 12-ти секунд. И это не магия. Это навыки и тяжёлый труд. И такие как я следят, чтобы пакеты не бились по пути. Так чем я занимаюсь? Я слежу за тем, чтобы один кривой конфиг в одном конкретном месте не разорил к ебеням вашу контору. Вот, млять, чем я занимаюсь.

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

Сегодня предлагаю изучать Python. Я когда-то проходил небольшой курс по нему, кое-что программировал. Сделал бота для TG, разобрался, как там всё работает. Но в итоге забросил. В работе особо не нужно. Привык всё на bash писать. Для моих задач хватает. Но если надо какой-то python код посмотреть, разобраться, что там происходит и внести небольшие правки, то могу это сделать. В принципе, это как раз тот уровень, что нужен мне.

"Поколение Python": курс для начинающих. Курс разработан для школьников, для тех, кто изучает программирование с нуля. В нём даётся база: ввод-вывод, условия, типы данных, циклы, списки, функции. Ровно то, что нужно и нам в своей работе. Курс свежий, писался в 2020 году, обновляется, нет плохих отзывов. Победитель конкурса Stepik Awards 2020 в номинации "Лучший бесплатный онлайн-курс размещенный на платформе Stepik". За прохождение дают именной сертификат.

Программирование на Python. Курс от Института биоинформатики, созданного на базе Санкт-Петербургского академического университета РАН и с поддержкой JetBrains. У них в Питере офисы по соседству. Я его сам где-то на треть прошёл и забросил. Как и первый курс, этот адаптирован для новичков непрограммистов, поэтому даётся база. Он значительно короче первого курса, так что если нужны какие-то обзорные знания, то можно пройти его. А потом закрепить первым.

Телеграм-боты на Python и AIOgram. Более прикладной курс для тех, кто уже освоил базу. Здесь учат настраивать окружение, использовать IDE (VS Code), использоваться GIT, работать с API, деплоить код и т.д. Как раз тот уровень, который будет достаточен для инфраструктурщиков.

#обучение #бесплатно #python
​​Не написал ни одной заметки про очень популярный инструмент тестирования пропускной способности сети — iperf. Сам я им пользуюсь регулярно, а начал ещё со времен работы в тех. поддержке Windows.

Iperf мультиплатформенная программа, работающая в режиме клиент-сервер. Вы можете запустить сервер на Linux, а тестировать скорость, подключаясь к нему с Windows или Android. И наоборот. Достаточно при запуске выбрать режим, в котором он будет работать: сервер или клиент.

Ставим iperf на сервер:
# apt install iperf3
Запускаем в режиме сервера:
# iperf3 -s
По умолчанию он слушает TCP порт 5201. Не забудьте открыть его на firewall.

Ставим на Windows систему:
> winget install iperf3
Открываем приложение iPerf Network Speed Test Benchmark и, указав ip адрес сервера, запускаем тест. Это GUI приложение на базе iperf от стороннего разработчика. За оригинальной версией надо отправиться на официальный сайт и скачать консольную версию.

Распаковываем архив. Там будет приложение. Запускаем cmd, переходим в эту директорию и запускаем тестирование:
> iperf3 -c 1.1.1.1
Всю информацию о процессе и результатах увидите тут же в консоли. Причём всё это в очень наглядном виде.

Результат работы Iperf очень удобно использовать для мониторинга. Она умеет выводить результат работы в файл, в том числе в json формате.
> iperf3 -c 94.142.141.246 --logfile log.txt -J
Дальше результат можно распарсить любой системой мониторинга.

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

Ещё немного полезных параметров iperf. По умолчанию, тестирование длится 10 секунд. Можно увеличить этот интервал, указав его в секундах:
> iperf3 -c 94.142.141.246 -t 60
Можно вместо времени указать число байт, которое будет передано. Пример для 100 мегабайт:
> iperf3 -c 94.142.141.246 -n 100M
Можно запустить проверку в несколько потоков для лучшей утилизации канала:
> iperf3 -c 94.142.141.246 -P 4

Ключи можно комбинировать. Они одни и те же для всех платформ. Точно так же можно поднять сервер на Windows и подключаться к нему линуксом.

А вы чем обычно тестируете скорость между хостами? Я кроме iperf ничего и не знаю, не использую.

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

#network
​​Ко мне обратились представители веб панели управления Ispmanager с предложением прорекламировать их продукт. И дали для этого готовый текст. Я хорошо знаю эту панель, часто приходилось использовать, поэтому решил своими словами сам про него написать. Я редко это делаю, но если продукт хороший и сам я им пользовался, то считаю, что такая реклама будет полезнее, чем типичный маркетинговый текст.

Ispmanager — панель управления Linux сервером для решения следующих задач:

Хостинг сайтов по принципу shared хостинга
Управление СУБД
Почтовый сервер
Управление TLS сертификатами, в том числе от Let's Encrypt
DNS сервер
FTP сервер, менеджер файлов через браузер
Создание и управление бэкапами
Настройка Firewall, управление, обновление системы

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

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

❗️Следить за развитием продукта и узнавать о новинках можно в официальном telegram канале. Обновления регулярно выходят. Например, недавно появилась миграция почты, а на конец года анонсировано внедрение WAF.

#реклама #webserver
​​При работе в консоли Linux ты обычно набираешь не полный путь к программе, а только её название. Оболочка сама находит нужный бинарник. Но это случается не всегда. Такая же проблема часто возникает в скриптах, когда ты не указываешь полный путь к программе, а потом в каких-то условиях этот скрипт не работает. Чаще всего в cron ты увидишь эту проблему. Либо когда работаешь в консоли под root, пишешь, к примеру, скрипт для Zabbix. Он будет запускаться под его пользователем и не сработает так, как ты ожидаешь. Поиск полного пути к программе происходит на основе переменной PATH.

Посмотреть значение этой переменной можно, набрав в консоли:
# echo $PATH
# printenv PATH
У разных пользователей содержимое часто бывает разное. Тут важно знать один простой принцип поиска программы — идёт последовательное чтение путей. Какой первый будет найден, такой и будет использоваться. То есть, если у вас есть одна и та же программа в разных директориях, запустится та, что первая будет найдена при последовательном чтении PATH.

Наглядный пример разных PATH — root и обычный пользователь. Я установил консольную игру и не смог быстро запустить её в консоли root. У этого пользователя в PATH не прописан каталог с играми, а вот у обычного пользователя прописан.

Часто проблемы с PATH возникают с установкой java. Надо вручную прописать директорию, куда она установилась. То же самое с разными версиями Python, PHP. Зачастую приходится вручную разбираться с тем, что и где установлено, и что будет запускаться по умолчанию.

Временно добавить директорию в PATH можно в консоли. Например, ~/bin. Я люблю сюда складывать свои скрипты.
# export PATH=$PATH:~/bin
Если надо установить пользователю на постоянку, то можно добавить эту команду в его файл ~/.bashrc. Пишем новую строку в самый конец.

Если надо изменить глобально PATH для всех пользователей, то можно добавить директорию в системный файл. В Debian это /etc/profile. (в Ubuntu - /etc/environment) Там в самом начале видно, почему у root и остальных пользователей есть различия.

if [ "$(id -u)" -eq 0 ]; then
 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
 PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

Соответственно, новую директорию надо добавлять сюда. Если не хочется менять системный файл, то добавьте свои изменения в отдельный файл и положите в /etc/profile.d. Файл должен быть с расширением *.sh.

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

В systemd юните тоже можно явно прописать PATH через параметр Environment в разделе [Service]. А посмотреть, какой PATH будет использовать Systemd по умолчанию можно так:
# systemd-path search-binaries

Я лично привык в скриптах, cron, systemd писать всегда полные пути к бинарникам. Мне кажется, так проще, нежели постоянно следить за PATH. И ещё маленькая подсказка. Если вашей программы нет в PATH, не обязательно её туда добавлять или менять переменную. Просто добавьте символьную ссылку в /usr/local/bin или любую другую стандартную директорию.

#linux #terminal
​​Хочу обратить ваше внимание на бесплатную (open source) систему мониторинга Checkmk, про которую я когда-то давно уже рассказывал. Я её в то время развернул и попробовал в деле. В целом, впечатления положительные. Система функциональная и простая в настройке. Создана на базе Nagios.

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

Настраивается всё это относительно просто. У Checkmk есть готовые правила для автообнаружения портов сетевых устройств через snmp. Некоторые трудности могут возникнуть, если захотите получить осмысленные названия портов, которые сами установите. В этом случае придётся через поле Alias или Description проименовать порты на сетевом устройстве, а потом настроить правила автозамены имён в сетевых устройствах на основе этой информации. В этом может помочь статья, где по шагам описано, что надо сделать для своих именований портов.

В общем случае настройка мониторинга по snmp не требует каких-то особых усилий. Включаете на свитче snmp, добавляете хост в Checkmk, указываете настройки доступа к устройству и сохраняете. Процесс подробно описан в документации.

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

#мониторинг #network
​​У меня очень старая привычка использовать утилиту host для простых DNS запросов. Появилась она у меня со времени первой настройки почтового сервера на Linux. Я где-то увидел, что с её помощью можно быстро проверить обратную DNS запись (PTR) для IP адреса, которая необходима для корректной работы почтового сервера на внешнем IP адресе.

# host 77.88.8.1
1.8.88.77.in-addr.arpa domain name pointer secondary.dns.yandex.ru.

Посмотрели обратную DNS запись для IP адреса 77.88.8.1. Соответственно, точно так же можно увидеть IP адрес для A записи.

# host secondary.dns.yandex.ru
secondary.dns.yandex.ru has address 77.88.8.1

На мой взгляд это самый простой и быстрый способ решить задачу. Я вообще не видел, чтобы кто-то использовал host. Обычно для резолва делают ping. Но он покажет только один IP адрес, а не все сразу. А их может быть много.

# host dns.google
dns.google has address 8.8.4.4
dns.google has address 8.8.8.8
dns.google has IPv6 address 2001:4860:4860::8844
dns.google has IPv6 address 2001:4860:4860::8888

А в то же время:

# ping dns.google
PING dns.google (8.8.4.4) 56(84) bytes of data.
64 bytes from dns.google (8.8.4.4): icmp_seq=1 ttl=59 time=16.4 ms

Для более подробных DNS запросов удобно использовать dig, но этой утилиты чаще всего нет в базовых версиях популярных дистрибутивов. Надо отдельно ставить пакет bind-utils:

# apt install bind9-utils
# dnf install bind-utils

Про dig я рассказывал в отдельной заметке, поэтому не буду повторяться. В целом, host может полностью заменить dig, если посмотреть его ключи. Он умеет почти всё то же самое, только вывод покороче. Но у меня так сложилось, что простые запросы делаю через host, а если надо более внимательно посмотреть на разные dns записи, в том числе с указанием разных dns серверов, использую dig. Его ключи как-то быстрее запомнились, особенно выбор dns сервера через @:

# dig @77.88.8.1 ya.ru MX

Посмотрели MX запись для домена ya.ru через DNS сервер 77.88.8.1. Такие проверки постоянно делаю, когда меняю NS сервера у какого-то домена. Особенно, если их там указано несколько и у разных провайдеров. Убеждаюсь, что все корректно сохранили у себя нужную зону.

Раз уж затронул тему проверки DNS записей, поделюсь ссылкой на полезный онлайн сервис для тех же задач: digwebinterface.com. Это прям линуксовый dig со всеми ключами и выводом, только через браузер.

#dns #terminal
Написал запланированную статью по настройке интеграции Lynis и Zabbix для оповещения о результатах аудита безопасности системы:

Мониторинг безопасности сервера с помощью Lynis и Zabbix
⇨ https://serveradmin.ru/monitoring-bezopasnosti-servera-s-pomoshhyu-lynis-i-zabbix

В статье постарался максимально подробно раскрыть тему. Приложил весь необходимый материал: скрипт, шаблон.

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

Мне больше нравится, когда всё реализовано с помощью инструментов сервера мониторинга, а все настройки хранятся в шаблоне и управляются макросами. Но для данной задачи я не смог придумать более красивой реализации.

#zabbix #security
​​Чем отличаются утилиты traceroute, tracert и tracepath? Какую и когда лучше использовать? Заметка будет об этом.

Думаю, все системные администраторы Linux знают команду traceroute. Она очень похожа на аналогичную программу в Windows — tracert. Я часто их путаю и в разных системах набираю разные названия, потом исправляю. С их помощью можно быстро увидеть маршрут следования пакета до конечного хоста. При этом отображаются сведения обо всех промежуточных маршрутизаторах, если там специально не настроена блокировка ответов на подобные запросы.

Отмечу, что хоть traceroute и tracert похожи, но у них есть существенное отличие. Traceroute по умолчанию использует UDP протокол, а tracert — ICMP. При этом в первой можно выбирать протокол, во второй нет. Вот пример запуска traceroute с разными протоколами (UDP и ICMP):

# traceroute mail.ru
# traceroute -I mail.ru

Лично у меня результаты разные, потому что разные протоколы могут иметь разные маршруты, либо где-то по пути следования какой-то из протоколов может быть заблокирован. Чаще это случается с UDP. ICMP обычно не блокируют.

Утилита tracepath очень похожа на traceroute в плане базовой трассировки. Она тоже использует UDP протокол. Но у неё есть важное и полезное отличие. Она сразу же показывает MTU пакетов. И если этот размер где-то по пути меняется, отображает это. На картинке снизу будет пример трассировки с изменением MTU по пути следования пакета. Я специально его уменьшил в VPN туннеле, чтобы показать работу tracepath. Иногда эта информация очень нужна и tracepath помогает быстро увидеть проблему. Возьмите на вооружение.

#network
​​Представляю вашему вниманию очень старую, прямо таки олдскульную программу для анализа нагрузки Linux сервера — nmon. Она периодически всплывает в обсуждениях, рекомендациях. Я почему-то был уверен, что писал о ней. Но поиск по каналу неумолим — ни одного упоминания в заметках. Хотя программа известная, удобная и актуальная по сей день. Не заброшена, развивается, есть в репозиториях популярных дистрибутивов.

# apt install nmon

По своей сути nmon — консольная программа, объединяющая частичную функциональность top, iostat, bmon и других подобных утилит. Удобство nmon в первую очередь в том, что вы можете вывести на экран только те метрики, которые вам нужны. К примеру, нагрузку на CPU и Disk, а остальное проигнорировать. Работает это про принципу виджетов, только в данном случае вся информация отображается в консоли. Вы можете собрать интересующий вас дашборд под конкретную задачу.

Nmon умеет показывать:
Использование CPU, в том числе в виде псевдографика
Использование оперативной памяти и swap
Использование сети
Нагрузку на диски
Статистику ядра
Частоту ядер CPU
Информацию о NFS подключении (I/O)
Список процессов с информацией об использовании ресурсов каждым
И некоторые другие менее значимые метрики.

Помимо работы в режиме реального времени, nmon умеет работать в фоне и собирать информацию в csv файл по заданным параметрам. Например, в течении часа с записью метрик каждую минуту. Смотреть собранную статистику можно через браузер с помощью nmonchart, которую написал этот же разработчик. Nmonchart анализирует csv файл и генерирует на его основе html страницы, которые можно посмотреть браузером. Вот пример подобного отчёта.

Помимо nmon, у автора есть более современная утилита njmon, которая делает всё то же самое, только умеет выгружать данные в json формате. Потом их легко скормить любой современной time-series db. Например, InfluxDB, точно так же, как я это делал с glances.

Помимо всего прочего, для nmon есть конвертер cvs файлов в json, экспортёр данных в InfluxDB, дашборд для Grafana, чтобы вывести метрики из InfluxDB. В общем, полный набор. Всё это собрано на отдельной странице.

Может возникнуть вопрос, а зачем всё это надо? Можно же просто развернуть мониторинг и пользоваться. Мне лично не надо, но вот буквально недавно мне написал человек и предложил работу. Надо было разобраться в их инфраструктуре из трех железных серверов и набора виртуалок, которые их не устраивали по производительности. Надо было сделать анализ и предложить модернизацию. Я сразу же спросил, есть ли мониторинг. Его не было вообще никакого. Я отказался, так как нет свободного времени на эту задачу. Но если бы согласился, то первичный анализ нагрузки пришлось бы делать какими-то подобными утилитами. А потом уже проектировать полноценный мониторинг. В малом и среднем бизнесе отсутствие мониторинга — обычное дело. Я постоянно с этим сталкиваюсь.

#monitoring #terminal #perfomance
🔝Традиционный топ постов за прошедший месяц. Как обычно, больше всего просмотров у мемасиков, обсуждений у Микротик, пересылок и сохранений у bash скриптов и бесплатных курсов.

Мне интересно, эти bash скрипты кто-то использует или просто сохраняет? А обучение проходят или тоже на когда-нибудь потом откладывают, как я? Обычно то, что не надо прямо сейчас в работе, откладывается на вечное потом.

📌 Больше всего просмотров:
◽️Мемчик с блатным шансоном для админа (10250)
◽️Песни группы the CI/CD band (10073)
◽️Настройка заголовков в веб сервере (9500)

📌 Больше всего комментариев:
◽️Новый Mikrotik L009UiGS-2HaxD-IN (239)
◽️Мем с удалением базы данных (84)
◽️Записи в DNS для почтового сервера (65)

📌 Больше всего пересылок:
◽️Скрипт topdiskconsumer (634)
◽️Бесплатные курсы по Linux на stepik.org (448)
◽️Тюнинг сетевого стека (365)

📌 Больше всего реакций:
◽️История убийства БД по совету ChatGPT (168)
◽️Скрипт topdiskconsumer (151)
◽️Шаринг консоли с помощью screen (145)
◽️Программа SophiApp для быстрой настройки Windows (132)

#топ
На днях история с неработающим OpenVPN наделала шума. Я регулярно новости не читаю, поэтому даже не сразу понял, о чём идёт речь, когда разные люди стали писать по этой теме. Для тех, кто не в курсе, о чём идёт речь, немного ссылок по теме: habr, securitylab, tproger.

У меня много где используется OpenVPN. Это основная технология для построения VPN, которую я использую, как на работе, так и в личных целях. Когда узнал про блокировки, проверил у себя, проблем не нашлось. К серверу в USA без проблем подключился. Позже вечером заметил, что дома не работает обход блокировок. Там Mikrotik подключается по TCP. Подключение не работало, хотя по UDP из этой же квартиры без проблем подключался. Подумал, что вот оно, я тоже столкнулся. Но на самом деле нет. Пошёл на сервер и увидел, что TCP туннель пару дней назад упал по какой-то причине. Буду с этим отдельно разбираться. По факту всё работает, даже через упоминаемую в новостях Yota.

Что это на самом деле было — не знаю. Может банальный сбой, может тестирование блокировки openvpn, может тестирование чего-то другого, что косвенно задело vpn. Информации нет, так что остаётся только гадать на кофейной гуще. Больше всего похоже на разовую акцию для информационного шума. Уж больно лихо все СМИ подхватили эту тему.

Я думаю, что блокировка VPN за пределы РФ, как и многих популярных иностранных сервисов типа youtube, в итоге состоится. Нарастающая логика происходящий событий такова. Это вопрос времени. Внутри РФ, думаю, что VPN работать будет. Возможно, нас ещё раньше на той стороне заблокируют. Там же свобода и рыночная экономика.

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

Как минимум у нас останется вариант с маскировкой под HTTPS. Можно будет поднять OpenConnect или SSTP, который умеет поднимать тот же SoftEther VPN. Их трафик трудноотличим от обычного web трафика. Для тех, кому жизненно важно подстраховаться, рекомендую поднять что-то подобное на случай реальной блокировки.

Много раз слышал, что плохо детектится и блокируется технология Shadowsocks. Легко и быстро настраивается, клиенты есть под все платформы. На её базе работает Outline VPN, Shadowsocks for Windows и многие другие программы. Легко гуглятся, пока гугл не заблокирован. Думаю, до него не дойдёт, хотя кто знает.

Ещё один вариант — завернуть весь VPN трафик в Udp2raw-tunnel. Он умеет маскировать трафик, добавляя фейковые заголовки пакетам. Если блокировка идёт без разбора содержимого пакетов, то может помочь.

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

#vpn
Нашёл забавное видео, где на всем известный ролик с испанцем, наложили титры с шуткой над коллегой линуксоидом. Он в качестве текстового редактора использовал nano, и ему сделали алиас alias nano='vi'. Дальше обыгрывается эта тема:

Linux User Plays Cruelest Joke EVER on Coworker
https://www.youtube.com/watch?v=AaESGrylj7k

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

📌 Мой босс случайно заметил, что директор по маркетингу ушла и не заблокировала комп. Он добавил правило автозамены в Outlook, которое меняет "ты" (you) на "я" (me). Прошёл месяц, прежде чем она поняла, что каждая фраза "спасибо вам" (thank you) заменялась на "спасибо мне" (thank me).

🔥На одном из серверов я сделал алиас ls='cat /dev/urandom'. Видели бы вы выражение лица моего коллеги, когда он запустил ls.

📌 Ему повезло, что редактор не заменили на ed. (p.s. попробуйте выйти из него 😀)

📌 Было время, когда мои публичные скрипты использовали nano для того, чтобы ввести сообщение для git commit. Мне было лень их править, я добавил в публичное репо алиас на vi. А локально у меня был алиас с vi на vim. Один коллега, который был новичком, захотел себе такие же настройки терминала, как у меня. Скопировал себе все конфиги из репы, в том числе и с алиасом. Мне об этом не сказал. Два дня промучался, прежде чем пришёл ко мне с вопросом, что происходит.

💡 Однажды я сделал нечто подобное. Добавил симлинк на vi, сделал алиас для apt install nano, который запускал подготовленный скрипт с echo, а в фоне устанавливал vi.

📌 Однажды я подшутил над коллегой. Он работал допоздна. Перед уходом я заменил утилиту more программой, которая по мере чтения текста начинала перемещать буквы со своего места в нижнюю часть экрана, пока не образовывалась огромная куча букв. Он в панике позвонил мне, так как думал, что систему взломали. Эх, какие это были деньки. Старые добрые терминалы 80-х.

#юмор #видео
🎓 Немного необычная тема для моего канала, хотя косвенно я иногда её затрагиваю. Предлагаю вашему вниманию бесплатный курс на stepik.org на тему написания IT статей:

Статьи для IT: как объяснять и распространять значимые идеи
https://stepik.org/course/101672/

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

На курсе люди учат грамотно писать статьи. Уклон там в IT, но в целом база даётся для любого направления. Я самоучка в этой области, но частично применял те вещи, что рассказываются. Например, я всегда изучал предметную область, собирал проблемы по теме и вопросы, на которые будут ответы в статье, готовил контент план, подбирал хороший заголовок, продумывал оглавление. Все большие статьи на сайте, которые набрали более 100 тыс. просмотров, готовились очень серьёзно. Чтобы получить хорошие охваты, надо чётко понимать проблему, рассмотреть все сопутствующие подпроблемы и предложить решение. На подготовку уходило больше времени, чем на непосредственно написание текста. Когда у тебя всё подготовлено: заголовок, структура, вопросы, лаба, написать сам текст наиболее простая задача, чисто техническая, не творческая.

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

#обучение #бесплатно
​​Последнее время стала актуальна тема VPN. Расскажу вам по этому поводу про интересный open source проект — Nebula. Авторы называют его scalable overlay networking tool, что для меня затруднительно однозначно перевести. В общем случае это программа для построения связной виртуальной сети поверх физической, в том числе и через интернет.

Термин overlay обычно применяют для больших виртуальных сетей, построенный как бы над обычными. Есть физические сети underlay и виртуальные overlay. В Nebula используется агент, который устанавливается на каждый хост и в зависимости от своих настроек, подключается к тем или иным хостам. Соединения образуются между хостами напрямую (p2p), то есть получается mesh сеть. В этом основное отличие от традиционных VPN сетей, где используются туннели между шлюзами, а все остальные хосты общаются друг с другом посредством шлюзов.

Nebula разработали в Slack и потом выложили в открытый доступ. Авторы инструмента открыли свою компанию, saas сервис, занимаются внедрением и поддержкой. У них, кстати, есть бесплатный тарифный план.

Развернуть Nebula у себя не представляет большой сложности. Простейшая инструкция для запуска есть в самом репозитории. Аутентификация хостов происходит посредством сертификатов, как в openvpn. Так что придётся поднять свой CA и выпускать для клиентов сертификаты. У Nebula всё это есть в комплекте, так что не придётся прибегать к сторонним инструментам.

Пример выпуска CA:
# ./nebula-cert ca -name "Myorganization, Inc"
Сертификата для клиента:
# ./nebula-cert sign -name "laptop" -ip "192.168.100.2/24" \
-groups "laptop,home,ssh"

Тут сразу идёт функциональная привязка к выпущенному сертификату, так что продумать структуру сети нужно до выпуска сертификатов. Потом клиенту передаётся конфиг с сертификатом, где указан IP адрес одного или группы хостов, которые выступают в роли управляющего сервера. Точкой обмена трафиком они не будут. В зависимости от своих настроек, хосты обмениваются трафиком между собой напрямую. Даже если оба клиента находятся за NAT, управляющая нода соединит их напрямую посредством технологии UDP hole punching.

Если я правильно понял принцип работы Nebula, VPN туннели поднимаются динамически между хостами в случае необходимости. При этом используется своя технология на базе обмена ключами Диффи-Хеллмана (ECDH) и шифре AES-256-GCM. То есть это не надстройка над каким-нибудь wireguard или чем-то аналогичным. И всё это создано для построения очень больших сетей из сотен и тысяч хостов.

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

⇨ Сайт / Исходники / Документация / Обзор

#vpn
​​Решил немного развить тему с развлечением в терминале. Сегодня как раз подходящий день для этого. Ниже будет подборка приколов и просто забавных приложений для терминала. А вечером подборка игр.

Cmatrix. Визитная карточка фильма Матрица — набор символов, падающих как водопад, сверху вниз. Эта утилита воспроизводит его у вас в терминале. Живёт в стандартных репах:
# apt install cmatrix
Почитайте man, там много ключей для видоизменения эффектов. Выглядит прикольно, хоть и не так, как в кино. Посмотреть.

MapSCII. Карта мира в терминале. Написана на JS, поэтому живёт в репах nodejs.
# npm install -g mapscii
В убунте через snap можно поставить:
# snap install mapscii
Выглядит необычно и подробно для такого рода программы. Вплоть до отдельных улиц городов можно увидеть. Посмотреть.

Aafire. Разжигает терминальный ASCII огонь. Живёт в репах:
# apt install libaa-bin
Поджигаем:
# aafire
После этого огня у меня все символы в терминале становятся серыми. Не понял, это так задумано или какой-то глюк. Релогин сбрасывает эффект.

Toilet. Преобразует введённые слова в большие символы ASCII. Совершенно не понятно, почему у утилиты такое странное название. Живёт в репах:
# apt install toilet
# toilet туалет
Посмотреть.

Cowsay. С помощью этой утилиты вы можете попросить ASCII корову сказать любую фразу:
# apt install cowsay
# /usr/games/cowsay Hi
Посмотреть. Похожие программы: cowthink, ponysay.

Cal. Терминальный календарь. Рассказывал о нём отдельно. Полноценный календарь. В rpm дистрибутивах пакет называется cal, в deb — ncal:
# apt install ncal
Утилита без всяких шуток может быть полезной. В Centos вроде бы в базовой установке была. Даже устанавливать не надо было. Посмотреть месяц назад, текущий и будущий:
# cal -A 1 -B 1

Rev. Отображает введённый текст в обратном порядке. В Debian присутствует по умолчанию в минимальной установке.
# rev
serveradmin
nimdarevres

Sl. Паровозик в терминале. Писал о нём не так давно.
# apt install sl
По полям, по полям, ASCII-паровозик едет к нам... (поймут только отцы)

Рождественская ёлочка от хостера scaleway в виде bash скрипта. Посмотреть.

Пасхалка в apt-get и apt:
# apt moo

Пасхалка в who:
# who is GOD?

#linux #terminal
​​Подборка консольных игр в Linux. Начнём с классики. Интересно, с этими играми знакомы те, кому сейчас до 25 лет? Я в эти игры играл ещё на приставках, типа денди, и на отдельных карманных устройствах на батарейках с монохромным дисплеем.

Тетрис. Его придумал Алексей Леонидович Пажитнов в 1984 году, работавший в Вычислительном центре Академии наук СССР.
# apt install bastet
Не удержался, и сыграл раунд после написания этих строк 😎

Pacman. Классический pacman. В обычной консоли выглядит немного узко, но играбельно.
# apt install pacman4console
Напомню, кто не знает. Задача скушать все звёздочки и не встретиться с другими движущимися символами.

Snake. Классическая змейка.
# apt install nsnake
Стартовая скорость очень низкая. Захотелось на кнопку Turbo нажать. Когда я программировал что-то подобное в школе на turbo basic, это ускоряло исполнение кода примерно в два раза. Очень любил эту игру на телефоне Nokia 3310.

📌 Переходим к менее массовым играм.

2048. Математическая игра, где сдвигая плитки нужно добиться их объединения с увеличением номинала.
# apt install 2048
Немного непривычно и непонятно. Пришлось пару раз возвращаться к правилам, пока не понял, как тут играть.

Moon Buggy. Очень простая и залипательная игрушка, где особо не надо думать. Вы управляете машинкой, которая едет по луне. Нужно перепрыгивать ямы разной длины.
# apt install moon-buggy

Ascii-patrol. Очень навороченная и красивая консольная игра. Автор упаковал её в snap, предлагает устанавливать оттуда:
# snap install ascii-patrol
Либо можете в html версию поиграть.

Space Invader. Вам надо управлять корабликом, стрелять по вражеским кораблям и уворачиваться от их выстрелов.
# apt install ninvaders

ZAngband. Терминальная rpg. Очень навороченная, где куча классов, специальностей. Надо качать персонажа, улучшать навыки. Лазить по подземелью, собирать предметы, улучшать оружие и т.д.
# apt install zangband (нужен non-free репозиторй)
В универе сокурсник постоянно играл в эту игру на парах по Linux и программированию. Я не мог понять, как эта консольная штука может быть игрой, да ещё интересной.

BSD games. Куча старых консольных игр, портированных из BSD систем.
# apt install bsdgames
Там есть аналог змейки - worm, аналог тетриса - tetris-bsd, монополия - monop, пасьянс - canfield, нарды - backgammon и другие.

Sudoku. Классическая Судоку, которую часто печатают во всяких сборниках и журналах.
# apt install sudoku

#игра #подборка
​​В операционной системе на базе Linux существуют два разных способа назначения прав доступа к файлам. Не все начинающие администраторы об этом знают. Недавно один читатель попросил помочь настроить права доступа к файловой шаре samba. Он описал задачу на основе того, как привык раздавать права на директории в Windows. В Linux у него не получалось настроить так же в рамках стандартных прав доступа через локальных пользователей, групп и утилит chown, chmod.

В Linux, помимо основных прав доступа, которые вы видите при просмотре директории с помощью ls -l, существуют дополнительные списки доступа ACL (access control list). Они позволяют очень гибко управлять доступом. По умолчанию инструменты для управления этими списками в минимальной установке Debian отсутствуют. Устанавливаются так:
# apt install acl

После установки данного пакета у вас появятся две основные утилиты, которые будут нужны для управления доступом: getfacl - посмотреть права доступа, setfacl - установить права доступа.

Я не буду сейчас подробно расписывать как всем этим пользоваться. В интернете масса руководств. Просто знайте, что в Linux правами на файлы и директории можно управлять практически точно так же, как в домене Windows. Есть нюансы и различия, но в базовых случаях несущественные. Если добавить Linux сервер с Samba и ACL в домен, то через систему Windows можно будет управлять доступом к файлами через её свойства папки с галочками и списками групп.

Пример того, как всё это может выглядеть, есть в моей статье:
https://serveradmin.ru/nastroyka-samba-s-integratsiey-v-ad/
Она очень старая и скорее всего уже неактуальна в технической части. Я сам давно файловые сервера в Linux в домене не настраивал и не эксплуатировал. Но общее понимание картины можно получить. Соответственно, вместо Microsoft AD может выступать любой другой LDAP каталог пользователей и групп.

Подскажите, кто скрещивает Linux с Windows. На текущий момент нет проблем с добавлением Linux в AD под управлением свежих Windows Server? Интеграция упростилась или усложнилась? Давно уже не слежу за этой темой. Я где-то видел новость, что Ubuntu для платных подписчиков выпустила какой-то свой инструмент для упрощения работы в AD.

#linux #fileserver