ServerAdmin.ru
25.8K subscribers
199 photos
24 videos
7 files
2.4K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Если вам необходимо регулярно проверять хосты и сервисы на уязвимости, и не хочется колхозить различные проверки с помощью nmap и других сканеров, можете попробовать OpenVAS. Это Open Source проект.

https://github.com/atomicorp/gvm
https://github.com/atomicorp/openvas-docker
https://www.openvas.org/

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

Для установки есть свой репозиторий для rpm-based дистрибутивов. Попробовать проще всего, запустив openvas в docker.

docker run -d -p 443:443 --name openvas atomicorp/openvas

Далее идём в веб интерфейс, авторизуемся как admin / admin. Первым делом нужно добавить host в разделе Configuration -> Targets. Затем создать задачу в Scans -> Tasks. Теперь задачу можно запустить и посмотреть, как всё это работает. Настройка интуитивна, так что больших проблем возникнуть не должно.

После работы задачи, можно посмотреть отчёт. Ниже пример подобного отчёта при сканировании чистой системы Centos 8 с единственно открытым ssh портом.

#security #selfhosted
​​Я регулярно пользуюсь терминалом Windows. Решил его немного украсить. Результат можете посмотреть в прикреплённом изображении. Если хотите себе что-то подобное, то читайте дальше, как это сделать.

1️⃣ Идём в Microsoft Store и устанавливаем Windows Terminal.

2️⃣ Скачиваем и устанавливаем шрифты Nerd Fonts.
https://github.com/ryanoasis/nerd-fonts/releases
Качаем файл CascadiaCode.zip, распаковываем шрифты и устанавливаем. Запускаем Windows Terminal и устанавливаем шрифт CaskaydiaCove NF.

3️⃣ Открываем консоль PowerShell и устанавливаем модуль oh-my-posh:
Install-Module oh-my-posh -Scope CurrentUser
Что это такое, читаем на сайте: https://ohmyposh.dev
Сморим список всех доступных тем и выбираем ту, что понравится.
Get-PoshThemes
Я выбрал Aliens, устанавливаю её в текущий терминал и смотрю на неё.
Set-PoshPrompt -Theme Aliens
Если нравится, то ставлю ее на постоянку. Для этого запускаю редактор профиля:
code $PROFILE
И пишу в текстовый файл:
Import-Module oh-my-posh
Set-PoshPrompt -Theme Aliens
Перезапускаем терминал и проверяем новую тему оформления.

4️⃣ Устанавливаем значки иконок и раскраску консоли:
Install-Module -Name Terminal-Icons -Repository PSGallery
Испортируем модуль в консоль и проверяем работу:
Import-Module -Name Terminal-Icons
Некоторые иконки директорий и файлов должны получить уникальные изображения и подсветку. Если всё в порядке, добавляем модуль в профиль для автозагрузки:
code $PROFILE
Добавляем в конец:
Import-Module -Name Terminal-Icons

5️⃣ Пользуемся настроенной красотой.

Этот же самый профиль можно настроить и для WSL консоли.

#windows #terminal
​​Достаточно известная и функциональная программа для нагрузочного тестирования - k6. Проект open source, можно установить у себя. Если есть желание, покупается по схеме saas в облаке. K6 недавно вошёл в состав Grafana Labs. Так что теперь этот продукт станет суперсовременным и молодёжным. Есть интеграция с InfluxDB и Grafana.

https://k6.io
https://github.com/grafana/k6

Если только подыскиваете себе подобный инструмент, то стоит начать с k6. Ранее я уже описывал тулзы подобного рода: yandex.tank и artillery.io. Аrtillery тоже молодёжный - yaml конфиги, автоматизация и javascript в бэкенде. А у k6 - go, что выглядит привлекательнее, так как быстрее. Сами же тесты на javascript пишутся.

Поставить k6 проще простого. Для rpm и deb based дистрибутивов есть репозитории. А запустить можно и в docker. Готовим docker-compose.yaml:

version: '3.4'
services:
 k6:
  image: loadimpact/k6:latest
  command: run /test.js
  volumes:
   - ./test.js:/test.js

