Автоматический обход блокировок

Описание работы программы для автоматического обхода блокировок в интернете, код программы лежит на репозитории antiblock.

Хаб про UNIX-подобные операционные системы

Описание работы программы для автоматического обхода блокировок в интернете, код программы лежит на репозитории antiblock.



Не судите строго, это моя первая статья, наверное если бы я был гуру Nginx и "Линуха", то скорее всего боли и страданий бы не было.
С чего все началось?
Одним днем мне понадобилось реализовать довольно не тривиальную задачу:
Есть множество сервисов с которых нужно собирать данные для обработки и дальнейшей аналитики, модуль который это все собирает может быть установлен на множество серверов (пока 40, но в горизонте года это 1000), но хочется чтобы все обращения от этих серверов шли на один ip , а с него уже распределялись в зависимости от типа запроса или конечной точки обращения. Условно мы обращаемся к серваку 100.1.2.101 по порту 8080 и просим от него данные о всех домах на определенной территории ,он в свою очередь по заданному сценарию коннектится к определенному proxy (Допустим squid, он нужен так как некоторые api залочены по ip) и через него получает данные из конечного api.
P.S. Данные нельзя хранить на промежуточном сервере, так как они слишком часто обновляются :(
В итоге я решил эту задачу разделить на несколько этапов одна из них это распределение нагрузки...

В сети огромное количество мануалов по созданию отказоустойчивых групп доступности AlwaysON Microsoft SQL Server посредством Windows Server Failover Cluster. Но что делать, если экземпляры Microsoft SQL Server развёрнуты на Linux, а очень хочется создать отказоустойчивые группы доступности AlwaysON? В русскоязычном сегменте не нашёл внятных мануалов, посвящённых этому вопросу. Решил написать гайд. Сразу скажу, гайд в некоторых местах будет очень подробный и разжёвыванием банальных вещей может раздражать опытных системных администраторов, однако, как показывает практика, людей которым хотелось бы, чтобы он был ещё подробнее куда больше, чем тех, кому эта подробность не по нраву. Тут мы затронем и вопросы оптимизации производительности, которые актуальны для наверно самого популярного прикладного применения Microsoft SQL Server в России — хранения информационных баз 1С. На самом деле данная задача не особо сложная, но важна к освящению.

Всем привет!
Совсем недавно в ядре линукс была обнаружена критичная уязвимость, позволяющая повышать привилегии до уровня root. Она получила идентификатор CVE-2023-0386 и затронула версии ядра до 6.2. В интернете уже есть несколько доступных PoC:
https://github.com/CKevens/CVE-2023-0386
https://github.com/xkaneiki/CVE-2023-0386
В этой статье я хотел рассмотреть принцип работы данной уязвимости и возможные варианты ее обнаружения.

Что ж. Я таки запишу это.
Всё началось с того, что я уже около двадцати лет пользуюсь такими ништяками, как Total Commander с заточенными плагинами, настройками, выученными хот-кеями и прочим фаршем, AIMP с лаконичным, но наглядным скином, кастомными PotPlayer, IrfanView, Notepad++, Process Explorer... И всё это приправлено ...
Так, мне нужен хот-кей для сохранения снимка активного монитора.
И это всё было приправлено вымученной Виндой: панель управления в стиле Windows 10; файервол в стиле Windows 10; антивирус в стиле Windows 10; произвольное включение сразу после перехода в спящий режим (даже с запретом на подобные таймеры) и т.д. Не исключаю, однако, что я излишне придираюсь.

Запускаем свой сервер мгновенных сообщений на docker-compose. Просто ставить, легко обновлять. Сервер - открытый, клиент не хуже telegram, signal, whatsapp, а местами и лучше. Пример настройки matrix.org с Преферансом и куртизанками для типовой организации.
Надёжная от прослушки связь теперь общедоступна. Ура товарищи!

Как настроить DWM для простого использования? Как настроить систему для DWM и других WM? Как сконфигурировать SlStatus? Я расскажу все тут четко и понятно

Глубокое понимание внутреннего устройства DRBD позволяет более тонко настраивать работу системы и правильно планировать ресурсы. К счастью, у команды DRBD уже есть отличная документация, которая довольно подробно разбирает эту тему. Мы опирались на нее в своей работе, и решили перевести и выложить в открытом доступе 17-ю главу — как удобную шпаргалку по внутреннему устройству DRBD. Так что это не обычная статья, а перевод части официальной документации (исходная нумерация разделов сохранена).
В этой главе представлена информация о внутренних алгоритмах и структурах DRBD. Она довольно подробно рассматривает внутреннюю работу DRBD, но делает это не настолько глубоко, чтобы служить справочником для разработчиков. Для этой цели рекомендуем обратиться к материалам, перечисленным в разделе Publications, и, естественно, к комментариям в исходном коде DRBD.
Давно, когда мне было 4-5 лет, бабушка разрешила пользоваться ее компьютером (стааарым, очень). Я так был рад, ведь мог теперь в него играть. Ну и началось. Вирусняки, неподдерживаемые файлы и т. д., и т. п. После, в доме появился Mac Mini 2010 года (мы с отцом хотим из него NAS сделать). Меня за него посадил папа с такой фразой: «Вот тебе Scratch, делай».
Предполагается, что для настройки WireGuard сервера, нужно вручную сгенерировать ключи, выбрать подсеть и задать ещё несколько параметров. Потом для каждого клиента также генерировать ключи, присваивать IP адрес и компоновать это всё в конфиг, чтобы было удобно импортировать на клиенте.
Но если клиентов много и нужно время от времени их добавлять и удалять, то становится сложнее за ними уследить. Да и каждый раз генерировать вручную ключи и выбирать IP не очень удобно.
Задачу автоматизации этих действий можно решить с помощью специальных программ. Каждое представленное тут решение я поднимал у себя на виртуальном сервере, попробовал в действии и написал краткий обзор с их возможностями, минусами и подводными камнями.


В первой части были рассмотрены системные настройки масштабирования, предоставляемые встроенными утилитами, и набор возможностей отличается кардинально. Почему? Потому что в Linux нет единого API для работы с масштабированием, каждое окружение конфигурирует по своему и каждый UI-toolkit определяет их по своему, в итоге шанс того, что что-то где-то будет отображаться криво очень велик.
В этой статье мы рассмотрим то, как определить коэффициенты масштабирования для X11 приложения самостоятельно.

В любой организации имеются ролевые почтовые адреса (типа info@company.com или order@company.com) с которыми коллективно работает группа сотрудников . В некоторых почтовых системах (как например MS Exhange), поддержка таких адресов уже зашита в логику программного обеспечения. В других случаях приходится самим подбирать различные технические подходы. Давайте рассмотрим их подробнее.

Привет, Хабр!
Технология eBPF становится все более популярной и используются во многих приложениях для Linux. В нашей статье Анализ и обнаружение Dirty Pipe мы коснулись темы eBPF и как он может помочь при обнаружении эксплуатации уязвимостей ядра. Но инструмент с такими возможностями непременно заинтересует и злоумышленников. В этой статье мы рассмотрим, каким образом атакующие могут использовать eBPF и как можно их обнаружить.
Для загрузки eBPF модуля необходимы права root или привилегии CAP_BPF. Поэтому в основном злоумышленники используют данные программы для закрепления или сокрытия вредоносного ПО в системе. Для этого используются различные наборы инструментов, основанных на eBPF. В данной статье мы рассмотрим известные вредоносные eBPF инструменты и возможные способы детектирования.
В открытом доступе есть различное вредоносное ПО, основанное на eBPF, мы выбрали наиболее многофункциональные:
https://github.com/Gui774ume/ebpfkit
https://github.com/pathtofile/bad-bpf
https://github.com/krisnova/boopkit
https://github.com/h3xduck/TripleCross
Данные инструменты имеют множество различных функций, которые вы бы вряд ли хотели увидеть у себя в инфраструктуре. Их возможности могут вас удивить, так как они могут:

Как правило, при покупке материнской платы для микрокомпьютера типа Raspberry или Jetson в документации есть распиновка. Распиновка показывает как связаны физические пины платы с пинами процессора. Однако, мало в какой документации найдётся описание связи между виртуальными пинами системы и физическими пинами платы. Постараемся в этом разобраться на примере микрокомпьютера Jetson Nano от Nvidia.

Идея довольно проста - принять файл в качестве аргумента, открыть его, занести в буфер по частям и вывести на стандартный вывод. Утилита cat также оснащена различными флагами опций, которые позволяют пользователю манипулировать буфером перед его отправкой на стандартный вывод.

Как обычно пишут сервер, если не особо заботиться производительности? Программа запускается, затем начинает принимать входящие соединения от клиентов и для каждого клиента запускает новый поток, который занимается обслуживанием этого клиента. Если вы используете какой-нибудь, прости господи, Spring или Flask или там Poco, то он что-такое внутри себя и делает - разве что потоки можно переиспользовать, то есть брать из некого пула. Это всё довольно удобно, но не слишком эффективно. Скорее всего, ваши потоки, обслуживающие клиентов, живут недолго и большую часть времени ожидают либо получения данных от клиента, либо отправки их клиенту - то есть ждут возвращения системных вызовов. Создание потока ОС - довольно дорогая операция, как и переключение контекста между потоками ОС. Если вы хотите уметь обслуживать много клиентов эффективно, надо придумать что-то другое. Например, коллбеки. Но это довольно неудобно.