Bitcoin mewn cawell?

Digwyddodd felly fy mod yn weinyddwr systemau a rhwydweithiau cyfrifiadurol yn fy swydd (yn fyr: gweinyddwr system), a chefais gyfle i ddweud wrth Athro am ychydig mwy na 10 mlynedd. gweithgareddau amrywiaeth eang o systemau, gan gynnwys y rhai sydd angen mesurau diogelwch [eithafol]. Digwyddodd hefyd fy mod yn ei chael hi'n ddiddorol beth amser yn ôl bitcoin, ac nid yn unig yn ei ddefnyddio, ond hefyd wedi lansio nifer o ficro-wasanaethau er mwyn dysgu sut i weithio'n annibynnol gyda'r rhwydwaith Bitcoin (aka p2p wedi'r cyfan) o safbwynt datblygwr (dwi wrth gwrs yn un o'r rheini dev, felly, roeddwn i'n mynd heibio). Ond nid wyf yn sôn am ddatblygiad, rwy'n sôn am amgylchedd diogel ac effeithlon ar gyfer ceisiadau.

Technoleg ariannol (fintech) mynd wrth ymyl diogelwch gwybodaeth (Infosec) a gall y cyntaf weithio heb yr ail, ond nid yn hir. Dyna pam rydw i eisiau rhannu fy mhrofiad a'r set o offer rydw i'n eu defnyddio, sy'n cynnwys y ddau fintechAc Infosec, ac ar yr un pryd, a gellir ei ddefnyddio hefyd at ddiben ehangach neu gwbl wahanol. Yn yr erthygl hon byddaf yn dweud wrthych nid cymaint am Bitcoin, ond am y model seilwaith ar gyfer datblygu a gweithredu gwasanaethau ariannol (ac nid yn unig) - mewn gair, y gwasanaethau hynny lle mae “B” yn bwysig. Mae hyn yn berthnasol i'r gyfnewidfa Bitcoin ac i'r sw corfforaethol mwyaf nodweddiadol o wasanaethau cwmni bach nad yw'n gysylltiedig â Bitcoin mewn unrhyw ffordd.

Hoffwn nodi fy mod yn gefnogwr i’r egwyddorion "cadw pethau'n dwp yn syml" и "Mae llai yn fwy", felly, bydd gan yr erthygl a'r hyn a ddisgrifir ynddi y priodweddau y mae'r egwyddorion hyn yn ymwneud â hwy.

Senario dychmygol: Gadewch i ni edrych ar bopeth gan ddefnyddio'r enghraifft o gyfnewidydd bitcoin. Fe benderfynon ni lansio cyfnewid rubles, doleri, ewros ar gyfer bitcoins ac yn ôl, ac mae gennym ni ateb gweithredol eisoes, ond ar gyfer arian digidol arall fel qiwi a webmoney, h.y. Rydym wedi cau'r holl faterion cyfreithiol, mae gennym gais parod sy'n gweithredu fel porth talu ar gyfer rubles, ddoleri ac ewros a systemau talu eraill. Mae'n gysylltiedig â'n cyfrifon banc ac mae ganddo ryw fath o API ar gyfer ein cymwysiadau terfynol. Mae gennym hefyd gymhwysiad gwe sy'n gweithredu fel cyfnewidydd i ddefnyddwyr, yn dda, fel cyfrif qiwi neu webmoney nodweddiadol - creu cyfrif, ychwanegu cerdyn, ac ati. Mae'n cyfathrebu â'n cymhwysiad porth, er trwy'r API REST yn yr ardal leol. Ac felly fe benderfynon ni gysylltu bitcoins ac ar yr un pryd uwchraddio'r seilwaith, oherwydd ... I ddechrau, gosodwyd popeth ar frys ar focsys rhithwir yn y swyddfa o dan y bwrdd ... dechreuwyd defnyddio'r wefan, a dechreuon ni boeni am uptime a pherfformiad.

