Bitcoin дар қафас?

Чунин шуд, ки аз рӯи ихтисос ман администратори системаҳо ва шабакаҳои компютерӣ ҳастам (хулоса: администратори система) ва ман имкон доштам, ки каме бештар аз 10 сол ба проф. фаъолияти системаҳои гуногун, аз ҷумла онҳое, ки чораҳои бехатариро талаб мекунанд. Ин ҳам рӯй дод, ки чанде пеш ман онро ҷолиб пайдо кардам биткоин, ва на танҳо онро истифода бурданд, балки инчунин якчанд хидматҳои хурдро ба кор андохтанд, то тарзи мустақилона кор кардан бо шабакаи Bitcoin (баъд аз ҳама p2p) аз нуқтаи назари таҳиягар (ман албатта яке аз онҳо ҳастам) dev, ҳамин тавр, ман аз он ҷо мегузаштам). Аммо ман на дар бораи рушд, балки дар бораи муҳити бехатар ва самараноки барномаҳо сухан меронам.

Технологияи молиявӣ (fintech) дар паҳлӯи амнияти иттилоотӣ гузаред (инфосек) ва якум бе дуюм кор карда метавонад, вале на муддати дароз. Аз ин рӯ, ман мехоҳам таҷрибаи худ ва маҷмӯи асбобҳоеро, ки ман истифода мебарам, мубодила кунам, ки ҳардуро дар бар мегирад fintech, ва инфосек, ва дар айни замон, инчунин метавонад барои мақсадҳои васеътар ё тамоман дигар истифода шавад. Дар ин мақола ман ба шумо на он қадар дар бораи Bitcoin, балки дар бораи модели инфрасохтори рушд ва фаъолияти хидматҳои молиявӣ (ва на танҳо) нақл мекунам - як калима, он хидматҳое, ки дар он "B" муҳим аст. Ин ҳам ба биржаи Bitcoin ва ҳам ба зоопаркҳои маъмултарини корпоративии хидматрасонии як ширкати хурде дахл дорад, ки ба ҳеҷ ваҷҳ бо Bitcoin алоқаманд нест.

Кайд кардан мехостам, ки ман тарафдори принципхо мебошам "ин беақлро оддӣ нигоҳ доред" и "камтар аст", аз ин рӯ, ҳам мақола ва ҳам он чизе, ки дар он тавсиф шудааст, дорои хосиятҳое хоҳанд буд, ки ин принсипҳо дар бораи он ҳастанд.

Сенарияи хаёлӣ: Биёед ҳама чизро бо истифода аз мисоли мубодилаи биткоин дида бароем. Мо тасмим гирифтем, ки мубодилаи рубл, доллар, евроро барои биткоинҳо ва бозгашт оғоз кунем ва мо аллакай як ҳалли корӣ дорем, аммо барои дигар пулҳои рақамӣ ба монанди qiwi ва webmoney, яъне. Мо ҳама масъалаҳои ҳуқуқиро бастаем, мо як барномаи омода дорем, ки ҳамчун дарвозаи пардохт барои рубл, доллар ва евро ва дигар системаҳои пардохт хизмат мекунад. Он ба суратҳисобҳои бонкии мо пайваст аст ва барои барномаҳои ниҳоии мо як навъ API дорад. Мо инчунин як барномаи веб дорем, ки ҳамчун мубодила барои корбарон амал мекунад, хуб, ба монанди ҳисоби маъмулии qiwi ё webmoney - эҷод кардани ҳисоб, илова кардани корт ва ғайра. Он бо замимаи дарвозаи мо, ҳарчанд тавассути REST API дар минтақаи маҳаллӣ муошират мекунад. Ва аз ин рӯ, мо тасмим гирифтем, ки биткоинҳоро пайваст кунем ва ҳамзамон инфрасохторро такмил диҳем, зеро... Дар аввал, ҳама чиз дар қуттиҳои виртуалӣ дар дафтари зери миз ҷойгир карда шуд ... сайт ба истифода шурӯъ кард ва мо дар бораи вақти корӣ ва иҷроиш ғамхорӣ кардем.

Пас, биёед бо чизи асосӣ - интихоби сервер оғоз кунем. Зеро тиҷорат дар мисоли мо хурд аст ва мо ба hoster (OVH) боварӣ дорем, ки мо интихоб мекунем як варианти буҷетӣ ки дар он системаро аз тасвири аслии .iso насб кардан ғайриимкон аст, аммо муҳим нест, шӯъбаи амнияти IT тасвири насбшударо ҳатман таҳлил мекунад. Ва вақте ки мо калон мешавем, мо ҷевони худро зери қулф ва калид бо дастрасии маҳдуди ҷисмонӣ иҷора мегирем ва шояд мо DC-и худро бунёд кунем. Дар ҳар сурат, бояд дар хотир дошт, ки ҳангоми иҷораи сахтафзор ва насб кардани тасвирҳои тайёр, эҳтимоли он вуҷуд дорад, ки шумо дар системаи шумо "Троян аз hoster" овезон шавед, ки дар аксари ҳолатҳо барои ҷосусӣ ба шумо пешбинӣ нашудааст. балки сервери асбобҳои идоракуниро пешниҳод кунад.

Насби сервер

Дар ин ҷо ҳама чиз оддӣ аст. Мо таҷҳизотеро интихоб мекунем, ки ба талаботи мо мувофиқ бошад. Сипас тасвири FreeBSD-ро интихоб кунед. Хуб, ё мо (дар сурати дигар hoster ва сахтафзори худамон) тавассути IPMI ё бо монитор пайваст мешавем ва тасвири .iso FreeBSD-ро ба зеркашӣ ворид мекунем. Барои насби оркестр ман истифода мекунам Фаҳмост и mfsbsd. Ягона чизе, ки дар мавриди кимсуфӣ мо интихоб кардем насби фармоишӣ барои он ки ду диски оина танҳо қисмҳои пурборкунанда ва /хона "кушода шаванд", қисми боқимондаи фазои диск рамзгузорӣ карда мешавад, аммо дар ин бора баъдтар.

