D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Недавно я познакомился с дистрибутивом Kodachi Linux, который, судя по его сайту, получил признание критиков. Это поверхностный взгляд на дистрибутив, если его вообще можно так назвать. С самого начала все начинается не очень хорошо:
Это приводит к смешиванию понятий безопасности и анонимности. Хотя большинство сайтов сегодня используют протокол TLS (https), отправка трафика через неизвестные VPN и Tor может привести к тому, что ваш трафик попадет к злоумышленникам. Вы не можете знать о мотивах людей, управляющих ретрансляторами выхода из Tor, и хотя они могут обеспечивать анонимность, они не предназначены для обеспечения безопасности.
Более того, Warith Al Maawali, автор Kodachi, открыто признает, что по умолчанию при загрузке передается аппаратный хэш:
Как, черт возьми, он пришел к выводу, что передача аппаратного хэша при загрузке является хорошей идеей для дистрибутива, ориентированного на безопасность и анонимность? Я мог бы согласиться с этим, если бы это происходило только после того, как пользователь решил использовать этот VPN. А так он автоматически передает его при загрузке.
Но для IPv6 он ломается! IPv6 включен и функционирует. Обратите внимание, что я отредактировал первые два хопа, поскольку они находятся внутри моей собственной сети но третий хоп является конечной точкой Hurricane Electric для моего IPv6 туннеля...
Это катастрофический недостаток дистрибутива, пытающегося обеспечить анонимность! Незнающие пользователи могут быть банально отслежены по IPv6, полагая, что система использует те VPN, которые они ей указали. Некоторые пакеты, входящие в состав дистрибутива, такие как youtube-dl, с удовольствием используют IPv6 там, где это возможно.
Хотя я обычно горячо поддерживаю IPv6, на данный момент, вероятно, имеет смысл полностью отключить его, если ваша цель анонимность. В данном сценарии это риск, поскольку инструменты, работающие на IPv4, часто не знают об IPv6.
Кроме того, похоже, что он путает dnscrypt и VPN. На рабочем столе показано ISP->VPN->DNScrypt - что... непонятно. DNSCrypt предназначен для обеспечения поиска DNS, а не сетевого трафика в целом!
Даже avahi установлен. Зачем вообще нужна программа, предназначенная для объявления о своем присутствии в такой системе? Это просто не имеет смысла. Его удаление позволит системе работать нормально и устранит одну потенциальную проблему.
Это общая проблема здесь; все установлено и доступно. Это позволяет пользователю совершать ошибки, не осознавая их. Ограничение таких возможностей снижает вероятность ошибок и уменьшает площадь атаки.
Вероятно, именно поэтому в своем журнале изменений он пишет следующее:
Кстати, этот журнал изменений стоит прочитать. Он содержит несколько WTF.
Покажу фрагмент, который генерирует аппаратный хэш:
Bash: Скопировать в буфер обмена
Во-первых, это непростительно. Это данные, которые однозначно идентифицируют компьютер, и он их передает. Если компьютер используется для обеспечения анонимности, то этот хэш позволяет любому лицу, контролирующему конечную точку, проверить, соответствует ли пользователь физическому компьютеру. И Al Maawali передает это на свой собственный сервер! Держитесь подальше от Kodachi, он подходит разве что в качестве упражнения, как не нужно делать!
Во-вторых, этот фрагмент свидетельствует о том, что человек не совсем понимает, что делает, с такими конструкциями, как g=[...], за которыми без видимой причины следует e=$g. Плохое именование переменных повышает вероятность ошибок и снижает читабельность, что очень важно для программ, связанных с безопасностью.
Но обратная сторона заключается еще и в том, что эта функция не делает того, что, по мнению автора, она должна делать; можно просто отредактировать скрипт и заменить эту функцию на следующую, которая будет каждый раз возвращать случайный уникальный хэш, тем самым лишая его возможности блокировать людей:
Bash: Скопировать в буфер обмена
Это еще лучше. Давайте посмотрим, как он работает с сетями:
Bash: Скопировать в буфер обмена
Во-первых, выводимые сообщения не имеют смысла. Переключение домена на $IP? И нет, dhclient не разумный способ. Система использует NetworkManager. Он игнорирует его и запускает dhclient напрямую. Кроме того, он запускает его для каждого интерфейса. Включая lo, интерфейс обратной связи. И на всякий случай он использует sudo timeout 60 sudo[...]? Почему двойное sudo?
На самом деле это приводит меня к факту, что в этом дистрибутиве включен беспарольный sudo. Зачем? На мой взгляд, это снижает безопасность. Конечно, это удобнее, но в дистрибутиве, ориентированном на безопасность и конфиденциальность, автор не должен делать такой выбор за пользователя - и автор не должен ставить систему в зависимость от беспарольного sudo.
Кроме того, наблюдается откровенное злоупотребление sudo там, где он явно не нужен. Есть такие строки, как VPN_IP=$(sudo curl -s -m 30 $randomdomain ), где sudo не служит никакой цели. Может быть автор просто привык ставить sudo перед командами, чтобы убедиться, что они работают, не понимая, что делает sudo...?
Неа. Просто шутка! Это делается на стороне клиента.
Bash: Скопировать в буфер обмена
Итак... он посылает HWID на сервер, и если сервер отвечает banned, клиент обрывает все VPN соединения. Но это же bash скрипт, не так уж сложно закомментировать несколько строк там и здесь.
Это иллюстрация уровня несовершенства мышления Al Maalawi в области безопасности - он не понимает, что в таком сценарии нельзя доверять клиенту. Стали бы вы всерьез доверять этому человеку свою безопасность?
Bash: Скопировать в буфер обмена
Это с другого компьютера в той же подсети. Какое возможное обоснование у этого решения? Это риск для безопасности. Нет ни одного значимого сценария, в котором это было бы необходимо на компьютере, используемом для анонимного подключения к Интернету. Это актуально только для сервера электронной почты.
Кроме того, Kodachi не блокирует трафик до того, как VPN сервисы начнут работу. А ведь должен! Брандмауэр, отбрасывающий входящие пакеты, также повышает безопасность на случай, если что-то прослушивается по ошибке - подумайте о глубокой защите. Сконфигурированный брандмауэр мог бы смягчить ситуацию с прослушиванием Postfix - хотя я ожидал, что автор лучше контролирует сконфигурированные службы, чем показывает.
Bash: Скопировать в буфер обмена
Kodachi не проверяет, действительно ли используется tor; достаточно того, что он запущен. Или как насчет брандмауэра?
Bash: Скопировать в буфер обмена
Будет плохо, если интерфейс переименуют в tun1. Также не проверяется разумность правил, а только то, что в каком-то правиле присутствует tun0. Разрешение "any from any" с указанием tun0 в качестве комментария повысит оценку.
В существующем виде это число в значительной степени бессмысленно. Безопасная система может набрать 0 баллов, а небезопасная 100. В лучшем случае это бесполезно. В худшем активно вредит, поскольку пользователь может быть введен в заблуждение хорошей оценкой.
Многие из этих вариантов не повлияют на пользователя, заботящегося о безопасности, но позволят новичку сконфигурировать систему в небезопасном состоянии. Наличие большего выбора в данном случае по сути означает, что люди могут совершать больше ошибок. В Tails это понимают и обеспечивают безопасную базовую настройку, которую не так-то просто разрушить. Там, где Tails допускает небезопасную конфигурацию, документация ясно предупреждает об этом. Документация по Kodachi очень скудна как по содержанию, так и по предупреждениям.
Вероятно, я мог бы найти больше проблем, если бы потратил на поиск больше времени, но оно того не стоит. То, что я нашел, подрывает всякое доверие к автору, и совет - просто держаться от этого программного обеспечения подальше. Оно небезопасно, а автор не знает, как защитить систему.
Вкратце: не используйте Kodachi. Есть другие, которые лучше:
Они несколько отличаются по объему и функциональности. Прочитайте документацию и найдите тот, который подходит именно вам. Все они имеют активные сообщества. Но держитесь подальше от Kodachi.
Запутанная документация
Для достижения наилучших результатов в области безопасности (электронная почта - банковские услуги - криптовалюта):
Нажмите, чтобы раскрыть...
- Провайдер > Хост-машина (Анонимный VPN за XMR) > Kodachi VPN (Виртуальная машина - Vmware) с принудительным брандмауэром > Браузер Kodachi > Dnscrypt (Лучшая модель)
- Провайдер > Kodachi VPN с принудительным брандмауэром > Браузер (loaded) Kodachi > Dnscrypt
- Провайдер > Kodachi VPN с принудительным брандмауэром > Браузер (loaded) Kodachi > TOR DNS
- Провайдер > Kodachi VPN с принудительным брандмауэром > Браузер (lite) Kodachi > TOR DNS (Быстрая модель)
- Провайдер > Kodachi VPN с принудительным брандмауэром > Тор-Браузер > Dnscrypt
- Провайдер > Kodachi VPN с принудительным брандмауэром > Тор-Браузер > TOR DNS
Это приводит к смешиванию понятий безопасности и анонимности. Хотя большинство сайтов сегодня используют протокол TLS (https), отправка трафика через неизвестные VPN и Tor может привести к тому, что ваш трафик попадет к злоумышленникам. Вы не можете знать о мотивах людей, управляющих ретрансляторами выхода из Tor, и хотя они могут обеспечивать анонимность, они не предназначены для обеспечения безопасности.
Более того, Warith Al Maawali, автор Kodachi, открыто признает, что по умолчанию при загрузке передается аппаратный хэш:
Я плачу ежемесячную арендную плату за узлы VPS и использую их для работы VPN, который предоставляется вам, я не собираю НИКАКИХ данных и не храню НИКАКОЙ информации (Logs), принадлежащей пользователю, кроме идентификатора оборудования (hash) и подключенного IP адреса (VPN IP), который должен быть отправлен автоматически, когда ваш компьютер устанавливает соединение с VPN.
Нажмите, чтобы раскрыть...
Как, черт возьми, он пришел к выводу, что передача аппаратного хэша при загрузке является хорошей идеей для дистрибутива, ориентированного на безопасность и анонимность? Я мог бы согласиться с этим, если бы это происходило только после того, как пользователь решил использовать этот VPN. А так он автоматически передает его при загрузке.
Что такое Kodachi
Kodachi это не то, что я бы назвал дистрибутивом. Стандартные репозитории Ubuntu. Это просто Ubuntu с темой оформления и некоторыми shell скриптами для управления дополнительными функциями безопасности. На мой взгляд, это должно быть более заметно, особенно учитывая несколько сомнительную лицензию, которую он публикует. Его код это не ОС; это несколько shell скриптов.Сетевая катастрофа
IPv4, Kodachi, по крайней мере, удается правильно настроить. tracepath -4 vg.no указывает, что да, он действительно проходит через VPN и, возможно, Tor:Но для IPv6 он ломается! IPv6 включен и функционирует. Обратите внимание, что я отредактировал первые два хопа, поскольку они находятся внутри моей собственной сети но третий хоп является конечной точкой Hurricane Electric для моего IPv6 туннеля...
Это катастрофический недостаток дистрибутива, пытающегося обеспечить анонимность! Незнающие пользователи могут быть банально отслежены по IPv6, полагая, что система использует те VPN, которые они ей указали. Некоторые пакеты, входящие в состав дистрибутива, такие как youtube-dl, с удовольствием используют IPv6 там, где это возможно.
Хотя я обычно горячо поддерживаю IPv6, на данный момент, вероятно, имеет смысл полностью отключить его, если ваша цель анонимность. В данном сценарии это риск, поскольку инструменты, работающие на IPv4, часто не знают об IPv6.
Кроме того, похоже, что он путает dnscrypt и VPN. На рабочем столе показано ISP->VPN->DNScrypt - что... непонятно. DNSCrypt предназначен для обеспечения поиска DNS, а не сетевого трафика в целом!
Установленное программное обеспечение
Этот раздел можно охарактеризовать как "все, включая кухонную раковину". В него входят:- Audacity
- Remmina
- LibreOffice
- OpenSSH server
- GCC
- Postfix (который включен и даже слушает!)
- И многое, многое другое.
Даже avahi установлен. Зачем вообще нужна программа, предназначенная для объявления о своем присутствии в такой системе? Это просто не имеет смысла. Его удаление позволит системе работать нормально и устранит одну потенциальную проблему.
Это общая проблема здесь; все установлено и доступно. Это позволяет пользователю совершать ошибки, не осознавая их. Ограничение таких возможностей снижает вероятность ошибок и уменьшает площадь атаки.
Шифрование файлов
Шифрование файлов обеспечивается пользовательским скриптом Python 2.x с именем lock.py и оберткой для shell скрипта с именем lock. lock.py, судя по всему, является скриптом Python, написанным Joe Linoff, хотя создатель Kodachi не дает никаких ссылок на использование этой программы, равно как и на то, что он не является ее создателем. Насколько мне удалось выяснить, скрипт выпущен под лицензией MIT. Насколько я могу судить, Warith Al Maawali, создатель Kodachi, не включает эту лицензию тем самым нарушая условия распространения lock.py.Вероятно, именно поэтому в своем журнале изменений он пишет следующее:
Я пытался перейти на Ubuntu 20.04, но из-за устаревания Python мне было сложно продолжать, поэтому я продолжил работу с 18.04.6, пока не забывая, что поддержка 18.04 все еще действительна для Ubuntu и ее поддержка должна прекратиться к апрелю 2023 года.
Нажмите, чтобы раскрыть...
Кстати, этот журнал изменений стоит прочитать. Он содержит несколько WTF.
Скрипты bash
Программное обеспечение, которым, собственно, и является Kodachi, представляет собой набор bash скриптов в каталоге ~/.kbase/. Качество этих скриптов заставляет меня задуматься. Некоторые скрипты содержат руководство по bash в верхней части:Покажу фрагмент, который генерирует аппаратный хэш:
Bash: Скопировать в буфер обмена
Код:
function getID()
{
a=$(sudo dmidecode -s system-uuid);
b=$(sudo dmidecode -s system-serial-number);
c=$(sudo dmidecode |grep -w ID:|head -n1);
d=$a.$b.$c;
f=$(md5sum <<<$d| tr -d -|tr -d ' ');
g=$(echo $f | cut -d ' ' -f 1);
e=$g;
writeToJason "$e" "kodachihwid";
}
Во-первых, это непростительно. Это данные, которые однозначно идентифицируют компьютер, и он их передает. Если компьютер используется для обеспечения анонимности, то этот хэш позволяет любому лицу, контролирующему конечную точку, проверить, соответствует ли пользователь физическому компьютеру. И Al Maawali передает это на свой собственный сервер! Держитесь подальше от Kodachi, он подходит разве что в качестве упражнения, как не нужно делать!
Во-вторых, этот фрагмент свидетельствует о том, что человек не совсем понимает, что делает, с такими конструкциями, как g=[...], за которыми без видимой причины следует e=$g. Плохое именование переменных повышает вероятность ошибок и снижает читабельность, что очень важно для программ, связанных с безопасностью.
Но обратная сторона заключается еще и в том, что эта функция не делает того, что, по мнению автора, она должна делать; можно просто отредактировать скрипт и заменить эту функцию на следующую, которая будет каждый раз возвращать случайный уникальный хэш, тем самым лишая его возможности блокировать людей:
Bash: Скопировать в буфер обмена
Код:
function getID()
{
writeToJason echo "$(head -n 1 /dev/urandom | md5sum | cut -d " " -f 1)" "kodachiwid"
}
Это еще лучше. Давайте посмотрим, как он работает с сетями:
Bash: Скопировать в буфер обмена
Код:
IP=$(cat $Jason_web_file_name| jq -r '.ServerFeed6[].Netcheckdomain1'|xargs);
# Validate jsons here
if [[ ! -n "$IP" ]]
then
netIP="mail.com";
print_error "Failed to get json variable IP setting it to: $IP";
fi
echo "Switching domain to $IP";
echo "Dhcclient the smart way";
for i in $( nmcli device status | awk '{print $1}' );
do
if [[ $i != "DEVICE" ]]
then
echo "Dhcp for:$i";
sudo timeout 60 sudo dhclient $i;
fi
done
fi
Во-первых, выводимые сообщения не имеют смысла. Переключение домена на $IP? И нет, dhclient не разумный способ. Система использует NetworkManager. Он игнорирует его и запускает dhclient напрямую. Кроме того, он запускает его для каждого интерфейса. Включая lo, интерфейс обратной связи. И на всякий случай он использует sudo timeout 60 sudo[...]? Почему двойное sudo?
На самом деле это приводит меня к факту, что в этом дистрибутиве включен беспарольный sudo. Зачем? На мой взгляд, это снижает безопасность. Конечно, это удобнее, но в дистрибутиве, ориентированном на безопасность и конфиденциальность, автор не должен делать такой выбор за пользователя - и автор не должен ставить систему в зависимость от беспарольного sudo.
Кроме того, наблюдается откровенное злоупотребление sudo там, где он явно не нужен. Есть такие строки, как VPN_IP=$(sudo curl -s -m 30 $randomdomain ), где sudo не служит никакой цели. Может быть автор просто привык ставить sudo перед командами, чтобы убедиться, что они работают, не понимая, что делает sudo...?
Функция бана...
Таким образом, он может запретить пользователям использовать его VPN, если посчитает их нежелательными. Как он это делает? Наверняка на стороне сервера, верно?Неа. Просто шутка! Это делается на стороне клиента.
Bash: Скопировать в буфер обмена
Код:
function banAction()
{
SERVICE='openvpn';
if (ps ax | grep -v grep | grep $SERVICE > /dev/null)
then
sudo killall -SIGINT openvpn;
fi
SERVICE='tor-service';
if (ps ax | grep -v grep | grep $SERVICE > /dev/null)
then
sudo killall tor;
fi
Итак... он посылает HWID на сервер, и если сервер отвечает banned, клиент обрывает все VPN соединения. Но это же bash скрипт, не так уж сложно закомментировать несколько строк там и здесь.
Это иллюстрация уровня несовершенства мышления Al Maalawi в области безопасности - он не понимает, что в таком сценарии нельзя доверять клиенту. Стали бы вы всерьез доверять этому человеку свою безопасность?
Полное отсутствие брандмауэра!
Одна из самых больших проблем заключается в том, что брандмауэр не настроен. Ничего, ничего, ничего... Но, черт возьми, у него установлен postfix и он слушает!Bash: Скопировать в буфер обмена
Код:
$ nc 10.0.3.153 25
220 Live-OS.localdomain ESMTP Postfix (Ubuntu)
500 5.5.2 Error: bad syntax
Это с другого компьютера в той же подсети. Какое возможное обоснование у этого решения? Это риск для безопасности. Нет ни одного значимого сценария, в котором это было бы необходимо на компьютере, используемом для анонимного подключения к Интернету. Это актуально только для сервера электронной почты.
Кроме того, Kodachi не блокирует трафик до того, как VPN сервисы начнут работу. А ведь должен! Брандмауэр, отбрасывающий входящие пакеты, также повышает безопасность на случай, если что-то прослушивается по ошибке - подумайте о глубокой защите. Сконфигурированный брандмауэр мог бы смягчить ситуацию с прослушиванием Postfix - хотя я ожидал, что автор лучше контролирует сконфигурированные службы, чем показывает.
Оценка безопасности
Kodachi выставляет оценки от 0 до 100, якобы для того, чтобы сообщить, насколько вы защищены. Проблема, в том, что на самом деле это ни о чем не говорит! Рассмотрим следующее:Bash: Скопировать в буфер обмена
Код:
SERVICE='tor-service';
if (ps ax | grep -v grep | grep $SERVICE > /dev/null)
then
theModel="ISP->VPN->Tor";
securityScore=$((securityScore+30))
Kodachi не проверяет, действительно ли используется tor; достаточно того, что он запущен. Или как насчет брандмауэра?
Bash: Скопировать в буфер обмена
Код:
if(sudo ufw status |grep tun0 > /dev/null)
then
securityScore=$((securityScore+2));
fi
Будет плохо, если интерфейс переименуют в tun1. Также не проверяется разумность правил, а только то, что в каком-то правиле присутствует tun0. Разрешение "any from any" с указанием tun0 в качестве комментария повысит оценку.
В существующем виде это число в значительной степени бессмысленно. Безопасная система может набрать 0 баллов, а небезопасная 100. В лучшем случае это бесполезно. В худшем активно вредит, поскольку пользователь может быть введен в заблуждение хорошей оценкой.
Apparmor
Поскольку Kodachi основан на Ubuntu, он поставляется с Apparmor. К сожалению, он использует только профили по умолчанию, доступные в Ubuntu, без каких-либо адаптаций. Apparmor мог бы стать ценным элементом системы для глубокой защиты, гарантируя, что проблема в браузере не сможет скомпрометировать всю систему, например, ограничив браузер на чтение и запись в определенный набор каталогов. К сожалению, этого не сделано.Discord для связи
Этот парень тусуется в чате Discord. Те люди, которых я знаю, которые более чувствительны к конфиденциальности, не тронут Discord и 10-футовым шестом. Отсутствие IRC канала кажется странным выбором - хотя это и не влияет на безопасность дистрибутива, но говорит о менталитете автора. Кроме того, очевидно, что это один автор, а не сообщество или группа людей.Резюмируя
Вот что я обнаружил за несколько часов поисков. Некоторые из находок серьезны, некоторые просто указывают на небрежность создателя системы, что говорит о том, что он не обладает хорошими знаниями в области безопасности. Bash скрипты указывают на то, что человек не имеет опыта программирования и администрирования Linux, и содержат такие странные конструкции, как использование NetworkManager для получения списка устройств - но не использует NetworkManager для их конфигурирования, вызов dhclient для loopback интерфейса и т.д.Многие из этих вариантов не повлияют на пользователя, заботящегося о безопасности, но позволят новичку сконфигурировать систему в небезопасном состоянии. Наличие большего выбора в данном случае по сути означает, что люди могут совершать больше ошибок. В Tails это понимают и обеспечивают безопасную базовую настройку, которую не так-то просто разрушить. Там, где Tails допускает небезопасную конфигурацию, документация ясно предупреждает об этом. Документация по Kodachi очень скудна как по содержанию, так и по предупреждениям.
Вероятно, я мог бы найти больше проблем, если бы потратил на поиск больше времени, но оно того не стоит. То, что я нашел, подрывает всякое доверие к автору, и совет - просто держаться от этого программного обеспечения подальше. Оно небезопасно, а автор не знает, как защитить систему.
Вкратце: не используйте Kodachi. Есть другие, которые лучше:
Они несколько отличаются по объему и функциональности. Прочитайте документацию и найдите тот, который подходит именно вам. Все они имеют активные сообщества. Но держитесь подальше от Kodachi.
Специально для XSS.is
Перевел: IvanVasilyevich
Автор статьи: vidarlo
Актуальность: 24 Октября, 2021
Оригинал: https://bitsex.net/english/2021/kodachi-linux-is-probably-not-secure
Перевел: IvanVasilyevich
Автор статьи: vidarlo
Актуальность: 24 Октября, 2021
Оригинал: https://bitsex.net/english/2021/kodachi-linux-is-probably-not-secure