Bitcoin í búri?

Það gerðist þannig að ég er umsjónarmaður tölvukerfa og netkerfa í starfi (í stuttu máli: kerfisstjóri), og ég hafði tækifæri til að segja prófessor í rúm 10 ár. starfsemi margs konar kerfa, þar á meðal þeirra sem krefjast [öfgafullra] öryggisráðstafana. Það kom líka fyrir að fyrir nokkru fannst mér þetta áhugavert bitcoin, og ekki aðeins notað það, heldur einnig sett af stað nokkrar örþjónustur til að læra hvernig á að vinna sjálfstætt með Bitcoin netinu (aka p2p eftir allt) frá sjónarhóli þróunaraðila (ég er auðvitað einn af þeim dev, svo ég átti leið framhjá). En ég er ekki að tala um þróun, ég er að tala um öruggt og skilvirkt umhverfi fyrir forrit.

Fjármálatækni (fintech) farðu við hlið upplýsingaöryggis (infosec) og sá fyrri getur virkað án þess síðari, en ekki lengi. Þess vegna vil ég deila reynslu minni og verkfærasettinu sem ég nota, sem inniheldur bæði fintechOg infosec, og á sama tíma, og er einnig hægt að nota í víðtækari eða allt öðrum tilgangi. Í þessari grein mun ég segja þér ekki svo mikið um Bitcoin, heldur um innviðalíkanið fyrir þróun og rekstur fjármálaþjónustu (og ekki aðeins) - í einu orði, þá þjónustu þar sem "B" skiptir máli. Þetta á bæði við um Bitcoin kauphöllina og um dæmigerðasta fyrirtækjadýragarðinn fyrir þjónustu lítils fyrirtækis sem ekki tengist Bitcoin á nokkurn hátt.

Ég vil taka það fram að ég er fylgjandi meginreglunum "hafðu það bara heimskulegt einfalt" и "minna er meira", því mun bæði greinin og það sem í henni er lýst hafa þá eiginleika sem þessar meginreglur snúast um.

Ímynduð atburðarás: Við skulum skoða allt með því að nota dæmi um bitcoin skipti. Við ákváðum að hefja skiptingu á rúblum, dollurum, evrum fyrir bitcoins og til baka, og við höfum nú þegar vinnulausn, en fyrir aðra stafræna peninga eins og qiwi og webmoney, þ.e. Við höfum lokað öllum lagalegum atriðum, við erum með tilbúið forrit sem þjónar sem greiðslugátt fyrir rúblur, dollara og evrur og önnur greiðslukerfi. Það er tengt bankareikningum okkar og hefur einhvers konar API fyrir lokaforritin okkar. Við erum líka með vefforrit sem virkar sem skipti fyrir notendur, tja, eins og dæmigerður qiwi eða webmoney reikningur - búðu til reikning, bættu við korti og svo framvegis. Það hefur samskipti við gáttarforritið okkar, að vísu í gegnum REST API á staðnum. Og svo ákváðum við að tengja bitcoins og á sama tíma uppfæra innviðina, vegna þess að... Upphaflega var allt sett upp í flýti á sýndarboxum á skrifstofunni undir borðinu... byrjað var að nota síðuna og við fórum að hafa áhyggjur af spennutíma og afköstum.

Svo, við skulum byrja á aðalatriðinu - að velja netþjón. Vegna þess að fyrirtækið í okkar dæmi er lítið og við treystum hýsingaraðilanum (OVH) sem við munum velja kostnaðarhámark þar sem ómögulegt er að setja upp kerfið frá upprunalegu .iso myndinni, en það skiptir ekki máli, upplýsingatækniöryggisdeildin mun örugglega greina uppsettu myndina. Og þegar við verðum stór, munum við leigja okkar eigin skáp undir lás og slá með takmarkaðan líkamlegan aðgang, og kannski munum við byggja okkar eigin DC. Í öllum tilvikum er rétt að muna að þegar þú leigir vélbúnað og setur upp tilbúnar myndir eru líkur á að þú sért með „Trojan from the hoster“ hangandi á vélinni þinni, sem í flestum tilfellum er ekki ætlað að njósna um þig en að bjóða upp á þægilegri stjórnunarverkfæri miðlara.

Uppsetning netþjóns