Bitcoin дар қафас?

Насбкунии система ба таври стандартӣ сурат мегирад, ман дар ин бора таваққуф намекунам, танҳо қайд мекунам, ки пеш аз оғози кор ба он диққат додан лозим аст. сангдилӣ вариантҳое, ки он пешниҳод мекунад bsdinstaller дар охири насб (агар шумо системаро худатон насб кунед):

Bitcoin дар қафас?

вуҷуд доранд маводи хуб дар ин мавзӯъ, ман дар ин ҷо ба таври мухтасар онро такрор мекунам.

Инчунин имконпазир аст, ки параметрҳои дар боло зикршуда дар системаи аллакай насбшуда фаъол карда шаванд. Барои ин, шумо бояд файли пурборкунандаро таҳрир кунед ва параметрҳои ядроро фаъол созед. *ee як муҳаррири монанди ин дар BSD аст

# ee /etc/rc.conf

...
#sec hard
clear_tmp_enable="YES"
syslogd_flags="-ss"    
sendmail_enable="NONE"

# ee /etc/sysctl.conf

...
#sec hard
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.unprivileged_proc_debug=0
kern.randompid=$(jot -r 1 9999)
security.bsd.stack_guard_page=1

Шумо инчунин бояд боварӣ ҳосил кунед, ки шумо версияи охирини системаро насб кардаед ва ҳама навсозиҳо ва такмилҳоро иҷро кунед. Дар ҳолати мо, масалан, навсозӣ ба версияи охирин талаб карда мешавад, зеро... тасвири пеш аз монтаж аз шаш мох то як сол акиб мемонад. Хуб, дар он ҷо мо бандари SSH-ро ба чизи дигар аз пешфарз иваз мекунем, аутентификатсияи калидро илова мекунем ва аутентификатсияи паролро хомӯш мекунем.

Пас мо танзим мекунем aide, мониторинги ҳолати файлҳои конфигуратсияи система. Шумо метавонед муфассалтар хонед дар ин ҷо.

pkg install aide

ва crontab-и моро таҳрир кунед

crontab -e

06 01 * * 0-6 /root/chkaide.sh

#! /bin/sh
#chkaide.sh
MYDATE=`date +%Y-%m-%d`
MYFILENAME="Aide-"$MYDATE.txt
/bin/echo "Aide check !! `date`" > /tmp/$MYFILENAME
/usr/local/bin/aide --check > /tmp/myAide.txt
/bin/cat /tmp/myAide.txt|/usr/bin/grep -v failed >> /tmp/$MYFILENAME
/bin/echo "**************************************" >> /tmp/$MYFILENAME
/usr/bin/tail -20 /tmp/myAide.txt >> /tmp/$MYFILENAME
/bin/echo "****************DONE******************" >> /tmp/$MYFILENAME

Мо дохил мекунем аудити система

sysrc auditd_enable=YES

# service auditd start

Чӣ тавр идора кардани ин масъала ба таври комил дар роҳбарӣ.

Акнун мо бозоғоз мекунем ва ба нармафзори сервер идома медиҳем. Ҳар як сервер гипервизор барои контейнерҳо ё мошинҳои пурраи виртуалӣ мебошад. Аз ин рӯ, муҳим аст, ки протсессор VT-x ва EPT -ро дастгирӣ кунад, агар мо нақшаи виртуализатсияи пурраро истифода барем.

Барои идора кардани контейнерҳо ва мошинҳои виртуалӣ ман истифода мекунам cbsd аз он олевол, Ман ба ӯ саломатии бештар ва баракатҳои бештар барои ин коммуналӣ олиҷаноб!

Контейнерҳо? Боз Докер ё чӣ?

Аммо не. зиндонҳои FreeBSD воситаи аъло барои контейнеризатсия аст, вале зикр cbsd барои ташкил кардани ин контейнерҳо, ки ҳуҷайраҳо номида мешаванд.

Қафас як ҳалли бениҳоят муассир барои сохтани инфрасохтор барои мақсадҳои гуногун мебошад, ки дар ниҳоят ҷудокунии пурраи хидматҳо ё равандҳои инфиродӣ лозим аст. Аслан, он як клони системаи ҳост аст, аммо он виртуализатсияи пурраи сахтафзорро талаб намекунад. Ва ба шарофати ин, захираҳо на барои "OS-и меҳмон", балки танҳо ба кори иҷрошаванда сарф карда мешаванд. Вақте ки ҳуҷайраҳо барои эҳтиёҷоти дохилӣ истифода мешаванд, ин як ҳалли хеле қулай барои истифодаи оптималии захираҳо мебошад - як гурӯҳи ячейкаҳо дар як сервери сахтафзор ҳар кадоми онҳо метавонанд дар ҳолати зарурӣ тамоми манбаи серверро истифода баранд. Бо назардошти он, ки одатан зерхизматҳои гуногун ба иловагӣ ниёз доранд. Агар шумо ҳуҷайраҳоро дар байни серверҳо дуруст ба нақша гиред ва мувозинат кунед, шумо метавонед аз як сервер самаранокии максималиро ба даст оред. Дар ҳолати зарурӣ, ба ячейкаҳо инчунин метавонанд дар бораи захираҳои истифодашуда маҳдудиятҳо дода шаванд.

Bitcoin дар қафас?

Дар бораи виртуализатсияи пурра чӣ гуфтан мумкин аст?

То ҷое ки ман медонам cbsd корро дастгирй мекунад bhyve ва гипервизорҳои XEN. Ман ҳеҷ гоҳ дуюмашро истифода накардаам, аммо аввалинаш нисбатан нав аст гипервизор аз FreeBSD. Мо як мисоли истифодаро дида мебароем bhyve дар мисоли зер.

