Kuidas on nii juhtunud, et ma olen ametilt arvutisĂŒsteemide ja vĂ”rkude haldaja (lĂŒhemalt: sĂŒsteemihaldur) ning mul on olnud vĂ”imalus töötada erinevate sĂŒsteemidega rohkem kui 10 aasta jooksul, sealhulgas ka nendega, mis nĂ”uavad [ĐżĐŸ|за]vishenenĂœch ohutusmeetmeid. Ja veel on nii juhtunud, et mĂ”ni aeg tagasi avastasin endale huvitava , ja ma ei ole lihtsalt seda kasutanud, vaid olen loonud mitmeid mikroteenuseid, et Ă”ppida iseseisvalt töötama bitcoini vĂ”rgus (see on ju p2p, nagu nad ĂŒtlevad) arendaja vaatepunktist (ma muidugi pole just kĂ”ige parem arendaja dev, lihtsalt mööda kĂ”ndinud). Aga ma ei rÀÀgi arendamisest, vaid turvalisest ja tĂ”husast keskkonnast rakendustele.
Rahatehnoloogiad (fintech) kĂ€ivad kĂ€sikĂ€es infotehnoloogia turvalisusega (infosec), ja ilma teiseta ei saa esimene kaua töötada. SeetĂ”ttu tahan jagada oma kogemusi ja tööriistade komplekti, mida kasutan, mis hĂ”lmab nii fintech, kui ka infosec, samal ajal kui see vĂ”iks olla kasutusel ka laiemates vĂ”i hoopis teistsugustes eesmĂ€rkides. Selles artiklis rÀÀgin mitte niivĂ”rd bitcoini, vaid infrastruktuuri mudelist rahanduse (ja mitte ainult) teenuste arendamiseks ja haldamiseks â lĂŒhidalt nendest teenustest, kus âBâ on oluline. See on rakendatav nii bitcoiniga kauplemise platvormile kui ka tĂŒĂŒpilisele vĂ€ikese ettevĂ”tte teenuste zooloogiale, mis ei ole bitcoini otseselt seotud.
MĂ€rgin, et ma olen âkeep it stupid simpleâ pĂ”himĂ”tete pooldaja âless is moreâ ja , seetĂ”ttu on nii artikkel kui ka selles kirjeldatud omamoodi omadused, mis pĂ”hinevad nende pĂ”himĂ”tete segu.Kujuteldav stsenaarium:
Kujuteldav stsenaarium: Vaatame kĂ”ike nĂ€ite kaudu Bitcoin vahetusest. Otsustasime kĂ€ivitada rubla, dollari ja euro vahetamist Bitcoinideks ja tagasi, ja meil on juba töötav lahendus, kuid teiste digitaalsete rahade, nagu QIWI ja Webmoney, osas on meie Ă”igusalased kĂŒsimused lahendatud. Meil on olemas rakendus, mis toimib maksevĂ€ravana rubla, dollari ja euro jaoks ning teiste maksesĂŒsteemide tarbeks. See on seotud meie pangakontodega ja sisaldab mingit API-d meie lĂ”ppprogrammide jaoks. Samuti on meil veebirakendus, mis toimib vahetuspunktina kasutajatele, nagu tĂŒĂŒpiline QIWI vĂ”i Webmoney kabinet â registreerige konto, lisage kaart ja nii edasi. See suhtleb meie vĂ€ravarakendusega, olgu see siis REST API kaudu kohalikus vĂ”rgus. Otsustasime nĂŒĂŒd ĂŒhenduda Bitcoinidega ja samal ajal uuendada infrastruktuuri, kuna alguses kĂ”ik tĂ”steti kiiresti Virtuaalboxide abil kontori all olevas lauas... veebilehte on hakatud kasutama ja me hakkasime muretsema tööaja ja jĂ”udluse pĂ€rast.
Nii et alustame pĂ”hiasjast â serveri valik. Kuna meie nĂ€ite Ă€ri on vĂ€ike ja me usaldame meie hostijat (OVH), valime , kus ei saa installida sĂŒsteemi originaalsest .iso pildist, kuid pole hullu, IT-turbeosakond viib kindlasti lĂ€bi analĂŒĂŒsi paigaldatud pildi suhtes. Kui me kasvame, siis rentime isegi oma lukustatud riidekapi piiratud fĂŒĂŒsilise ligipÀÀsuga, ehk ehitame oma andmekeskuse. Igatahes, tuleb meeles pidada, et kui rentida riistvara ja installida valmis pilte, on olemas vĂ”imalus, et teie sĂŒsteemis on âhostija troojalâ, mis enamasti ei ole mĂ”eldud teid jĂ€lgimiseks, vaid et pakkuda mugavamaid serveri haldamise tööriistu.
Serveri seadistamine
Siin on kĂ”ik lihtne. Valime riistvara, mis sobib meie vajadustele. SeejĂ€rel valime FreeBSD pildi. VĂ”i ĂŒhendame, kui tegemist on teise hostijaga ja oma riistvaraga, IPMI kaudu vĂ”i monitori ĂŒhendamisega ja laadime FreeBSD .iso pildi kĂ€ivitusele. Orkestreerimise installatsiooni jaoks kasutan ja . Ainus erinevus on, et meie juhul Kimsufi puhul, valisime kohandatud paigalduse , et kaks ketast peegeldamises oleksid âavatudâ ainult kĂ€ivitus- ja /home partitsioonide jaoks, ĂŒlejÀÀnud ketta ruum on krĂŒpteeritud, kuid sellest hiljem.