Felly, gadewch i ni ddechrau gyda'r prif beth - dewis gweinydd. Achos mae'r busnes yn ein hesiampl yn fach ac rydym yn ymddiried yn y gwesteiwr (OVH) y byddwn yn ei ddewis opsiwn cyllideb lle mae'n amhosibl gosod y system o'r ddelwedd .iso wreiddiol, ond does dim ots, bydd yr adran diogelwch TG yn bendant yn dadansoddi'r ddelwedd sydd wedi'i gosod. A phan fyddwn yn tyfu i fyny, byddwn yn rhentu ein cwpwrdd ein hunain dan glo gyda mynediad corfforol cyfyngedig, ac efallai y byddwn yn adeiladu ein DC ein hunain. Mewn unrhyw achos, mae'n werth cofio, wrth rentu caledwedd a gosod delweddau parod, mae siawns y bydd gennych chi "Trojan o'r hoster" yn hongian ar eich system, nad yw wedi'i fwriadu yn y rhan fwyaf o achosion i ysbïo arnoch chi. ond i gynnig gweinydd offer rheoli mwy cyfleus.

Gosod gweinydd

Mae popeth yn syml yma. Rydym yn dewis y caledwedd sy'n addas ar gyfer ein hanghenion. Yna dewiswch y ddelwedd FreeBSD. Wel, neu rydym yn cysylltu (yn achos gwesteiwr arall a'n caledwedd ein hunain) trwy IPMI neu gyda monitor a bwydo'r ddelwedd .iso FreeBSD i'r lawrlwythiad. Ar gyfer gosodiad cerddorfaol rwy'n ei ddefnyddio Ateb и mfsbsd. Yr unig beth, yn ein hachos ni gyda kimsufi, rydym yn dewis gosod arferiad er mwyn i'r ddwy ddisg yn y drych gael y rhaniadau cychwyn a / cartref yn unig yn “agored”, bydd gweddill y gofod disg yn cael ei amgryptio, ond mwy am hynny yn nes ymlaen.

Bitcoin mewn cawell?

Mae gosod y system yn digwydd mewn ffordd safonol, ni fyddaf yn aros ar hyn, ni fyddaf ond yn nodi ei bod yn werth rhoi sylw iddo cyn dechrau gweithredu. caledu opsiynau y mae'n eu cynnig bsdinstaller ar ddiwedd y gosodiad (os ydych chi'n gosod y system eich hun):

Bitcoin mewn cawell?

Mae deunydd da ar y pwnc hwn, byddaf yn ei ailadrodd yn fyr yma.

Mae hefyd yn bosibl galluogi'r paramedrau uchod ar system sydd eisoes wedi'i gosod. I wneud hyn, mae angen i chi olygu'r ffeil cychwynnydd a galluogi paramedrau cnewyllyn. *Mae ee yn olygydd fel hyn yn 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

Dylech hefyd wneud yn siŵr bod gennych y fersiwn diweddaraf o'r system wedi'i osod, a perfformio'r holl ddiweddariadau ac uwchraddiadau. Yn ein hachos ni, er enghraifft, mae angen uwchraddio i'r fersiwn ddiweddaraf, oherwydd ... mae delweddau cyn gosod ar ei hôl hi o chwe mis i flwyddyn. Wel, yno rydyn ni'n newid y porthladd SSH i rywbeth gwahanol i'r un rhagosodedig, yn ychwanegu dilysiad allweddol ac yn analluogi dilysu cyfrinair.

Yna rydym yn ffurfweddu aide, monitro statws ffeiliau cyfluniad system. Gallwch ddarllen yn fwy manwl yma.

pkg install aide

a golygu ein 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

Rydym yn cynnwys archwilio system

sysrc auditd_enable=YES

# service auditd start

Disgrifir yn berffaith sut i weinyddu'r mater hwn arweinyddiaeth.

Nawr rydym yn ailgychwyn ac yn symud ymlaen i'r feddalwedd ar y gweinydd. Mae pob gweinydd yn hypervisor ar gyfer cynwysyddion neu beiriannau rhithwir llawn. Felly, mae'n bwysig bod y prosesydd yn cefnogi VT-x ac EPT os ydym yn bwriadu defnyddio rhithwiroli llawn.

I reoli cynwysyddion a pheiriannau rhithwir rwy'n eu defnyddio cbsd o olefol, Dymunaf iddo fwy o iechyd a bendithion i'r defnyddioldeb bendigedig hwn !

Cynhwysyddion? Dociwr eto neu beth?

Ond na. Carchardai FreeBSD yn arf ardderchog ar gyfer containerization, ond y crybwyllwyd cbsd i drefnu y cynwysyddion hyn, a elwir yn gelloedd.