Насб ва танзими муҳити мизбон

Мо FS-ро истифода мебарем ZFS. Ин як воситаи бениҳоят пурқувват барои идоракунии фазои сервер аст. Бо шарофати ZFS, шумо метавонед мустақиман массивҳои конфигуратсияҳои гуногунро аз дискҳо созед, фазоро ба таври динамикӣ "гарм" васеъ кунед, дискҳои мурдаро тағир диҳед, тасвирҳои фаврӣ ва ғайраро идора кунед, ки онҳоро дар як қатор мақолаҳо тавсиф кардан мумкин аст. Биёед ба сервери худ ва дискҳои он баргардем. Дар оғози насб, мо дар дискҳо барои қисмҳои рамзгузорӣ фазои холӣ гузоштем. Барои чӣ ин? Ин аст, ки система ба таври худкор бедор шавад ва тавассути SSH гӯш кунад.

gpart add -t freebsd-zfs /dev/ada0

/dev/ada0p4 added!

ба фазои боқимонда як қисми диск илова кунед

geli init /dev/ada0p4

пароли рамзгузории моро ворид кунед

geli attach /dev/ada0p4

Мо паролро дубора ворид мекунем ва мо дастгоҳи /dev/ada0p4.eli дорем - ин фазои рамзгузоришудаи мост. Сипас, мо барои /dev/ada1 ва боқимондаи дискҳои массив ҳамин чизро такрор мекунем. Ва мо як нав эҷод мекунем Ҳавзи ZFS.

zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli - Хуб, мо маҷмӯи минималии ҷангиро омода кардаем. Массиви оинашудаи дискҳо дар сурати ноком шудани яке аз се дискҳо.

Эҷоди маҷмӯи додаҳо дар "ҳавзи" нав

zfs create vms/jails

pkg install cbsd — мо гурУхро ба кор андохта, барои ячейкахоямон управления ташкил кардем.

Баъд аз он cbsd насб карда шудааст, он бояд оғоз карда шавад:

# env workdir="/vms/jails" /usr/local/cbsd/sudoexec/initenv

Хуб, мо ба як қатор саволҳо, асосан бо ҷавобҳои пешфарз ҷавоб медиҳем.

*Агар шумо рамзкунониро истифода баред, муҳим он аст, ки демон cbsdd то он даме, ки шумо шифри дискҳоро дастӣ ё ба таври худкор кушодан ба таври худкор оғоз нашуд (дар мисоли мо ин аз ҷониби zabbix анҷом дода мешавад)

** Ман инчунин аз NAT истифода намебарам cbsd, ва ман онро худам дар pf.

# sysrc pf_enable=YES

# ee /etc/pf.conf

IF_PUBLIC="em0"
IP_PUBLIC="1.23.34.56"
JAIL_IP_POOL="192.168.0.0/24"

#WHITE_CL="{ 127.0.0.1 }"

icmp_types="echoreq"

set limit { states 20000, frags 20000, src-nodes 20000 }
set skip on lo0
scrub in all

#NAT for jails
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC

## Bitcoin network port forward
IP_JAIL="192.168.0.1"
PORT_JAIL="{8333}"
rdr pass on $IF_PUBLIC proto tcp from any to $IP_PUBLIC port $PORT_JAIL -> $IP_JAIL

# service pf start

# pfctl -f /etc/pf.conf

Ташкили сиёсатҳои деворӣ низ як мавзӯи алоҳида аст, аз ин рӯ ман ба танзими сиёсати БЛОК КАРДАН ва танзими рӯйхати сафедҳо амиқ намеравам, шумо метавонед ин корро бо хондан анҷом диҳед. ҳуҷҷатҳои расмӣ ё ягон шумораи зиёди мақолаҳои дар Google мавҷудбуда.

Хуб... мо cbsd насб кардем, вақти он расидааст, ки аввалин аспи кориамон - деви қафаси Bitcoin эҷод кунем!

cbsd jconstruct-tui

Bitcoin дар қафас?

Дар ин ҷо мо муколамаи сохтани ҳуҷайраҳоро мебинем. Пас аз он ки ҳама арзишҳо муқаррар карда шуданд, биёед эҷод кунем!

Ҳангоми сохтани ячейкаи аввалини худ, шумо бояд интихоб кунед, ки чиро ҳамчун асос барои ҳуҷайраҳо истифода баред. Ман тақсимотро аз анбори FreeBSD бо фармон интихоб мекунам repo. Ин интихоб танҳо ҳангоми сохтани ячейкаи якуми версияи мушаххас анҷом дода мешавад (шумо метавонед ячейкаҳои ҳама гуна версияеро, ки аз версияи ҳост калонтар аст, ҷойгир кунед).

Пас аз насб кардани ҳама чиз, мо қафасро оғоз мекунем!

# cbsd jstart bitcoind

Аммо мо бояд нармафзорро дар қафас насб кунем.

# jls

   JID  IP Address      Hostname                      Path
     1  192.168.0.1     bitcoind.space.com            /zroot/jails/jails/bitcoind

jexec bitcoind барои ворид шудан ба консоли ҳуҷайра

ва аллакай дар дохили ҳуҷайра мо нармафзорро бо вобастагии он насб мекунем (системаи мизбони мо тоза боқӣ мемонад)

bitcoind:/@[15:25] # pkg install bitcoin-daemon bitcoin-utils

bitcoind:/@[15:30] # sysrc bitcoind_enable=YES

bitcoind:/@[15:30] # service bitcoind start

