LINUX.ORG.RU

Избранные сообщения mord0d

Настраиваем Asterisk на собственном VPS для голосовых/видео вызовов и текстовых сообщений

Статьи — Администрирование

Ниже — руководство + полный установочный скрипт для Debian 12, собирающий Asterisk 22.5.1 из исходников, включающий TLS + SRTP, 3 абонента (1001–1003), блокировку анонимов, короткие сообщения (SIP MESSAGE) для Linphone, и видеозвонки по H.264.

Скрипт автоматически учитывает NAT: если задать локальную сеть — пропишет external_* и local_net; если не задавать — считает, что сервер не за NAT.

( читать дальше... )

 , ,

unclestephen
()

ssh jump сервер, ограничить хосты для пользователя

Форум — Admin

Задача простая: организовать для вендера канал до оборудования внутри сети, ssh -J вполне годится но есть 2 момента:
1. Ограничить вход на сам jump сервер через ssh (решил установкой оболочки /bin/false)
2. Ограничить число хостов на которые может «прагать» оперделенный пользователь (и чтобы других пользователей не затронуло)
Такое реально реализовать средствами ssh?

 ,

Kolins
()

Автономность в отпуске. Велосипед. KDE Neon.

Галерея — Рабочие места

Просто от всех подальше максимально. Но без электричества скучно и нужно.

 ,

delidov_george
()

Тихо и незаметно вышел tird v0.20.0 - инструмент для шифрования файлов и сокрытия зашифрованных данных

Форум — Security

tird - инструмент для шифрования файлов, сфокусированный на минимизации метаданных и сокрытии зашифрованных данных. Предназначен для использования на современных персональных компьютерах. Написан на Python. Код открыт под 0BSD.

Для шифрования используется ChaCha20-IETF.

Для key stretching и выведения ключей используется Argon2id с 1 GiB памяти и с 4 проходами.

Для аутентификации используется keyed BLAKE2b-512.

Входными ключевыми материалами могут быть:

  • Пароли;
  • Ключевые файлы (в тоом числе блочные устройства и целые директории).

Зашифрованные данные имеют формат PURB (padded uniform random blob) - неотличимы от случайных, имеют рандомизировавнный размер.

Минимизация метаданных:

  • PURB формат - невозможно доказать наличие зашифрованных данных без ключей, неизвестны параметры и структура файла, скрыт настоящий размер полезной нагрузки.
  • Путь к выходному файлу не зависит от пути к входному, не имеет стандартного расширения, определяется пользователем.
  • Интерфейс в виде диалога с юзером, основанный на подсказках. CLI параметры не протекают в shell history.
  • Опционально: данные можно встроить в другой файл и устройство, сделав их недетектируемыми, а их наличие недоказуемым.

Построение скрытой ФС, управляемой пользователем:

Зашифрованные данные можно записывать в контейнеры, указав начальную позицию (отступ в байтах от начала контейнера). В качестве контейнеров могут выступать специально сгенерированные файлы, съемные устройства (пустые или полупустые диски), разделы с LUKS. Дело в том, что загловок FAT32/exFAT ФС расположен в начале раздела, а контент записываемых файлов пишется от начала в конец последовательно. Таким образом, на свежеотформатированной ФС можно сделать отступ от начала и записывать наши данные, запомним их расположение для последующего извлечения.

Далее: смотрите домашнюю страницу https://github.com/hakavlad/tird

Вопросы приветствуются.

 steganography, tird,

hakavlad
()

SAS - задвоились диски.

Форум — Admin

Добрый день!

Господа, куда копать?

Есть мат. плата supermicro X11, в ней LSI контроллер и встроенный может какой в мат плату.

Сборщики поставили три SAS SSD и в системе оно задвоилось…