SĂŒsteemi paigaldamine toimub standardse viisi jĂ€rgi, ma ei peatuks sellel, vaid mainin, et enne kasutusele vĂ”tmist tasub tĂ€helepanu pöörata karmistamine valikutele, mida pakub bsdinstaller paigaldamise lĂ”pus (kui paigaldate sĂŒsteemi ise):

Jah selle teema kohta, ma kordaksin seda lĂŒhidalt siin.
Ălalmainitud parameetreid on vĂ”imalik aktiveerida juba paigaldatud sĂŒsteemis. Selleks tuleb redigeerida laadimisfaili ja aktiveerida tuuma parameetrid. *ee â see on selline redaktor BSD-s
# 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=1Tasub ka veenduda, et teil on installitud sĂŒsteemi viimane versioon, ja . Meie juhul, nĂ€iteks, on vajalik uuendada viimaseni, kuna eelnevad pildid on poole aasta-kuni aasta vĂ”rra maas. Ja seal muudame SSH pordi erinevaks vaikeportist, lisame vĂ”tme autentimise ja keelame parooliga.
SeejĂ€rel seadistame aide, sĂŒsteemi konfiguratsioonifailide oleku jĂ€lgimise. Rohkem ĂŒksikasjalikult saab lugeda .
pkg install aide
ja redigeerime meie crontabi
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/$MYFILENAMELĂŒlitame sisse
sysrc auditd_enable=YES
# service auditd start
Kuidas seda haldada on suurepÀraselt kirjeldatud .
NĂŒĂŒd taaskĂ€ivitame ja alustame serveri tarkvaraga. Iga server on hĂŒperviisor konteinerite vĂ”i tĂ€ielike virtuaalmasinate jaoks. SeetĂ”ttu on oluline, et protsessor toetaks VT-x ja EPT, kui plaanime kasutada tĂ€ielikku virtualiseerimist.
Konteinerite ja virtuaalmasinate haldamiseks kasutan alates , soovin talle rohkem tervist ja Ônne selle suurepÀrase utiliidi eest!
Konteinerid? Kas jÀlle docker?
Aga ei. â see on suurepĂ€rane vahend konteinerite loomiseks, ja mainitud cbsd nende konteinerite orkestreerimiseks, mille nimi on â rakud.
Kleidi on ÀÀrmiselt tĂ”hus lahendus infrastruktuuri loomiseks mitmesugustel eesmĂ€rkidel, kus lĂ”puks on vajalik erinevate teenuste vĂ”i protsesside tĂ€ielik isolatsioon. Sisuliselt on see kĂŒlalissĂŒsteemi kloon, kuid see ei vaja tĂ€ielikku âriistvaralistâ virtualiseerimist. SeetĂ”ttu ei kulutata ressursse âkĂŒlalis-OSileâ, vaid ainult teostatavale tööle. Kui kleite kasutatakse sisemiste vajaduste tarbeks, on see vĂ€ga mugav lahendus ressursside optimaalseks kasutamiseks â rida kleite ĂŒhel fĂŒĂŒsilisel serveril vĂ”ivad igaĂŒhekshaaval vajaduse korral kasutada kogu serveri ressursi. Arvestades, et erinevate alateenuste jaoks on erinevatel aegadel vajalikud lisalĂ€henemised, saab ĂŒhest serverist maksimaalset jĂ”udlust, kui kliente Ă”igesti planeerida ja tasakaalustada eri serverite vahel. Vajadusel saab kleitidele ka seada piirangud kasutatavate ressursside osas.