Дар қафас Bitcoin мавҷуд аст, аммо ба мо беном лозим аст, зеро мо мехоҳем ба баъзе қафасҳо тавассути шабакаи TOP пайваст шавем. Умуман, мо нақша дорем, ки аксари ҳуҷайраҳои дорои нармафзори шубҳанок танҳо тавассути прокси кор кунем. Ташаккур ба pf Шумо метавонед NAT-ро барои доираи муайяни суроғаҳои IP дар шабакаи маҳаллӣ хомӯш кунед ва NAT-ро танҳо барои гиреҳи TOR-и мо иҷозат диҳед. Ҳамин тариқ, ҳатто агар нармафзори зараровар ба ҳуҷайра ворид шавад, он ба эҳтимоли зиёд бо ҷаҳони беруна муошират намекунад ва агар ин кор кунад, он IP-и сервери моро ошкор намекунад. Аз ин рӯ, мо ячейкаи дигарро барои "фиристонидани" хидматҳо ҳамчун хидмати ".onion" ва ҳамчун прокси барои дастрасӣ ба Интернет ба ҳуҷайраҳои алоҳида эҷод мекунем.

# cbsd jsconstruct-tui

# cbsd jstart tor

# jexec tor

tor:/@[15:38] # pkg install tor

tor:/@[15:38] # sysrc tor_enable=YES

tor:/@[15:38] # ee /usr/local/etc/tor/torrc

Барои гӯш кардани суроғаи маҳаллӣ танзим кунед (барои ҳама ҳуҷайраҳо дастрас аст)

SOCKSPort 192.168.0.2:9050

Барои хушбахтии комил ба мо боз чӣ лозим аст? Бале, мо ба хидмати веби худ ниёз дорем, шояд бештар аз як. Биёед nginx-ро ба кор андозем, ки он ҳамчун прокси баръакс амал мекунад ва барои нав кардани сертификатҳои Let's Encrypt ғамхорӣ мекунад

# cbsd jsconstruct-tui

# cbsd jstart nginx-rev

# jexec nginx-rev

nginx-rev:/@[15:47] # pkg install nginx py36-certbot

Ҳамин тариқ, мо 150 МБ вобастагӣ дар қафас ҷойгир кардем. Ва соҳибхона ҳоло ҳам пок аст.

Биёед дертар ба танзими nginx баргардем, ба мо лозим аст, ки ду ҳуҷайраи дигарро барои шлюзи пардохтамон дар nodejs ва rust ва як замимаи веб, ки бо баъзе сабабҳо дар Apache ва PHP мавҷуд аст ва охирин низ пойгоҳи MySQL-ро талаб мекунад.

# cbsd jsconstruct-tui

# cbsd jstart paygw

# jexec paygw

paygw:/@[15:55] # pkg install git node npm

paygw:/@[15:55] # curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

...ва боз 380 МБ бастаҳои ҷудошуда

Баъдан, мо замимаи худро бо git зеркашӣ мекунем ва онро оғоз мекунем.

# cbsd jsconstruct-tui

# cbsd jstart webapp

# jexec webapp

webapp:/@[16:02] # pkg install mariadb104-server apache24 php74 mod_php74 php74-pdo_mysql

Бастаҳои 450 МБ. дар қафас.

Дар ин ҷо мо ба таҳиягар тавассути SSH мустақиман ба ҳуҷайра дастрасӣ медиҳем, онҳо ҳама чизро дар он ҷо худашон иҷро мекунанд:

webapp:/@[16:02] # ee /etc/ssh/sshd_config

Port 2267 — порти SSH-и ячейкаро ба дилхоҳи худсарона иваз кунед

webapp:/@[16:02] # sysrc sshd_enable=YES

webapp:/@[16:02] # service sshd start

Хуб, хидмат кор мекунад, танҳо илова кардани қоида ба он боқӣ мемонад pf Сипар

Биёед бубинем, ки ҳуҷайраҳои мо чӣ IP доранд ва "минтақаи маҳаллии" мо умуман чӣ гуна аст.

# jls

   JID  IP Address      Hostname                      Path
     1  192.168.0.1     bitcoind.space.com            /zroot/jails/jails/bitcoind
     2  192.168.0.2     tor.space.com                 /zroot/jails/jails/tor
     3  192.168.0.3     nginx-rev.space.com           /zroot/jails/jails/nginx-rev
     4  192.168.0.4     paygw.space.com               /zroot/jails/jails/paygw
     5  192.168.0.5     webapp.my.domain              /zroot/jails/jails/webapp

ва қоида илова кунед

# ee /etc/pf.conf

## SSH for web-Devs
IP_JAIL="192.168.0.5"
PORT_JAIL="{ 2267 }"
rdr pass on $IF_PUBLIC proto tcp from any to $IP_PUBLIC port $PORT_JAIL -> $IP_JAIL

Хуб, азбаски мо дар ин ҷо ҳастем, биёед як қоида барои прокси баръакс илова кунем:

## web-ports for nginx-rev
IP_JAIL="192.168.0.3"
PORT_JAIL="{ 80, 443 }"
rdr pass on $IF_PUBLIC proto tcp from any to $IP_PUBLIC port $PORT_JAIL -> $IP_JAIL

# pfctl -f /etc/pf.conf

Хуб, ҳоло каме дар бораи bitcoins

