Предыдущая часть по установке базовых программ находится тут.
Я обычный пользователь, которому надо не так уж и много. Однако то, чем пользуются другие, довольно часто меня просто поражает. Я о таких программах даже и не слышал. Я не знаю насколько вообще эта тема востребована, но я сюда на всякий случай выложу установку тех программ, которые я видел за последнее время на этом форуме, но под другие дистрибутивы.
Установка dns-firewall
Фильтрующий DNS прокси сервер для iptables
Смотрим версию https://github.com/nthuemmel/dns-firewall-rust/releases
Скачиваем и устанавливаем (на примере версии 1.2.3):textwget -O /tmp/dns-firewall.deb https://github.com/nthuemmel/dns-firewall-rust/releases/download/v1.2.3/dns-firewall_1.2.3-1_amd64.deb && sudo apt install /tmp/dns-firewall.debУстановка мессенджера MAX
Внимание! После установки ЭТО занимает почти 2 Гигабайта!!! места на жёстком диске.Установка MAX
Ключ:textcurl -fsSL https://download.max.ru/linux/deb/public.asc | sudo gpg --dearmor -o /usr/share/keyrings/max.gpgРепозиторий:
textecho -e "Types: deb\nURIs: https://download.max.ru/linux/deb\nSuites: stable\nComponents: main\nSigned-By: /usr/share/keyrings/max.gpg " | sudo tee /etc/apt/sources.list.d/max.sourcesОбновление кеша:
textsudo aptitude updateУстановка:
textsudo aptitude install maxИзоляция через Firejail - рекомендуемый способ
Т.к. приложение потенциально небезопасно, то запускать его нужно в изоляции. Для этого есть два способа - через FireJail и через создание полноценного контейнера systemd-nspawn. Здесь описан первый способ.
Обратите внимание, что после этой настройки файлы в MAX можно будет отправлять только если они находятся вне перечисленных ниже подкаталогов домашней директории пользователя (documents, pictures и т.д.) !
Для начала ставим сам Firejail - песочницу для приложений:textsudo aptitude install firejailВключаем доступность сети для FireJail.
Для этого отредактируем файл firejail.config:textsudo nano /etc/firejail/firejail.configраскомментируем строку:
textnetwork yesи закомментировать:
text#restricted-network yesСоздаем каталог для хранения профилей firejail:
textmkdir -p ~/.config/firejailСоздаём профиль для Max:
textnano ~/.config/firejail/max.profileсо следующим содержимым:
text# 1. Стандартные блокировки include /etc/firejail/disable-common.inc include /etc/firejail/disable-programs.inc include /etc/firejail/whitelist-common.inc# 2. Разрешаем весь домашний каталог whitelist ${HOME}
# 3. Запрещаем доступ к чувствительным данным blacklist ${HOME}/.ssh blacklist ${HOME}/.gnupg blacklist ${HOME}/.mozilla blacklist ${HOME}/.cache blacklist ${HOME}/documents blacklist ${HOME}/pictures blacklist ${HOME}/videos blacklist ${HOME}/music
# 4. Базовые разрешения include /etc/firejail/whitelist-runuser-common.inc include /etc/firejail/whitelist-var-common.inc
# 5. Дополнительная изоляция private-dev private-tmp nosound
где
private-dev - создаёт пустые устройства (камеру и звук), заставляя думать MAX, что этих устройств нет в системе.
private-tmp - создаёт изолированный временный каталог для приложения. Если после добавления этой опции MAX не запускается или выдаёт ошибки подключения к локальному сервису (например, failed to connect to 127.0.0.1), закомментируйте эту строку (поставьте # в начале) и попробуйте снова.
Обратите внимание на названия каталогов типа /documents, которые мы переименовали при настройке Xfce.
Настраиваем фильтры
MAX - это шпионское приложение, известное своей сетевой активностью, которая выходит далеко за рамки простого обмена сообщениями. Поэтому используя netfilter ограничим неуёмное любопытство этого шпиёна, разрешив подключаться лишь к тем серверам, которые действительно нужны для его работы, и заблокировать все остальные.
Сторонние сервисы определения IP: Приложение обращается к множеству внешних сервисов, чтобы узнать ваш IP-адрес. Среди них api.ipify.org, checkip.amazonaws.com, ifconfig.me и другие. Для работы мессенджера это не нужно, и такие запросы можно смело блокировать.
Домены конкурентов (Telegram, WhatsApp и др.): MAX проверяет доступность сайтов других мессенджеров, например, main.telegram.org и mmg.whatsapp.net. Эта функция, скорее всего, используется для сбора данных, и её также можно отключить.
Аналитические и прочие «лишние» запросы: В целом, принцип «разрешено только самое необходимое» здесь работает лучше всего.
Если на машине включён мост (bridge), то нужно включить IP forwarding. Ничего страшного не произойдёт, если включить его и на машине с обычным интерфейсом:textsudo tee /etc/sysctl.d/99-firejail-forward.conf > /dev/null <<'EOF' # Включаем IP-форвардинг для работы Firejail с bridge (veth) и виртуалок. net.ipv4.ip_forward = 1 EOFТ.к. FireJail не умеет работать с доменными именами, а только с IP, создадим скрипт, которые преобразует доменные имена, необходимые MAX в IP:
textnano ~/update-max-net.shсо следующим содержимым:
text#!/bin/bash NET_FILE="$HOME/.config/firejail/max.net"cat > "$NET_FILE" <<'EOF' *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT DROP [0:0] -A OUTPUT -o lo -j ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A OUTPUT -p udp --dport 53 -j ACCEPT -A OUTPUT -p tcp --dport 53 -j ACCEPT
# Подсети VK/OK — разрешаем целиком, чтобы ротация IP не ломала доступ -A OUTPUT -d 155.212.204.0/24 -p tcp -m multiport --dports 80,443 -j ACCEPT -A OUTPUT -d 217.20.144.0/20 -p tcp -m multiport --dports 80,443 -j ACCEPT
# CDN вне этих подсетей -A OUTPUT -d 5.101.40.0/24 -p tcp -m multiport --dports 80,443 -j ACCEPT -A OUTPUT -d 5.61.23.0/24 -p tcp -m multiport --dports 80,443 -j ACCEPT -A OUTPUT -d 83.222.28.0/24 -p tcp -m multiport --dports 80,443 -j ACCEPT -A OUTPUT -d 89.221.238.0/24 -p tcp -m multiport --dports 80,443 -j ACCEPT -A OUTPUT -d 185.16.148.0/24 -p tcp -m multiport --dports 80,443 -j ACCEPT -A OUTPUT -d 185.180.200.0/24 -p tcp -m multiport --dports 80,443 -j ACCEPT -A OUTPUT -d 66.96.162.0/24 -p tcp -m multiport --dports 80,443 -j ACCEPT EOF
# Функция: проверить, входит ли IP в уже разрешённые подсети in_subnet() { local ip=$1 # 155.212.204.0/24 [[ "$ip" =~ ^155\.212\.204\. ]] && return 0 # 217.20.144.0/20 (217.20.144.x – 217.20.159.x) if [[ "$ip" =~ ^217\.20\.(14[4-9]|15[0-9])\. ]]; then return 0 fi # Остальные /24 for net in 5.101.40 5.61.23 83.222.28 89.221.238 185.16.148 185.180.200 66.96.162; do [[ "$ip" == $net.* ]] && return 0 done return 1 }
DOMAINS="max.ru st.max.ru web.max.ru download.max.ru platform-api.max.ru platform-api2.max.ru dev.max.ru i.oneme.ru ws-api.oneme.ru api.oneme.ru api-gost.oneme.ru fgost.oneme.ru fu.oneme.ru iu.oneme.ru mycdn.me i.mycdn.me gif4.mycdn.me ru.oneme.app okcdn.ru calls.okcdn.ru iv.okcdn.ru st.okcdn.ru vm.okcdn.ru vu.okcdn.ru omub.okcdn.ru omu.okcdn.ru api.okcdn.ru trace-flow.ru"
for DOMAIN in $DOMAINS; do for IP in $(dig +short "$DOMAIN" | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'); do if [ -n "$IP" ] && ! in_subnet "$IP"; then echo "-A OUTPUT -d $IP -p tcp -m multiport --dports 80,443 -j ACCEPT" >> "$NET_FILE" fi done done
echo "COMMIT" >> "$NET_FILE" echo "" >> "$NET_FILE" echo "OK: $(grep -c '^-A' "$NET_FILE") правил сгенерировано"
Делаем скрипт исполняемым:
textchmod +x ~/update-max-net.shiptables считается устаревшим, но FireJail на данный момент работает только через него.
Проверяем работоспособность фильтра, но сначала узнаем активный интерфейс, через который идёт доступ к интернету:textip route show default | awk '/default/ {print $5; exit}'или
textip -br aВ моём случае это ВайВай с именем wlp4s0.
Теперь проверим, что осуществляется фильтрация полученных адресов выше на этом интерфейсе. Для этого нужно зайти в оболочку (шелл) FireJail:text"$HOME/update-max-net.sh" && firejail --net=wlp4s0 --netfilter="$HOME/.config/firejail/max.net" --profile="$HOME/.config/firejail/max.profile" bashТут мы скриптом update-max-net.sh формируем файл ~/.config/firejail/max.net, который затем используем в параметре netfilter для фильтрации траффика на сетевом интерфейсе wlp4s0.
Ошибок при запуске не должно быть. Обратите внимание, что оболочка FireJail содержит то же имя, что оболочка хоста, что может немного запутить. В оболочке FireJail любые команды с sudo не будут выполняться.
Убедиться, что разрешённый домент доступен:textcurl -I https://max.ru --connect-timeout 5Убедиться, что неразрешённый домен недоступен:
textcurl -I https://yandex.ru --connect-timeout 5Выйсти из оболочки FireJail:
textexitДалее запуск с помощью:
text"$HOME/update-max-net.sh" && firejail --net=wlp4s0 --netfilter="$HOME/.config/firejail/max.net" --profile="$HOME/.config/firejail/max.profile" max.desktop файлы не могут работать с двойными командами, поэтому сделаем скрипт-обёртку для запуска MAX:
textnano ~/run-max.shсо следующим содержимым:
text#!/bin/bash INTERFACE=$(ip route show default | awk '/default/ {print $5; exit}') [ -z "$INTERFACE" ] && { echo "Не найден интерфейс по умолчанию"; exit 1; }"$HOME/update-max-net.sh" || exit 1
exec firejail --net="$INTERFACE" \ --netfilter="$HOME/.config/firejail/max.net" \ --profile="$HOME/.config/firejail/max.profile" \ max
Скрипт определяет сетевой интерфейс, через который идёт маршрут по умолчанию (то есть тот, через который реально работает интернет), формирует правила фильтрации для этого интерфейса и запускает MAX в изолированной среде FireJail. Это работает одинаково на машинах с bridge (br0) и без него (eth0, enpXsY, wlpXsY)
Делаем скрипт исполняемымtextchmod +x ~/run-max.shДля иконки на рабочем столе использовать команду запуска:
textbash -c "$HOME/run-max.sh"Из-за того, что запускается скрипт преобразования доменных имён в IP, запуск MAX может занимать до 20 секунд.
Добавляем в Пуск - Опционально
Создаем файл:textnano ~/.local/share/applications/max-firejail.desktopс содержимым:
text[Desktop Entry] Name=MAX (Firejail) Comment=Мессенджер MAX в изолированной среде Exec=bash -c "$HOME/run-max.sh" Icon=max Terminal=false Type=Application Categories=Network;InstantMessaging; StartupNotify=trueДаём права на выполнение:
textchmod +x ~/.local/share/applications/max-firejail.desktopОбновляем кеш меню:
textupdate-desktop-database ~/.local/share/applications/Установка Obsidian
Obsidian — мощное приложение для ведения заметок в формате Markdown, построенное на базе локальной папки с файлами. Поддерживает граф связей, плагины и удобную навигацию.textwget -O /tmp/obsidian.deb https://github.com/obsidianmd/obsidian-releases/releases/download/v1.12.4/obsidian_1.12.4_amd64.deb && sudo apt-get install /tmp/obsidian.debУстановка текстового редактора Pluma
Pluma — простой и быстрый текстовый редактор, форк классического gedit. Поддерживает подсветку синтаксиса, вкладки, плагины и работу с кодировками.textsudo aptitude install plumaУстановка текстового редактора xed
xed — текстовый редактор из набора X-Apps от Linux Mint, форк Pluma. Почему-то некоторые пользователи предпочитают именно его, а не Pluma. В Debian 13 не включён по понятной причине.
Скачиваем файл, распаковываем его.
Получится каталог packages. В нём 5 deb-файлов. Запускаем терминал в этом каталоге, устанавливаем пакеты:textsudo dpkg -i *.debзатем фиксим недостающие зависимости:
textsudo aptitude install -fУстановка мессенджера Bitrix24
Bitrix24 — корпоративный мессенджер и CRM-система.textwget -O /tmp/bitrix24.deb https://dl.bitrix24.com/b24/bitrix24_desktop.deb && sudo apt-get install /tmp/bitrix24.deb