# lsblk |grep 3.5T
sdc                              8:32   0   3.5T  0 disk 
sdd                              8:48   0   3.5T  0 disk 
sde                              8:64   0   3.5T  0 disk 
sdf                              8:80   0   3.5T  0 disk 
sdg                              8:96   0   3.5T  0 disk 
sdh                              8:112  0   3.5T  0 disk
multipath -ll

Полагаю, что к одному диску может как то два пути положилось? Но контроллер по идее один и вывод пуст.

 , , ,

DALDON
()

Выделить access логи от одного ip в отдельный файл в nginx

Форум — Admin

Есть nginx.x86_64 1:1.14.1-9.0.1.module+el8.0.0+5347+9282027e Основной конфиг по умолчанию. Для веб сервера заведен отдельный файл с конфигом в /etc/nginx/conf.d/ со следующим содержимым:

upstream websrv{ 
    ip_hash;
    server 127.0.0.1:8002;
}
server {.
    listen 80; server_name wserv.domain;
    # Перенаправление на HTTPS
    location / { return 301 https://$server_name$request_uri;
    }
}
server {
    listen 443 ssl; server_name wserv.domain;
    # Путь к сертификату и ключу
    ssl_certificate /etc/nginx/ssl/wserv.crt;
    ssl_certificate_key /etc/nginx/ssl/wserv.key;

    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log main;
...
}

С одного IP адреса идет большое количество запросов и хотелось бы access_log с него выделить в отдельный файл. В этом случае основной файл access_log был бы существенно меньше и было бы намного проще его анализировать.

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

Прмеры которые пробовал(ip адреса здесь только для примера): В файле /etc/nginx/nginx.conf в блок http

map $remote_addr $log_file {
    default "main";      # Для всех остальных IP
    10.10.10.17 "group1";  # 10.10.10.17 → access_group1.log
    10.10.10.18 "group1";  # 10.10.10.18 → access_group1.log
    10.10.10.19 "group2";  # 10.10.10.19 → access_group2.log
}

В файле /etc/nginx/conf.d/wsrv.conf в блок server

# Лог для остальных IP
access_log /var/log/nginx/access.log combined if=$log_file=main;

# Лог для 10.10.10.17 и 10.10.10.18
access_log /var/log/nginx/access_group1.log combined if=$log_file=group1;

# Лог для 10.10.10.19
access_log /var/log/nginx/access_group2.log combined if=$log_file=group2;

 , ,

Sinclair
()

miniaudio 0.11.22

Новости — Разработка
miniaudio 0.11.22
Группа Разработка

24 февраля, после более года разработки, состоялся выпуск 0.11.22 кроссплатформенной библиотеки захвата и воспроизведения звука miniaudio, написанной на языке C и распространяемой, как общественное достояние. miniaudio работает на всех основных настольных и мобильных платформах без сторонних зависимостей.

( читать дальше... )

>>> Список изменений на GitHub

 , , miniaudio,

dataman
()

XDG Base Directory Specification, даже когда софт не хочет.

Галерея — Скриншоты

Довольно давно меня подзадолбала мусорка в домашней директории, постепенно получилось заставить почти весь софт гадить в строго определенное место, а именно в .config, .cache и .local

Для особо одаренных (Skype, Dropbox) пришлось слегка поизвращаться, если для Skype достаточно было изменить параметр запуска на

skype --dbpath=$HOME/.local/share/skype
, то для Dropbox уже пришлось городить костыль в виде

HOME=$HOME/.local/share/dropbox /usr/bin/dropbox start -i 2>&1

Остальной софт относительно разумен, где через alias, где через export, удалось обяснить, куда складировать свое добро. Ниже листинг .bashrc и .profile, авось кому пригодится.

( Листинг )

 

gwinn
()

Уведомление о подключении по sftp/scp

Форум — Admin

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

Имеется скрипт-уведомлялка, который говорит Telegram-боту отправить сообщение определённому абоненту при авторизации на сервере по SSH.
Лежит скрипт по пути /etc/profile.d/script.sh, выглядит следующим образом:

#!/bin/bash
BOT_TOKEN=token
CHAT_ID=id
USER_IP=$(echo $SSH_CLIENT | awk '{ print $1}')
BOT_MESSAGE="🔐 $(hostname): $(whoami) is authorized from $USER_IP"
curl -X POST -d "text=$BOT_MESSAGE" 'https://api.telegram.org/bot'$BOT_TOKEN'/sendMessage?chat_id='$CHAT_ID'' &>/dev/null

Проблема заключается в том, что работает он только при подключении по, непосредственно, интерактивному SSH. Если подключиться через условный WinSCP - уведомления не будет, как и если просто скопировать файл на сервер через scp.

Интуиция подсказывает, что заковыка связана с понятиями «интерактивности/неинтерактивности» устанавливаемой сессии, и, соответственно, в местоположении скрипта, но вот знаний, чтобы понять, как описанную проблему исправить – не хватает.

Подскажите, пожалуйста, что именно нужно сделать, чтобы получать желаемое уведомление при любого типа подключении на условный «22 порт», вне зависимости от того, было ли это SSH или SFTP?

 , , ,

takamushi
()

обработка запросов с одного IP, даже если один в ожидание ответа

Форум — General

Не могу сделать балансировку если запрос приходить в одного IP-адреса. Проблема такая: заходить первый запрос, но отработка этого запроса занимает 30 секунд, из-за API. nginx не должен закрыть этот запрос, он должен ждать пока сервер не ответить. в это время заходить еще по очереди 10 запросов с того же IP-адреса, но их обработка не занимает больше 0,5 секунды. но из-за того что там один запрос все еще обрабатывается, остальные 10 запросов ждет этого.

Я подняла nginx с двумя серверами. Хочу сделать так, если первый сервер все еще обрабатывает запрос, остальные запросы были всегда направлены на второй. Когда первый сервер закончить обработку и вернет ответ, этот сервер станет доступным и можно будет туда отправлять запросы. Вроде сделала, когда с двух IP-адрес приходить запросы, тогда вроде все срабатывает. Но когда с одного IP-адреса приходить, тогда застывает, пока не обработает запрос с задержкой. Прошу помочь!

Это конфиг с nginx:

events {
    worker_connections 1024;
}
http {    
    client_max_body_size 100M;
    client_body_buffer_size 100M;
    # limit_conn_zone $binary_remote_addr zone=halyk_bank_identification:10m;

    include       mime.types;
    default_type  application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
		              ' $request_length $upstream_addr $upstream_response_time';

    access_log /etc/nginx/access.log main;
    error_log /etc/nginx/error.log debug;

    upstream identification {
        least_conn;
        
        server identification_actions-1:5017 max_fails=1 fail_timeout=10s;
        server identification_actions-2:5017 max_fails=1 fail_timeout=10s;
    }

    server {
        listen 80;
        server_name localhost;

        access_log /etc/nginx/access.log main;

        location /webhook {

            proxy_connect_timeout 3s;
            proxy_read_timeout 10s;

            proxy_pass http://identification;
            
            proxy_set_header Content-Type application/json;

            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Content-Length $content_length;
            proxy_set_header X-Server-Name $host;

            proxy_pass_request_body on;
            access_log /etc/nginx/webhook_access.log main;
        }

        location / {
            return 404;
        }
    }
}

 , , , ,

Zhako2506
()

Визуальные метки на полях

Форум — Development

Привет. Пользуюсь консольным nvim, на полях показывается номер строк. Есть такая хотелка: неким сочетанием подкрашивать background цифры на полях в цвет, который отличается от нормального, например в красный. Тем самым создавать визуальную метку подчеркивая некоторое важное место во время штудирования исходников. Я знаю про метки, на которые можно прыгать, но мне нужна именно визуальная метка, а не такая.

Можно ли вкрутить какой-то плагин?

Перемещено hobbit из general

 ,

kvpfs_2
()