Он чизе ки мо дорем, ин аст, ки мо як веб-барнома дорем, ки берун аз он фош карда мешавад ва он ба таври маҳаллӣ бо дарвозаи пардохтии мо сӯҳбат мекунад. Ҳоло ба мо лозим аст, ки муҳити корӣ барои ҳамкорӣ бо худи шабакаи Bitcoin - гиреҳ омода созем bitcoind он танҳо як демонест, ки нусхаи маҳаллии блокчейнро то ба ҳол нигоҳ медорад. Ин демон дорои функсияҳои RPC ва ҳамён мебошад, аммо барои таҳияи барномаҳо "маҷмӯаҳои" қулайтар мавҷуданд. Барои оғоз, мо қарор додем, ки гузошта electrum ҳамёни CLI аст. Ин ҳамён мо онро ҳамчун "нигоҳдории сард" барои биткоинҳои худ истифода хоҳем кард - дар маҷмӯъ, он биткоинҳое, ки бояд "берун" дар система барои корбарон дастрас ва умуман аз ҳама дур нигоҳ дошта шаванд. Он инчунин GUI дорад, бинобар ин мо ҳамон ҳамёнро дар худ истифода мебарем
ноутбукхо. Ҳоло мо Electrum-ро бо серверҳои ҷамъиятӣ истифода мебарем ва баъдтар онро дар ячейкаи дигар мебардорем ElectrumXто ки умуман ба касе вобаста набошанд.

# cbsd jsconstruct-tui

# cbsd jstart electrum

# jexec electrum

electrum:/@[8:45] # pkg install py36-electrum

боз 700 МБ нармафзор дар қафаси мо

electrum:/@[8:53] # adduser

Username: wallet
Full name: 
Uid (Leave empty for default): 
Login group [wallet]: 
Login group is wallet. Invite wallet into other groups? []: 
Login class [default]: 
Shell (sh csh tcsh nologin) [sh]: tcsh
Home directory [/home/wallet]: 
Home directory permissions (Leave empty for default): 
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]: 
Username   : wallet
Password   : <disabled>
Full Name  : 
Uid        : 1001
Class      : 
Groups     : wallet 
Home       : /home/wallet
Home Mode  : 
Shell      : /bin/tcsh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (wallet) to the user database.
Add another user? (yes/no): no
Goodbye!
electrum:/@[8:53] # su wallet

electrum:/@[8:53] # su wallet

wallet@electrum:/ % electrum-3.6 create

{
    "msg": "Please keep your seed in a safe place; if you lose it, you will not be able to restore your wallet.",
    "path": "/usr/home/wallet/.electrum/wallets/default_wallet",
    "seed": "jealous win pig material ribbon young punch visual okay cactus random bird"
}

Ҳоло мо ҳамёне сохтаем.

wallet@electrum:/ % electrum-3.6 listaddresses

[
    "18WEhbjvMLGRMfwudzUrUd25U5C7uZYkzE",
    "14XHSejhxsZNDRtk4eFbqAX3L8rftzwQQU",
    "1KQXaN8RXiCN1ne9iYngUWAr6KJ6d4pPas",
    ...
    "1KeVcAwEYhk29qEyAfPwcBgF5mMMoy4qjw",
    "18VaUuSeBr6T2GwpSHYF3XyNgLyLCt1SWk"
]

wallet@electrum:/ % electrum-3.6 help

Ба мо оид ба занҷир Аз ҳоло танҳо шумораи маҳдуди одамон метавонанд ба ҳамён пайваст шаванд. Барои он ки дастрасӣ ба ин ячейка аз берун кушода нашавад, пайвастшавӣ тавассути SSH тавассути TOP (версияи ғайримарказии VPN) сурат мегирад. Мо SSH-ро дар ҳуҷайра оғоз мекунем, аммо pf.conf-и моро ба мизбон ламс накунед.

electrum:/@[9:00] # sysrc sshd_enable=YES

electrum:/@[9:00] # service sshd start

Акнун биёед ҳуҷайраро бо дастрасии интернети ҳамён хомӯш кунем. Биёед ба он суроғаи IP-ро аз фазои зершабакаи дигар диҳем, ки NATed нест. Аввал тағир диҳем /etc/pf.conf бар мизбон

# ee /etc/pf.conf

JAIL_IP_POOL="192.168.0.0/24" биёед онро ба иваз кунем JAIL_IP_POOL="192.168.0.0/25", Ҳамин тариқ, ҳама суроғаҳои 192.168.0.126-255 ба Интернет дастрасии мустақим надоранд. Як навъ шабакаи нармафзори "air-gap". Ва қоидаи NAT ҳамон тавре ки буд, боқӣ мемонад

nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC

Аз ҳад зиёд бор кардани қоидаҳо

# pfctl -f /etc/pf.conf

Акнун биёед ҳуҷайраи худро гирем

# cbsd jconfig jname=electrum

Bitcoin дар қафас?

Bitcoin дар қафас?

jset mode=quiet jname=electrum ip4_addr="192.168.0.200"
Remove old IP: /sbin/ifconfig em0 inet 192.168.0.6 -alias
Setup new IP: /sbin/ifconfig em0 inet 192.168.0.200 alias
ip4_addr: 192.168.0.200

Hmm, аммо ҳоло худи система барои мо кор намекунад. Аммо, мо метавонем прокси системаро муайян кунем. Аммо як чиз ҳаст, дар TOR он прокси SOCKS5 аст ва барои роҳат мо прокси HTTP низ мехоҳем.

# cbsd jsconstruct-tui

# cbsd jstart polipo

# jexec polipo

polipo:/@[9:28] # pkg install polipo

polipo:/@[9:28] # ee /usr/local/etc/polipo/config

socksParentProxy = "192.168.0.2:9050"
socksProxyType = socks5

polipo:/@[9:42] # sysrc polipo_enable=YES

polipo:/@[9:43] # service polipo start

Хуб, ҳоло дар системаи мо ду сервери прокси мавҷуданд ва ҳарду тавассути TOR мебароянд: socks5://192.168.0.2:9050 ва http://192.168.0.6:8123

Акнун мо метавонем муҳити ҳамёни худро танзим кунем

# jexec electrum

electrum:/@[9:45] # su wallet

wallet@electrum:/ % ee ~/.cshrc

#in the end of file proxy config
setenv http_proxy http://192.168.0.6:8123
setenv https_proxy http://192.168.0.6:8123