Hér er allt einfalt. Við veljum þann vélbúnað sem hentar þörfum okkar. Veldu síðan FreeBSD myndina. Jæja, eða við tengjum (ef um er að ræða annan hýsingaraðila og okkar eigin vélbúnað) í gegnum IPMI eða með skjá og gefum .iso FreeBSD myndinni inn í niðurhalið. Fyrir hljómsveitaruppsetningu nota ég Ansible и mfsbsd. Það eina, í okkar tilfelli með kimsufi, völdum við sérsniðin uppsetning til þess að diskarnir tveir í speglinum hafi aðeins ræsi- og /home skiptingin „opin“ verður restin af diskplássinu dulkóðuð, en meira um það síðar.

Bitcoin í búri?

Uppsetning kerfisins á sér stað á staðlaðan hátt, ég mun ekki dvelja við þetta, ég mun aðeins taka fram að áður en notkun er hafin er þess virði að borga eftirtekt til herða valkosti sem það býður upp á bsdinstaller í lok uppsetningar (ef þú setur kerfið upp sjálfur):

Bitcoin í búri?

Það er gott efni um þetta efni mun ég í stuttu máli endurtaka það hér.

Einnig er hægt að virkja ofangreindar færibreytur á þegar uppsettu kerfi. Til að gera þetta þarftu að breyta bootloader skránni og virkja kjarnabreytur. *ee er ritstjóri eins og þessi í 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

Þú ættir líka að ganga úr skugga um að þú sért með nýjustu útgáfuna af kerfinu uppsett, og framkvæma allar uppfærslur og uppfærslur. Í okkar tilviki, til dæmis, er uppfærsla í nýjustu útgáfuna nauðsynleg, vegna þess að... Foruppsetningarmyndir liggja eftir um sex mánuði til eitt ár. Jæja, þar breytum við SSH tenginu í eitthvað annað en sjálfgefið, bætum við lykilauðkenningu og slökktum á auðkenningu lykilorðs.

Síðan stillum við aide, fylgjast með stöðu kerfisstillingarskráa. Þú getur lesið meira ítarlega hér.

pkg install aide

og breyttu crontab okkar

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

Við tökum með kerfisendurskoðun

sysrc auditd_enable=YES

# service auditd start

Hvernig á að stjórna þessu máli er fullkomlega lýst í leiðarvísir.

Nú endurræsum við og höldum áfram að hugbúnaðinum á þjóninum. Hver þjónn er yfirsýn fyrir gáma eða fullar sýndarvélar. Þess vegna er mikilvægt að örgjörvinn styðji VT-x og EPT ef við ætlum að nota fulla sýndarvæðingu.

Til að stjórna gámum og sýndarvélum sem ég nota cbsd frá olevole, Ég óska ​​honum meiri heilsu og blessunar fyrir þetta frábæra gagn!

Gámar? Docker aftur eða hvað?

En nei. FreeBSD fangelsi er frábært tæki til gámavæðingar, en nefnd cbsd að skipuleggja þessa ílát, sem kallast frumur.

Búrið er ákaflega áhrifarík lausn til að byggja upp innviði í margvíslegum tilgangi, þar sem að lokum er þörf á algjörri einangrun einstakra þjónustu eða ferla. Í meginatriðum er það klón af hýsingarkerfinu, en það krefst ekki fullrar sýndarvæðingar vélbúnaðar. Og þökk sé þessu er fjármagni ekki varið í „gesta stýrikerfið“ heldur aðeins í þá vinnu sem verið er að framkvæma. Þegar frumur eru notaðar fyrir innri þarfir, er þetta mjög þægileg lausn fyrir bestu auðlindanotkun - fullt af hólfum á einum vélbúnaðarþjóni getur hver fyrir sig notað allt miðlaraauðlindina ef þörf krefur. Miðað við að venjulega þurfa mismunandi undirþjónustur viðbótar. auðlindir á mismunandi tímum geturðu dregið út hámarksafköst frá einum netþjóni ef þú skipuleggur og kemur jafnvægi á frumurnar á milli netþjóna. Ef nauðsyn krefur er einnig hægt að setja hólf á auðlindina sem notuð er.

Bitcoin í búri?

Hvað með fulla sýndarvæðingu?