Mae'r cawell yn ateb hynod effeithiol ar gyfer adeiladu seilwaith at amrywiaeth o ddibenion, lle mae angen ynysu gwasanaethau neu brosesau unigol yn llwyr yn y pen draw. Yn y bôn, mae'n glôn o'r system westeiwr, ond nid oes angen rhithwiroli caledwedd llawn arno. A diolch i hyn, nid yw adnoddau'n cael eu gwario ar yr “OS gwadd”, ond dim ond ar y gwaith sy'n cael ei berfformio. Pan ddefnyddir celloedd ar gyfer anghenion mewnol, mae hwn yn ateb cyfleus iawn ar gyfer y defnydd gorau posibl o adnoddau - gall criw o gelloedd ar un gweinydd caledwedd ddefnyddio'r adnodd gweinydd cyfan yn unigol os oes angen. Gan ystyried bod angen ychwanegol ar wahanol is-wasanaethau fel arfer. adnoddau ar wahanol adegau, gallwch dynnu perfformiad uchaf o un gweinydd os ydych chi'n cynllunio'n iawn ac yn cydbwyso'r celloedd rhwng gweinyddwyr. Os oes angen, gall celloedd hefyd gael cyfyngiadau ar yr adnodd a ddefnyddir.

Bitcoin mewn cawell?

Beth am rhithwiroli llawn?

Cyn belled ag y gwn, cbsd cefnogi gwaith bhyve a hypervisors XEN. Nid wyf erioed wedi defnyddio'r ail un, ond mae'r un cyntaf yn gymharol newydd hypervisor o FreeBSD. Edrychwn ar enghraifft o ddefnydd bhyve yn yr enghraifft isod.

Gosod a Ffurfweddu'r Amgylchedd Gwesteiwr

Rydym yn defnyddio FS ZFS. Mae hwn yn offeryn hynod bwerus ar gyfer rheoli gofod gweinydd. Diolch i ZFS, gallwch chi adeiladu araeau o wahanol gyfluniadau o ddisgiau yn uniongyrchol, ehangu gofod “poeth” yn ddeinamig, newid disgiau marw, rheoli cipluniau, a llawer, llawer mwy, y gellir eu disgrifio mewn cyfres gyfan o erthyglau. Gadewch i ni ddychwelyd at ein gweinydd a'i ddisgiau. Ar ddechrau'r gosodiad, gadawsom le am ddim ar y disgiau ar gyfer rhaniadau wedi'u hamgryptio. Pam hynny? Mae hyn fel bod y system yn deffro'n awtomatig ac yn gwrando trwy SSH.

gpart add -t freebsd-zfs /dev/ada0

/dev/ada0p4 added!

ychwanegu rhaniad disg i'r gofod sy'n weddill

geli init /dev/ada0p4

rhowch ein cyfrinair amgryptio

geli attach /dev/ada0p4

Rydyn ni'n nodi'r cyfrinair eto ac mae gennym ni ddyfais /dev/ada0p4.eli - dyma ein gofod wedi'i amgryptio. Yna rydyn ni'n ailadrodd yr un peth ar gyfer /dev/ada1 a gweddill y disgiau yn yr arae. Ac rydyn ni'n creu un newydd pwll ZFS.

zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli - Wel, mae gennym y pecyn ymladd lleiaf yn barod. Amrywiaeth o ddisgiau wedi'u hadlewyrchu rhag ofn i un o'r tri fethu.

Creu set ddata ar “gronfa” newydd

zfs create vms/jails

pkg install cbsd — fe wnaethom lansio tîm a sefydlu rheolaeth ar gyfer ein celloedd.

Ar ôl cbsd gosod, mae angen ei gychwyn:

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

Wel, rydyn ni'n ateb criw o gwestiynau, yn bennaf gydag atebion diofyn.

*Os ydych yn defnyddio amgryptio, mae'n bwysig bod yr daemon cbsdd ni ddechreuodd yn awtomatig nes i chi ddadgryptio'r disgiau â llaw neu'n awtomatig (yn ein hesiampl gwneir hyn gan zabbix)

**Nid wyf ychwaith yn defnyddio NAT o cbsd, ac yr wyf yn ei ffurfweddu fy hun yn 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