Хуб, ҳоло снаряд аз зери прокси кор хоҳад кард. Агар мо хоҳем, ки бастаҳоро насб кунем, пас мо бояд ба /usr/local/etc/pkg.conf аз зери решаи кафас

pkg_env: {
               http_proxy: "http://my_proxy_ip:8123",
           }

Хуб, ҳоло вақти он расидааст, ки хидмати пинҳонии TOR -ро ҳамчун суроғаи хидмати SSH мо дар қафаси ҳамён илова кунед.

# jexec tor

tor:/@[9:59] # ee /usr/local/etc/tor/torrc

HiddenServiceDir /var/db/tor/electrum/
HiddenServicePort 22 192.168.0.200:22

tor:/@[10:01] # mkdir /var/db/tor/electrum

tor:/@[10:01] # chown -R _tor:_tor /var/db/tor/electrum

tor:/@[10:01] # chmod 700 /var/db/tor/electrum

tor:/@[10:03] # service tor restart

tor:/@[10:04] # cat /var/db/tor/electrum/hostname

mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion

Ин суроғаи пайвасти мост. Биёед аз мошини маҳаллӣ тафтиш кунем. Аммо аввал мо бояд калиди SSH-и худро илова кунем:

wallet@electrum:/ % mkdir ~/.ssh

wallet@electrum:/ % ee ~/.ssh/authorized_keys

ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAG9Fk2Lqi4GQ8EXZrsH3EgSrVIQPQaAlS38MmJLBabihv9KHIDGXH7r018hxqLNNGbaJWO/wrWk7sG4T0yLHAbdQAFsMYof9kjoyuG56z0XZ8qaD/X/AjrhLMsIoBbUNj0AzxjKNlPJL4NbHsFwbmxGulKS0PdAD5oLcTQi/VnNdU7iFw== user@local

Хуб, аз як мошини мизоҷи Linux

user@local ~$ nano ~/.ssh/config

#remote electrum wallet
Host remotebtc
        User wallet
        Port 22
        Hostname mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion
        ProxyCommand /bin/ncat --proxy localhost:9050 --proxy-type socks5 %h %p

Биёед пайваст шавем (Барои ин кор, ба шумо демони маҳаллии TOR лозим аст, ки дар 9050 гӯш мекунад)

user@local ~$ ssh remotebtc

The authenticity of host 'mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is SHA256:iW8FKjhVF4yyOZB1z4sBkzyvCM+evQ9cCL/EuWm0Du4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion' (ECDSA) to the list of known hosts.
FreeBSD 12.1-RELEASE-p1 GENERIC 
To save disk space in your home directory, compress files you rarely
use with "gzip filename".
        -- Dru <[email protected]>
wallet@electrum:~ % logout

Муваффақият!

Барои кор бо пардохтҳои фаврӣ ва хурд, ба мо низ гиреҳ лозим аст Шабакаи Lightning, дар асл, ин воситаи асосии кории мо бо Bitcoin хоҳад буд. У*в - барқки мо онро хамчун демон истифода мебарем Васлкунаки Sparko, ки интерфейси мукаммали HTTP (REST) ​​мебошад ва ба шумо имкон медиҳад, ки ҳам бо транзаксияҳои берун аз занҷир ва ҳам дар занҷир кор кунед. c-lightning барои фаъолият зарур аст bitcoind аммо бале.

*Амалисозии гуногуни протоколи Шабакаи Lightning бо забонҳои гуногун мавҷуданд. Аз онҳое, ки мо озмоиш кардем, c-lightning (дар C навишта шудааст) устувортарин ва каммасраф ба назар мерасид

# cbsd jsconstruct-tui

# cbsd jstart cln

# jexec cln

lightning:/@[10:23] # adduser

Username: lightning
...

lightning:/@[10:24] # pkg install git

lightning:/@[10:23] # su lightning

cd ~ && git clone https://github.com/ElementsProject/lightning

lightning@lightning:~ % exit

lightning:/@[10:30] # cd /home/lightning/lightning/

lightning:/home/lightning/lightning@[10:31] # pkg install autoconf automake gettext git gmp gmake libtool python python3 sqlite3 libsodium py36-mako bash bitcoin-utils

lightning:/home/lightning/lightning@[10:34] # ./configure && gmake && gmake install

Дар ҳоле ки ҳама чизҳои зарурӣ тартиб дода ва насб карда шудаанд, биёед корбари RPC-ро барои lightningd в bitcoind

# jexec bitcoind

bitcoind:/@[10:36] # ee /usr/local/etc/bitcoin.conf

rpcbind=192.168.0.1
rpcuser=test
rpcpassword=test
#allow only c-lightning
rpcallowip=192.168.0.7/32

bitcoind:/@[10:39] # service bitcoind restart

Гузариши бесарусомонии ман байни ҳуҷайраҳо, агар шумо утилитаро қайд кунед, он қадар бесарусомонӣ нест tmux, ки ба шумо имкон медиҳад, ки дар як сессия зерсессияҳои сершумори терминал эҷод кунед. Аналогӣ: screen

Bitcoin дар қафас?

Ҳамин тавр, мо намехоҳем IP-и воқеии гиреҳи худро ошкор кунем ва мо мехоҳем тамоми амалиёти молиявиро тавассути TOP анҷом диҳем. Аз ин ру, дигар .пиёз лозим нест.

# jexec tor

tor:/@[9:59] # ee /usr/local/etc/tor/torrc

HiddenServiceDir /var/db/tor/cln/
HiddenServicePort 9735 192.168.0.7:9735

tor:/@[10:01] # mkdir /var/db/tor/cln

tor:/@[10:01] # chown -R _tor:_tor /var/db/tor/cln

tor:/@[10:01] # chmod 700 /var/db/tor/cln

tor:/@[10:03] # service tor restart

tor:/@[10:04] # cat /var/db/tor/cln/hostname