Eftir því sem ég best veit cbsd styður við vinnu bhyve og XEN hypervisors. Ég hef aldrei notað þann seinni, en sá fyrri er tiltölulega nýr hypervisor frá FreeBSD. Við skoðum dæmi um notkun bhyve í dæminu hér að neðan.

Að setja upp og stilla gestgjafaumhverfið

Við notum FS ZFS. Þetta er afar öflugt tól til að stjórna netþjónaplássi. Þökk sé ZFS geturðu beint smíðað fylki af ýmsum stillingum af diskum, stækkað pláss á kraftmikið „heitt“ hátt, breytt dauðum diskum, stjórnað skyndimyndum og margt, margt fleira, sem hægt er að lýsa í heilli röð greina. Snúum okkur aftur að netþjóninum okkar og diskum hans. Í upphafi uppsetningar skildum við eftir laust pláss á diskunum fyrir dulkóðuð skipting. Afhverju er það? Þetta er þannig að kerfið vaknar sjálfkrafa og hlustar í gegnum SSH.

gpart add -t freebsd-zfs /dev/ada0

/dev/ada0p4 added!

bæta disksneiðingi við plássið sem eftir er

geli init /dev/ada0p4

sláðu inn dulkóðunarlykilorðið okkar

geli attach /dev/ada0p4

Við sláum inn lykilorðið aftur og við erum með tæki /dev/ada0p4.eli - þetta er dulkóðaða rýmið okkar. Síðan endurtökum við það sama fyrir /dev/ada1 og restina af diskunum í fylkinu. Og við búum til nýjan ZFS laug.

zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli - Jæja, við erum með lágmarks bardagabúnaðinn tilbúinn. Spegluð array af diskum ef einn af þremur bilar.

Að búa til gagnasafn á nýjum „laug“

zfs create vms/jails

pkg install cbsd — við settum af stað teymi og settum upp stjórnun fyrir frumurnar okkar.

Eftir cbsd uppsett, það þarf að frumstilla:

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

Jæja, við svörum fullt af spurningum, aðallega með sjálfgefnum svörum.

*Ef þú ert að nota dulkóðun er mikilvægt að púkinn cbsdd byrjaði ekki sjálfkrafa fyrr en þú afkóðar diskana handvirkt eða sjálfkrafa (í okkar dæmi er þetta gert af zabbix)

**Ég nota heldur ekki NAT frá cbsd, og ég stilla það sjálfur í 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

Uppsetning eldveggsstefnu er líka sérstakt umræðuefni, svo ég mun ekki fara djúpt í að setja upp LOKA ALLA stefnuna og setja upp hvítlista, þú getur gert það með því að lesa opinber skjöl eða einhverja af þeim mikla fjölda greina sem til eru á Google.

Jæja ... við erum með cbsd uppsett, það er kominn tími til að búa til fyrsta vinnuhestinn okkar - búraði Bitcoin púkann!

cbsd jconstruct-tui

Bitcoin í búri?

Hér sjáum við frumusköpunargluggann. Eftir að öll gildin hafa verið sett, skulum við búa til!

Þegar þú býrð til fyrsta reitinn þinn ættir þú að velja hvað á að nota sem grunn fyrir frumurnar. Ég vel dreifingu úr FreeBSD geymslunni með skipuninni repo. Þetta val er aðeins gert þegar fyrsta hólfið í tiltekinni útgáfu er búið til (þú getur hýst frumur af hvaða útgáfu sem er eldri en hýsilútgáfan).

Eftir að allt er sett upp ræsum við búrið!

# cbsd jstart bitcoind

En við þurfum að setja upp hugbúnað í búrinu.

# jls

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

jexec bitcoind til að komast inn í farsímaborðið

og þegar inni í klefanum setjum við upp hugbúnaðinn með ósjálfstæði hans (hýsilkerfið okkar er enn hreint)

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

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

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

Það er Bitcoin í búrinu, en við þurfum nafnleynd vegna þess að við viljum tengjast sumum búrum í gegnum TOP netið. Almennt ætlum við að keyra flestar frumur með grunsamlegum hugbúnaði aðeins í gegnum proxy. Þökk sé pf Þú getur slökkt á NAT fyrir ákveðið úrval af IP tölum á staðarnetinu og leyft NAT aðeins fyrir TOR hnútinn okkar. Þannig að jafnvel þótt spilliforrit komist inn í klefann mun það líklegast ekki hafa samskipti við umheiminn og ef það gerist mun það ekki sýna IP netþjónsins okkar. Þess vegna búum við til annan reit til að „framsenda“ þjónustu sem „.onion“ þjónustu og sem umboð fyrir aðgang að internetinu til einstakra hólfa.