Mae sefydlu polisïau wal dân hefyd yn bwnc ar wahân, felly ni fyddaf yn mynd yn ddwfn i sefydlu'r polisi BLOCIO POB UN a sefydlu rhestrau gwyn, gallwch wneud hynny trwy ddarllen dogfennaeth swyddogol neu unrhyw un o'r nifer enfawr o erthyglau sydd ar gael ar Google.

Wel... rydym wedi gosod cbsd, mae'n bryd creu ein ceffyl gwaith cyntaf - y cythraul Bitcoin cawell!

cbsd jconstruct-tui

Bitcoin mewn cawell?

Yma rydym yn gweld yr ymgom creu celloedd. Ar ôl i'r holl werthoedd gael eu gosod, gadewch i ni greu!

Wrth greu eich cell gyntaf, dylech ddewis beth i'w ddefnyddio fel sylfaen ar gyfer y celloedd. Rwy'n dewis dosbarthiad o'r ystorfa FreeBSD gyda'r gorchymyn repo. Dim ond wrth greu cell gyntaf fersiwn benodol y gwneir y dewis hwn (gallwch gynnal celloedd o unrhyw fersiwn sy'n hŷn na'r fersiwn gwesteiwr).

Ar ôl i bopeth gael ei osod, rydyn ni'n lansio'r cawell!

# cbsd jstart bitcoind

Ond mae angen i ni osod meddalwedd yn y cawell.

# jls

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

jexec bitcoind i fynd i mewn i'r consol cell

ac eisoes y tu mewn i'r gell rydym yn gosod y meddalwedd gyda'i ddibyniaethau (mae ein system westeiwr yn parhau i fod yn lân)

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

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

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

Mae Bitcoin yn y cawell, ond mae angen anhysbysrwydd oherwydd ein bod am gysylltu â rhai cewyll trwy'r rhwydwaith TOP. Yn gyffredinol, rydym yn bwriadu rhedeg y rhan fwyaf o gelloedd gyda meddalwedd amheus yn unig trwy ddirprwy. Diolch i pf Gallwch analluogi NAT ar gyfer ystod benodol o gyfeiriadau IP ar y rhwydwaith lleol, a chaniatáu NAT ar gyfer ein nod TOR yn unig. Felly, hyd yn oed os yw malware yn mynd i mewn i'r gell, mae'n fwyaf tebygol na fydd yn cyfathrebu â'r byd y tu allan, ac os bydd, ni fydd yn datgelu IP ein gweinydd. Felly, rydym yn creu cell arall i “hyrwyddo” gwasanaethau fel gwasanaeth “.onion” ac fel dirprwy ar gyfer cyrchu'r Rhyngrwyd i gelloedd unigol.

# 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

Gosod i wrando mewn cyfeiriad lleol (ar gael ar gyfer pob cell)

SOCKSPort 192.168.0.2:9050

Beth arall sydd ei angen arnom ar gyfer hapusrwydd llwyr? Oes, mae angen gwasanaeth ar gyfer ein gwe, efallai mwy nag un. Gadewch i ni lansio nginx, a fydd yn gweithredu fel gwrth-ddirprwy ac yn gofalu am adnewyddu tystysgrifau Let's Encrypt

# cbsd jsconstruct-tui

# cbsd jstart nginx-rev

# jexec nginx-rev

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

Ac felly fe wnaethom osod 150 MB o ddibyniaethau mewn cawell. Ac mae'r gwesteiwr yn dal yn lân.

Gadewch i ni ddychwelyd i sefydlu nginx yn ddiweddarach, mae angen i ni godi dwy gell arall ar gyfer ein porth talu ar nodejs a rhwd a chymhwysiad gwe, sydd am ryw reswm yn Apache a PHP, ac mae angen cronfa ddata MySQL ar yr olaf hefyd.

# 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

...a 380 MB arall o becynnau wedi'u hynysu

Nesaf, rydym yn lawrlwytho ein cais gyda git a'i lansio.

# cbsd jsconstruct-tui

# cbsd jstart webapp

# jexec webapp

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

450 MB pecynnau. mewn cawell.

yma rydyn ni'n rhoi mynediad i'r datblygwr trwy SSH yn uniongyrchol i'r gell, byddan nhw'n gwneud popeth yno eu hunain:

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

Port 2267 — newidiwch borthladd SSH y gell i unrhyw un mympwyol

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

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

Wel, mae'r gwasanaeth yn rhedeg, y cyfan sydd ar ôl yw ychwanegu'r rheol ato pf firewall