Как в x11 забиндить Delete на Shift + BackSpace (или на Ctrl+H) глобально

Форум — Desktop

Кнопка Delete расположена в стороне от основных клавиш - приходится отрывать руки «фыва олдж», что бы её нажать. Хочется её перебиндить Delete на что-нибудь более доступное, например на Shift+Backspace или на Ctrl+H.

В man 7 xkeyboard-config решения не нашёл. Клавиатура не программируемая (не QMK/VIA).

Есть идеи?

 , ,

Harliff
()

reverse_proxy to nextcloud

Форум — Admin

Хочу перед клаудом поставить реверс прокси nginx. Соответственно прикрутить let’s encrypts на проксю, а трафик с прокси, так как nginx и клауд в одной LAN-сети, отправлять как proxy_pass http://192.168.0.21, но исходя из доки клауда, я понял что клауд не станет работать у себя на хосте по http, а будет толькоо по https. Получается придётся геморройничить с сертификатами и на проксе для клауда и на самом клауде? Подскажите, был ли у кого-нибудь подобный кейс или как упростить вариант с сертификатами…

 , ,

Shprot
()

Подскажите п-ста бесплатный графический редактор уровня ErWin для Linux.

Форум — Development

Нужно вот стало бесплатный редактор уровня ErWin для Linux. То есть чтобы можно было набросать большую ( 25-30 таблиц ) базу данных в графическом формате и с лёгкостью сконвертировать её в SQL-код или структуры БД.

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

 ,

adm-academic
()

Маршрутизация в ipsec strongswan

Форум — Admin

Доброго времени суток. Пытаюсь разобраться с strongswan. Есть виртуальный сервер с поднятым туннелем WireGuard до маршрутизатора за которым находится сеть 10.0.0.0/24. Из виртуального сервера я сеть 10.0.0.0/24 вижу, однако у меня есть устройства которые поднимают с виртуальным сервером ikev2 туннель получают виртуальные адреса 10.97.1.0/24 и попасть в сеть 10.0.0.0/24 не могут. tcpdump показывает что все пакеты касательно сети 10.0.0.0/24 от устройств ikev2 уходят по маршруту по умолчанию в интерфейс с интернетом. Покапался немного в мануалах, узнал что ipsec использует таблицу 220, добавил маршрут в эту таблицу, поведение осталось прежнее. Вроде ничего сложного здесь нет, но я где-то туплю и не могу разобраться как работает маршрутизация в ipsec, я читал про политики, но для клиентов у меня разрешено на 0.0.0.0/0. Подскажите, где я думаю не так, и где можно более развернуто найти материал на тему работы ipsec кроме wiki strongswan. Пинать можно, но не сильно, я слаб в этой теме, только учусь. Есть мысли сделать интерфейс VTI или XFRM но хотелось бы без них.

Накидал схемку для наглядности: https://imageup.ru/img20/4836245/diagramma-bez-nazvaniia.jpg

Конфигурация strongswan на виртуальном сервере

( читать дальше... )

Маршруты на виртуальном сервере:

( читать дальше... )

tcpdump при обращении к этой сети:

( читать дальше... )

P.S. AlmaLinux 9.4 с firewalld, могу выложить его конфиг, но там все примитивно.

 , , , ,

Shiroe
()

Newsraft 0.23

Новости — Open Source
Группа Open Source

Состоялся выпуск Newsraft 0.23, консольной программы для просмотра RSS-лент. Проект во многом вдохновлён Newsboat и пытается быть его облегчённым аналогом.

( читать дальше... )

>>> Подробности

 , , , ,

txgk
()

сбор общей схемы использования хранилищ на freebsd

Форум — Development

Время от времени хотелось чтоб был некий дамп схемы использования физических накопителей разными файловыми системами, чтобы не лазить отдельно по camcontrol devlist, gmirror/gmultipath/gpart, спискам монтирования и иногда sysctl. И чтобы этот дамп был пригоден для обычного diff между «было» и «теперь». Написал в итоге такую прогу, может кому пригодится или кто даст совет как поудобнее сделать её вывод чтобы было нагляднее кто за что отвечает. (только не так как geom -t который дублирует на каждого члена mirror/multipath всю вышележащую топологию)