# 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

Stillt á að hlusta á staðbundnu heimilisfangi (í boði fyrir allar frumur)

SOCKSPort 192.168.0.2:9050

Hvað annað þurfum við fyrir fullkomna hamingju? Já, við þurfum þjónustu fyrir vefinn okkar, kannski fleiri en eina. Við skulum ræsa nginx, sem mun virka sem öfugur umboð og sjá um að endurnýja Let's Encrypt vottorð

# cbsd jsconstruct-tui

# cbsd jstart nginx-rev

# jexec nginx-rev

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

Og svo settum við 150 MB af ósjálfstæði í búr. Og gestgjafinn er enn hreinn.

Snúum okkur aftur að uppsetningu nginx síðar, við þurfum að hækka tvær hólf í viðbót fyrir greiðslugáttina okkar á nodejs og ryð og vefforrit, sem af einhverjum ástæðum er í Apache og PHP, og hið síðarnefnda þarf líka MySQL gagnagrunn.

# 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

...og önnur 380 MB af pökkum einangruðum

Næst halum við niður forritinu okkar með git og ræsum það.

# cbsd jsconstruct-tui

# cbsd jstart webapp

# jexec webapp

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

450 MB pakkar. í búri.

hér gefum við þróunaraðilanum aðgang í gegnum SSH beint að klefanum, þeir munu gera allt þar sjálfir:

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

Port 2267 — breyttu SSH tengi frumunnar í hvaða handahófskennt sem er

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

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

Jæja, þjónustan er í gangi, það eina sem er eftir er að bæta reglunni við pf eldvegg

Við skulum sjá hvaða IP frumur okkar hafa og hvernig „staðsvæði“ okkar lítur almennt út.

# 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

og bæta við reglu

# 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

Jæja, þar sem við erum hér, skulum við líka bæta við reglu fyrir öfugt umboð:

## 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

Jæja, nú aðeins um bitcoins

Það sem við höfum er að við erum með vefforrit sem er afhjúpað að utan og það talar á staðnum við greiðslugáttina okkar. Nú þurfum við að undirbúa vinnuumhverfi fyrir samskipti við Bitcoin netið sjálft - hnútinn bitcoind það er bara púkinn sem heldur staðbundnu eintaki blockchain uppfærðu. Þessi púki hefur RPC og veskisvirkni, en það eru þægilegri „umbúðir“ fyrir þróun forrita. Til að byrja með ákváðum við að setja electrum er CLI veski. Þetta veski við munum nota það sem „kalda geymsla“ fyrir bitcoins okkar - almennt, þá bitcoins sem þarf að geyma „utan“ kerfisins sem er aðgengilegt notendum og almennt fjarri öllum. Það er líka með GUI, svo við ætlum að nota sama veskið á okkar
fartölvur. Í bili munum við nota Electrum með opinberum netþjónum, og síðar munum við hækka það í öðrum reit ElectrumXtil þess að vera alls ekki háður neinum.

# cbsd jsconstruct-tui

# cbsd jstart electrum

# jexec electrum

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

önnur 700 MB af hugbúnaði í búrinu okkar

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"
}

Nú höfum við búið til veski.

wallet@electrum:/ % electrum-3.6 listaddresses

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

wallet@electrum:/ % electrum-3.6 help

Til okkar á keðjunni Aðeins takmarkaður fjöldi fólks mun geta tengst veskinu héðan í frá. Til að opna ekki aðgang að þessum klefi utan frá munu tengingar í gegnum SSH eiga sér stað í gegnum TOP (dreifð útgáfa af VPN). Við ræsum SSH í klefanum, en snertum ekki pf.conf okkar á hýsilinn.

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

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

Nú skulum við slökkva á farsímanum með netaðgangi vesksins. Við skulum gefa því IP tölu frá öðru undirnetrými sem er ekki NATed. Fyrst skulum við breyta /etc/pf.conf á gestgjafanum

# ee /etc/pf.conf