Gawn ni weld pa IP sydd gan ein celloedd a sut olwg sydd ar ein “ardal leol” yn gyffredinol.

# 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

ac ychwanegu rheol

# 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

Wel, gan ein bod ni yma, gadewch i ni hefyd ychwanegu rheol ar gyfer gwrth-ddirprwy:

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

Wel, nawr ychydig am bitcoins

Yr hyn sydd gennym yw bod gennym raglen we sy'n cael ei datgelu'n allanol ac mae'n siarad yn lleol â'n porth talu. Nawr mae angen i ni baratoi amgylchedd gwaith ar gyfer rhyngweithio â'r rhwydwaith Bitcoin ei hun - y nod bitcoind dim ond daemon ydyw sy'n cadw'r copi lleol o'r blockchain yn gyfoes. Mae gan yr ellyll hwn ymarferoldeb RPC a waled, ond mae yna “lapwyr” mwy cyfleus ar gyfer datblygu cymwysiadau. I ddechrau, fe benderfynon ni roi electrum yn waled CLI. Y waled hon byddwn yn ei ddefnyddio fel "storio oer" ar gyfer ein bitcoins - yn gyffredinol, y bitcoins hynny y bydd angen eu storio "y tu allan" i'r system yn hygyrch i ddefnyddwyr ac yn gyffredinol i ffwrdd oddi wrth bawb. Mae ganddo hefyd GUI, felly rydyn ni'n mynd i ddefnyddio'r un waled ar ein
gliniaduron. Am y tro byddwn yn defnyddio Electrum gyda gweinyddwyr cyhoeddus, ac yn ddiweddarach byddwn yn ei godi mewn cell arall ElectrumXrhag dibynu ar neb o gwbl.

# cbsd jsconstruct-tui

# cbsd jstart electrum

# jexec electrum

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

700 MB arall o feddalwedd yn ein cawell

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

Nawr mae gennym waled wedi'i chreu.

wallet@electrum:/ % electrum-3.6 listaddresses

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

wallet@electrum:/ % electrum-3.6 help

I'n ar-gadwyn Dim ond nifer cyfyngedig o bobl fydd yn gallu cysylltu â'r waled o hyn ymlaen. Er mwyn peidio ag agor mynediad i'r gell hon o'r tu allan, bydd cysylltiadau trwy SSH yn digwydd trwy TOP (fersiwn ddatganoledig o VPN). Rydym yn lansio SSH yn y gell, ond peidiwch â chyffwrdd â'n pf.conf ar y gwesteiwr.

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

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

Nawr, gadewch i ni ddiffodd y gell gyda mynediad Rhyngrwyd y waled. Gadewch i ni roi cyfeiriad IP iddo o ofod is-rwydwaith arall nad yw'n NATed. Yn gyntaf gadewch i ni newid /etc/pf.conf ar y gwesteiwr

# ee /etc/pf.conf

JAIL_IP_POOL="192.168.0.0/24" gadewch i ni ei newid i JAIL_IP_POOL="192.168.0.0/25", felly ni fydd gan bob cyfeiriad 192.168.0.126-255 fynediad uniongyrchol i'r Rhyngrwyd. Math o rwydwaith “bwlch aer” meddalwedd. Ac mae rheol NAT yn parhau fel yr oedd

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

Gorlwytho'r rheolau

# pfctl -f /etc/pf.conf

Nawr gadewch i ni gymryd ar ein cell

# cbsd jconfig jname=electrum

Bitcoin mewn cawell?

Bitcoin mewn cawell?

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, ond nawr bydd y system ei hun yn rhoi'r gorau i weithio i ni. Fodd bynnag, gallwn nodi dirprwy system. Ond mae un peth, ar TOR mae'n ddirprwy SOCKS5, ac er hwylustod hoffem gael dirprwy HTTP hefyd.

# 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

Wel, nawr mae dau weinydd dirprwyol yn ein system, ac mae'r ddau yn allbwn trwy TOR: sanau5: //192.168.0.2:9050 a http://192.168.0.6:8123

Nawr gallwn ffurfweddu amgylchedd ein waled

# 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

Wel, nawr bydd y gragen yn gweithio o dan ddirprwy. Os ydym am osod pecynnau, yna dylem ychwanegu at /usr/local/etc/pkg.conf o dan wraidd y cawell

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