Пишем простой скрипт для теста. В течении 30 секунд в 10 потоков бомбим https://test.k6.io (не роняйте сайт своей школы или управы района)

import http from 'k6/http';
import { sleep } from 'k6';
export let options = {
 vus: 10,
 duration: '30s',
};
export default function () {
 http.get('https://test.k6.io');
 sleep(1);
}

Запускаем тест:

docker-compose up

Результат увидите тут же в консоли. Все остальные подробности в документации. Она там очень качественная, как и для всех продуктов Grafana Labs.

#нагрузочное_тестирование
​​У меня уже было много заметок про различные системы мониторинга (#мониторинг). Сегодня будет еще одна - Icinga. Это весьма зрелая и качественная система мониторинга, на которую стоит обратить внимание, если выбираете, на чём остановиться и еще не решили, что вам нужен Zabbix или Prometheus.

Изначально это был форк Nagios. Но со временем их пути сильно разошлись, так что можно считать Icinga самостоятельным продуктом. Причем качественным и полностью бесплатным:

https://icinga.com/
https://github.com/Icinga

Icinga полноценная система мониторинга, которая включает в себя:
- Автоматизацию мониторинга инфраструктуры, в том числе сетевой, в том числе с использованием иерархической распределенной структуры.
- Сбор метрик и логов.
- Аналитику.
- Оповещения.
- Отчёты.
- Визуализацию, в том числе с помощью дополнительных модулей для дашбордов.

В общем, там есть всё, что надо, для полноценного мониторинга. Данные может собирать как с помощью агентов, так и без них. Бэкенд написан на C++, веб интерфейс на php. В качестве БД поддерживает MySQL, Oracle Database, PostgreSQL.

Когда тестировал, очень понравился красивый, лакончиный, отызвчивый и шустрый веб интерфейс. Прям приятно по нему потыкать, все быстро открывается, логично распределено. Попробовать проще всего, развернув всё через docker-compose. Есть репозиторий:
https://github.com/lippserd/docker-compose-icinga
Там готовый compose файл, но есть ошибки в Dockerfile в /env/icingaweb2/. Рабочая версия файла будет такая:

FROM alpine/git
WORKDIR /
COPY icingadb-load-monitoring.patch .
RUN git clone https://github.com/Icinga/icingadb-web.git icingadb && \
cd icingadb && \
git checkout e6e5bb30d37eacaf5498f96412b4b5f400cc9309 && \
cd .. && \
git apply --directory icingadb icingadb-load-monitoring.patch

FROM icinga/icingaweb2:2.9
USER root
RUN rm -rf /usr/share/icingaweb2/modules/icingadb/*
USER www-data
COPY --from=0 /icingadb /usr/share/icingaweb2/modules/icingadb

Используйте эту репу только для тестов. Я не знаю, кто и зачем ее сделал и можно ли доверять всему. На постоянку лучше развернуть без докера.

После запуска всех контейнеров идите в веб интерфейс на порт 8080, учетка - icingaadmin / icinga.

Можете также публичное demo посмотреть:
https://icinga.com/demo/

#мониторинг #selfhosted
Очередная перегитлеровка. На этот раз речь пойдёт о Docker. Хипстеры взяли контейнеры, плотненько их забили по нодам кластера. Один из контейнеров вызвал kernel panic и всё упало.

Гитлер их разносит за то, что в прод тащат непроверенные контейнеры из docker hub, которые написали русские хакеры. За то, что там конструкции типа: curl | sudo bash, за то, что знают только то, что написано в статьях на hackernews и т.д.

Видео как бальзам на душу для тех, кто не любит Docker. Гитлер популярно объяснил, что с ним не так. Особенно доставила его фраза:

Isolation my ass!

и слова успокаивающей плачущую женщину:

Don't cry, you can run bash on Windows 10 now.

Юмор на 10 из 10, очень сочно.

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

#юмор #видео
​​В репозиториях популярных дистрибутивов живёт небольшая утилита exa, которая делает всё то же самое, что и ls, только красиво окрашивает вывод. В Debian/Ubuntu она в unstable репе. В rpm-based дистрах в федореном репозитории.

https://github.com/ogham/exa
https://the.exa.website/

Утилита состоит из одного бинарника, так что можно просто скачать и запустить. Есть поддержка git, так что можно увидеть статус (modified, Untracked) каждого файла.

Exa умеет делать древовидное отображение каталогов и файлов с возможностью ограничивать глубину. Например:

# exa --tree --level=2 /boot

Удобная и функциональная утилита. Можно просто заменить ls символьной ссылкой и пользоваться только exa. Работает так же быстро.

#terminal #утилита
​​Еще одна тематическая игра с уклоном в программирование - MHRD. Дизайн в стиле командной строки. Вы будете выполнять задачи инженера по железу. Вам надо создавать и программировать печатные платы.

https://store.steampowered.com/app/576030/MHRD/

У вас будет своя среда для разработки программного обеспечения. Пишите код на MHRD hardware design language. Конечная цель, как я понял - разработать полностью свой CPU.

Игра для тех, кто любит поработать после работы 😁 🤡 Русского языка нет.

Немного отзывов:

Если ты более-менее знаешь английский и случайно можешь в двоичную логику - в этой игре можно пропасть надолго. Очень. Первые 15 минут ты будешь страдать, но стоит смочь в NOT - и только голод (ну или смерть) вытащит тебя из этой игры.

Игра затягивает настолько, что на силу оторвался написать обзор.
Если (вдруг) вы подружились с логикой, то игра для вас! Хоть эта игра очень сильно ломает мозг, она утягивает в чёрную дыру. Готовьтесь, будет сложно даже лечь спать, не пройдя её.

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

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

#игра
В комментариях к одной из заметок как-то затронули тему ошибочного сноса прав доступа на файлы в Linux. Оказывается, есть очень простой и быстрый способ восстановить дефолтные права доступа для конкретного пакета, либо на все установленные в системе пакеты. Делается это стандартно с помощью rpm. Способ только для rpm-based дистрибутивов.

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

Восстановить права доступа пакета или всех пакетов разом. И то же самое для владельца.
rpm --setperms package
for p in $(rpm -qa); do rpm --setperms $p; done
rpm --setugids package
for p in $(rpm -qa); do rpm --setugids $p; done

Установка пакета package.rpm:
rpm -ivh package.rpm

Обновление пакета package.rpm
rpm -Uvh package.rpm

Удаление пакета package. И его же удаление, но без зависимостей.
rpm -ev package
rpm -ev --nodeps --nosuggest package

Список всех установленных пакетов:
rpm -qa

Список файлов, установленных пакетом:
rpm -ql package

Определение пакета, которому принадлежит файл:
rpm -qf /path/to/file

Список конфигурационных файлов пакета:
rpm -qc package

Список зависимостей пакета:
rpm -qpR package

Посмотреть содержимое пакета package.rpm:
rpm2cpio package.rpm | cpio -t

Извлечение содержимого пакета package.rpm в текущую директорию. Будет воссоздана вся структура каталогов, которые используются в пакете.
rpm2cpio package.rpm | cpio -idv

#terminal #bash
​​Программу radmin я знаю очень давно. Мне даже кажется, что она уже существовала в тот момент, когда я начал подрабатывать системным администратором в институте (2005 г., подумать только, у меня стаж уже 16 лет 😱). Только недавно узнал, что существует бесплатная программа Radmin VPN для объединения компьютеров в одну локальную сеть по vpn. Это аналог программы Tailscale, про которую недавно рассказывал.

https://www.radmin-vpn.com/ru/

Radmin VPN – бесплатная и простая в использовании программа для создания виртуальных частных сетей (VPN). Программа позволяет пользователям устанавливать безопасное и надежное соединение между компьютерами через Интернет, как если бы они были соединены через локальную сеть.

Добавить тут особо нечего. Ставится и работает просто. Обычный установщик Windows. Другие системы не поддерживаются. Это большой минус. А плюс в том, что программа полностью бесплатная, без каких-либо ограничений или платных фич. Я так понял, что создана она для рекламы и продвижения другого коммерческого продукта этой компании - Radmin.

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

#vpn
​​Вновь возвращаюсь к теме чатов. Ещё пара вариантов для рассмотрения осталась. Сегодня поговорим о Matrix Synapse. Это не совсем чат-сервер, скорее платформа для организации чатов. Расскажу подробнее.

Matrix - это открытый протокол для децентрализованной коммуникации. Он может быть реализован в различных серверах и мессенджерах - https://matrix.org.

Synapse - локальный сервер, который работает на протоколе matrix, обеспечивает возможность подключения и общения клиентов. Написан на Python - https://matrix.org/docs/projects/server/synapse. Можно быстро запустить в docker или воспользоваться публичным сервером.

Для данной связки можно использовать любой клиент. Наиболее популярным и зрелым является клиент Riot, который в настоящий момент переименован в Element. Я пробовал именно его, когда тестировал данную связку. Он есть как web клиент, desktop и android приложение - https://element.io. К сожалению, под капотом там javascript и какой-нибудь современный фреймворк (не уточнял, какой именно), так что большого смысла использовать именно приложение нет. Оно точно так же выглядит, как и страница в браузере.

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

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

Будет неплохо, если протокол Matrix продолжит свое развитие и завоюет популярность, как в свое время irc или xmpp. Пользователи от этого только выиграют. Сейчас по факту почти все пользуются закрытыми проколами и проприетарным ПО в этой области. Если честно, я не уверен, что у Matrix что-то сильно популярное выйдет. Мне кажется, сфера общения в виде мессенджеров очень лакомая для коммерческих организаций. Они будут максимально развивать и наращивать бесплатный функционал, лишь бы вы пользовались их продуктами и сливали информацию о себе. Open Source продукту будет трудно с ними конкурировать.

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

#chat #selfhosted
​​Есть отличный инструмент для хранения любого вида информации, в том числе и по сетевому оборудованию - Exel. У меня целая куча всевозможных таблиц с информацией. Но если вам нужно что-то более удобное для учёта и инвентаризации всего, что связано с сетями и информации об IP адресах, предлагаю обратить внимание на NetBox.

Netbox - это приложение для infrastructure resource modeling (IRM). Написано командой сетевых инженеров DigitalOcean специально для системных администраторов. Изначально использовалось для управления внутренней инфраструктурой, потом было опубликовано в open source.

Полезные ссылки:
https://netbox.readthedocs.io/
https://github.com/netbox-community/netbox

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

Netbox построен на базе Django (Python), Nginx или Apache, PostgreSQL в качестве СУБД. Посмотреть и попробовать очень просто. Есть полнофункциональное demo - https://demo.netbox.dev.

Если будете ставить себе, есть подробная документация с видео по установке и связке всех компонентов. Если вы devops, у вас причёсанная борода, вы пьете крафтовый кофе, и вы выше всей этой ручной возни с пакетами и настройками, то для вас есть готовый docker-compose:
https://github.com/netbox-community/netbox-docker

#network #управление #ITSM #IPAM
​​Прочитал на stackoverflow ответ от DBA Postgresql на тему размещения субд в контейнерах. Ответу уже 3 года, но с тех пор принципиально ничего не изменилось. Кратко смысл такой:

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

Эти 2 условия практически полностью нивелируют удобства Docker. Большого смысла запускать СУБД в контейнере нет. Речь идёт о нагруженной базе данных в проде.

Есть большой опыт использования небольших баз данных и кластеров postgresql в kubernetes у компании Zalando. Я делал отдельную заметку по их выступлению с этой темой на конференции. Там идея такая - большие нагруженные базы в контейнерах не запускают. А вот небольшие базы отдельных микросервисов запускают в kubernetes. Это позволяет организовать удобное централизованное управление и деплой новых баз для различных сервисов и команд.

У меня была еще одна заметка на тему базы данных в Docker. Там я делаю выжимку из статьи компании Percona о её собственных тестах производительности БД в контейнерах. Там вывод такой же, как и в у DBA со stackoverflow. Нужно обязательно использовать сеть хоста, чтобы не было просадки производительности.

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

У меня в практике как то раз был случай, когда база данных Mysql, запущенная в контейнере, просто исчезла. Разработчики запустили один проект заказчику полностью в контейнерах. В какой-то момент замапленная директория с файлами БД оказалась полностью пустой. Был такой древний баг. Его уже давно пофиксили.

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

#postgresql #mysql #docker
​​Давно не было заметок про полезные утилиты для бэкапа. Решил это исправить. Рассказываю про Butterfly Backup. Это небольшая консольная обёртка над rsync, написанная на python. Идея её в том, что она использует основное преимущество rsync - скорость сравнения и копирования информации. А так же добавляет некоторую гибкость, которой изначально в rsync нет. То есть расширяет его функционал.

https://github.com/MatteoGuadrini/Butterfly-Backup
https://butterfly-backup.readthedocs.io/en/latest/

Butterfly Backup избавляет от необходимости писать собственную bash обвязку вокруг rsync для организации инкрементных или разностных бэкапов. Так же упрощает восстановление и просмотр содержимого бэкапов. Для удобства можно подготовить готовый конфиг.

Основные возможности:
Поддерживаемые бэкапы: Full, Incremental, Differential, Mirror.
Использование центрального сервера для хранения бэкапов разных клиентов.
Детальный просмотр содержимого отдельных бэкапов.
Бэкап всей системы, а так же ее восстановление на другое железо или VM.
Принцип снятия данных agent-less, по протоколу rsync или ssh.

Для работы BB нужен Python3. Далее достаточно скопировать репозиторий и запустить скрипт установки:
git clone https://github.com/MatteoGuadrini/Butterfly-Backup.git
cd Butterfly-Backup
sudo python3 setup.py

После этого копируем rsa ключи, которые предварительно создали, на удаленный host, чтобы иметь к нему доступ:
bb config --deploy host1

Дальше запускаем простой бэкап:
bb backup --computer host1 --destination /mnt/backup --data System --type Unix

У bb есть преднастройки для типовых бэкапов трёх типов систем - Unix, Windows, MacOS. Если указать после ключа data тип данных и далее тип системы, то будет забэкаплено всё, что относится к этому типу. В моем примере это системные директории.

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

#backup
​​Помните, я уже писал о проблеме Centos 7 и сертификатов Let's Encrypt? Не буду сильно повторяться, так как все подробности по ссылке. Кратко скажу, что из-за устаревшей версии Openssl, в Centos 7 не будет поддержки нового корневого сертификата, а старый протухает 30 сентября.

Вариантов решения этой проблемы несколько:

1️⃣ Обновить версию openssl на 1.1.1 или выше. Теоретически это может привести к каким-то проблемам с зависимостями, так как этой версии нет в базовых репах. Ставить придётся вручную.

2️⃣ Заблокировать протухающий сертификат. Сделать это можно так:
# trust dump --filter "pkcs11:id=%c4%a7%b1%a4%7b%2c%71%fa%db%e1%4b%90%75%ff%c4%15%60%85%89%10" | openssl x509 | tee /etc/pki/ca-trust/source/blacklist/DST-Root-CA-X3.pem
# update-ca-trust extract

Перед этим на всякий случай сохраните текущую цепочку CA сертификатов:
# cp -i /etc/pki/tls/certs/ca-bundle.crt ~/ca-bundle.crt-backup

3️⃣ Выпускать новые сертификаты с использованием другой цепочки CA:
# certbot renew --preferred-chain "ISRG Root X1"
Данная возможность появилась в версии certbot 1.6.0.

Подробности всей этой истории по ссылке:
https://blog.devgenius.io/rhel-centos-7-fix-for-lets-encrypt-change-8af2de587fe4
Я там новость подсмотрел.

#centos
Есть небольшая утилита для организации vpn подключения через ssh - sshuttle. Она есть в стандартных репозиториях популярных дистрибутивов. В Centos живет в репозитории epel. Также присутствует в pip, так как написана на python.

https://github.com/sshuttle/sshuttle
https://sshuttle.readthedocs.io/en/stable/usage.html

Установка:
# dnf install sshuttle
# apt install sshuttle
# pip install sshuttle

Её удобство в простоте и функциональности. VPN соединение организуется поверх SSH. Покажу на примерах:
# sshuttle -r user@1.2.3.4 0/0

Выражение 0/0 эквивалентно маске 0.0.0.0/0, то есть весь трафик отправляем в этот туннель. Будьте аккуратны, когда начнёте тестировать. Вас отключит от текущего ssh соединения. Можете сразу же проверить, через какой ip вы выходите в интернет:
# curl ifconfig.me/ip

Должны увидеть внешний ip ssh сервера, к которому подключились. С помощью sshuttle удобно подключаться к jump host и дальше на целевое устройство. Допустим, на какое-то устройство или сервер (ip - 2.2.2.2) можно подключиться только через конкретный сервер (ip - 3.3.3.3). Используем для подключения sshuttle.
# sshuttle -r user@3.3.3.3 2.2.2.2/32

После подобного подключения у вас будет создан маршрут к 2.2.2.2/32 через ssh сервер 3.3.3.3. Дальше можете со своей машины подключиться к 2.2.2.2.

Во время тестов я столкнулся с ошибкой: fatal: server died with error code 255. Подключение по ssh осуществлялось, а потом sshuttle падал. Решил вот так:

# sshuttle -r user@1.2.3.4 -x 1.2.3.4 0/0

Если используется нестандартный ssh порт, то указать его следует так:

# sshuttle -r user@1.2.3.4:22334 0/0

Для использования ключа при ssh подключении, добавьте следующие опции:

# sshuttle -r user@1.2.3.4 0/0 --ssh-cmd "ssh -i ~/.ssh/id_rsa"

Если что-то пойдёт не так, включите подробное логировние через ключ -vvvv. Увидите, какие правила sshuttle добавляет в firewall и как прописывает маршруты. Там никакой магии, всё наглядно.

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

#vpn #ssh
​​На днях слушал вебинар, где в том числе разобрали порядок поиска и выполнения команд в интерпретаторе bash. Я вспомнил, как сам в свое время разбирался в этой теме, пытаясь понять, почему команды выполняются в неочевидном для меня порядке. Решил законспектировать этот момент и поделиться с вами.

Итак, после ввода в терминал команды, происходит следующее:
1️⃣ Проверяются алиасы. Если команда будет там найдена, то поиск остановится и она исполнится. Проверить свои алиасы можно в консоли с помощью команды:
# alias
Кстати, алиас ls там скорее всего будет в таком виде:
alias ls='ls --color=auto'
То есть выполнится не просто бинарник /usr/bin/ls, а именно указанный алиас с ключами.
2️⃣ Далее команда проверяется, встроена в ли она в оболочку, или нет. Если встроена, то выполнится именно она, а опять же не бинарник. Пример встроенных программ - echo, pwd и т.д.
# type echo
echo is a shell builtin
Что интересно, есть и бинарник echo, но если вы в консоли bash явно не укажете путь к нему /usr/bin/echo, выполнится именно встроенная в оболочку программа. Они на самом деле разные. У них даже ключи немного отличаются.
3️⃣ Только теперь идёт поиск бинарника в директориях, определённых в $PATH, причем не абы как, а по порядку следования этих директорий в переменной слева направо.
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Я в свое время именно с этим разбирался, так как не мог понять, почему выполняется один из двух бинарников с одинаковыми именами, лежащие в разных директориях.

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

#bash #terminal
​​Число компаний, которые переходят в онлайн растет с каждым годом, и всё больше умных устройств оказывается в сети. Именно поэтому профессия системного администратора становится всё более востребованной, что подтверждает рост зарплаты и количество открытых вакансий.

Более того, системный администратор имеет мощный потенциал для развития: он может стать DevOps-инженером, системным архитектором или СТО (техническим директором).

Получить реальный опыт администрирования и освоить продвинутые инструменты можно на курсе «Системный администратор» от SkillFactory. Курс на 80% состоит из практики и отработки полученных знаний на практических задачах, максимально приближенных к реальным — что позволит сразу погрузиться в профессию и выйти на рынок подготовленным специалистом. 

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

❗️Оставь заявку с промокодом СЕРВЕР и получи скидку 45% на обучениеhttps://clc.to/k0RHyQ
Забавное видео про IT инженера на удалёнке. Можно смотреть без перевода, если не понимаете на слух английский. С субтитрами вообще всё понятно будет.

Мне особенно понравилось оснащение рабочего места. Перематывал, ставил на паузу и внимательно всё разглядывал. Очень круто сделано. Тоже так хочу. Но пока до hi-tech руки не доходят. С деревяшками бы в новом доме разобраться, которые за год подорожали в 2-3 раза и стали стоить дороже, чем hi-tech оборудование 😱 Дерево - новая нефть. Буду теперь себя богачом ощущать в деревянной избушке 🏡

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

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

#юмор
​​Опять возвращаюсь к теме протухшего корневого сертификата Let's Encrypt и Centos 7. Писал об этом на днях. Делать самим ничего не надо. Один из способов, который я предложил - удалить протухший сертификат вручную. Делать этого теперь не надо, так как вчера вышло обновление пакета ca-certificates для Centos 7. Там этот сертификат уже удалён.

Лучше поздно, чем никогда. Но еще лучше, если бы они пораньше это обновление выпустили. Я уже вручную удалил, где вспомнил, что тема актуальна. А это практически все сервера со стандартным Bitrixenv, которое до сих пор на базе Centos 7 работает. И поддержка Let's Encrypt там встроена и активно используется.

#centos #webserver
После поста о сборе средств для Семаева Кирилла, мне периодически пишут люди и спрашивают, как и что там с Кириллом, доходят ли деньги и т.д. Сам я не в курсе, так как у меня нет постоянного контакта ни с ним, ни с его родными. Это была моя личная инициатива о соборе средств. Чтобы было, что отвечать по теме, спросил у Анны, как там дела.

Кирилл сейчас на очередной реабилитации в мед. центре, так что новостей особо нет. С ним всё в порядке, состояние нормальное, ни лучше, ни хуже. Деньги тратятся на реабилитационные процедуры и на бытовые нужды. Помощь доходит до адресата.

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

У меня всё по теме. Удачи вам в делах и не болеть.
​​📌 Хочу вас познакомить с двумя интересными и полезными утилитами для просмотра занятого места на диске. Первая из них - duf (https://github.com/muesli/duf). Написана на гошечке, работает шустро. По дефолту показывает удобный табличный вид смонтированных устройств, разделяя локальные хранилища, сетевые и специальные, типа /dev, /run и т.д.

Из других полезных возможностей:
- раскрашенный вывод
- настраиваемая сортировка и фильтрация вывода
- вывод результата в json формате

Есть паркет под все популярные системы, в том числе windows. Ставим на centos:
# rpm -ivh https://github.com/muesli/duf/releases/download/v0.6.2/duf_0.6.2_linux_amd64.rpm

Пример использования:
# duf --only local --sort size
Вывод только локальных хранилищ с сортировкой по размеру.

📌 Вторая утилита - dust (https://github.com/bootandy/dust). Написана на rust (du + rust = dust). Умеет отображать древовидную структуру каталогов с указанием занимаемого места каждой ветви дерева. Я не видел утилиты, которая бы так же быстро и просто могла сразу показать, кто и где занял место на диске. Несомненно, есть ncdu, но у неё другой принцип отображения информации. Где-то удобнее, а где-то нет.

Dust представляет из себя одиночный бинарник, так что никаких пакетов нет. Качаем и запускаем:
# wget https://github.com/bootandy/dust/releases/download/v0.7.5/dust-v0.7.5-x86_64-unknown-linux-gnu.tar.gz
# tar xzvf dust-v0.7.5-x86_64-unknown-linux-gnu.tar.gz
# cd dust-v0.7.5-x86_64-unknown-linux-gnu/
# ./dust / -d 3
Посмотрели размер директорий, начиная с корня, с ограничением глубины в 3.

#terminal #утилиты