{% assign version = '1.1.0' | split: '.' %} | ||
{% include disclaimer.html translated="true" version=page.version %} | ||
# Изолированный CLI кошелек/демон в Qubes + Whonix | ||
С помощью [Qubes](https://qubes-os.org) + [Whonix](https://whonix.org) можно создать кошелек Monero, который не будет требовать подключения к сети и работать на фактически изолированной от демона Monero системе , у которого весь сетевой трафик будет проходить через сеть [Tor](https://torproject.org). | ||
Qubes предоставляет гибкость, позволяющую легко создавать отдельные виртуальные машины для разных целей. Сначала нужно создать рабочую станцию Whonix для кошелька без подключения к сети. Далее, создается другая рабочая станция Whonix для демона, который будет использовать шлюз Whonix, так как это NetVM. Для обмена данными между кошельком и демоном можно использовать Qubes [qrexec](https://www.qubes-os.org/doc/qrexec3/). | ||
Это безопаснее, чем другие популярные способы, в которых осуществляется маршрутизация трафика rpc кошельков поверх скрытой службы Tor или используется физическая изоляция, но при этом активна сеть для прямого подключения к демону. Таким образом, не требуется какое-либо сетевое соединение на кошельке, вы передаете весь трафик через сеть Tor. | ||
## 1. [Создание виртуальной машины Whonix AppVM](https://www.whonix.org/wiki/Qubes/Install): | ||
+ Используя шаблон рабочей станции Whonix, создаем две рабочие станции следующим образом: | ||
- Первая рабочая станция будет использоваться для вашего кошелька, она будет называться `monero-wallet-ws`. `NetVM` оставляем не установленным, выбирая `none`. | ||
- Вторая рабочая станция создается для демона `monerod`, она будет называться `monerod-ws`. `NetVM` устанавливаем для шлюза Whonix `sys-whonix`. | ||
## 2. В виртуальной машине AppVM `monerod-ws` делаем следующее: | ||
+ Загружаем, проверяем и устанавливаем программное обеспечение Monero. | ||
``` | ||
[email protected]:~$ curl -O "https://downloads.getmonero.org/cli/monero-linux-x64-v0.11.1.0.tar.bz2" -O "https://getmonero.org/downloads/hashes.txt" | ||
[email protected]:~$ gpg --recv-keys BDA6BD7042B721C467A9759D7455C5E3C0CDCEB9 | ||
[email protected]:~$ gpg --verify hashes.txt | ||
gpg: Signature made Wed 01 Nov 2017 10:01:41 AM UTC | ||
gpg: using RSA key 0x55432DF31CCD4FCD | ||
gpg: Good signature from "Riccardo Spagni <[email protected]>" [unknown] | ||
gpg: WARNING: This key is not certified with a trusted signature! | ||
gpg: There is no indication that the signature belongs to the owner. | ||
Primary key fingerprint: BDA6 BD70 42B7 21C4 67A9 759D 7455 C5E3 C0CD CEB9 | ||
Subkey fingerprint: 94B7 38DD 3501 32F5 ACBE EA1D 5543 2DF3 1CCD 4FCD | ||
[email protected]:~$ echo '6581506f8a030d8d50b38744ba7144f2765c9028d18d990beb316e13655ab248 monero-linux-x64-v0.11.1.0.tar.bz2' | shasum -c | ||
monero-linux-x64-v0.11.1.0.tar.bz2: OK | ||
[email protected]:~$ tar xf monero-linux-x64-v0.11.1.0.tar.bz2 | ||
[email protected]:~$ sudo cp monero-v0.11.1.0/monerod /usr/local/bin/ | ||
``` | ||
+ Создаем файл `systemd`. | ||
``` | ||
[email protected]:~$ sudo gedit /home/user/monerod.service | ||
``` | ||
Вставляем в него следующее содержимое: | ||
``` | ||
[Unit] | ||
Description=Monero Full Node | ||
After=network.target | ||
[Service] | ||
User=user | ||
Group=user | ||
Type=forking | ||
PIDFile=/home/user/.bitmonero/monerod.pid | ||
ExecStart=/usr/local/bin/monerod --detach --data-dir=/home/user/.bitmonero \ | ||
--no-igd --pidfile=/home/user/.bitmonero/monerod.pid \ | ||
--log-file=/home/user/.bitmonero/bitmonero.log --p2p-bind-ip=127.0.0.1 | ||
Restart=always | ||
PrivateTmp=true | ||
[Install] | ||
WantedBy=multi-user.target | ||
``` | ||
+ Копируем файл `monero-wallet-cli` на виртуальную машину `monero-wallet-ws`. | ||
``` | ||
[email protected]:~$ qvm-copy-to-vm monero-wallet-ws monero-v0.11.1.0/monero-wallet-cli | ||
``` | ||
+ Добавляем демон `monerod` в автозагрузку, отредактировав файл `/rw/config/rc.local`. | ||
``` | ||
[email protected]:~$ sudo gedit /rw/config/rc.local | ||
``` | ||
Добавляем эти строки в конец текста: | ||
``` | ||
cp /home/user/monerod.service /lib/systemd/system/ | ||
systemctl start monerod.service | ||
``` | ||
Создаем исполняемый файл. | ||
``` | ||
[email protected]:~$ sudo chmod +x /rw/config/rc.local | ||
``` | ||
+ Создаем файл действий для rpc. | ||
``` | ||
[email protected]:~$ sudo mkdir /rw/usrlocal/etc/qubes-rpc | ||
[email protected]:~$ sudo gedit /rw/usrlocal/etc/qubes-rpc/user.monerod | ||
``` | ||
Добавляем строку: | ||
``` | ||
socat STDIO TCP:localhost:18081 | ||
``` | ||
+ Выключаем виртуальную машину `monerod-ws`. | ||
## 3. В виртуальной машине AppVM `monero-wallet-ws` делаем следующее: | ||
+ Перемещаем исполняемый файл `monero-wallet-cli`. | ||
``` | ||
[email protected]:~$ sudo mv QubesIncoming/monerod-ws/monero-wallet-cli /usr/local/bin/ | ||
``` | ||
+ Редактируем файл `/rw/config/rc.local`. | ||
``` | ||
[email protected]:~$ sudo gedit /rw/config/rc.local | ||
``` | ||
Добавляем эту строку в конец документа: | ||
``` | ||
socat TCP-LISTEN:18081,fork,bind=127.0.0.1 EXEC:"qrexec-client-vm monerod-ws user.monerod" | ||
``` | ||
Создаем исполняемый файл. | ||
``` | ||
[email protected]:~$ sudo chmod +x /rw/config/rc.local | ||
``` | ||
+ Выключаем виртуальную машину `monero-wallet-ws`. | ||
## 4. В `dom0` делаем следующее: | ||
+ Создаем файл `/etc/qubes-rpc/policy/user.monerod`: | ||
``` | ||
[[email protected] ~]$ sudo nano /etc/qubes-rpc/policy/user.monerod | ||
``` | ||
Добавляем следующую строку: | ||
``` | ||
monero-wallet-ws monerod-ws allow | ||
``` |
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
215 KB
102 KB
191 KB
154 KB
44.6 KB
49.1 KB
63.7 KB
82.4 KB