Wel, nawr mae'n bryd ychwanegu'r gwasanaeth cudd TOR fel cyfeiriad ein gwasanaeth SSH yn y cawell waled.

# 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

Dyma ein cyfeiriad cysylltiad. Gadewch i ni wirio o'r peiriant lleol. Ond yn gyntaf mae angen i ni ychwanegu ein allwedd SSH:

wallet@electrum:/ % mkdir ~/.ssh

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

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

Wel, o beiriant cleient 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

Gadewch i ni gysylltu (Er mwyn i hyn weithio, mae angen daemon TOR lleol arnoch sy'n gwrando ar 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

Llwyddiant!

Er mwyn gweithio gyda thaliadau sydyn a micro, mae angen nod arnom hefyd Rhwydwaith Mellt, mewn gwirionedd, dyma fydd ein prif offeryn gweithio gyda Bitcoin. U*c-melltyr ydym yn mynd i ddefnyddio fel ellyll yn Ategyn Sparko, sy'n rhyngwyneb HTTP (REST) ​​​​llawn-fledged ac yn eich galluogi i weithio gyda'r ddau oddi ar y gadwyn ac ar-gadwyn trafodion. c-lightning sy'n ofynnol ar gyfer gweithredu bitcoind ond ie.

*Mae yna wahanol weithrediadau o brotocol Rhwydwaith Mellt mewn gwahanol ieithoedd. O'r rhai a brofwyd gennym, c-mellt (a ysgrifennwyd yn C) oedd yn ymddangos y mwyaf sefydlog ac effeithlon o ran adnoddau

# 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

Tra bod popeth angenrheidiol yn cael ei lunio a'i osod, gadewch i ni greu defnyddiwr RPC ar gyfer 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

Nid yw fy newid anhrefnus rhwng celloedd yn troi allan i fod mor anhrefnus os nodwch y cyfleustodau tmux, sy'n eich galluogi i greu is-sesiynau terfynell lluosog o fewn un sesiwn. Analog: screen

Bitcoin mewn cawell?

Felly, nid ydym am ddatgelu IP go iawn ein nod, ac rydym am gynnal yr holl drafodion ariannol trwy TOP. Felly, nid oes angen .onion arall.

# 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

Nawr, gadewch i ni greu config ar gyfer c-mellt

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 ~

mae angen i chi hefyd greu ffeil ffurfweddu ar gyfer bitcoin-cli, cyfleustodau sy'n cyfathrebu â bitcoind

lightning@lightning:~ % mkdir .bitcoin

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

rpcconnect=192.168.0.1
rpcuser=test
rpcpassword=test

gwirio

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

[
  "test"
]

lansio lightningd

lightning@lightning:~ % lightningd --daemon

Hun lightningd gallwch reoli'r cyfleustodau lightning-cli, er enghraifft:

lightning-cli newaddr cael y cyfeiriad ar gyfer taliad newydd sy'n dod i mewn

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

lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all anfon yr holl arian yn y waled i'r cyfeiriad (pob cyfeiriad ar gadwyn)

Hefyd gorchmynion ar gyfer gweithrediadau oddi ar y gadwyn lightning-cli invoice, lightning-cli listinvoices, lightning-cli pay ac yn y blaen

Wel, ar gyfer cyfathrebu â'r cais mae gennym REST Api

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

Crynhoi

# 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 mewn cawell?

Mae gennym set o gynwysyddion, pob un â'i lefel ei hun o fynediad o'r rhwydwaith lleol ac iddo.

# 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

Fel y gallwch weld, mae bitcoind yn cymryd yr holl le 190 GB. Beth os oes angen nod arall arnom ar gyfer profi? Dyma lle mae ZFS yn ddefnyddiol. Gyda chymorth cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com gallwch greu ciplun ac atodi cell newydd i'r ciplun hwn. Bydd gan y gell newydd ei gofod ei hun, ond dim ond y gwahaniaeth rhwng y cyflwr presennol a'r gwreiddiol fydd yn cael ei ystyried yn y system ffeiliau (byddwn yn arbed o leiaf 190 GB)

Mae pob cell yn set ddata ZFS ar wahân, ac mae hyn yn hynod o gyfleus. Mae ZFS hefyd yn caniatáu gwneud amryw o bethau cŵl eraill, fel anfon cipluniau trwy SSH. Ni fyddwn yn ei ddisgrifio, mae yna lawer yn barod.

Mae hefyd yn werth nodi'r angen am fonitro'r gwesteiwr o bell, at y dibenion hyn sydd gennym Zabbix.

B - diogelwch

O ran diogelwch, gadewch i ni ddechrau o'r egwyddorion allweddol yng nghyd-destun seilwaith:

Конфиденциальность - Mae offer safonol systemau tebyg i UNIX yn sicrhau gweithrediad yr egwyddor hon. Rydym yn gwahanu mynediad yn rhesymegol i bob elfen o'r system sy'n rhesymegol ar wahân - cell. Darperir mynediad trwy ddilysiad defnyddiwr safonol gan ddefnyddio allweddi personol y defnyddwyr. Mae'r holl gyfathrebu rhwng ac i'r celloedd diwedd yn digwydd ar ffurf wedi'i hamgryptio. Diolch i amgryptio disg, nid oes rhaid i ni boeni am ddiogelwch data wrth ailosod disg neu fudo i weinydd arall. Yr unig fynediad hanfodol yw mynediad i'r system letyol, gan fod mynediad o'r fath yn gyffredinol yn darparu mynediad at ddata y tu mewn i gynwysyddion.

Uniondeb “Mae gweithredu’r egwyddor hon yn digwydd ar sawl lefel wahanol. Yn gyntaf, mae'n bwysig nodi, yn achos caledwedd gweinydd, cof ECC, bod ZFS eisoes “allan o'r bocs” yn gofalu am gywirdeb data ar lefel y darnau gwybodaeth. Mae cipluniau ar unwaith yn caniatáu ichi wneud copïau wrth gefn ar unrhyw adeg wrth hedfan. Mae offer allforio/mewnforio celloedd cyfleus yn gwneud dyblygu celloedd yn syml.

Argaeledd - Mae hyn eisoes yn ddewisol. Mae'n dibynnu ar raddau eich enwogrwydd a'r ffaith bod gennych chi gaswyr. Yn ein hesiampl, gwnaethom sicrhau bod y waled yn hygyrch yn unig o'r rhwydwaith TOP. Os oes angen, gallwch rwystro popeth ar y wal dân a chaniatáu mynediad i'r gweinydd trwy dwneli yn unig (mae TOR neu VPN yn fater arall). Felly, bydd y gweinydd yn cael ei dorri i ffwrdd o'r byd y tu allan cymaint â phosibl, a dim ond ni ein hunain fydd yn gallu dylanwadu ar ei argaeledd.

Amhosibilrwydd gwrthod - Ac mae hyn yn dibynnu ar weithrediad pellach a chydymffurfiaeth â'r polisïau cywir ar gyfer hawliau defnyddwyr, mynediad, ac ati. Ond gyda'r dull cywir, mae holl gamau gweithredu defnyddwyr yn cael eu harchwilio, a diolch i atebion cryptograffig mae'n bosibl nodi'n ddiamwys pwy a gyflawnodd rai gweithredoedd a phryd.

Wrth gwrs, nid yw'r cyfluniad a ddisgrifir yn enghraifft absoliwt o sut y dylai fod bob amser, mae'n hytrach yn un enghraifft o sut y gall fod, tra'n cadw galluoedd graddio ac addasu hyblyg iawn.

Beth am rhithwiroli llawn?

Ynglŷn â rhithwiroli llawn gan ddefnyddio cbsd gallwch chi darllenwch yma. Byddaf yn ychwanegu hynny ar gyfer gwaith bhyve Mae angen i chi alluogi rhai opsiynau cnewyllyn.

# cat /etc/rc.conf

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

# cat /boot/loader.conf

...
vmm_load="YES"
...

Felly os oes angen i chi gychwyn docwr yn sydyn, yna gosodwch rai debian a mynd!

Bitcoin mewn cawell?

Dyna i gyd

Mae'n debyg mai dyna'r cyfan roeddwn i eisiau ei rannu. Os oeddech chi'n hoffi'r erthygl, yna gallwch chi anfon rhai bitcoins ataf - bc1qu7lhf45xw83ddll5mnzte6ahju8ktkeu6qhttc. Os ydych chi eisiau rhoi cynnig ar gelloedd ar waith a chael rhai bitcoins, gallwch chi fynd i fy anifail anwes-prosiect.

Ffynhonnell: hab.com