Aga mis on tÀieliku virtualiseerimisega?
Nii palju kui mina tean, cbsd toetab töö bhyve ja XEN hĂŒperviisoreid. Teist ma pole kunagi kasutanud, aga esimene on suhteliselt noor . Vaadakem kasutamise nĂ€idet bhyve jĂ€rgnevates nĂ€idetes.
Hosti keskkonna installimine ja seadistamine
Kasutame FS . See on ÀÀrmiselt vĂ”imas tööriist serveri ruumi haldamiseks. ZFS-i abil saab otse kettadest luua erinevate konfiguratsioonidega kombe, dĂŒnaamiliselt âkuumaltâ laiendada ruumi, vahetada defektsed kettad, hallata snapshotâe ja palju muud, mida vĂ”iks kirjeldada terve artiklisarja jooksul. Naaseme meie serveri ja selle ketaste juurde. Paigaldamise alguses jĂ€tame kettale vaba ruumi krĂŒpteeritud sektsioonide jaoks. Miks? Selleks, et sĂŒsteem tĂ”useks automaatselt ja kuulaks SSH kaudu.
gpart add -t freebsd-zfs /dev/ada0
/dev/ada0p4 added!
lisame kettasektsiooni jÀÀkruumile
geli init /dev/ada0p4
sisestame meie krĂŒpteerimisparooli
geli attach /dev/ada0p4
sisestame uuesti parooli ja meil on seade /dev/ada0p4.eli â see on meie krĂŒpteeritud ruum. SeejĂ€rel kordame sama protseduuri /dev/ada1 ja ĂŒlejÀÀnud ketaste jaoks maatriksis. Ja loome uue .
zpool create vms mirror /dev/ada0p4.eli /dev/ada1p4.eli /dev/ada3p4.eli â nĂŒĂŒd on meil minimaalne lahinguparandus valmis. Peegeldavad kettad juhuks, kui ĂŒks kolmest ebaĂ”nnestub.
Loome uue "puli" andmekogumi
zfs create vms/jails
pkg install cbsd â kĂ€itasime kĂ€sku ja installime meie koode haldamise tarkvara.
PĂ€rast seda, kui cbsd see on installitud, peab selle initsialiseerima:
# env workdir="/vms/jails" /usr/local/cbsd/sudoexec/initenv
ja vastame hulga kĂŒsimustele, peamiselt vaikimisi vastustega.
*Kui kasutate krĂŒptimist, on oluline, et teenus cbsdd ei kĂ€ivitu automaatselt, kuni te ei dekrĂŒpteeri kettaid kĂ€sitsi vĂ”i automaatselt (meie nĂ€ites teeb seda zabbix)
**Ma ei kasuta NAT-i cbsd, vaid seadistan selle ise 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
#Jailide NAT
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC
## Bitcoin vÔrgupordi edastamine
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
Tulemuste seadmine on ka eraldi teema, seetĂ”ttu ei kavatse ma sĂŒveneda poliitikasse BLOCK ALL ja valge nimekiri seadistamisse, seda saab teha lugedes vĂ”i ĂŒkskĂ”ik millist suurt hulka artikleid, mis on Googleâis saadaval.
Noh ⊠meil on cbsd installitud, on aeg luua meie esimene tööloom â bitcoini teenus kojas!
cbsd jconstruct-tui