JAIL_IP_POOL="192.168.0.0/24" breytum því í JAIL_IP_POOL="192.168.0.0/25", þannig að öll heimilisföng 192.168.0.126-255 munu ekki hafa beinan aðgang að internetinu. Eins konar hugbúnaðar „loft-gap“ net. Og NAT reglan er áfram eins og hún var

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

Ofhleðsla reglna

# pfctl -f /etc/pf.conf

Nú skulum við taka á klefanum okkar

# cbsd jconfig jname=electrum

Bitcoin í búri?

Bitcoin í búri?

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, en núna hættir kerfið sjálft að virka hjá okkur. Hins vegar getum við tilgreint umboð kerfis. En það er eitt, á TOR er það SOCKS5 umboð, og til þæginda viljum við líka fá HTTP umboð.

# 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

Jæja, nú eru tveir proxy-þjónar í kerfinu okkar og báðir gefa út í gegnum TOR: socks5: //192.168.0.2:9050 og http://192.168.0.6:8123

Nú getum við stillt veskisumhverfið okkar

# 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

Jæja, nú mun skelin vinna undir umboði. Ef við viljum setja upp pakka, þá ættum við að bæta við /usr/local/etc/pkg.conf frá undir rót búrsins

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

Jæja, nú er kominn tími til að bæta við TOR falinni þjónustu sem heimilisfang SSH þjónustu okkar í veski klefanum.

# 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

Þetta er netfangið okkar. Við skulum athuga frá staðbundinni vél. En fyrst þurfum við að bæta við SSH lyklinum okkar:

wallet@electrum:/ % mkdir ~/.ssh

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

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

Jæja, frá Linux biðlara vél

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