en5wbkavnytti334jc5uzaudkansypfs6aguv6kech4hbzpcz2ove3yd.onion

Акнун биёед конфигуратсияро барои c-lightning эҷод кунем

lightning:/home/lightning/lightning@[10:31] # su lightning

lightning@lightning:~ % mkdir .lightning

lightning@lightning:~ % ee .lightning/config

alias=My-LN-Node
bind-addr=192.168.0.7:9735
rgb=ff0000
announce-addr=en5wbkavnytti334jc5uzaudkansypfs6aguv6kech4hbzpcz2ove3yd.onion:9735
network=bitcoin
log-level=info
fee-base=0
fee-per-satoshi=1
proxy=192.168.0.2:9050
log-file=/home/lightning/.lightning/c-lightning.log
min-capacity-sat=200000

# sparko plugin
# https://github.com/fiatjaf/lightningd-gjson-rpc/tree/master/cmd/sparko

sparko-host=192.168.0.7
sparko-port=9737

sparko-tls-path=sparko-tls

#sparko-login=mywalletusername:mywalletpassword

#sparko-keys=masterkey;secretread:+listchannels,+listnodes;secretwrite:+invoice,+listinvoices,+delinvoice,+decodepay,+waitpay,+waitinvoice
sparko-keys=masterkey;secretread:+listchannels,+listnodes;ultrawrite:+invoice,+listinvoices,+delinvoice,+decodepay,+waitpay,+waitinvoice
# for the example above the initialization logs (mixed with lightningd logs) should print something like

lightning@lightning:~ % mkdir .lightning/plugins

lightning@lightning:~ % cd .lightning/plugins/

lightning@lightning:~/.lightning/plugins:% fetch https://github.com/fiatjaf/sparko/releases/download/v0.2.1/sparko_full_freebsd_amd64

lightning@lightning:~/.lightning/plugins % mkdir ~/.lightning/sparko-tls

lightning@lightning:~/.lightning/sparko-tls % cd ~/.lightning/sparko-tls

lightning@lightning:~/.lightning/sparko-tls % openssl genrsa -out key.pem 2048

lightning@lightning:~/.lightning/sparko-tls % openssl req -new -x509 -sha256 -key key.pem -out cert.pem -days 3650

lightning@lightning:~/.lightning/plugins % chmod +x sparko_full_freebsd_amd64

lightning@lightning:~/.lightning/plugins % mv sparko_full_freebsd_amd64 sparko

lightning@lightning:~/.lightning/plugins % cd ~

шумо инчунин бояд файли конфигуратсияро барои bitcoin-cli эҷод кунед, як утилитае, ки бо он муошират мекунад bitcoind

lightning@lightning:~ % mkdir .bitcoin

lightning@lightning:~ % ee .bitcoin/bitcoin.conf

rpcconnect=192.168.0.1
rpcuser=test
rpcpassword=test

тафтиш

lightning@lightning:~ % bitcoin-cli echo "test"

[
  "test"
]

оғоз lightningd

lightning@lightning:~ % lightningd --daemon

Худи худ lightningd шумо метавонед утилитаро идора кунед lightning-cli, масалан:

lightning-cli newaddr суроғаи пардохти нави даромадро гиред

{
   "address": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv",
   "bech32": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv"
}

lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all тамоми пули дар ҳамён бударо ба суроға фиристед (ҳамаи суроғаҳои занҷир)

Инчунин фармонҳо барои амалиёти берун аз занҷир lightning-cli invoice, lightning-cli listinvoices, lightning-cli pay ва ғайра.

Хуб, барои муошират бо барнома мо REST Api дорем

curl -k https://192.168.0.7:9737/rpc -d '{"method": "pay", "params": ["lnbc..."]}' -H 'X-Access masterkey'

Биёед, натиҷаҳои онро бифаҳмем

# jls

   JID  IP Address      Hostname                      Path
     1  192.168.0.1     bitcoind.space.com            /zroot/jails/jails/bitcoind
     2  192.168.0.2     tor.space.com                 /zroot/jails/jails/tor
     3  192.168.0.3     nginx-rev.space.com           /zroot/jails/jails/nginx-rev
     4  192.168.0.4     paygw.space.com               /zroot/jails/jails/paygw
     5  192.168.0.5     webapp.my.domain              /zroot/jails/jails/webapp
     7  192.168.0.200   electrum.space.com            /zroot/jails/jails/electrum
     8  192.168.0.6     polipo.space.com              /zroot/jails/jails/polipo
     9  192.168.0.7     lightning.space.com           /zroot/jails/jails/cln

Bitcoin дар қафас?

Мо маҷмӯи контейнерҳо дорем, ки ҳар кадоми онҳо сатҳи дастрасии худро ҳам аз шабакаи маҳаллӣ ва ҳам ба шабакаи маҳаллӣ доранд.

# zfs list

NAME                    USED  AVAIL  REFER  MOUNTPOINT
zroot                   279G  1.48T    88K  /zroot
zroot/ROOT             1.89G  1.48T    88K  none
zroot/ROOT/default     1.89G  17.6G  1.89G  /
zroot/home               88K  1.48T    88K  /home
zroot/jails             277G  1.48T   404M  /zroot/jails
zroot/jails/bitcoind    190G  1.48T   190G  /zroot/jails/jails-data/bitcoind-data
zroot/jails/cln         653M  1.48T   653M  /zroot/jails/jails-data/cln-data
zroot/jails/electrum    703M  1.48T   703M  /zroot/jails/jails-data/electrum-data
zroot/jails/nginx-rev   190M  1.48T   190M  /zroot/jails/jails-data/nginx-rev-data
zroot/jails/paygw      82.4G  1.48T  82.4G  /zroot/jails/jails-data/paygw-data
zroot/jails/polipo     57.6M  1.48T  57.6M  /zroot/jails/jails-data/polipo-data
zroot/jails/tor        81.5M  1.48T  81.5M  /zroot/jails/jails-data/tor-data
zroot/jails/webapp      360M  1.48T   360M  /zroot/jails/jails-data/webapp-data