Siin nÀeme koha loomise dialooge. PÀrast kÔikide vÀÀrtuste seadmist loome!
Esimese koha loomisel tuleb valida, mida kasutada kohtade aluseks. Valin FreeBSD hoidlast distributsiooni kÀsuga repo. See valik tehakse ainult konkreetse versiooni esimese koha loomisel (esinevad kÔikide versioonide kohad, mis on vanemad kui hosti versioon).
PĂ€rast kĂ”ike installimist â kĂ€ivita koht!
# cbsd jstart bitcoind
Aga me peame koopa installima tarkvara.
# jls
JID IP Aadress Hostnimi Tee
1 192.168.0.1 bitcoind.space.com /zroot/jails/jails/bitcoindjexec bitcoind et pÀÀseda koha kÀsureale
ja juba sees koopa sees installime tarkvara koos selle sĂ”ltuvustega (meie host-sĂŒsteem jÀÀb puhtaks)
bitcoind:/@[15:25] # pkg install bitcoin-daemon bitcoin-utils
bitcoind:/@[15:30] # sysrc bitcoind_enable=YES
bitcoind:/@[15:30] # service bitcoind start
Bitcoini kojas on, aga meil on vaja anonĂŒĂŒmsust, sest tahame mĂ”nda kohta ĂŒhendada TOR-vĂ”rgus. Ja ĂŒldiselt plaanime kĂ€itada enamikku kohti kahtlase tarkvaraga ainult lĂ€bi proksi. TĂ€nu pf NAT saab vĂ€lja lĂŒlitada teatud IP-aadresside vahemikule kohaliku vĂ”rgu sees ja lubada NAT ainult meie TOR-sĂ”lmele. Seega, isegi kui pahavara satub kasti, siis tĂ”enĂ€oliselt ei pÀÀse taĂŒhendusse vĂ€lismaailmaga, ja kui see juhtub, siis ei avalda ta meie serveri IP-aadressi. SeetĂ”ttu loome veel ĂŒhe kasti, et «edastada» teenuseid nagu «.onion»-teenus ja kui proxy internetiĂŒhenduseks eraldi kastidele.
# 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
Seame kuulama kohalikul aadressil (kÔikidele kastidele on ligipÀÀs)
SOCKSPort 192.168.0.2:9050
Mida meil veel puudub tĂ€ielikuks Ă”nneks? Jah, meil on vaja teenust meie veebilehe jaoks, vĂ”ib-olla isegi rohkem kui ĂŒhte. KĂ€ivitame nginx'i, mis tĂ€idab vastupropĂŒĂŒdija rolli ja hoolitseb Letâs Encrypt sertifikaatide pikendamise eest.
# cbsd jsconstruct-tui
# cbsd jstart nginx-rev
# jexec nginx-rev
nginx-rev:â@[15:47] # pkg install nginx py36-certbot
Ja nĂŒĂŒd 150 MB sĂ”ltuvusi paigaldasime kasti. Ja host on endiselt puhas.
Naaseme nginx'i seadistamise juurde hiljem, peame tÔstma veel kaks kasti meie maksevÀrava jaoks nodejs-is ja rustis ning veebirakenduse jaoks, mis mingil pÔhjusel on apache ja php, ning viimasel on vaja ka MySQL andmebaasi.
# 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
⊠ja veel 380 MB pakette isoleeritud
SeejÀrel toetame giti kaudu meie rakendust ja kÀivitame selle.
# cbsd jsconstruct-tui
# cbsd jstart webapp
# jexec webapp
webapp:â@[16:02] # pkg install mariadb104-server apache24 php74 mod_php74 php74-pdo_mysql
450 MB pakette. kastis.
Siin anname arendajale SSH juurdepÀÀsu otse kasti, nad teevad seal ise kÔik Àra:
webapp:â@[16:02] # ee /etc/ssh/sshd_config
Port 2267 â muudame kasti SSH pordi suvaliseks
webapp:â@[16:02] # sysrc sshd_enable=YES
webapp:â@[16:02] # service sshd start
Noh, nĂŒĂŒd on teenus kĂ€ivitatud, alles jÀÀb reegli lisamine pf tulede seinale
Vaadake, millised IP-d meil kastides on ja kuidas meie «kohalik» vÀlja nÀeb
# jls
JID IP Aadress Hostinimi Tee
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/webappja lisame reegli
# 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
Kuna me siin oleme, lisame ka reegli vastupropĂŒĂŒdija jaoks:
## 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
Noh, ja nĂŒĂŒd veidi bitcoini kohta
Mida me omame â meil on veebirakendus, mis on saadaval vĂ€ljastpoolt, ja see suhtleb kohalikult meie maksevĂ€ravaga. NĂŒĂŒd peame ette valmistama töökoha, et suhelda bitcoini vĂ”rgu enda â sĂ”lmega. bitcoind See on lihtsalt demon, mis toetab kohaliku koopiat akutaalsest plokiahelast. Sellel demonil on RPC ja rahakoti funktsioon, kuid rakenduste arendamiseks on olemas mugavamad "mĂ€hised". Esmalt otsustasime installida electrum â CLI rahakoti. kasutame meie Bitcoinide "kĂŒlmhoidla" jaoks - need Bitcoinid, mida tuleb hoida "vĂ€lja" sĂŒsteemist, mis on kasutajatele kergesti ligipÀÀsetav ja ĂŒldiselt kaugel kĂ”igest. Sellel on ka GUI, seega plaanime kasutada sama rahakotti ka meie
sĂŒlearvutites. Alguses kasutame elektreumit avalike serveritega, ja hiljem tĂ”stame veel ĂŒhes puuris , et mitte kedagi sĂ”ltuda.
# cbsd jsconstruct-tui
# cbsd jstart electrum
# jexec electrum
electrum: /@[8:45] # pkg install py36-electrum
veel 700 MB tarkvara on meil puuris
electrum: /@[8:53] # adduser
Kasutajanimi: rahakott
TĂ€isnimi:
Uid (jĂ€ta tĂŒhjaks vaikimisi):
Sisselogimisgrupp [rahakott]:
Sisselogimisgrupp on rahakott. Kas kutsuda rahakott teistesse gruppidesse? []:
Sisselogimisklass [vaikimisi]:
KĂ€sk (sh csh tcsh nologin) [sh]: tcsh
Kodu kataloog [ /home/rahakott]:
Kodu katalooge Ă”igused (jĂ€ta tĂŒhjaks vaikimisi):
Kas kasutada parooliga autentimist? [jah]: ei
Kas lukustada konto pÀrast loomist? [ei]:
Kasutajanimi: rahakott
Parool: <vĂ€lja lĂŒlitatud>
TĂ€isnimi:
Uid: 1001
Klass:
Grupp: rahakott
Kodu: /home/rahakott
Kodu reĆŸiim:
KĂ€sk: /bin/tcsh
Lukustatud: ei
OK? (jah/ei): jah
adduser: INFO: edukalt lisatud (rahakott) kasutajate andmebaasi.
Lisa teine kasutaja? (jah/ei): ei
Head aega!
electrum: /@[8:53] # su rahakottelectrum: /@[8:53] # su rahakott
rahakott@electrum: / % electrum-3.6 loo
{
"msg": "Palun hoidke oma seeme ohutus kohas; kui kaotate selle, ei saa te oma rahakotti taastada.",
"path": " /usr/home/rahakott/.electrum/wallets/default_wallet",
"seed": "kadestav vÔit siga materjal ribad noor löök visuaalne okei kaktus juhuslik lind"
}NĂŒĂŒd oleme loonud rahakoti.
rahakott@electrum: / % electrum-3.6 listaddresses
[
"18WEhbjvMLGRMfwudzUrUd25U5C7uZYkzE",
"14XHSejhxsZNDRtk4eFbqAX3L8rftzwQQU",
"1KQXaN8RXiCN1ne9iYngUWAr6KJ6d4pPas",
...
"1KeVcAwEYhk29qEyAfPwcBgF5mMMoy4qjw",
"18VaUuSeBr6T2GwpSHYF3XyNgLyLCt1SWk"
]rahakott@electrum: / % electrum-3.6 abi
Meie on-chain rahakotiga saab edaspidi ĂŒhendust vĂ”tta vaid piiratud ring inimesi. Et mitte avada juurdepÀÀsu vĂ€ljast sellele puurile, toimub ĂŒhendused SSH kaudu lĂ€bi TOR (selline detsentraliseeritud VPNi variant). KĂ€ivitame puuris SSH, kuid ei puutu meie pf.conf faili hostis.
electrum: /@[9:00] # sysrc sshd_enable=YES
electrum: /@[9:00] # teenus sshd start
NĂŒĂŒd lĂŒlitame rahakoti puuri Internetist vĂ€lja. Paneme sellele IP-aadressi teise alamsubtiirist, mis ei ole NAT-itud. Esiteks muudame /etc/pf.conf hostis
# ee /etc/pf.conf
JAIL_IP_POOL="192.168.0.0/24" muudame JAIL_IP_POOL="192.168.0.0/25", seega ei oma kĂ”ik aadressid 192.168.0.126-255 otsest Interneti-ĂŒhendust. TĂ”eline tarkvaraline «air-gap» vĂ”rk. Ja NAT reegel jÀÀb samaks
nat pass on $IF_PUBLIC from $JAIL_IP_POOL to any -> $IP_PUBLIC
Laadime reeglid uuesti
# pfctl -f /etc/pf.conf
NĂŒĂŒd viime ellu meie «raku»
# cbsd jconfig jname=electrum