Tengjumst (Til þess að þetta virki þarftu staðbundinn TOR púkk sem hlustar á 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

Árangur!

Til að vinna með skyndi- og örgreiðslum þurfum við líka hnút Lightning Network, í raun mun þetta vera aðal vinnutæki okkar með Bitcoin. U*c-eldingusem við ætlum að nota sem púkinn er Sparko viðbót, sem er fullbúið HTTP (REST) ​​viðmót og gerir þér kleift að vinna með viðskipti bæði utan keðju og keðju. c-lightning sem þarf til að virka bitcoind en já.

*Það eru mismunandi útfærslur á Lightning Network samskiptareglunum á mismunandi tungumálum. Af þeim sem við prófuðum virtist c-elding (skrifuð í C) stöðugust og auðlindahagkvæmust

# 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

Þó að allt sem nauðsynlegt sé sé tekið saman og sett upp, skulum við búa til RPC notanda fyrir 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

Óskipulegur skipting mín á milli frumna reynist ekki vera svo óskipulegur ef þú tekur eftir notagildinu tmux, sem gerir þér kleift að búa til margar lokaundirlotur innan einni lotu. Analog: screen

Bitcoin í búri?

Þannig að við viljum ekki gefa upp raunverulegan IP hnútsins okkar og við viljum framkvæma öll fjárhagsleg viðskipti í gegnum TOP. Því er ekki þörf á öðrum .lauk.

# 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

Nú skulum við búa til stillingar fyrir 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 ~

þú þarft líka að búa til stillingarskrá fyrir bitcoin-cli, tól sem hefur samskipti við bitcoind

lightning@lightning:~ % mkdir .bitcoin

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

rpcconnect=192.168.0.1
rpcuser=test
rpcpassword=test

athuga

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

[
  "test"
]

sjósetja lightningd

lightning@lightning:~ % lightningd --daemon

Sjálfur lightningd þú getur stjórnað tólinu lightning-cli, til dæmis:

lightning-cli newaddr fáðu heimilisfangið fyrir nýja greiðslu

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

lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all sendu alla peningana í veskinu á heimilisfangið (öll heimilisföng í keðju)

Einnig skipanir fyrir aðgerðir utan keðju lightning-cli invoice, lightning-cli listinvoices, lightning-cli pay o.s.frv.

Jæja, fyrir samskipti við forritið höfum við REST Api

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

Summa upp

# 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 í búri?

Við höfum sett af gámum, hver með sínu aðgangsstigi bæði frá og til staðarnetsins.

# 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

Eins og þú sérð tekur bitcoind allt 190 GB af plássi. Hvað ef við þurfum annan hnút fyrir próf? Þetta er þar sem ZFS kemur sér vel. Með hjálp cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com þú getur búið til skyndimynd og hengt nýjan reit við þessa skyndimynd. Nýja klefinn mun hafa sitt eigið pláss, en aðeins munurinn á núverandi ástandi og upprunalegu verður tekinn með í reikninginn í skráarkerfinu (við munum spara að minnsta kosti 190 GB)

Hver klefi er sitt eigið ZFS gagnasafn og þetta er mjög þægilegt. ZFS leyfir einnig gera ýmislegt annað flott, eins og að senda skyndimyndir í gegnum SSH. Við munum ekki lýsa því, það er nú þegar mikið.

Það er líka athyglisvert að þörf sé á fjareftirliti með gestgjafanum, í þessum tilgangi höfum við Zabbix.

B - öryggi

Varðandi öryggi skulum við byrja á lykilreglunum í samhengi við innviði:

Trúnaður — Staðlað verkfæri UNIX-líkra kerfa tryggja framkvæmd þessarar meginreglu. Við aðskiljum rökrétt aðgang að hverjum rökfræðilega aðskildum þætti kerfisins - reit. Aðgangur er veittur með hefðbundinni notendavottun með persónulegum lyklum notenda. Öll samskipti milli og til lokafrumna eiga sér stað á dulkóðuðu formi. Þökk sé dulkóðun diska þurfum við ekki að hafa áhyggjur af öryggi gagna þegar skipt er um disk eða flutt á annan netþjón. Eini mikilvægi aðgangurinn er aðgangur að hýsingarkerfinu, þar sem slíkur aðgangur veitir almennt aðgang að gögnum í gámum.

Heiðarleiki „Framkvæmd þessarar meginreglu á sér stað á nokkrum mismunandi stigum. Í fyrsta lagi er mikilvægt að hafa í huga að þegar um er að ræða vélbúnað miðlara, ECC minni, sér ZFS þegar „út úr kassanum“ um gagnaheilleika á stigi upplýsingabita. Skyndimyndir gera þér kleift að taka öryggisafrit hvenær sem er á flugi. Þægileg frumuútflutnings-/innflutningstæki gera frumuafritun einfalda.

Framboð - Þetta er nú þegar valfrjálst. Fer eftir frægð þinni og þeirri staðreynd að þú ert með hatursmenn. Í dæminu okkar tryggðum við að veskið væri eingöngu aðgengilegt frá TOP netinu. Ef nauðsyn krefur geturðu lokað á allt á eldveggnum og leyft aðgang að þjóninum eingöngu í gegnum göng (TOR eða VPN er annað mál). Þannig verður netþjónninn eins og kostur er lokaður frá umheiminum og aðeins við sjálf getum haft áhrif á framboð hans.

Ómögulegt að synja - Og þetta veltur á frekari rekstri og fylgni við réttar reglur um notendaréttindi, aðgang o.s.frv. En með réttri nálgun eru allar notendaaðgerðir endurskoðaðar og þökk sé dulmálslausnum er hægt að bera kennsl á með ótvíræðum hætti hver gerði ákveðnar aðgerðir og hvenær.

Að sjálfsögðu er uppsetningin sem lýst er ekki algjört dæmi um hvernig hún ætti alltaf að vera, hún er frekar eitt dæmi um hvernig hún getur verið, á sama tíma og hún heldur mjög sveigjanlegum stærðar- og sérsniðmöguleikum.

Hvað með fulla sýndarvæðingu?

Um fulla sýndarvæðingu með því að nota cbsd geturðu lesið hér. Ég bæti því bara við fyrir vinnuna bhyve Þú þarft að virkja suma kjarnavalkosti.

# cat /etc/rc.conf

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

# cat /boot/loader.conf

...
vmm_load="YES"
...

Þannig að ef þú þarft skyndilega að ræsa tengikví, settu þá upp debian og farðu!

Bitcoin í búri?

Það er allt og sumt

Ég held að það sé allt sem ég vildi deila. Ef þér líkaði við greinina, þá geturðu sent mér bitcoins - bc1qu7lhf45xw83ddll5mnzte6ahju8ktkeu6qhttc. Ef þú vilt prófa frumur í aðgerð og eiga smá bitcoins geturðu farið á mitt gæludýraverkefni.

Heimild: www.habr.com