Тавре ки шумо мебинед, bitcoind ҳама 190 ГБ ҷойро ишғол мекунад. Чӣ мешавад, агар ба мо гиреҳи дигар барои санҷиш лозим шавад? Дар ин ҷо ZFS муфид аст. Бо ёрии cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com шумо метавонед тасвири лаҳзае эҷод кунед ва ба ин акси нав чашмаки нав замима кунед. Ячейкаи нав фазои худро дорад, аммо танҳо фарқияти байни ҳолати кунунӣ ва аслӣ дар системаи файлӣ ба назар гирифта мешавад (мо ҳадди аққал 190 ГБ сарфа мекунем)

Ҳар як ячейка маҷмӯи додаҳои ZFS-и алоҳидаи худ аст ва ин хеле қулай аст. ZFS низ имкон медиҳад корҳои гуногуни ҷолибро иҷро кунед, ба монанди фиристодани аксҳо тавассути SSH. Мо онро тавсиф намекунем, аллакай бисёр аст.

Инчунин зарурати мониторинги фосилавии мизбонро қайд кардан лозим аст, ки барои ин мақсадҳо мо дорем Зарифӣ.

B - бехатарӣ

Дар мавриди амният, биёед аз принсипҳои асосӣ дар заминаи инфрасохтор оғоз кунем:

Махфият - Воситаҳои стандартии системаҳои UNIX монанд татбиқи ин принсипро таъмин мекунанд. Мо дастрасиро ба ҳар як унсури аз ҷиҳати мантиқии система - ячейка ҷудо мекунем. Дастрасӣ тавассути аутентификатсияи стандартии корбар бо истифода аз калидҳои шахсии корбарон таъмин карда мешавад. Ҳама муошират байни ҳуҷайраҳо ва ба охир дар шакли рамзгузорӣ сурат мегирад. Бо шарофати рамзгузории диск, мо набояд дар бораи бехатарии маълумот ҳангоми иваз кардани диск ё муҳоҷират ба сервери дигар хавотир шавем. Ягона дастрасии муҳим дастрасӣ ба системаи ҳост аст, зеро чунин дастрасӣ ба таври умум дастрасиро ба маълумот дар дохили контейнерҳо таъмин мекунад.

Аҳамият диҳед «Татбиқи ин принсип дар якчанд сатҳҳои гуногун сурат мегирад. Аввалан, бояд қайд кард, ки дар ҳолати сахтафзори сервер, хотираи ECC, ZFS аллакай "аз қуттӣ" дар бораи якпорчагии маълумот дар сатҳи битҳои иттилоот ғамхорӣ мекунад. Суратҳои фаврӣ ба шумо имкон медиҳанд, ки дар вақти дилхоҳ дар парвоз нусхабардорӣ кунед. Воситаҳои қулай содирот/воридоти ҳуҷайра такрори ҳуҷайраҳоро содда мекунанд.

Мавҷудият - Ин аллакай ихтиёрӣ аст. Аз дараҷаи шӯҳрати шумо ва он, ки шумо бадбинҳо доред, вобаста аст. Дар мисоли мо, мо кафолат додем, ки ҳамён танҳо аз шабакаи TOP дастрас бошад. Агар лозим бошад, шумо метавонед ҳама чизро дар брандмауэр маҳкам кунед ва дастрасӣ ба серверро танҳо тавассути нақбҳо иҷозат диҳед (TOR ё VPN масъалаи дигар аст). Ҳамин тариқ, сервер то ҳадди имкон аз ҷаҳони беруна қатъ карда мешавад ва танҳо мо метавонем ба дастрасии он таъсир расонем.

Имконнопазирии рад кардан - Ва ин аз фаъолияти минбаъда ва риояи сиёсати дурусти ҳуқуқҳои корбарон, дастрасӣ ва ғайра вобаста аст. Аммо бо равиши дуруст, ҳама амалҳои корбарон санҷида мешаванд ва ба шарофати ҳалли криптографӣ метавон ба таври дақиқ муайян кард, ки кӣ ва кай амалҳои муайянро анҷом додааст.

Албатта, конфигуратсияи тавсифшуда намунаи мутлақи он нест, ки он ҳамеша бояд бошад, балки як мисоли он аст, ки чӣ тавр он метавонад бо нигоҳ доштани қобилиятҳои хеле чандири миқёс ва мутобиқсозӣ бошад.

Дар бораи виртуализатсияи пурра чӣ гуфтан мумкин аст?

Дар бораи виртуализатсияи пурра бо истифода аз cbsd шумо метавонед ин ҷо бихонед. Ман инро танҳо барои кор илова мекунам bhyve Шумо бояд баъзе имконоти ядроиро фаъол созед.

# cat /etc/rc.conf

...
kld_list="vmm if_tap if_bridge nmdm"
...

# cat /boot/loader.conf

...
vmm_load="YES"
...

Пас, агар ба шумо ногаҳон лозим ояд, ки докерро оғоз кунед, пас каме debian насб кунед ва биравед!

Bitcoin дар қафас?

Ҳамааш ҳамин

Фикр мекунам, ин ҳама чизест, ки ман мехостам мубодила кунам. Агар мақола ба шумо маъқул бошад, шумо метавонед ба ман чанд биткоин фиристед - bc1qu7lhf45xw83ddll5mnzte6ahju8ktkeu6qhttc. Агар шумо хоҳед, ки ҳуҷайраҳоро дар амал санҷед ва каме биткоин дошта бошед, шумо метавонед ба ман равед лоиҳаи ҳайвоноти хонагӣ.

Манбаъ: will.com