jset mode=quiet jname=electrum ip4_addr="192.168.0.200"
Eemalda vana IP: /sbin/ifconfig em0 inet 192.168.0.6 -alias
Seadista uus IP: /sbin/ifconfig em0 inet 192.168.0.200 alias
ip4_addr: 192.168.0.200Hmm, kuid nĂŒĂŒd ei tööta ka sĂŒsteem ise. Siiski saame mÀÀrata sĂŒsteemi puhverserveri. Kuid on ĂŒks probleem: TOR-s on see SOCKS5 puhverserver ja mugavuse huvides sooviksime ka HTTP puhverserverit.
# 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 = socks5polipo:/@[9:42] # sysrc polipo_enable=YES
polipo:/@[9:43] # service polipo start
Noh, nĂŒĂŒd on meie sĂŒsteemis kaks puhverserverit, millest mĂ”lemad suunavad kaudu TOR: socks5://192.168.0.2:9050 ja
NĂŒĂŒd on vĂ”imalik seadistada meie rahakoti keskkonda
# 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:8123Nii, nĂŒĂŒd töötab shell puhverserveri kaudu. Kui soovime pakette installeerida, siis peaksime lisama /usr/local/etc/pkg.conf rooti rakust
pkg_env: {
http_proxy: "http://my_proxy_ip:8123",
}NĂŒĂŒd on aeg lisada TORi varjatud teenus meie SSH teenuse aadressiks rahakoti rakus.
# jexec tor
tor:/@[9:59] # ee /usr/local/etc/tor/torrc
HiddenServiceDir /var/db/tor/electrum/
HiddenServicePort 22 192.168.0.200:22tor:/@[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.onionSiin on meie aadress ĂŒhendamiseks. Kontrollime oma lokaalsest masinast. Kuid kĂ”igepealt tuleb lisada meie SSH-vĂ”ti:
wallet@electrum:/ % mkdir ~/ .ssh
wallet@electrum:/ % ee ~/ .ssh/authorized_keys
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAG9Fk2Lqi4GQ8EXZrsH3EgSrVIQPQaAlS38MmJLBabihv9KHIDGXH7r018hxqLNNGbaJWO/wrWk7sG4T0yLHAbdQAFsMYof9kjoyuG56z0XZ8qaD/X/AjrhLMsIoBbUNj0AzxjKNlPJL4NbHsFwbmxGulKS0PdAD5oLcTQi/VnNdU7iFw== user@localJa klient Linux masina pealt
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
Ăhendame (Selleks, et see töötaks, on vajalik lokaalne TORi demon, mis kuulab aadressil 9050)
user@local ~$ ssh remotebtc
Hosti autentsus 'mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion (<no hostip for proxy command>)' ei ole seotud.
ECDSA vÔtme sÔrmejÀlg on SHA256:iW8FKjhVF4yyOZB1z4sBkzyvCM+evQ9cCL/EuWm0Du4.
Kas olete kindel, et soovite jĂ€tkata ĂŒhendamist (jah/ei/[sĂ”rmejĂ€lg])? jah
Hoiatus: 'mdjus4gmduhofwcso57b3zl3ufoitguh2knitjco5cmgrokpreuxumad.onion' (ECDSA) on alalise nimekirja tuntud hostide hulka lisatud.
FreeBSD 12.1-RELEASE-p1 GENERIC
Kettaruumi sÀÀstmiseks oma kodudirektoris, komprimeerige harva kasutatavad failid kÀsuga "gzip filename".
-- Dru <genesis@istar.ca>
wallet@electrum:~ % logout
Edu!
Kiirete ja mikro maksete jaoks on meil samuti vajalik node , see see ŃŃĐŸ бŃĐŽĐ”Ń meie peamine tööriist Bitcoini jaoks. U *, mida me plaanime kasutada daemonina, on , mis on tĂ€ielik HTTP (REST) liides ja vĂ”imaldab töötada nii off-chain tehingutega kui ka on-chain tehingutega. c-lightning töötamiseks on vajalik bitcoind node.
*on erinevaid rakendusi erinevates programmeerimiskeeltes Lightning Networki protokollile. Nendest, mida oleme testinud, tundus c-lightning (kirjutatud C-s) kÔige stabiilsem ja ressursisÀÀstlikum
# cbsd jsconstruct-tui
# cbsd jstart cln
# jexec cln
lightning:/@[10:23] # adduser
Kasutajanimi: 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
Kuna kÔik vajalik compileerub ja installitakse, loome RPC kasutaja lightningd ja bitcoind
# jexec bitcoind
bitcoind:/@[10:36] # ee /usr/local/etc/bitcoin.conf
rpcbind=192.168.0.1
rpcuser=test
rpcpassword=test
#luba ainult c-lightning
rpcallowip=192.168.0.7/32bitcoind:/@[10:39] # service bitcoind restart
Minu kaootiline liikumine rakkude vahel ei olegi nii kaootiline, kui mĂ€rkida utiliit tmux, mis vĂ”imaldab ĂŒhe seansi sees luua mitmeid all-seansse terminalides. Analoog: screen

Nii, me ei soovi meie node'i tegelikku IP-d paljastada ja tahame kĂ”iki finantstehingute lĂ€bi TOR-i teha. Seega on meil veel ĂŒks .onion vajalik.
# jexec tor
tor:/@[9:59] # ee /usr/local/etc/tor/torrc
HiddenServiceDir /var/db/tor/cln/
HiddenServicePort 9735 192.168.0.7:9735tor:/@[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.onionnĂŒĂŒd loome c-lightning konfi
lightning:/home/lightning/lightning@[10:31] # su lightning
lightning@lightning:~ % mkdir .lightning
lightning@lightning:~ % ee .lightning/config
alias=Minu-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
# eespoolt peaks initsialiseerimise logid (segatuna lightningd logidega) printima midagi nagulightning@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 ~
samuti tuleb luua konfiguratsioonifail bitcoin-cli jaoks, mis on tööriist, mis suhtleb bitcoind
lightning@lightning:~ % mkdir .bitcoin
lightning@lightning:~ % ee .bitcoin/bitcoin.conf
rpcconnect=192.168.0.1
rpcuser=test
rpcpassword=testkontrollime
lightning@lightning:~ % bitcoin-cli echo "test"
[
"test"
]kÀivitame lightningd
lightning@lightning:~ % lightningd --daemon
Ise lightningd saab kasutada tööriista lightning-cli, nÀiteks:
lightning-cli newaddr saada aadress uue siseneva makse jaoks
{
"address": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv",
"bech32": "bc1q2n2ffq3lplhme8jufcxahfrnfhruwjgx3c78pv"
}lightning-cli withdraw bc1jufcxahfrnfhruwjgx3cq2n2ffq3lplhme878pv all saada aadressile kÔik raha rahakoti (kÔigi on-chain aadresside) pealt
Samuti on kÀsklused off-chain operatsioonide jaoks lightning-cli invoice, lightning-cli listinvoices, lightning-cli pay jne.
Rakendusega suhtlemiseks on meil REST Api
curl -k https://192.168.0.7:9737/rpc -d '{"method": "pay", "params": ["lnbc..."]}' -H 'X-Access masterkey'
Teeme kokkuvÔtte
# jls
JID IP Aadress Hostinimi Tee
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
Meil on kogu rida konteinerite, igaĂŒhel oma ligipÀÀsud nii sise- kui ka kohaliku vĂ”rgu kaudu.
# zfs list
NIMI KASUTATUD VABA SUHTEN MĂNGUPUNKT
zroot 279G 1.48T 88K /zroot
zroot/ROOT 1.89G 1.48T 88K ei midagi
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-dataKuidas nĂ€ha, bitcoind vĂ”tab kĂ”ik 190 GB ruumi. Aga mis juhtub, kui vajame veel ĂŒht node'i testimiseks? Siin on ZFS just Ă”igel ajal. Aitavad cbsd jclone old=bitcoind new=bitcoind-clone host_hostname=clonedbtc.space.com On vĂ”imalik luua hetkeseis ja siduda uus konteiner sellega. Uuel konteineril on tĂ€ielik oma ruum, kuid failisĂŒsteemis arvestatakse ainult erinevust praeguse seisundi ja originaali vahel (sÀÀstame vĂ€hemalt 190 GB).
Iga konteiner on omaette ZFS andmestik, mis on ÀÀrmiselt mugav. teha muid lahedaid asju, nagu nĂ€iteks hetkeseisude saatmine SSH kaudu. Me ei hakka seda nĂŒĂŒd kirjeldama, sest juba on palju infot.
Oluline on mÀrkida ka hosti kaugseire vajadust, meie jaoks on selleks .
B â turvalisus
Mis puutub turvalisusse, siis lÀhtume infrastruktuuri kontekstis pÔhiprintsipaalidest:
Privaatsus â Tavalised UNIX-sarnaste sĂŒsteemide tööriistad tagavad selle printsipaali tĂ€itmise. Me jagame loogiliselt juurdepÀÀsu igale loogiliselt eraldi sĂŒsteemi â konteinerile. JuurdepÀÀs toimub standardse kasutaja autentimise kaudu kasutajate privaatsete vĂ”tmete abil. Kogu side konteinerite vahel ja lĂ”ppkonteineriteni toimub krĂŒpteeritud kujul. Aitame andmete turvalisuse tagamisega, kasutades ketaste krĂŒpteerimist, nii et meil ei ole vaja muretseda andmete sĂ€ilitamise pĂ€rast ketaste vahetamise vĂ”i teisele serverile migreerimise ajal. Ainus kriitiline juurdepÀÀs on host-sĂŒsteemi juurdepÀÀs, kuna selline juurdepÀÀs tagab ĂŒldjuhul juurdepÀÀsu konteinerite andmetele.
Integriteet â Selle printsipaali tĂ€itmine toimub mitmesugustel tasanditel. Esiteks on oluline mĂ€rkida, et serveri riistvara korral hoolitseb ECC mĂ€lu ja ZFS juba "kĂ€ibelt" andmete terviklikkuse eest bitti tasemel. Kohesed hetkeseisud vĂ”imaldavad varundamist igal ajal reaalajas. Mugavad konteinerite eksportimise ja importimise tööriistad muudavad konteinerite replikeerimise lihtsaks.
Saadavus â See on juba vabatahtlik. SĂ”ltub teie tuntuse tasemest ja sellest, kas teil on ka vihkajaid. Meie nĂ€ites oleme taganud rahakoti kĂ€ttesaadavuse ainult TOR-vĂ”rgust. Vajadusel saab tulemĂŒĂŒris blokeerida kogu muu liikluse ja lubada juurdepÀÀsu serverile ainult tunnelite (TOR vĂ”i VPN on teine kĂŒsimus) kaudu. Nii jÀÀb server vĂ”imalikult kaugele vĂ€lismaailmast, ja mĂ”jutada selle kĂ€ttesaadavust saame ainult meie ise.
Keeldumatuse printsiip â See sĂ”ltub edasisest kasutamisest ja Ă”igete kasutajaĂ”iguste poliitikate jĂ€rgimisest jne. Kuid Ă”ige lĂ€henemise tĂ”ttu auditeeritakse kĂ”iki kasutajate tegevusi ja tĂ€nu krĂŒptograafilistele lahendustele on vĂ”imalik ĂŒhemĂ”tteliselt tuvastada, kes ja millal mingisuguseid tegevusi sooritas.
Muidugi ei ole kirjeldatud konfiguratsioon absoluutne nĂ€ide sellest, kuidas see alati olema peaks, vaid pigem ĂŒks nĂ€ide, kuidas see vĂ”ib olla, sĂ€ilitades samas vĂ€ga elastsed skaleerimis- ja kohandamisvĂ”imalused.
Aga kuidas on tÀieliku virtualiseerimisega?
TĂ€ieliku virtualiseerimise kohta cbsd kaudu saab rÀÀkida. . Lisaksin vaid, et tööks on bhyve vajalikud mĂ”ned tuuma parameetrid sisse lĂŒlitada.
# cat /etc/rc.conf
...
kld_list="vmm if_tap if_bridge nmdm"
...# cat /boot/loader.conf
...
vmm_load="JAH"
...Nii et kui mingil pĂ”hjusel on vaja Dockerit kasutada, siis paneme ĂŒles mĂ”ne Debian'i ja edasi!

Ja see on kÔik.
TĂ”enĂ€oliselt on see kĂ”ik, mida soovisin jagada. Kui teile artikkel meeldis, siis vĂ”ite mulle mĂ”ned bitcoind saata â . Kui soovite proovida kettesid tegutsemas ja teil on natuke bitcoine, siis vĂ”ite kĂŒlastada minu .
Allikas: habr.com