исходник

Компилировать с -lgeom -lfcl

update 2023-12-05

как скомпилировать с нуля с черновой поддержкой zfs:

cd /tmp/
fetch https://dev.m1089.ru/fcl/files/fcl-20231205.tar.gz
tar xf fcl-20231205.tar.gz
cd fcl-20231205/DEV/src
./build.sh fcl
fetch https://dev.m1089.ru/freebsd-misc/files/storage-summary/storage-summary.c
cc storage-summary.c -DWITH_LIBZFS -DLIBZFS_HACK -I../include -L../lib -lgeom -lfcl -lzfs -lnvpair -o storage-summary

 , ,

firkax
()

Выбрать последний месяц состоящий из слов?

Форум — Development

Записи в таблице где месяцы написаны текстом: «январь» и т.д. Как выбрать из нескольких записей с одинаковыми другими столбцами ту которая будет самой поздней?

 

bad_master
()

NFS и SMB и права доступа?

Форум — Admin
Нужен совет как правильно настроить права доступа для каталога, который нужно расшарить в сеть по NFS и SMB протоколу, подключить его к Windows и Linux, так чтобы права на чтение и запись были и там и там... 

Допустим у меня есть база данных программы для заметок obsidian мне нужно расположить ее в каталоге на NAS и иметь к ней доступ из Windows и Linux. На сервере установлен truenas scale в нем расшариваю каталог /data

по протоколу SMB с дополнительными параметрами

force user=apps

force group=apps

На Linux машине примонтировал шару протоколом NFS прописав в файл /etc/fstab

192.168.1.226:/mnt/torrent/torrent/data       /tank/torrent/         nfs     rw,user,noauto      0       0

Создал группу apps с guid 568

sudo groupadd -g 568 apps

Добавил пользователя в группу apps

sudo usermod -aG apps user

В итоге

И при создании каталога из Windows он создается с правами

drwxrwxr-x 3 568 apps 3 окт 21 21:58 windows

А при создании каталога из Linux он создается с правами

drwxr-xr-x 3 user apps 3 окт 21 21:58 linux

При этом из Windows, я не имею прав на запись к каталогам которые созданы на Linux

А из Linux права на запись есть ко всем каталогам…

 , , , ,

MULT
()

intel VirtualHeads автонастройка

Форум — Desktop

Добавил себе Option "VirtualHeads" "2", перелогинился, выполнил

$ xrandr --addmode VIRTUAL1 1920x1080
$ xrandr --addmode VIRTUAL2 1920x1080
$ xrandr --output VIRTUAL1 --right-of eDP1
$ xrandr --output VIRTUAL2 --left-of eDP1

Ок, дисплеи появились, пользоваться можно, но на каждый addmode выскакивал вопрос что делать с новым монитором.

Что мне теперь в Xorg.conf накрутить чтобы не надо было каждый раз выполнять команды руками?

Я пробовал «наугад около навскидку нагугленного» вот так

Section "Monitor"
    Identifier "VIRTUAL1"
    Option "LeftOf" "eDP1"
#    Modeline "1920x1080_60.0"  148.35  1920 2008 2052 2200  1080 1084 1089 1125 +hsync +vsync
#     UseModes "1920x1080"
#    Modeline "1920x1080" +hsync -vsync
EndSection

И вот так

Section "Screen"
#    Monitor "VIRTUAL1"
    Identifier "VIRTUAL1"
    SubSection "Display"
        Modes "1920x1080"
    EndSubSection
EndSection

В том числе комбинации параметров из заремаренного. Увы вообще ничего не происходит(не считая syntax error, которые пояснять не надо)

 , , ,

Flotsky
()